diff --git a/docs/modules/ROOT/pages/blueprint.adoc b/docs/modules/ROOT/pages/blueprint.adoc
deleted file mode 100644
index 953031b..0000000
--- a/docs/modules/ROOT/pages/blueprint.adoc
+++ /dev/null
@@ -1,46 +0,0 @@
-= Using OSGi blueprint with Camel
-:page-source: components/camel-blueprint/src/main/docs/blueprint.adoc
-
-A custom XML namespace for Blueprint has been created to let you leverage the nice XML dialect.
-Given Blueprint custom namespaces are not standardized yet, this namespace can only be used on the Apache Aries Blueprint
-implementation, which is the one used by Apache Karaf.
-
-== Overview
-
-The XML schema is mostly the same as the one for Spring, so all the XML snippets throughout the documentation
-referring to Spring XML also apply to Blueprint routes.
-
-Here is a very simple route definition using Blueprint:
-
-[source,xml]
-----
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-
-    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
-        <route>
-            <from uri="timer:test" />
-            <to uri="log:test" />
-        </route>
-    </camelContext>
-
-</blueprint>
-----
-
-There are a few limitations at this point about the supported xml elements (compared to the Spring XML syntax):
-
-- `beanPostProcessor` and `<export>` are specific to Spring and are not in use
-
-However, using Blueprint when you deploy your applications in an OSGi environment has several advantages:
-
-- when upgrading to a new Camel version, you don't have to change the namespace, as the correct version will be
-  selected based on the Camel packages that are imported by your bundle
-- no startup ordering issue with respect to the custom namespaces and your bundles
-- you can use Blueprint property placeholders
-
-
-== Using camel-blueprint
-
-To leverage camel-blueprint in OSGi, you only need the Aries Blueprint bundle and the camel-blueprint bundle,
-in addition to camel-core-xml and its dependencies.
-
-If you use Karaf, you can use the feature named camel-blueprint which will install all the required bundles.
diff --git a/docs/modules/ROOT/pages/blueprint.adoc b/docs/modules/ROOT/pages/blueprint.adoc
new file mode 120000
index 0000000..41fed46
--- /dev/null
+++ b/docs/modules/ROOT/pages/blueprint.adoc
@@ -0,0 +1 @@
+../../../../components/camel-blueprint/src/main/docs/blueprint.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/eventadmin-component.adoc b/docs/modules/ROOT/pages/eventadmin-component.adoc
deleted file mode 100644
index 1c08cac..0000000
--- a/docs/modules/ROOT/pages/eventadmin-component.adoc
+++ /dev/null
@@ -1,110 +0,0 @@
-[[eventadmin-component]]
-= OSGi EventAdmin Component
-:page-source: components/camel-eventadmin/src/main/docs/eventadmin-component.adoc
-
-*Since Camel 2.6*
-
-// HEADER START
-*Both producer and consumer is supported*
-// HEADER END
-
-The Eventadmin component can be used in an OSGi environment to receive
-OSGi EventAdmin events and process them.
-
-== Dependencies
-
-Maven users need to add the following dependency to their `pom.xml`
-
-[source,xml]
--------------------------------------------
-<dependency>
-  <groupId>org.apache.camel</groupId>
-  <artifactId>camel-eventadmin</artifactId>
-  <version>${camel-version}</version>
-</dependency>
--------------------------------------------
-
-where `${camel-version`} must be replaced by the actual version of Camel.
-
-== URI format
-
-[source,xml]
---------------------------
-eventadmin:topic[?options]
---------------------------
-
-where `topic` is the name of the topic to listen too.
-
-== URI options
-
-// component options: START
-The OSGi EventAdmin component supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bundleContext* (common) | The OSGi BundleContext is automatic injected by Camel |  | BundleContext
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *lazyStartProducer* (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 | boolean
-| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-|===
-// component options: END
-
-// endpoint options: START
-The OSGi EventAdmin endpoint is configured using URI syntax:
-
-----
-eventadmin:topic
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *topic* | Name of topic to listen or send to |  | String
-|===
-
-
-=== Query Parameters (7 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *send* (common) | Whether to use 'send' or 'synchronous' deliver. Default false (async delivery) | false | boolean
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *lazyStartProducer* (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 | boolean
-| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-
-== Message headers
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Type |Message |Description
-| | |
-|=======================================================================
-
-== Message body
-
-The `in` message body will be set to the received Event.
-
-== Example usage
-
-[source,xml]
-------------------------------
-<route>
-    <from uri="eventadmin:*"/>
-    <to uri="stream:out"/>
-</route>
-------------------------------
diff --git a/docs/modules/ROOT/pages/eventadmin-component.adoc b/docs/modules/ROOT/pages/eventadmin-component.adoc
new file mode 120000
index 0000000..15d4950
--- /dev/null
+++ b/docs/modules/ROOT/pages/eventadmin-component.adoc
@@ -0,0 +1 @@
+../../../../components/camel-eventadmin/src/main/docs/eventadmin-component.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/kura.adoc b/docs/modules/ROOT/pages/kura.adoc
deleted file mode 100644
index 6fb6246..0000000
--- a/docs/modules/ROOT/pages/kura.adoc
+++ /dev/null
@@ -1,299 +0,0 @@
-[[Kura-EclipseKuracomponent]]
-= Eclipse Kura component
-:page-source: components/camel-kura/src/main/docs/kura.adoc
-
-*Since Camel 2.15*
-
-This documentation page covers the integration options of Camel with the
-https://eclipse.org/kura/[Eclipse Kura] M2M gateway. The common reason
-to deploy Camel routes into the Eclipse Kura is to provide enterprise
-integration patterns and Camel components to the messaging M2M gateway.
-For example you might want to install Kura on Raspberry PI, then read
-temperature from the sensor attached to that Raspberry PI using Kura
-services and finally forward the current temperature value to your data
-center service using Camel EIP and components.
-
-[[Kura-KuraRouteractivator]]
-== KuraRouter activator
-
-Bundles deployed to the Eclipse Kura are usually
-http://eclipse.github.io/kura/doc/hello-example.html#create-java-class[developed
-as bundle activators]. So the easiest way to deploy Apache Camel routes
-into the Kura is to create an OSGi bundle containing the class extending
-`org.apache.camel.kura.KuraRouter` class:
-
-[source,java]
--------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-  @Override
-  public void configure() throws Exception {
-    from("timer:trigger").
-      to("netty-http:http://app.mydatacenter.com/api");
-  }
-
-}
--------------------------------------------------------
-
-Keep in mind that `KuraRouter` implements
-the `org.osgi.framework.BundleActivator` interface, so you need to
-register its `start` and `stop` lifecycle methods
-while http://eclipse.github.io/kura/doc/hello-example.html#create-component-class[creating
-Kura bundle component class].
-
-Kura router starts its own OSGi-aware `CamelContext`. It means that for
-every class extending `KuraRouter`, there will be a dedicated
-`CamelContext` instance. Ideally we recommend to deploy one `KuraRouter`
-per OSGi bundle.
-
-[[Kura-DeployingKuraRouter]]
-=== Deploying KuraRouter
-
-Bundle containing your Kura router class should import the following
-packages in the OSGi manifest:
-
-[source,xml]
---------------------------------------------------------------------------------------------------------------------
-Import-Package: org.osgi.framework;version="1.3.0",
-  org.slf4j;version="1.6.4",
-  org.apache.camel,org.apache.camel.impl,org.apache.camel.core.osgi,org.apache.camel.builder,org.apache.camel.model,
-  org.apache.camel.component.kura
---------------------------------------------------------------------------------------------------------------------
-
-Keep in mind that you don't have to import every Camel component bundle
-you plan to use in your routes, as Camel components are resolved as the
-services on the runtime level.
-
-Before you deploy your router bundle, be sure that you have deployed
-(and started) the following Camel core bundles (using Kura GoGo
-shell)...
-
-[source,xml]
------------------------------------------------------------------------------------------------------------
-install file:///home/user/.m2/repository/org/apache/camel/camel-core/2.15.0/camel-core-2.15.0.jar
-start <camel-core-bundle-id>
-install file:///home/user/.m2/repository/org/apache/camel/camel-core-osgi/2.15.0/camel-core-osgi-2.15.0.jar
-start <camel-core-osgi-bundle-id>
-install file:///home/user/.m2/repository/org/apache/camel/camel-kura/2.15.0/camel-kura-2.15.0.jar 
-start <camel-kura-bundle-id>
------------------------------------------------------------------------------------------------------------
-
-...and all the components you plan to use in your routes:
-
-[source,xml]
------------------------------------------------------------------------------------------------------
-install file:///home/user/.m2/repository/org/apache/camel/camel-stream/2.15.0/camel-stream-2.15.0.jar
-start <camel-stream-bundle-id>
------------------------------------------------------------------------------------------------------
-
-Then finally deploy your router bundle:
-
-[source,xml]
-----------------------------------------------------------------------------------
-install file:///home/user/.m2/repository/com/example/myrouter/1.0/myrouter-1.0.jar
-start <your-bundle-id>
-----------------------------------------------------------------------------------
-
-[[Kura-KuraRouterutilities]]
-=== KuraRouter utilities 
-
- Kura router base class provides many useful utilities. This section
-explores each of them.
-
-[[Kura-SLF4Jlogger]]
-==== SLF4J logger
-
-Kura uses SLF4J facade for logging purposes. Protected member `log`
-returns SLF4J logger instance associated with the given Kura router.
-
-[source,java]
-----------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        log.info("Configuring Camel routes!");
-        ...
-    }
-
-}
-----------------------------------------------
-
-[[Kura-BundleContext]]
-==== BundleContext
-
-Protected member `bundleContext` returns bundle context associated with
-the given Kura router.
-
-[source,java]
----------------------------------------------------------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        ServiceReference<MyService> serviceRef = bundleContext.getServiceReference(LogService.class.getName());
-        MyService myService = bundleContext.getService(serviceRef);
-        ...
-    }
-
-}
----------------------------------------------------------------------------------------------------------------
-
-[[Kura-CamelContext]]
-==== CamelContext
-
-Protected member `camelContext` is the `CamelContext` associated with
-the given Kura router.
-
-[source,java]
-----------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        camelContext.getStatus();
-        ...
-    }
-
-}
-----------------------------------------------
-
-[[Kura-ProducerTemplate]]
-==== ProducerTemplate
-
-Protected member `producerTemplate` is the `ProducerTemplate` instance
-associated with the given Camel context.
-
-[source,java]
------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        producerTemplate.sendBody("jms:temperature", 22.0);
-        ...
-    }
-
-}
------------------------------------------------------------
-
-[[Kura-ConsumerTemplate]]
-==== ConsumerTemplate
-
-Protected member `consumerTemplate` is the `ConsumerTemplate` instance
-associated with the given Camel context.
-
-[source,java]
---------------------------------------------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        double currentTemperature = producerTemplate.receiveBody("jms:temperature", Double.class);
-        ...
-    }
-
-}
---------------------------------------------------------------------------------------------------
-
-[[Kura-OSGiserviceresolver]]
-==== OSGi service resolver
-
-OSGi service resolver (`service(Class<T> serviceType)`) can be used to
-easily retrieve service by type from the OSGi bundle context.
-
-[source,java]
--------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        MyService myService = service(MyService.class);
-        ...
-    }
-
-}
--------------------------------------------------------
-
-If service is not found, a `null` value is returned. If you want your
-application to fail if the service is not available, use
-`requiredService(Class)` method instead. The `requiredService` throws
-`IllegalStateException` if a service cannot be found.
-
-[source,java]
----------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
-
-    @Override
-    public void configure() throws Exception {
-        MyService myService = requiredService(MyService.class);
-        ...
-    }
-
-}
----------------------------------------------------------------
-
-[[Kura-KuraRouteractivatorcallbacks]]
-=== KuraRouter activator callbacks
-
-Kura router comes with the lifecycle callbacks that can be used to
-customize the way the Camel router works. For example to configure the
-`CamelContext` instance associated with the router just before the
-former is started, override `beforeStart` method of the `KuraRouter`
-class:
-
-[source,java]
---------------------------------------------------------------------------
-public class MyKuraRouter extends KuraRouter {
- 
-  ...
-
-  protected void beforeStart(CamelContext camelContext) {
-    OsgiDefaultCamelContext osgiContext = (OsgiCamelContext) camelContext;
-    osgiContext.setName("NameOfTheRouter");
-  }
-
-}
---------------------------------------------------------------------------
-
-[[Kura-LoadingXMLroutesfromConfigurationAdmin]]
-=== Loading XML routes from ConfigurationAdmin
-
-Sometimes it is desired to read the XML definition of the routes from
-the server configuration. This a common scenario for IoT gateways where
-over-the-air redeployment cost may be significant. To address this
-requirement each `KuraRouter` looks for the
-`kura.camel.BUNDLE-SYMBOLIC-NAME.route` property from the `kura.camel`
-PID using the OSGi ConfigurationAdmin. This approach allows you to
-define Camel XML routes file per deployed `KuraRouter`. In order to
-update a route, just edit an appropriate configuration property and
-restart a bundle associated with it. The content of
-the `kura.camel.BUNDLE-SYMBOLIC-NAME.route` property is expected to be
-Camel XML route file, for example:
-
-[source,java]
-------------------------------------------------------
-<routes xmlns="http://camel.apache.org/schema/spring">
-    <route id="loaded">
-        <from uri="direct:bar"/>
-        <to uri="mock:bar"/>
-    </route>
-</routes>
-------------------------------------------------------
-
- 
-
-[[Kura-DeployingKurarouterasadeclarativeOSGiservice]]
-=== Deploying Kura router as a declarative OSGi service
-
-If you would like to deploy your Kura router as a declarative OSGi
-service, you can use `activate` and `deactivate` methods provided by
-`KuraRouter`.
-
-[source,java]
-----------------------------------------------------------------------------------------------------------------------------------------------
-<scr:component name="org.eclipse.kura.example.camel.MyKuraRouter" activate="activate" deactivate="deactivate" enabled="true" immediate="true">
-  <implementation class="org.eclipse.kura.example.camel.MyKuraRouter"/>
-</scr:component>
-----------------------------------------------------------------------------------------------------------------------------------------------
-
diff --git a/docs/modules/ROOT/pages/kura.adoc b/docs/modules/ROOT/pages/kura.adoc
new file mode 120000
index 0000000..d4d3dfa
--- /dev/null
+++ b/docs/modules/ROOT/pages/kura.adoc
@@ -0,0 +1 @@
+../../../../components/camel-kura/src/main/docs/kura.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/paxlogging-component.adoc b/docs/modules/ROOT/pages/paxlogging-component.adoc
deleted file mode 100644
index f469cd9..0000000
--- a/docs/modules/ROOT/pages/paxlogging-component.adoc
+++ /dev/null
@@ -1,114 +0,0 @@
-[[paxlogging-component]]
-= OSGi PAX Logging Component
-:page-source: components/camel-paxlogging/src/main/docs/paxlogging-component.adoc
-
-*Since Camel 2.6*
-
-// HEADER START
-*Only consumer is supported*
-// HEADER END
-
-The PAX Logging component can be used in an OSGi environment to receive
-http://wiki.ops4j.org/display/paxlogging/Pax+Logging[PaxLogging] events
-and process them.
-
-== Dependencies
-
-Maven users need to add the following dependency to their `pom.xml`
-
-[source,xml]
--------------------------------------------
-<dependency>
-  <groupId>org.apache.camel</groupId>
-  <artifactId>camel-paxlogging</artifactId>
-  <version>${camel-version}</version>
-</dependency>
--------------------------------------------
-
-where `${camel-version`} must be replaced by the actual version of Camel.
-
-== URI format
-
-[source,xml]
------------------------------
-paxlogging:appender[?options]
------------------------------
-
-where `appender` is the name of the pax appender that need to be
-configured in the PaxLogging service configuration.
-
-== URI options
-
-
-
-// component options: START
-The OSGi PAX Logging component supports 3 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *bundleContext* (consumer) | The OSGi BundleContext is automatic injected by Camel |  | BundleContext
-| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-|===
-// component options: END
-
-
-
-
-// endpoint options: START
-The OSGi PAX Logging endpoint is configured using URI syntax:
-
-----
-paxlogging:appender
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *appender* | *Required* Appender is the name of the pax appender that need to be configured in the PaxLogging service configuration. |  | String
-|===
-
-
-=== Query Parameters (5 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-
-
-== Message body
-
-The `in` message body will be set to the received PaxLoggingEvent.
-
-== Example usage
-
-[source,xml]
-----------------------------------
-<route>
-    <from uri="paxlogging:camel"/>
-    <to uri="stream:out"/>
-</route>
-----------------------------------
-
-Configuration:
-
-[source,java]
-----------------------------------------------------------
-log4j.rootLogger=INFO, out, osgi:VmLogAppender, osgi:camel
-----------------------------------------------------------
diff --git a/docs/modules/ROOT/pages/paxlogging-component.adoc b/docs/modules/ROOT/pages/paxlogging-component.adoc
new file mode 120000
index 0000000..6be7caa
--- /dev/null
+++ b/docs/modules/ROOT/pages/paxlogging-component.adoc
@@ -0,0 +1 @@
+../../../../components/camel-paxlogging/src/main/docs/paxlogging-component.adoc
\ No newline at end of file
