Release docs version 0.90.0
diff --git a/documentation/website/i18n/en.json b/documentation/website/i18n/en.json
index e82d2e6..86cfa31 100644
--- a/documentation/website/i18n/en.json
+++ b/documentation/website/i18n/en.json
@@ -2536,6 +2536,78 @@
       "version-0.70.0/version-0.70.0-community-get-help": {
         "title": "Get Help",
         "sidebar_label": "Get Help"
+      },
+      "version-0.90.0/version-0.90.0-try-installation": {
+        "title": "Installation",
+        "sidebar_label": "Installation"
+      },
+      "version-0.90.0/version-0.90.0-user-guide-introduction": {
+        "title": "Apache StreamPipes Documentation",
+        "sidebar_label": "Overview"
+      },
+      "version-0.90.0/version-0.90.0-use-connect": {
+        "title": "StreamPipes Connect",
+        "sidebar_label": "StreamPipes Connect"
+      },
+      "version-0.90.0/version-0.90.0-use-pipeline-editor": {
+        "title": "Pipeline Editor",
+        "sidebar_label": "Pipeline Editor"
+      },
+      "version-0.90.0/version-0.90.0-extend-cli": {
+        "title": "StreamPipes CLI",
+        "sidebar_label": "StreamPipes CLI"
+      },
+      "version-0.90.0/version-0.90.0-extend-sdk-functions": {
+        "title": "SDK Guide: Functions",
+        "sidebar_label": "SDK: Functions"
+      },
+      "version-0.90.0/version-0.90.0-extend-sdk-migration-service-discovery": {
+        "title": "Migration Guide: New Service Discovery in 0.69.0",
+        "sidebar_label": "Migration Guide: 0.69.0"
+      },
+      "version-0.90.0/version-0.90.0-extend-sdk-output-strategies": {
+        "title": "SDK Guide: Output Strategies",
+        "sidebar_label": "SDK: Output Strategies"
+      },
+      "version-0.90.0/version-0.90.0-extend-sdk-static-properties": {
+        "title": "SDK Guide: Static Properties",
+        "sidebar_label": "SDK: Static Properties"
+      },
+      "version-0.90.0/version-0.90.0-extend-sdk-stream-requirements": {
+        "title": "SDK Guide: Stream Requirements",
+        "sidebar_label": "SDK: Stream Requirements"
+      },
+      "version-0.90.0/version-0.90.0-extend-setup": {
+        "title": "Development Setup",
+        "sidebar_label": "Development Setup"
+      },
+      "version-0.90.0/version-0.90.0-extend-tutorial-data-processors": {
+        "title": "Tutorial: Data Processors",
+        "sidebar_label": "Tutorial: Data Processors"
+      },
+      "version-0.90.0/version-0.90.0-extend-tutorial-data-sinks": {
+        "title": "Tutorial: Data Sinks",
+        "sidebar_label": "Tutorial: Data Sinks"
+      },
+      "version-0.90.0/version-0.90.0-extend-tutorial-data-sources": {
+        "title": "Tutorial: Data Sources",
+        "sidebar_label": "Tutorial: Data Sources"
+      },
+      "version-0.90.0/version-0.90.0-technicals-configuration": {
+        "title": "Configuration",
+        "sidebar_label": "Configuration"
+      },
+      "version-0.90.0/version-0.90.0-community-contribute": {
+        "title": "Contribute",
+        "sidebar_label": "Contribute"
+      },
+      "version-0.90.0/version-0.90.0-pipeline-elements": {
+        "title": "Overview",
+        "sidebar_label": "Overview"
+      },
+      "version-0.90.0/version-0.90.0-user-guide-installation": {
+        "title": "Installation",
+        "sidebar_label": "Installation"
       }
     },
     "links": {
diff --git a/documentation/website/versioned_docs/version-0.90.0/01_try-installation.md b/documentation/website/versioned_docs/version-0.90.0/01_try-installation.md
new file mode 100644
index 0000000..a7aa14d
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/01_try-installation.md
@@ -0,0 +1,139 @@
+---
+id: version-0.90.0-try-installation
+title: Installation
+sidebar_label: Installation
+original_id: try-installation
+---
+
+The easiest way to install StreamPipes is our Docker-based installation. For production-grade deployments, we also
+recommend looking at our Kubernetes support, which is also part of the installation kit.
+
+## Prerequisites
+
+The Docker-based installation requires **Docker** and **Docker Compose** to be installed on the target machine.
+Installation instructions can be found below.
+
+<div class="admonition info">
+    <div class="admonition-title">Install Docker</div>
+    <p>Go to https://docs.docker.com/installation/ and follow the instructions to install Docker for your OS. Make sure
+        docker can be started as a non-root user (described in the installation manual, don’t forget to log out and in
+        again) and check that Docker is installed correctly by executing docker-run hello-world</p>
+</div>
+
+### Supported operating systems
+
+The Docker-based installation supports the operating systems **Linux**, **Mac OS X** and **Windows 10**. Older windows
+versions are not fully compatible with Docker. Linux VMs running under Windows might cause network problems with Docker,
+therefore some manual work might be needed to make StreamPipes run properly.
+
+### Web Browser
+
+The StreamPipes application itself will be accessible through a web browser. We recommend a recent version of Chrome (
+best experience), Firefox or Edge.
+
+## Install StreamPipes
+
+<ul style="padding-left:0">
+    <li class="installation-step" style="margin-top:20px;">
+        <div class="wrapper-container" style="">
+            <div class="wrapper-step">
+              <span class="fa-stack fa-2x">
+                   <i class="fas fa-circle fa-stack-2x sp-color-green"></i>
+                   <strong class="fa-stack-1x" style="color:white;">1</strong>
+              </span>
+            </div>
+            <div class="wrapper-instruction">
+                Download the latest Apache StreamPipes release and extract the zip file to a directory of your choice.
+                <table class="table" style="margin-top:30px;">
+                    <thead>
+                    <tr style="background:rgb(27, 20, 100);color:white;">
+                        <th scope="col" style="border-bottom:0px;border-top:0px;">File</th>
+                        <th scope="col" style="border-bottom:0px;border-top:0px;">Version</th>
+                        <th scope="col" style="border-bottom:0px;border-top:0px;">Release Date</th>
+                        <th scope="col" style="border-bottom:0px;border-top:0px;">Signatures</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr>
+                        <td>
+                            <a href="https://www.apache.org/dyn/closer.lua?action=download&filename=streampipes/0.90.0/apache-streampipes-0.90.0-source-release.zip">apache-streampipes-0.90.0-source-release.zip</a>
+                        </td>
+                        <td>0.90.0</td>
+                        <td>2023-01-17</td>
+                        <td>
+                            <a href="https://downloads.apache.org/streampipes/0.90.0/apache-streampipes-0.90.0-source-release.zip.sha512">SHA</a>
+                            <a href="https://downloads.apache.org/streampipes/0.90.0/apache-streampipes-0.90.0-source-release.zip.asc">PGP</a>
+                        </td>
+                    </tr>
+                    </tbody>
+                </table>
+                <div class="row">
+                    <div class="alert alert-info" role="alert">
+                        The above release file should be verified using the PGP signatures and the <a
+                            href="https://downloads.apache.org/streampipes/KEYS">project release KEYS</a>. See the
+                        official ASF <a target="asf" href="https://www.apache.org/dyn/closer.cgi#verify">verification
+                        instructions</a> for a description of using the PGP and KEYS files for verification. A SHA512
+                        checksum is also provided as an additional verification method.
+                    </div>
+                </div>
+            </div>
+        </div>
+    </li>
+    <li class="installation-step">
+        <div class="wrapper-container">
+            <div class="wrapper-step">
+              <span class="fa-stack fa-2x">
+                   <i class="fas fa-circle fa-stack-2x sp-color-green"></i>
+                   <strong class="fa-stack-1x" style="color:white;">2</strong>
+              </span>
+            </div>
+            <div class="wrapper-instruction">
+                <div style="margin-bottom:5px;">In a command prompt, open the folder <code>installer/compose</code> and
+                    run <code>docker-compose up -d</code>
+                </div>
+            </div>
+        </div>
+    </li>
+    <li class="installation-step">
+        <div class="wrapper-container" style="align-items: center;justify-content: center;">
+            <div class="wrapper-step">
+                <span class="fa-stack fa-2x">
+                     <i class="fas fa-circle fa-stack-2x sp-color-green"></i>
+                     <strong class="fa-stack-1x" style="color:white;">3</strong>
+                </span>
+            </div>
+            <div class="wrapper-instruction">
+                Open your browser, navigate to http://localhost:80 (or the domain name of your server) and log in using
+                the default email <code>admin@streampipes.apache.org</code> and default password <code>admin</code>.
+            </div>
+        </div>
+    </li>
+</ul>
+
+## Setup StreamPipes
+
+Once you've opened the browser at the URL given above, you should see the StreamPipes application as shown below. At
+initial startup, StreamPipes automatically performs an installation process.
+After the installation has finished, continue by clicking on "Go to login
+page", once all components are successfully configured.
+
+On the login page, enter your credentials, then you should be forwarded to the home page.
+
+Congratulations! You've successfully managed to install StreamPipes. Now we're ready to build our first pipeline!
+
+<div class="my-carousel docs-carousel">
+    <img src="/docs/img/01_try-installation/03_login.png" alt="Go to login page">
+    <img src="/docs/img/01_try-installation/04_home.png" alt="Home page">
+</div>
+
+<div class="admonition error">
+    <div class="admonition-title">Errors during the installation process</div>
+    <p>In most cases, errors during the installation are due to an under-powered system.<br/>
+        If there is a problem with any of the components, please restart the whole system (<code>docker-compose
+            down</code> and eventually also delete the volumes).
+        Please also make sure that you've assigned enough memory available to Docker.</p>
+</div>
+
+## Next Steps
+
+That's it! Have a look at the usage guide to learn how to use Apache StreamPipes.
diff --git a/documentation/website/versioned_docs/version-0.90.0/01_try-overview.md b/documentation/website/versioned_docs/version-0.90.0/01_try-overview.md
new file mode 100644
index 0000000..58b28db
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/01_try-overview.md
@@ -0,0 +1,120 @@
+---
+id: version-0.90.0-user-guide-introduction
+title: Apache StreamPipes Documentation
+sidebar_label: Overview
+original_id: user-guide-introduction
+---
+
+This is the documentation of Apache StreamPipes.
+
+<img class="docs-image docs-image-small docs-image-no-shadow" style="padding: 10px;" src="/docs/img/01_try-overview/01_streampipes-overview.png" alt="StreamPipes Overview">
+
+
+<div class="container grid col-3">
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                🚀 Try
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Your first steps with Apache StreamPipes.</b></div>
+               <a href="try-installation.html">Install StreamPipes</a>
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                💡 Concepts
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Learn about some general concepts of StreamPipes.</b></div>
+                <a href="concepts-overview.html">Overview</a>
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                🎓 Use
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Learn how to use the various modules of StreamPipes.</b></div>
+                <a href="use-connect.html">StreamPipes Connect</a>, <a href="use-pipeline-editor.html">Pipeline Editor</a>, 
+                <a href="use-managing-pipelines.html">Managing Pipelines</a>, 
+                <a href="use-live-dashboard.html">Live Dashboard</a>, <a href="use-data-explorer.html">Data Explorer</a>, 
+                <a href="use-notifications.html">Notifications</a>
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                📚 Pipeline Elements
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Available pipeline elements in StreamPipes.</b></div>
+                <a href="pe/org.apache.streampipes.connect.protocol.stream.kafka.html">Adapters</a>, 
+                <a href="pe/org.apache.streampipes.processors.aggregation.flink.aggregation.html">Data Processors</a>, 
+                <a href="pe/org.apache.streampipes.sinks.databases.jvm.couchdb.html">Data Sinks</a> 
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                âš¡ Deploy 
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>How to set up StreamPipes in test and production environments.</b></div>
+                <a href="deploy-docker.html">Docker</a>, <a href="deploy-kubernetes.html">Kubernetes</a>, <a href="../deploy
+                -use-ssl">Use SSL</a>
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                💻 Extend
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Write your own pipeline elements for StreamPipes.</b></div>
+                <a href="extend-setup.html">Development Setup</a>, <a href="extend-cli.html">CLI</a>, <a href="../extend
+                -archetypes">Maven Archetypes</a>,
+                <a href="extend-tutorial-data-sources.html">Tutorial Data Sources</a>, <a href="../extend-tutorial-data
+                -processors">Tutorial Data Processors</a>, <a href="extend-tutorial-data-sinks.html">Tutorial Data Sinks
+                </a>,
+                <a href="extend-sdk-event-model.html">Event Model</a>, <a href="extend-sdk-stream-requirements.html">Stream
+                 Requirements</a>, <a href="extend-sdk-static-properties.html">Static Properties</a>,
+                <a href="extend-sdk-output-strategies.html">Output Strategies</a>
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                🔧 Technicals
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Learn about technical concepts behind the curtain.</b></div>
+                <a href="technicals-architecture.html">Architecture</a>, <a href="technicals-user-guidance.html">User
+                 Guidance
+                </a>, <a href="technicals-runtime-wrappers.html">Runtime Wrappers</a>,
+                <a href="technicals-messaging.html">Messaging</a>, <a href="technicals-configuration.html">Configuration</a>
+            </div>
+        </div>
+    </div>
+    <div class="column">
+        <div class="toc-box">
+            <div class="toc-header border-thin">
+                👪 Community
+            </div>
+            <div class="toc-content">
+                <div class="toc-section-header"><b>Get support and learn how to contribute to StreamPipes.</b></div>
+                <a href="community-get-help.html">Get Help</a>, <a href="community-contribute.html">Contribute</a>
+            </div>
+        </div>
+    </div>
+</div>
+
+
diff --git a/documentation/website/versioned_docs/version-0.90.0/03_use-connect.md b/documentation/website/versioned_docs/version-0.90.0/03_use-connect.md
new file mode 100644
index 0000000..f8525ad
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/03_use-connect.md
@@ -0,0 +1,73 @@
+---
+id: version-0.90.0-use-connect
+title: StreamPipes Connect
+sidebar_label: StreamPipes Connect
+original_id: use-connect
+---
+
+StreamPipes Connect is the module to connect external data sources with Apache StreamPipes directly from the user interface. 
+StreamPipes Connect offers various adapters for common communication protocols and some specific sensors. Besides connecting data, StreamPipes Connect offers ways to pre-process data without the need to build pipelines and integrates a schema guesser that listens for incoming data and recommends the recognized event schema.
+
+The screenshot below illustrates the data marketplace, which shown after navigating to "StreamPipes Connect" and then clicking the "New adapter" button at the top.
+
+<img class="docs-image" src="/docs/img/03_use-connect/01_connect-overview.png" alt="StreamPipes Connect Overview">
+
+## Connecting new data sources
+
+### Data Marketplace
+The data marketplace shows a list of all adapters that are currently installed in Apache StreamPipes. Each adapter offers various configuration options which depend on the specifics of the adapter.
+Adapters are distinguished a) by the data source concept they provide (data set or data stream) and b) the adapter type, where we distinguish between _generic adapters_, which usually implement a generic communication protocol such as MQTT or Apache Kafka or a specific sensor interface (e.g., for Netio power sockets).
+Several filter options are available to find a suitable adapter. The configuration of a new adapter starts with selecting one of the available adapters, which starts an assistant that supports the adapter generation.
+
+### Protocol/Basic Settings
+In the first step, basic configurations need to be provided. For instance, for an Apache PLC4X adapter, the IP address of the PLC needs to be provided. In this example, we provide basic settings for connecting to an Apache Kafka broker. After all values are provided, the "Next" button opens the next step. 
+
+<img class="docs-image" src="/docs/img/03_use-connect/06_connect-create.png" alt="StreamPipes Connect Basic Settings">
+
+### Format Specification
+The next step, format generation, is only available for generic adapters which support different message formats to be sent over the corresponding protocol. Think of a message broker that is able to consume messages in both JSON format or binary format.
+Currently supported formats include XML, various JSON representations, images and CSV. After a format has been selected, further format configurations can be provided (depending on the selected format) to further customize the incoming message format.
+
+<img class="docs-image" src="/docs/img/03_use-connect/02_customize-format.png" alt="StreamPipes Connect Format Selection">
+
+### Schema Editor
+In the next step, based on the previously provided protocol and format settings, the system will either provide the fixed/pre-defined schema of the adapter or, in case of specific adapters, will connect to the underlying system and try to listen for incoming data. After a few seconds, the schema editor will appear that provides a list of detected fields from the incoming events (the schema).
+
+<img class="docs-image" src="/docs/img/03_use-connect/03_schema-editor.png" alt="StreamPipes Connect Schema Editor">
+
+In the toolbar, several configuration options are available which transform the original schema:
+
+* **Add Nested Property**. This option allows to modify the structure of the event by creating a nested structure. The schema can be simply changed by dragging and dropping fields into the nested structure.
+* **Add Static Value**. This option allows to add a field containing a static value (e.g., an identifier) to the event.
+* **Add Timestamp**. This options appends the current timestamp to each incoming event, useful in case the timestamp is not provided by the origin.
+* **Refresh**. Re-triggers the schema guessing.
+* **Delete field**. Select one or more fields by clicking the checkbox on the right and trigger the delete button.
+* **Property scope**. For each field, a property scope can be defined which is either _Measurement_, _Dimension_ or _Header_. These values are later be used in the pipeline editor to assist in configuring pipeline elements and do not have any functional consequence. 
+Use _Measurement_ to indicate the field measures a value (e.g., a temperature value from a sensor), use _Dimension_ for any identifier (e.g., the sensor ID) and use _Header_ for any other metadata such as timestamps.
+
+For each field (also called event property) of the schema, additional configuration options are available by clicking the _Edit_ button:
+
+* **Label**. Used to provide a human-readable label for the field, which will ease the identification of fields when building pipelines.
+* **Runtime Name.** This is the identifier of the field in the underlying message representation format (e.g., the JSON key). Renaming the runtime name will trigger a so-called _transformation rule_ which renames the incoming field name to the new field name before forwarding it to StreamPipes.
+* **Domain Property/Semantic Type**. To help StreamPipes better understand the value which is represented by the field, semantic type information can be given. Up from StreamPipes 0.68.0, the semantic type can be selected from a wide range of available options. Additionally, an URL can be manually provided that indicates the meaning of the value (e.g., http://schema.org/Temperature).
+* **Mark as Timestamp**. Indicates that the selected value represents a timestamp. When selected, a _timestamp converter_ can be configured which will convert incoming timestamps to the UNIX timestamp.
+* **Runtime Type**. Here, the data type can be changed  
+* **Unit**. Allows to specify the unit in which the value is measured. Once selected, you can also automatically convert the unit to a target unit, which will then be inserted into the data stream produced by the adapter (see screenshot below). 
+
+<img class="docs-image" src="/docs/img/03_use-connect/04_schema-editor-conversion.png" alt="StreamPipes Connect Unit Conversion">
+
+Assigning a timestamp is mandatory and can be either done by adding a timestamp from the menu, or by choosing an existing field and marking it as timestamp.
+
+### Adapter Generation
+Finally, the adapter is ready to be started. In the _Adapter Generation_ page, a name and description for the resulting data stream must be provided.
+Once started, StreamPipes creates your new adapter and displays a preview of the connected data, which refreshes about once per second.
+Afterwards, the newly created data stream is available in the pipeline editor for further usage.
+
+<img class="docs-image" src="/docs/img/03_use-connect/05_adapter-generation.png" alt="StreamPipes Connect Adapter Generation">
+
+## Managing adapters
+
+Currently running adapters are available in the "Running adapters" section of StreamPipes Connect. Existing adapters can be stopped and deleted. Currently, there is no mechanism to edit an existing adapter or to stop the adapter without deleting it.
+
+### Adapter Templates
+For frequently used configurations, adapter templates can be created. An adapter template is a pre-configured adapter which can be further customized by users. Created adapter templates are available in the marketplace similar to standard adapters.
diff --git a/documentation/website/versioned_docs/version-0.90.0/03_use-pipeline-editor.md b/documentation/website/versioned_docs/version-0.90.0/03_use-pipeline-editor.md
new file mode 100644
index 0000000..82d614e
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/03_use-pipeline-editor.md
@@ -0,0 +1,63 @@
+---
+id: version-0.90.0-use-pipeline-editor
+title: Pipeline Editor
+sidebar_label: Pipeline Editor
+original_id: use-pipeline-editor
+---
+
+The pipeline editor module supports building pipelines that transform a data stream using a set of resuable data processors and data sinks.
+The empty pipeline editor looks similar to the illustration below after a new installation.
+
+<img class="docs-image" src="/docs/img/03_use-pipeline-editor/01_pipeline-editor-overview.png" alt="StreamPipes Pipeline Editor Overview">
+
+## Pipeline Elements
+The four main concepts data sets, data streams, data processors and data sinks are available at the top of the pipeline editor. By switching the tabs, the individual pipeline elements for each category can be found.
+By clicking the questionmark symbol, which appears when hovering over an element, additional information can be viewed (e.g., for data streams a live preview of incoming data and the documentation of the pipeline element for data processors and sinks).
+
+<img class="docs-image" src="/docs/img/03_use-pipeline-editor/02_pipeline-element-info.png" alt="StreamPipes Pipeline Element Info">
+
+## Creating Pipelines
+Pipelines are built by dragging data streams, processors and sinks into the pipeline assembly area. Typically, a pipeline is built step-by-step starting with a data soure (stream or set). 
+Afterwards, data processors and sinks are subsequently added to the pipeline. Connections between pipeline elements are made by selecting the gray connector of the source and moving it to the target pipeline element.
+Once a connection is made, StreamPipes performs a quick validation step and, in case two pipeline elements are compatible, automatically opens a configuration window.
+
+### Configuring Pipeline Elements
+The configuration depends on the selected pipeline element and looks similar to the screenshot below.
+In general, pipeline elements are configured by providing the required values. Once the pipeline element is fully configured, the _Save_ button activates and can be used to save the configuration for the pipeline element.
+
+<img class="docs-image" src="/docs/img/03_use-pipeline-editor/03_configure-pipeline-element.png" alt="StreamPipes Pipeline Element Configuration">
+
+In addition, the following options are available in the pipeline element configuration menu:
+* **Show documentation** extends the view and displays the pipeline element's documentation next to the configuration view.
+* **Show only recommended settings** filters the list of available fields provided by the connected input data stream based on the _property scope_, e.g., so that only measurement values are displayed and dimension fields from the input stream are not available for selection. If deactivated, selections contain the full list of available fields that match the input requirement of the data processor.
+
+### Pipeline Element Options
+Further options for a pipeline element can be displayed by hovering over a pipeline element in the assembly area, so that additional buttons appear around the pipeline element:
+
+* **Configure element** re-opens the configuration view to update the pipeline element configuration (only available for data processors and sinks)
+* **Delete element** removes the pipeline element from the pipeline  
+* **Help** opens the pipeline element's documentation
+* **Compatible element** opens a dialog which shows all pipeline elements that are compatible to the current element's output data stream. The dialog offers an alternative to selecting pipeline elements directly from the pipeline element selection in the top.
+* **Pipeline Element Recommendation** opens a dialog which shows all recommended pipeline elements that are compatible the current element's output data stream. The recommendation is based on previously connected pipeline elements and is displayed below.
+
+### Pipeline Editor Options
+Several pipeline editor options are available in the menu bar of the pipeline assembly:
+
+<img class="docs-image" src="/docs/img/03_use-pipeline-editor/05_pipeline-editor-options.png" alt="StreamPipes Pipeline Editor Options">
+
+* **Save pipeline** opens the save dialog (see below)
+* **Pan** allows to pan within the assembly area, useful for larger pipelines that do not fit in the screen
+* **Select** is visible if pan mode is active and switches back to the default select mode
+* **Zoom in/out** triggers the zoom in the pipeline assembly
+* **Auto Layout** layouts the pipeline in a much more beautiful way than you are able to do by yourself ;-)
+* **All pipeline modification saved** is displayed if the current pipeline has been cached. Cache updates are triggered after every change of the pipeline so that changes are not lost after reloading the window.
+* **Hints** are shown to display current errors (e.g., incomplete pipelines). Details can be opened by clicking the hint button.
+* **Clear assembly** clears the assembly and removes the current pipeline.
+
+### Saving a pipeline
+To save a pipeline, press the _save pipeline_ button. A dialog pops up where a name and description of the pipeline can be entered (only name is mandatory).
+Additionally, a pipeline can be directly started after it has been stored by checking the corresponding button.
+
+<img class="docs-image" src="/docs/img/03_use-pipeline-editor/06_save-pipeline.png" alt="StreamPipes Save Pipeline Dialog">
+
+
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-cli.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-cli.md
new file mode 100644
index 0000000..0cf8230
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-cli.md
@@ -0,0 +1,191 @@
+---
+id: version-0.90.0-extend-cli
+title: StreamPipes CLI
+sidebar_label: StreamPipes CLI
+original_id: extend-cli
+---
+
+The StreamPipes command-line interface (CLI) is focused on developers in order to provide an easy entrypoint to set up a suitable dev environment, either planning on developing
+
+* new extensions such as **connect adapters, processors, sinks** or,
+* new core features for **backend** and **ui**.
+
+The main difference between the standard Docker/K8s installation is an improved communication between services running as containers and services running locally for development.
+
+The CLI can be found in the [main repository](https://github.com/apache/streampipes/tree/master/installer/cli) or in the ``installer/cli`` folder of the downloaded source code.
+
+## TL;DR
+
+```bash
+streampipes env --list
+[INFO] Available StreamPipes environment templates:
+pipeline-element
+...
+streampipes env --set pipeline-element
+streampipes up -d
+```
+> **NOTE**: use `./streampipes` if you haven't add it to the PATH and sourced it (see section "Run `streampipes` from anywhere?").
+
+## Prerequisites
+The CLI is basically a wrapper around multiple `docker` and `docker-compose` commands plus some additional sugar.
+
+* Docker >= 17.06.0
+* Docker-Compose >= 1.26.0 (Compose file format: 3.4)
+* Google Chrome (recommended), Mozilla Firefox, Microsoft Edge
+* For Windows Developer: GitBash only
+
+
+Tested on: **macOS**, **Linux**, **Windows***)
+
+> **NOTE**: *) If you're using Windows the CLI only works in combination with GitBash - CMD, PowerShell won't work.
+
+
+## CLI commands overview
+
+```
+StreamPipes CLI - Manage your StreamPipes environment with ease
+
+Usage: streampipes COMMAND [OPTIONS]
+
+Options:
+  --help, -h      show help
+  --version, -v   show version
+
+Commands:
+  clean       Remove StreamPipes data volumes, dangling images and network
+  down        Stop and remove StreamPipes containers
+  env         Inspect and select StreamPipes environments
+  info        Get information
+  logs        Get container logs for specific container
+  ps          List all StreamPipes container for running environment
+  pull        Download latest images from Dockerhub
+  restart     Restart StreamPipes environment
+  up          Create and start StreamPipes container environment
+
+Run 'streampipes COMMAND --help' for more info on a command.
+```
+
+## Usage: Along dev life-cycle
+
+**List** available environment templates.
+```bash
+streampipes env --list
+```
+
+**Inspect** services in an available environment to know what kind of services it is composed of.
+```bash
+streampipes env --inspect pipeline-element
+```
+
+**Set** environment, e.g. `pipeline-element`, if you want to write a new pipeline element.
+```bash
+streampipes env --set pipeline-element
+```
+
+**Start** environment ( default: `dev` mode). Here the service definition in the selected environment is used to start the multi-container landscape.
+> **NOTE**: `dev` mode is enabled by default since we rely on open ports to core service such as `consul`, `couchdb`, `kafka` etc. to reach from the IDE when developing. If you don't want to map ports (except the UI port), then use the `--no-ports` flag.
+
+```bash
+streampipes up -d
+# start in production mode with unmapped ports
+# streampipes up -d --no-ports
+```
+Now you're good to go to write your new pipeline element :tada: :tada: :tada:
+
+> **HINT for extensions**: Use our [Maven archetypes](https://streampipes.apache.org/docs/docs/dev-guide-archetype/) to setup a project skeleton and use your IDE of choice for development. However, we do recommend using IntelliJ.
+
+> **HINT for core**: To work on `backend` or `ui` features you need to set the template to `backend` and clone the core repository [streampipes](https://github.com/apache/streampipes) - check the prerequisites there for more information.
+
+**Stop** environment and remove docker container
+```bash
+streampipes down
+# want to also clean docker data volumes when stopping the environment?
+# streampipes down -v
+```
+
+## Additionally, useful commands
+
+**Start individual services only?** We got you! You chose a template that suits your needs and now you only want to start individual services from it, e.g. only Kafka and Consul.
+
+> **NOTE**: the service names need to be present and match your current `.spenv` environment.
+
+```bash
+streampipes up -d kafka consul
+```
+
+**Get current environment** (if previously set using `streampipes env --set <environment>`).
+```bash
+streampipes env
+```
+
+**Get logs** of specific service and use optional `--follow` flag to stay attached to the logs.
+```bash
+streampipes logs --follow backend
+```
+
+**Update** all services of current environment
+```bash
+streampipes pull
+```
+
+**Restart** all services of current environment or specific services
+```bash
+streampipes restart
+# restart backend & consul
+# streampipes restart backend consul
+```
+
+**Clean** your system and remove created StreamPipes Docker volumes, StreamPipes docker network and dangling StreamPipes images of old image layers.
+```bash
+streampipes clean
+# remove volumes, network and dangling images
+# streampipes clean --volumes
+```
+
+## Modify/Create an environment template
+As of now, this step has to be done **manually**. All environments are located in `environments/`.
+
+```bash
+├── adapter               # developing a new connect adapter
+├── backend               # developing core backend features
+├── basic                 # wanna run core, UI, connect etc from the IDE?
+├── full                  # full version containing more pipeline elements
+├── lite                  # few pipeline elements, less memory  
+├── pipeline-element      # developing new pipeline-elements
+└── ui                    # developing UI features
+```
+**Modifying an existing environment template**. To modify an existing template, you can simply add a `<YOUR_NEW_SERVICE>` to the template.
+> **NOTE**: You need to make sure, that the service your are adding exists in `deploy/standalone/service/<YOUR_NEW_SERVICE>`. If your're adding a completely new service take a look at existing ones, create a new service directory and include a `docker-compose.yml` and `docker-compose.dev.yml` file.
+
+```
+[environment:backend]
+activemq
+kafka
+...
+<YOUR_NEW_SERVICE>
+```
+
+**Creating a new** environment template. To create a new environment template, place a new file `environments/<YOUR_NEW_ENVIRONMENT>` in the template directory. Open the file and use the following schema.
+> **IMPORTANT**: Please make sure to have `[environment:<YOUR_NEW_ENVIRONMENT>]` header in the first line of your new template matching the name of the file. Make sure to use small caps letters (lowercase) only.
+
+```
+[environment:<YOUR_NEW_ENVIRONMENT>]
+<SERVICE_1>
+<SERVICE_2>
+...
+```
+
+## Run `streampipes` from anywhere? No problem
+Simply add the path to this cli directory to your `$PATH` (on macOS, Linux) variable, e.g. in your `.bashrc` or `.zshrc`, or `%PATH%` (on Windows).
+
+For **macOS**, or **Linux**:
+
+```bash
+export PATH="/path/to/streampipes-installer/installer/cli:$PATH"
+```
+
+For **Windows 10**, e.g. check this [documentation](https://helpdeskgeek.com/windows-10/add-windows-path-environment-variable/).
+
+
+## Upgrade to new version
+To upgrade to a new version, simply edit the version tag `SP_VERSION` in the `.env` file.
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-functions.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-functions.md
new file mode 100644
index 0000000..05c5e7e
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-functions.md
@@ -0,0 +1,126 @@
+---
+id: version-0.90.0-extend-sdk-functions
+title: SDK Guide: Functions
+sidebar_label: SDK: Functions
+original_id: extend-sdk-functions
+---
+
+## Introduction
+
+Pipeline elements such as data processors and data sinks are a great way 
+to create _reusable_ components that can be part of pipelines.
+However, creating a pipeline element is not always the best choice:
+
+* The behaviour of a data processor is bound to a specific input stream _and_
+* A data processor doesn't contain any user-defined configuration _and_
+* The intended action is fixed or known at build time and the data processor shouldn't be available in the pipeline editor.
+
+To cover such use cases, we provide _StreamPipes Functions_. Functions 
+are a great way to define custom processing logic based on previously 
+connected data streams.
+
+Functions can be registered in a similar way to pipeline elements, but define expected input 
+streams at startup time. Functions are started once the corresponding _extensions service_ starts
+and run until the service is stopped. 
+
+## Writing a function
+
+<div class="admonition warning">
+    <div class="admonition-title">Work in Progress</div>
+    <p>Functions are currently in preview mode and are not yet recommended for production usage. 
+APIs are subject to change in a future version.</p>
+</div>
+
+To define a function, create a new extensions service using the [Maven Archetypes](06_extend-archetypes.md) or use an already existing service.
+
+### Skeleton
+
+Functions can be defined by creating a new class which extends the ``StreamPipesFunction`` class.
+
+The basic skeleton looks like this:
+
+```java
+public class StreamPipesFunctionExample extends StreamPipesFunction {
+  
+  @Override
+  public FunctionId getFunctionId() {
+    return FunctionId.from("my-function-id", 1);
+  }
+
+  @Override
+  public List<String> requiredStreamIds() {
+    return List.of("<id of the required stream>");
+  }
+
+  @Override
+  public void onServiceStarted(FunctionContext context) {
+    // called when the service is started
+  }
+
+  @Override
+  public void onEvent(Event event, String streamId) {
+    // called when an event arrives
+  }
+
+  @Override
+  public void onServiceStopped() {
+    // called when the service is stopped
+  }
+}
+
+```
+
+The structure of a function class is easy to understand:
+* _getFunctionId_ requires an identifier in form of a ``FunctionId``, which defines the id itself along with a version number that can be freely chosen.
+* _requiredStreamIds_ expects a list of references to data streams that are already available in StreamPipes. See below to learn how to find the id of a stream in StreamPipes.
+* _onServiceStarted_ is called once the extensions service is started and can be used to initialize the function.
+* _onEvent_ is called every time a new event arrives and provides a ``streamId`` as a reference to the corresponding stream, which is useful in case multiple data streams are received by the function.
+* _onServiceStopped_ is called when the extensions service is stopped and can be used to perform any required cleanup.
+
+### Getting a stream ID
+
+Functions require a reference to all data streams that should be retrieved by the function.
+Currently, the only way to get the ID of a function is by navigating to the ``Asset Management`` view in the StreamPipes UI.
+Create a new asset, click on ``Edit Asset`` and open ``Add Link`` in the _Linked Resources_ panel.
+Choose ``Data Source`` as link type, select one of the available sources, copy the ``Resource ID`` and provide this ID in the ``requiredStreamIds`` method.
+
+### Function Context
+
+The ``onServiceStarted`` method provides a function context which provides several convenience methods to work with functions:
+
+* _getFunctionId_ returns the current function identifier
+* _getConfig_ returns a reference to configuration options of the extensions service
+* _getClient_ returns a reference to the StreamPipes client to interact with features from the REST API.
+* _getStreams_ returns the data model of all data streams defined in the ``requiredStreamIds`` method.
+* _getSchema_ returns the schema of a specific data stream by providing the ``streamId``
+
+
+## Registering a function
+
+Registering a function is easy and can be done in the _Init_ class of the service.
+E.g., considering a service definition as illustrated below, simply call ``registerFunction`` and 
+provide an instance of your function.
+
+```java
+
+  @Override
+  public SpServiceDefinition provideServiceDefinition() {
+    return SpServiceDefinitionBuilder.create("my-service-id",
+            "StreamPipes Function Example",
+            "",
+            8090)
+        .registerFunction(new MyExampleFunction())
+        .registerMessagingFormats(
+            new JsonDataFormatFactory())
+        .registerMessagingProtocols(
+            new SpNatsProtocolFactory())
+        .build();
+  }
+  
+```
+
+## Metrics & Monitoring
+
+Similar to pipeline elements, function register at the StreamPipes core. 
+Running functions can be seen in the pipeline view of the user interface under _Functions_, right below the list of available pipelines.
+Similar to pipelines, simple metrics, monitoring info and exceptions can be viewed in the _Details_ section of each function. 
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-migration-sd.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-migration-sd.md
new file mode 100644
index 0000000..f2b4bed
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-migration-sd.md
@@ -0,0 +1,117 @@
+---
+id: version-0.90.0-extend-sdk-migration-service-discovery
+title: Migration Guide: New Service Discovery in 0.69.0
+sidebar_label: Migration Guide: 0.69.0
+original_id: extend-sdk-migration-service-discovery
+---
+
+
+## Introduction
+As part of our roadmap towards a release 1.0, Apache StreamPipes 0.69.0 features a new service discovery approach along with performance improvements related to a new storage layer for pipeline element descriptions.
+
+The new service discovery approach is better suited for cloud-native scenarios, as the hostname of a pipeline element is now decoupled from its description. As such, StreamPipes now supports recovery of pipeline elements independent from their assigned host.
+In addition, the new approach simplifies development of StreamPipes, e.g., in cases where the core is running in Docker and pipeline elements are developed on a local machine. In this case, the IP of the host machine should now be auto-discovered so that provision of environement variables should now be obsolete in most cases.
+The second large improvement is related to the replacement of RDF4J as the storage engine with a NoSQL database. This leads to much faster load times (you will notice this especially at system startup).
+
+While we are heavily working towards a stable release 1.0, we decided to put our efforts into the remaining features required for 1.0 and do not provide an auto-migration related to some breaking changes.
+Therefore, we recommend to reinstall StreamPipes when updating to 0.69.0. We currently plan to have at most two more releases before releasing the first 1.x version of StreamPipes.
+
+## Installation
+* Before upgrading to 0.69.0, clean any existing installation (e.g., by running ``docker-compose down -v``) and make sure that no volumes of StreamPipes are left.
+* Upgrade to the latest installer version (can be found at [streampipes/installer](https://github.com/apache/streampipes/tree/dev/installer))
+* Upon restart, make sure that the setup dialog appears (make sure that the new StreamPipes logo appears) and re-initialize the system.
+
+## SDK changes
+
+0.69.0 comes with a new ``ServiceDefinitionBuilder`` for pipelines, which simplifies the definition of a pipeline element. 
+
+The ServiceDefinitionBuilder requires an ID of your extensions service, an optional title and description and a default port.
+It is best to provide 8090 as the default port, so that this will be the standard port of all StreamPipes extensions services at deployment time in a containerized environment.
+The port port can always be overriden by providing an ``SP_PORT`` environment variable.
+
+### Init class
+
+Modify the Init class of your pipeline element service as follows:
+
+```java
+public class ExamplesInit extends StandaloneModelSubmitter {
+
+  public static void main(String[] args) {
+    new ExamplesInit().init();
+  }
+
+  @Override
+  public SpServiceDefinition provideServiceDefinition() {
+    return SpServiceDefinitionBuilder.create("org.apache.streampipes.processors.examples.jvm",
+            "StreamPipes Code Examples",
+            "",
+            8090)
+            .registerMessagingProtocols(new SpKafkaProtocolFactory(), new SpJmsProtocolFactory())
+            .registerMessagingFormats(new JsonDataFormatFactory())
+            .registerPipelineElement(new MyPipelineElementController())
+            .registerAdapter(new MyAdapter())
+            .build();
+  }
+}
+```
+
+You can now easily define a StreamPipes extensions service that supports both custom adapters and pipeline elements by using the following Maven dependency:
+This is optional and no changes to your existing Maven dependencies (except the version, e.g., 0.69.0-SNAPSHOT) are required.
+
+```maven
+<dependency>
+    <groupId>org.apache.streampipes</groupId>
+    <artifactId>streampipes-container-extensions</artifactId>
+</dependency>
+```
+
+
+### Configs
+Prior to version 0.69.0, additionally configs had to be provided in a separate ``Config`` class. This is now obsolete - configs can be directly provided within the builder class as follows:
+
+```java
+
+ @Override
+  public SpServiceDefinition provideServiceDefinition() {
+    return SpServiceDefinitionBuilder.create("org.apache.streampipes.processors.examples.jvm",
+            "StreamPipes Code Examples",
+            "",
+            8090)
+            .registerPipelineElement(new MyPipelineElement())
+            .registerAdapter(new MyAdapter())
+            .addConfig("key", 1)
+            .addConfig("my-string-config", "myvalue")
+            .build();
+  }
+```
+
+Configs can be easily accessed from the ``EventProcessorRuntimeContext`` (or ``EventSinkRuntimeContext``):
+
+```java
+@Override
+  public void onInvocation(Parameters params, 
+                            SpOutputCollector spOutputCollector, 
+                            EventProcessorRuntimeContext context) {
+  
+    Integer myConfigValue = context.getConfigStore().getConfig().getInteger("key");
+  }
+```
+
+
+### Service Discovery
+An extensions service can be started by executing the Init class. StreamPipes will now automatically select the proper service IP address and register the service in Consul.
+You can inspect the selected IP address in the console:
+
+```
+16:41:58.342 SP [main] INFO  o.a.s.commons.networking.Networking - Using auto-discovered IP: 172.30.80.1
+16:41:58.364 SP [main] INFO  o.a.s.commons.networking.Networking - Using port from provided environment variable SP_PORT: 6025
+16:41:58.367 SP [main] INFO  o.a.s.c.init.DeclarersSingleton - Registering 0 configs in key/value store
+16:41:58.400 SP [main] INFO  o.a.s.s.consul.ConsulProvider - Checking if consul is available...
+16:41:58.419 SP [main] INFO  o.a.s.s.consul.ConsulProvider - Successfully connected to Consul
+```
+
+In some (rare) cases, a non-resolvable IP will be selected. In this case, you can manually override the IP by providing a ``SP_HOST`` environment variable. This falls back to a similar behaviour as in pre-0.69.0-versions and will use the manually provided IP.
+
+
+
+
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-output-strategies.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-output-strategies.md
new file mode 100644
index 0000000..d8f8b73
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-output-strategies.md
@@ -0,0 +1,349 @@
+---
+id: version-0.90.0-extend-sdk-output-strategies
+title: SDK Guide: Output Strategies
+sidebar_label: SDK: Output Strategies
+original_id: extend-sdk-output-strategies
+---
+
+## Introduction
+In StreamPipes, output strategies determine the output of a data processor.
+As the exact input schema of a processor is usually not yet known at development time (as processors can be connected with any stream that matches their requirements), output strategies are a concept to define how an input data stream is transformed to an output data stream.
+
+The following reference describes how output strategies can be defined using the SDK.
+
+<div class="admonition tip">
+<div class="admonition-title">Code on Github</div>
+<p>For all examples, the code can be found on <a href="https://www.github.com/apache/streampipes-examples
+/tree/dev/streampipes-pipeline-elements-examples-processors-jvm/src/main/java/org/apache/streampipes/pe/examples/jvm
+/outputstrategy/">Github</a>.</p>
+</div>
+
+## Reference
+
+The methods described below to create static properties are available in the ``ProcessingElementBuilder`` class and are usually used in the ``declareModel`` method of the controller class.
+
+As follows, we will use the following example event to explain how output strategies define the output of a data processor:
+
+```json
+{
+    "timestamp" : 1234556,
+    "temperature" : 37.0,
+    "deviceId" : "1"
+
+}
+```
+
+### Keep Output
+
+A ``KeepOutputStrategy`` declares that the output event schema will be equal to the input event schema.
+In other terms, the processor does not change the schema, but might change the values of event properties.
+
+A keep output strategy can be defined as follows:
+
+```java
+
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".keep", "Keep output example example", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredProperty(EpRequirements.anyProperty())
+                    .build())
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+
+            // declaring a keep output strategy
+            .outputStrategy(OutputStrategies.keep())
+
+            .build();
+  }
+
+```
+
+According to the example above, the expected output event schema of the example input event would be:
+
+```json
+{
+    "timestamp" : 1234556,
+    "temperature" : 37.0,
+    "deviceId" : "1"
+
+}
+```
+
+Data processors that perform filter operations (e.g., filtering temperature values that are above a given threshold) are a common example for using keep output strategies.
+
+
+### Fixed Output
+
+A ``FixedOutputStrategy`` declares that the data processor itself provides the event schema. The output schema does not depend on the input event.
+
+Fixed output strategies need to provide the event schema they produce at development time:
+
+```java
+
+  @Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".fixed", "Fixed output example", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredProperty(EpRequirements.anyProperty())
+                    .build())
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+
+            // the fixed output strategy provides the schema
+            .outputStrategy(OutputStrategies.fixed(EpProperties.timestampProperty("timestamp"),
+                    EpProperties.doubleEp(Labels.from("avg", "Average value", ""), "avg", SO.Number)))
+
+            .build();
+  }
+
+```
+
+In this example, we declare that the output schema always consists of two fields (``timestamp`` and ``avg``).
+
+Therefore, an output event should look like:
+
+```json
+{
+    "timestamp" : 1234556,
+    "avg" : 36.0
+}
+```
+
+
+### Append Output
+
+An ``AppendOutputStrategy`` appends additional fields to a schema of an incoming event stream. For instance, data processors that perform enrichment operations usually make use of append output strategies.
+
+Similar to the fixed output strategy, the additional fields must be provided at development time in the controller method as follows:
+
+```java
+  @Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".append", "Append output example", "")
+
+            // boilerplate code not relevant here, see above
+
+            // declaring an append output
+            .outputStrategy(OutputStrategies.append(EpProperties.integerEp(Labels.from("avg",
+                    "The average value", ""), "avg", SO.Number)))
+
+            .build();
+  }
+```
+
+In this case, the output event would have an additional field ``avg``:
+
+```json
+{
+    "timestamp" : 1234556,
+    "temperature" : 37.0,
+    "deviceId" : "1",
+    "avg" : 123.0
+
+}
+```
+
+### Custom Output
+
+In some cases, pipeline developers using the StreamPipes UI should be able to manually select fields from an input event schema. For such use cases, a ``CustomOutputStrategy`` can be used:
+
+```java
+
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".custom", "Custom output example", "")
+
+            // boilerplate code not relevant here, see above
+
+            // declaring a custom output
+            .outputStrategy(OutputStrategies.custom())
+
+            .build();
+  }
+
+```
+
+If a data processor defines a custom output strategy, the customization dialog in the pipeline editor will show a dialog to let users select the fields to keep:
+
+<img src="/docs/img/dev-guide-output-strategies/os-custom.png" width="80%" alt="Number Parameter">
+
+Taking our example, and assuming that the user selects both the ``timestamp`` and the ``temperature`` the expected output event should look like this:
+
+```json
+{
+    "timestamp" : 1234556,
+    "temperature" : 37.0
+}
+```
+
+How do we know which fields were selected once the data processor is invoked? Use the proper method from the extractor in the ``onInvocation`` method:
+
+```java
+@Override
+  public ConfiguredEventProcessor<DummyParameters> onInvocation(DataProcessorInvocation graph, ProcessingElementParameterExtractor extractor) {
+
+    List<String> outputSelectors = extractor.outputKeySelectors();
+
+    return new ConfiguredEventProcessor<>(new DummyParameters(graph), DummyEngine::new);
+  }
+```
+
+### Transform Output
+
+A ``TransformOutputStrategy`` declares that one or more fields of an incoming event stream are transformed. Transformations can be applied to the datatype of the property, the runtime name of the property, or any other scheam-related declaration such as measurement units.
+
+#### Static Transform Operations
+
+Static transform operations do not depend on any user input (at pipeline development time) in order to know how to transform a field of an incoming event schema.
+
+Let's say our data processor transforms strings (that are actually a number) to a number datatype. In this case, we can use a static transform output strategy:
+
+```java
+
+  @Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".transform", "Transform output example example", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredPropertyWithUnaryMapping(EpRequirements.stringReq(), Labels.from
+                            ("str", "The date property as a string", ""), PropertyScope.NONE)
+                    .build())
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+
+            // static transform operation
+            .outputStrategy(OutputStrategies.transform(TransformOperations
+                    .staticDatatypeTransformation("str", Datatypes.Long)))
+
+            .build();
+  }
+
+```
+
+Note the mapping property that we use to determine which field of the input event should be transformed.
+
+The expected output event would look like this:
+
+```json
+{
+    "timestamp" : 1234556,
+    "temperature" : 37.0,
+    "deviceId" : 1
+}
+```
+
+#### Dynamic Transform Operations
+
+Sometimes, user input depends on the exact transform output. Let's take a field renaming processor as an example, which lets the user rename a field from an input event schema to another field name.
+For such use cases, we can use a ``DynamicTransformOperation``:
+
+```java
+
+  @Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".transform", "Transform output example example", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredPropertyWithUnaryMapping(EpRequirements.stringReq(), Labels.from
+                            ("str", "The date property as a string", ""), PropertyScope.NONE)
+                    .build())
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+
+            // the text input to enter the new runtime name
+            .requiredTextparameter(Labels.from("new-runtime-name", "New Runtime Name", ""))
+
+            // static transform operation
+            .outputStrategy(OutputStrategies.transform(TransformOperations
+                    .dynamicRuntimeNameTransformation("str", "new-runtime-name")))
+
+            .build();
+  }
+
+```
+
+For dynamic transform operations, an additional identifier that links to another static property can be assigned and later be fetched in the ``onInvocation`` method.
+
+Assuming we want to rename the field ``temperature`` to ``temp``, the resulting output event should look like this:
+
+```json
+{
+    "timestamp" : 1234556,
+    "temp" : 37.0,
+    "deviceId" : 1
+}
+```
+
+### Custom Transform Output
+
+Finally, in some cases the output schema cannot be described at pipeline development time. For these (usually rare) cases, a ``CustomTransformOutput`` strategy can be used.
+
+In this case, a callback function will be invoked in the controller class just after a user has filled in any static properties and clicks on ``Save`` in the pipeline editor.
+
+To define a custom transform output, we need to implement an interface in the controller class:
+
+```java
+public class CustomTransformOutputController extends
+        StandaloneEventProcessingDeclarer<DummyParameters> implements
+        ResolvesContainerProvidedOutputStrategy<DataProcessorInvocation, ProcessingElementParameterExtractor> {
+
+
+@Override
+  public EventSchema resolveOutputStrategy(DataProcessorInvocation processingElement, ProcessingElementParameterExtractor parameterExtractor) throws SpRuntimeException {
+
+  }
+}
+```
+
+In addition, the output strategy must be declared in the ``declareModel`` method:
+
+```java
+
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.outputstrategy" +
+            ".customtransform", "Custom transform output example example", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredPropertyWithUnaryMapping(EpRequirements.stringReq(), Labels.from
+                            ("str", "The date property as a string", ""), PropertyScope.NONE)
+                    .build())
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+
+            // declare a custom transform output
+            .outputStrategy(OutputStrategies.customTransformation())
+
+            .build();
+  }
+
+```
+
+Once a new pipeline using this data processor is created and the configuration is saved, the ``resolveOutputStrategy`` method will be called, so that an event schema can be provided based on the given configuration. An extractor instance (see the guide on static properties) is available to extract the selected static properties and the connected event stream.
+
+```java
+@Override
+  public EventSchema resolveOutputStrategy(DataProcessorInvocation processingElement, ProcessingElementParameterExtractor parameterExtractor) throws SpRuntimeException {
+    return new EventSchema(Arrays
+            .asList(EpProperties
+                    .stringEp(Labels.from("runtime", "I was added at runtime", ""), "runtime", SO.Text)));
+  }
+```
+
+In this example, the output event schema should look like this:
+
+```json
+{
+    "runtime" : "Hello world!"
+}
+```
+
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-static-properties.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-static-properties.md
new file mode 100644
index 0000000..dbcbb22
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-static-properties.md
@@ -0,0 +1,267 @@
+---
+id: version-0.90.0-extend-sdk-static-properties
+title: SDK Guide: Static Properties
+sidebar_label: SDK: Static Properties
+original_id: extend-sdk-static-properties
+---
+
+## Introduction
+Static properties represent user-faced parameters that are provided by pipeline developers.
+Processing elements can specify required static properties, which will render different UI views in the pipeline editor.
+
+The following reference describes how static properties can be defined using the SDK.
+
+<div class="admonition tip">
+<div class="admonition-title">Code on Github</div>
+<p>For all examples, the code can be found on <a href="https://github.com/apache/streampipes-examples/tree
+/dev/streampipes-pipeline-elements-examples-processors-jvm/src/main/java/org/apache/streampipes/pe/examples/jvm
+/staticproperty">Github</a>.</p>
+</div>
+
+## Reference
+
+The methods described below to create static properties are available in the ``ProcessingElementBuilder`` and ``DataSinkBuilder`` classes and are usually used in the ``declareModel`` method of the controller class.
+
+### Mapping property
+
+In StreamPipes, processing elements usually operate on fields of an event stream. For instance, a filter processor operates on a specific field from an input stream (e.g., a field measuring the temperature).
+Typically, pipeline developers should select the exact field where the operations is applied upon by themselves.
+As this field is not yet known at pipeline element development time (as it is defined by the pipeline developer in the pipeline editor), mapping properties serve to map a stream requirement to a specific field from the actual input event stream.
+
+### Unary mapping property
+
+A unary mapping property maps a stream requirement to an actual field of an event stream. Therefore, the ``StreamRequirementsBuilder`` provides the opportunity to directly add a mapping property based along with a property requirement:
+
+```java
+.requiredStream(StreamRequirementsBuilder.
+    create()
+    .requiredPropertyWithUnaryMapping(EpRequirements.numberReq(),
+            Labels.from("mp-key", "My Mapping", ""),
+            PropertyScope.NONE)
+    .build())
+```
+
+This leads to a selection dialog in the pipeline element customization which provides the user with a selection of all event properties (fields) from the input stream that match the specified property requirement:
+
+<img src="/docs/img/dev-guide-static-properties/sp-mapping-unary.png" width="80%" alt="Text">
+
+At invocation time, the value can be extracted in the ``onInvocation`` method as follows:
+
+```java
+// Extract the mapping property value
+String mappingPropertySelector = extractor.mappingPropertyValue("mp-key");
+```
+
+Note that this method returns a ``PropertySelector``, which can be used by the event model to extract the actual value of this field.
+
+### N-ary mapping property
+
+N-ary mapping properties work similar to unary mapping properties, but allow the mapping of one requirement to multiple event properties matching the requirement:
+
+```java
+.requiredStream(StreamRequirementsBuilder.
+    create()
+    .requiredPropertyWithNaryMapping(EpRequirements.numberReq(),
+            Labels.from("mp-key", "My Mapping", ""),
+            PropertyScope.NONE)
+    .build())
+```
+
+This renders the following selection, where users can select more than one matching event property:
+
+<img src="/docs/img/dev-guide-static-properties/sp-mapping-nary.png" width="80%" alt="Text">
+
+The following snippet returns a list containing the property selectors of all event properties that have been selected:
+
+```java
+// Extract the mapping property value
+List<String> mappingPropertySelectors = extractor.mappingPropertyValues("mp-key");
+```
+
+### Free-Text Parameters
+
+A free-text parameter requires the pipeline developer to enter a single value - which can be a string or another primitive data type.
+The input of free-text parameters can be restricted to specific value ranges or can be linked to the value set of a connected input data stream.
+
+#### Text Parameters
+
+A text parameter lets the user enter a string value. The following code line in the controller class
+
+```java
+.requiredTextParameter(Labels.from(SP_KEY, "Example Name", "Example Description"))
+```
+
+leads to the following input dialog in the pipeline editor:
+
+<img src="/docs/img/dev-guide-static-properties/sp-text-parameter.png" width="80%" alt="Text">
+
+Users can enter any value that will be converted to a string datatype. To receive the entered value in the ``onInvocation`` method, use the following method from the ``ParameterExtractor``
+
+```java
+String textParameter = extractor.singleValueParameter(SP_KEY, String.class);
+```
+
+#### Number parameters
+
+A number parameter lets the user enter a number value, either a floating-point number or an integer:
+
+```java
+// create an integer parameter
+.requiredIntegerParameter(Labels.from(SP_KEY, "Integer Parameter", "Example Description"))
+
+// create a float parameter
+.requiredFloatParameter(Labels.from("float-key", "Float Parameter", "Example Description"))
+
+```
+
+leads to the following input dialog in the pipeline editor only accepting integer values:
+
+<img src="/docs/img/dev-guide-static-properties/sp-number-parameter.png" width="80%" alt="Number Parameter">
+
+The pipeline editor performs type validation and ensures that only numbers can be added by the user. To receive the entered value in the ``onInvocation`` method, use the following method from the ``ParameterExtractor``
+
+```java
+// Extract the integer parameter value
+Integer integerParameter = extractor.singleValueParameter(SP_KEY, Integer.class);
+
+// Extract the float parameter value
+Float floatParameter = extractor.singleValueParameter("float-key", Float.class);
+
+```
+
+#### Numbers with value specification
+
+You can also specify the value range of a number-based free text parameter:
+
+```java
+// create an integer parameter with value range
+.requiredIntegerParameter(Labels.from(SP_KEY, "Integer Parameter", "Example Description"), 0, 100, 1)
+
+```
+
+which renders the following input field:
+
+<img src="/docs/img/dev-guide-static-properties/sp-number-parameter-with-range.png" width="80%" alt="Number Parameter">
+
+Receive the entered value in the same way as a standard number parameter.
+
+#### Free-text parameters linked to an event property
+
+
+### Single-Value Selections
+
+Single-value selections let the user select from a pre-defined list of options.
+A single-value selection requires to select exactly one option.
+
+```java
+.requiredSingleValueSelection(Labels.from("id", "Example Name", "Example Description"),
+    Options.from("Option A", "Option B", "Option C"))
+
+```
+
+Single-value selections will be rendered as a set of radio buttons in the pipeline editor:
+
+<img src="/docs/img/dev-guide-static-properties/sp-single-selection.png" width="80%" alt="Number Parameter">
+
+To extract the selected value, use the following method from the parameter extractor:
+
+```java
+// Extract the selected value
+String selectedSingleValue = extractor.selectedSingleValue("id", String.class);
+```
+
+<div class="admonition tip">
+<div class="admonition-title">Declaring options</div>
+<p>Sometimes, you may want to use an internal name that differs from the display name of an option.
+For that, you can use the method Options.from(Tuple2<String, String>) and the extractor method selectedSingleValueInternalName.</p>
+</div>
+
+
+
+### Multi-Value Selections
+
+Multi-value selections let the user select from a pre-defined list of options, where multiple or no option might be selected.
+
+```java
+.requiredMultiValueSelection(Labels.from("id", "Example Name", "Example Description"),
+    Options.from("Option A", "Option B", "Option C"))
+
+```
+
+Multi-value selections will be rendered as a set of checkboxes in the pipeline editor:
+
+<img src="/docs/img/dev-guide-static-properties/sp-multi-selection.png" width="80%" alt="Number Parameter">
+
+To extract the selected value, use the following method from the parameter extractor:
+
+```java
+// Extract the selected value
+List<String> selectedMultiValue = extractor.selectedMultiValues("id", String.class);
+```
+
+### Domain Concepts
+
+(coming soon...)
+
+### Collections
+
+You can also define collections based on other static properties.
+
+```java
+// create a collection parameter
+.requiredParameterAsCollection(Labels.from("collection", "Example Name", "Example " +
+        "Description"), StaticProperties.stringFreeTextProperty(Labels
+        .from("text-property","Text","")))
+```
+
+While the items of the collection can be provided in the same way as the underlying static property, the UI provides buttons to add and remove items to the collections.
+
+<img src="/docs/img/dev-guide-static-properties/sp-collection.png" width="80%" alt="Number Parameter">
+
+To extract the selected values from the collection, use the following method from the parameter extractor:
+
+```java
+// Extract the text parameter value
+List<String> textParameters = extractor.singleValueParameterFromCollection("collection", String.class);
+```
+
+### Runtime-resolvable selections
+
+In some cases, the options of selection parameters are not static, but depend on other values or might change at runtime. In this case, you can use runtime-resolvable selections.
+
+First, let your controller class implement ``ResolvesContainerProvidedOptions``:
+
+```java
+public class RuntimeResolvableSingleValue extends
+     StandaloneEventProcessingDeclarer<DummyParameters> implements ResolvesContainerProvidedOptions { ... }
+```
+
+Next, define the parameter in the ``declareModel`` method:
+
+```java
+// create a single value selection parameter that is resolved at runtime
+    .requiredSingleValueSelectionFromContainer(Labels.from("id", "Example Name", "Example " +
+            "Description"))
+```
+
+Finally, implement the method ``resolveOptions``, which will be called at runtime once the processor is used:
+
+```java
+  @Override
+  public List<RuntimeOptions> resolveOptions(String requestId, EventProperty linkedEventProperty) {
+    return Arrays.asList(new RuntimeOptions("I was defined at runtime", ""));
+  }
+```
+
+The UI will render a single-value parameter based on the options provided at runtime:
+
+<img src="/docs/img/dev-guide-static-properties/sp-single-selection-remote.png" width="80%" alt="Number Parameter">
+
+The parameter extraction does not differ from the extraction of static single-value parameters.
+
+<div class="admonition info">
+<div class="admonition-title">Multi-value selections</div>
+<p>Although this example shows the usage of runtime-resolvable selections using single value selections, the same also works for multi-value selections!</p>
+</div>
+
+
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-stream-requirements.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-stream-requirements.md
new file mode 100644
index 0000000..9c39ff0
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-sdk-stream-requirements.md
@@ -0,0 +1,179 @@
+---
+id: version-0.90.0-extend-sdk-stream-requirements
+title: SDK Guide: Stream Requirements
+sidebar_label: SDK: Stream Requirements
+original_id: extend-sdk-stream-requirements
+---
+
+## Introduction
+
+Data processors and data sinks can define ``StreamRequirements``. Stream requirements allow pipeline elements to express requirements on an incoming event stream that are needed for the element to work properly.
+Once users create pipelines in the StreamPipes Pipeline Editor, these requirements are verified against the connected event stream.
+By using this feature, StreamPipes ensures that only pipeline elements can be connected that are syntactically and semantically valid.
+
+This guide covers the creation of stream requirements. Before reading this section, we recommend that you make yourself familiar with the SDK guide on [data processors](dev-guide-processor-sdk.md) and [data sinks](dev-guide-sink-sdk.md).
+
+<div class="admonition tip">
+<div class="admonition-title">Code on Github</div>
+<p>For all examples, the code can be found on <a href="https://www.github.com/apache/streampipes-examples/tree/dev/streampipes-pipeline-elements-examples-processors-jvm/src/main/java/org/apache/streampipes/pe/examples/jvm/requirements/">Github</a>.</p>
+</div>
+
+## The StreamRequirementsBuilder
+
+Stream requirements can be defined in the ``declareModel`` method of the pipeline element class. Start with a method body like this:
+
+```java
+
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create(ID, PIPELINE_ELEMENT_NAME, DESCRIPTION)
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+
+                    .build())
+
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+            .outputStrategy(OutputStrategies.keep())
+
+            .build();
+  }
+```
+
+The ``StreamRequirementsBuilder`` class provides methods to add stream requirements to a pipeline element.
+
+## Requirements on primitive fields
+
+As a very first example, let's assume we would like to create a data processor that filters numerical values that are above a given threshold.
+Consequently, any data stream that is connected to the filter processor needs to provide a numerical value.
+
+The stream requirement would be assigned as follows:
+
+```java
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create(ID, PIPELINE_ELEMENT_NAME, DESCRIPTION)
+            .requiredStream(StreamRequirementsBuilder
+                    .create()
+                    .requiredProperty(EpRequirements.numberReq())
+                    .build())
+
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+            .outputStrategy(OutputStrategies.keep())
+
+            .build();
+  }
+```
+
+Note the line starting with ``requiredProperty``, which requires any stream to provide a datatype of type ``number``.
+
+In many cases, you'll want to let the user select a specific field from a data stream from all available fields that match the specified requirement. For that, you simply use the method ``requiredPropertyWithUnaryMapping`` as follows:
+
+```java
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create(ID, PIPELINE_ELEMENT_NAME, DESCRIPTION)
+            .requiredStream(StreamRequirementsBuilder
+                    .create()
+                    .requiredPropertyWithUnaryMapping(EpRequirements.numberReq(),
+                    Labels.from("number-mapping", "The value that should be filtered", ""), PropertyScope.NONE)
+                    .build())
+
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+            .outputStrategy(OutputStrategies.keep())
+
+            .build();
+  }
+```
+
+See also the developer guide on [static properties](dev-guide-static-properties.md) to better understand the usage of ``MappingProperties``.
+
+Requirements on primitive fields can be specified for all common datatypes:
+
+```java
+ @Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.requirements" +
+            ".simple", "Simple requirements specification examples", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredProperty(EpRequirements.numberReq()) // any number
+                    .requiredProperty(EpRequirements.doubleReq()) // any field of type double
+                    .requiredProperty(EpRequirements.booleanReq()) // any field of type boolean
+                    .requiredProperty(EpRequirements.integerReq()) // any field of type integer
+                    .requiredProperty(EpRequirements.stringReq()) // any field of type string
+
+                    .requiredProperty(EpRequirements.anyProperty()) // any field allowed (no restriction)
+                    .requiredProperty(EpRequirements.timestampReq())  // any timestamp field
+                    .build())
+
+
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+            .outputStrategy(OutputStrategies.keep())
+
+            .build();
+```
+
+### Specifying semantics
+
+For some algorithms, only specifying the datatype is not sufficient. Let's consider a geofencing algorithm that detects the precense some geospatial coordinate (e.g., from a vehicle) within a given location.
+
+You could specify something like this:
+
+```java
+    StreamRequirementsBuilder
+    .create()
+    .requiredPropertyWithUnaryMapping(EpRequirements.doubleEp(), Labels.from("mapping-latitude", "Latitude", ""), PropertyScope.NONE)
+    .requiredPropertyWithUnaryMapping(EpRequirements.doubleEp(), Labels.from("mapping-longitude", "Longitude", ""), PropertyScope.NONE)
+    .build()
+```
+
+However, this would allow users to create strange pipelines as users could connect any stream containing a double value to our geofencing algorithm.
+To avoid such situations, you can also specify requirements based on the semantics of a field:
+
+```java
+    StreamRequirementsBuilder
+    .create()
+    .requiredPropertyWithUnaryMapping(EpRequirements.domainPropertyReq(SO.Latitude), Labels.from("mapping-latitude", "Latitude", ""), PropertyScope.NONE)
+    .requiredPropertyWithUnaryMapping(EpRequirements.domainPropertyReq(SO.Longitude), Labels.from("mapping-longitude", "Longitude", ""), PropertyScope.NONE)
+    .build()
+```
+
+Note that in this case, we make use of Schema.org's ``Latitude`` concept ([https://schema.org/latitude](https://schema.org/latitude)). StreamPipes already includes popular vocabularies for specifying semantics. You are also free to use your own vocabularies.
+
+
+## Requirements on lists
+
+Similarly to primitive requirements, you can define processors that require data streams with list fields, see the following examples:
+
+```java
+@Override
+  public DataProcessorDescription declareModel() {
+    return ProcessingElementBuilder.create("org.streampipes.examples.requirements" +
+            ".list", "List requirements specification examples", "")
+            .requiredStream(StreamRequirementsBuilder.
+                    create()
+                    .requiredProperty(EpRequirements.listRequirement(Datatypes.Integer))
+                    .requiredProperty(EpRequirements.listRequirement(Datatypes.Double))
+                    .requiredProperty(EpRequirements.listRequirement(Datatypes.Boolean))
+                    .requiredProperty(EpRequirements.listRequirement(Datatypes.String))
+                    .build())
+
+
+            .supportedProtocols(SupportedProtocols.kafka())
+            .supportedFormats(SupportedFormats.jsonFormat())
+            .outputStrategy(OutputStrategies.keep())
+
+            .build();
+  }
+```
+
+## Requirements on nested properties
+
+(coming soon, see the Javadoc for now)
+
+
+
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-setup.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-setup.md
new file mode 100644
index 0000000..1321607
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-setup.md
@@ -0,0 +1,51 @@
+---
+id: version-0.90.0-extend-setup
+title: Development Setup
+sidebar_label: Development Setup
+original_id: extend-setup
+---
+
+Pipeline elements in StreamPipes are provided as standalone microservices. New pipeline elements can be easily developed using the provided Maven archetypes and can be installed in StreamPipes at runtime.
+
+In this section, we describe our recommended minimum setup for locally setting up a development instance of StreamPipes needed to develop, run and test new pipeline elements.
+
+## IDE & required dev tools
+StreamPipes does not have specific requirements on the IDE - so feel free to choose the IDE of your choice.
+The only requirements in terms of development tools are that you have Java 8 and Maven installed.
+
+## StreamPipes CLI: Docker-based local StreamPipes instance
+In order to quickly test developed pipeline elements without needing to install all services required by StreamPipes, we provide a CLI tool that allows you to selectively start StreamPipes components.
+The CLI tool allows to switch to several templates (based on docker-compose) depending on the role. 
+
+The documentation on the usage of the CLI tool is available [here](06_extend-cli.md).
+
+## Override the SP_HOST variable
+
+By default, the backend/core of StreamPipes registers itself within StreamPipes' service discovery mechanism using an auto-discovered hostname.
+Usually, this will be an IP address from the Docker network, which is not resolvable from outside. Therefore, for local development you need to override the hostname with an IP address which is accessible from your local host where you develop extensions.
+When using the CLI, open the CLI folder ``installer/cli``, navigate to ``deploy/standalone/backend``, open the ``docker-compose.dev.yml`` file and add the SP_HOST env variable, e.g.
+
+```
+version: "3.4"
+services:
+  backend:
+    ports:
+      - "8030:8030"
+    environment:
+      - SP_HOST=host.docker.internal
+```
+
+Note that host.docker.internal will work as an alias under Docker for Desktop on Windows and Mac, but not on Linux or M1. In this case, provide a resolvable hostname or IP address manually.
+
+## Starter projects
+
+Now, once you've started the development instance, you are ready to develop your very first pipeline element.
+Instead of starting from scratch, we recommend using our provided maven archetypes:
+
+### Maven archetypes
+
+Create the Maven archetype as described in the [Maven Archetypes](06_extend-archetypes.md) guide.
+
+### Examples
+
+We provide several examples that explain the usage of some concepts in this [Github repo](https://github.com/apache/streampipes-examples). 
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-processors.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-processors.md
new file mode 100644
index 0000000..f5cd64f
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-processors.md
@@ -0,0 +1,363 @@
+---
+id: version-0.90.0-extend-tutorial-data-processors
+title: Tutorial: Data Processors
+sidebar_label: Tutorial: Data Processors
+original_id: extend-tutorial-data-processors
+---
+
+In this tutorial, we will add a new data processor.
+
+From an architectural point of view, we will create a self-contained service that includes the description of the data processor and an implementation.
+
+## Objective
+
+We are going to create a new data processor that realizes a simple geofencing algorithm - we detect vehicles that enter a specified radius around a user-defined location.
+This pipeline element will be a generic element that works with any event stream that provides geospatial coordinates in form of a latitude/longitude pair.
+
+The algorithm outputs every location event once the position has entered the geofence.
+
+
+<div class="admonition note">
+<div class="admonition-title">Note</div>
+<p>The implementation in this tutorial is pretty simple - our processor will fire an event every time the GPS location is inside the geofence.
+       In a real-world application, you would probably want to define a pattern that recognizes the _first_ event a vehicle enters the geofence.<br/>
+       This can be easily done using a CEP library.</p>
+</div>
+
+
+## Project setup
+
+Instead of creating a new project from scratch, we recommend to use the Maven archetype to create a new project skeleton (streampipes-archetype-extensions-jvm).
+Enter the following command in a command line of your choice (Apache Maven needs to be installed):
+
+```
+mvn archetype:generate \
+-DarchetypeGroupId=org.apache.streampipes -DarchetypeArtifactId=streampipes-archetype-extensions-jvm \
+-DarchetypeVersion=0.70.0 -DgroupId=my.groupId \
+-DartifactId=my-example -DclassNamePrefix=MyExample -DpackageName=mypackagename
+```
+
+You will see a project structure similar to the structure shown in the [archetypes](06_extend-archetypes.md) section.
+
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p>Besides the basic project skeleton, the sample project also includes an example Dockerfile you can use to package your application into a Docker container.</p>
+</div>
+
+Now you're ready to create your first data processor for StreamPipes!
+
+## Adding data processor requirements
+
+First, we will add a new stream requirement.
+Create a new class `GeofencingProcessor` which should look as follows:
+
+```java
+package org.apache.streampipes.pe.example;
+
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.model.DataProcessorType;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.sdk.builder.ProcessingElementBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.Locales;
+import org.apache.streampipes.sdk.helpers.OutputStrategies;
+import org.apache.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.wrapper.context.EventProcessorRuntimeContext;
+import org.apache.streampipes.wrapper.routing.SpOutputCollector;
+import org.apache.streampipes.wrapper.standalone.ProcessorParams;
+import org.apache.streampipes.wrapper.standalone.StreamPipesDataProcessor;
+
+public class GeofencingProcessor extends StreamPipesDataProcessor {
+
+ private static final String LATITUDE_CENTER = "latitude-center";
+ private static final String LONGITUDE_CENTER = "longitude-center";
+
+ @Override
+ public DataProcessorDescription declareModel() {
+  return ProcessingElementBuilder.create("org.apache.streampipes.tutorial-geofencing")
+          .category(DataProcessorType.ENRICH)
+          .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+          .build();
+ }
+
+ @Override
+ public void onInvocation(ProcessorParams parameters, SpOutputCollector spOutputCollector, EventProcessorRuntimeContext runtimeContext) throws SpRuntimeException {
+
+ }
+
+ @Override
+ public void onEvent(Event event, SpOutputCollector collector) throws SpRuntimeException {
+
+ }
+
+ @Override
+ public void onDetach() throws SpRuntimeException {
+
+ }
+}
+
+
+```
+
+In this class, we need to implement three methods: The `declareModel` method is used to define abstract stream requirements such as event properties that must be present in any input stream that is later connected to the element using the StreamPipes UI.
+The second method, `onInvocation` is triggered once a pipeline is started. Finally, the `onEvent` method
+
+Similar to data sources, the SDK provides a builder class to generate the description for data processors.
+Delete the content within the ``declareModel`` method and add the following lines to the `declareModel` method:
+
+```java
+return ProcessingElementBuilder.create("org.apache.streampipes.tutorial.geofencing", "Geofencing", "A simple geofencing data processor")
+```
+
+This creates a new data processor with the ID, title and description assigned to the element builder.
+Next, we add some _stream requirements_ to the description. As we'd like to develop a generic pipeline element that works with any event that provides a lat/lng pair, we define two stream requirements as stated below:
+
+```java
+.requiredStream(StreamRequirementsBuilder
+    .create()
+    .requiredPropertyWithUnaryMapping(EpRequirements.domainPropertyReq(Geo.lat),
+            Labels.from("latitude-field", "Latitude", "The event " +
+            "property containing the latitude value"), PropertyScope.MEASUREMENT_PROPERTY)
+    .requiredPropertyWithUnaryMapping(EpRequirements.domainPropertyReq(Geo.lng),
+            Labels.from("longitude-field", "Longitude", "The event " +
+                    "property containing the longitude value"), PropertyScope.MEASUREMENT_PROPERTY)
+    .build())
+```
+
+The first line, `.requiredStream()` defines that we want a data processor with exactly one input stream. Adding more stream requirements would create elements with multiple input connectors in StreamPipes.
+Stream requirements can be assigned by using the `StreamRequirementsBuilder` class.
+In our example, we define two requirements, so-called _domain property requirements_. In contrast to _data type requirements_ where we'd expect an event property with a field of a specific data type (e.g., float), domain property requirements expect a specific domain property, e.g., from a vocabulary such as the WGS84 Geo vocab.
+
+Once a pipeline is deployed, we are interested in the actual field (and its field name) that contains the latitude and longitude values.
+In some cases, there might me more than one field that satisfies a property requirement and we would like users to select the property the geofencing component should operate on.
+Therefore, our example uses the method `requiredPropertyWithUnaryMapping`, which will map a requirement to a real event property of an input stream and  let the user choose the appropriate field in the StreamPipes UI when pipelines are defined.
+
+Finally, the `PropertyScope` indicates that the required property is a measurement value (in contrast to a dimension value). This allows us later to provide improved user guidance in the pipeline editor.
+
+Besides requirements, users should be able to define the center coordinate of the Geofence and the size of the fence defined as a radius around the center in meters.
+The radius can be defined by adding a simple required text field to the description:
+
+```java
+.requiredIntegerParameter("radius", "Geofence Size", "The size of the circular geofence in meters.", 0, 1000, 1)
+```
+
+Similar to mapping properties, text parameters have an internalId (radius), a label and a description.
+In addition, we can assign a _value specification_ to the parameter indicating the value range we support.
+Our example supports a radius value between 0 and 1000 with a granularity of 1.
+In the StreamPipes UI, a required text parameter is rendered as a text input field, in case we provide an optional value specification, a slider input is automatically generated.
+
+Such user-defined parameters are called _static properties_. There are many different types of static properties (see
+ the [Processor SDK](06_extend-sdk-static-properties.md) for an overview).
+
+In this example, we'll further add two very simple input fields to let users provide latitude and longitude of the geofence center.
+
+Add the following line to the `declareModel` method:
+
+```java
+   .requiredFloatParameter(Labels.from(LATITUDE_KEY, "Latitude", "The latitude value"))
+   .requiredFloatParameter(Labels.from(LONGITUDE_KEY, "Longitude", "The longitude value"))
+
+```
+
+Now we need to define the output of our Geofencing pipeline element.
+As explained in the first section, the element should fire every time some geo-located entity arrives within the defined geofence.
+Therefore, the processor outputs the same schema as it receives as an input.
+Although we don't know the exact input right now as it depends on the stream users connect in StreamPipes when creating pipelines, we can define an _output strategy_ as follows:
+
+```java
+.outputStrategy(OutputStrategies.keep())
+```
+
+This defines a _KeepOutputStrategy_, i.e., the input event schema is not modified by the processor.
+There are many more output strategies you can define depending on the functionality you desire, e.g., _AppendOutput_ for defining a processor that enriches events or _CustomOutput_ in case you would like users to select the output by themselves.
+
+That's it! We've now defined input requirements, required user input and an output strategy.
+In the next section, you will learn how to extract these parameters once the pipeline element is invoked after a pipeline was created.
+
+## Pipeline element invocation
+
+Once users start a pipeline that uses our geofencing component, the _onInvocation_ method in our class is called. The class `ProcessorParams` includes convenient access to user-configured parameters a users has selected in the pipeline editor and information on the acutal streams that are connected to the pipeline element.
+
+Next, we are interested in the fields of the input event stream that contains the latitude and longitude value we would like to compute against the geofence center location as follows:
+
+```java
+String latitudeFieldName = parameters.extractor().mappingPropertyValue("latitude-field");
+String longitudeFieldName = parameters.extractor().mappingPropertyValue("longitude-field");
+```
+
+We use the same `internalId` we've used to define the mapping property requirements in the `declareModel` method.
+
+Next, for extracting the geofence center coordinates, add to class variables centerLatitude and centerLongitude and assign the selected values using the following statements:
+
+```java
+this.centerLatitude = parameters.extractor().singleValueParameter(LATITUDE_CENTER, Float.class);
+this.centerLongitude = parameters.extractor().singleValueParameter(LONGITUDE_CENTER, Float.class);
+```
+
+The radius value can be extracted as follows:
+
+```java
+int radius = parameters.extractor().singleValueParameter("radius", Float.class);
+```
+
+Great! That's all we need to describe a data processor for usage in StreamPipes. Your processor class should look as follows:
+
+```java
+package org.apache.streampipes.pe.example;
+
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.model.DataProcessorType;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.model.schema.PropertyScope;
+import org.apache.streampipes.sdk.builder.ProcessingElementBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.Locales;
+import org.apache.streampipes.sdk.helpers.OutputStrategies;
+import org.apache.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.vocabulary.Geo;
+import org.apache.streampipes.wrapper.context.EventProcessorRuntimeContext;
+import org.apache.streampipes.wrapper.routing.SpOutputCollector;
+import org.apache.streampipes.wrapper.standalone.ProcessorParams;
+import org.apache.streampipes.wrapper.standalone.StreamPipesDataProcessor;
+
+public class GeofencingProcessor extends StreamPipesDataProcessor {
+
+ private static final String LATITUDE_CENTER = "latitude-center";
+ private static final String LONGITUDE_CENTER = "longitude-center";
+
+ private float centerLatitude;
+ private float centerLongitude;
+ private String latitudeFieldName;
+ private String longitudeFieldName;
+ 
+ private int radius;
+
+ @Override
+ public DataProcessorDescription declareModel() {
+  return ProcessingElementBuilder.create("org.streampipes.tutorial-geofencing")
+          .category(DataProcessorType.ENRICH)
+          .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+          .withLocales(Locales.EN)
+          .requiredStream(StreamRequirementsBuilder
+                  .create()
+                  .requiredPropertyWithUnaryMapping(EpRequirements.domainPropertyReq(Geo.lat),
+                          Labels.from("latitude-field", "Latitude", "The event " +
+                                  "property containing the latitude value"), PropertyScope.MEASUREMENT_PROPERTY)
+                  .requiredPropertyWithUnaryMapping(EpRequirements.domainPropertyReq(Geo.lng),
+                          Labels.from("longitude-field", "Longitude", "The event " +
+                                  "property containing the longitude value"), PropertyScope.MEASUREMENT_PROPERTY)
+                  .build())
+          .outputStrategy(OutputStrategies.keep())
+          .requiredIntegerParameter("radius", "Geofence Size", "The size of the circular geofence in meters.", 0, 1000, 1)
+          .requiredFloatParameter(Labels.from(LATITUDE_CENTER, "Latitude", "The latitude value"))
+          .requiredFloatParameter(Labels.from(LONGITUDE_CENTER, "Longitude", "The longitude value"))
+          .build();
+ }
+
+ @Override
+ public void onInvocation(ProcessorParams parameters, 
+                          SpOutputCollector spOutputCollector, 
+                          EventProcessorRuntimeContext runtimeContext) throws SpRuntimeException {
+  this.centerLatitude = parameters.extractor().singleValueParameter(LATITUDE_CENTER, Float.class);
+  this.centerLongitude = parameters.extractor().singleValueParameter(LONGITUDE_CENTER, Float.class);
+  this.latitudeFieldName = parameters.extractor().mappingPropertyValue("latitude-field");
+  this.longitudeFieldName = parameters.extractor().mappingPropertyValue("longitude-field");
+  this.radius = parameters.extractor().singleValueParameter("radius", Integer.class);
+ }
+
+ @Override
+ public void onEvent(Event event, SpOutputCollector collector) throws SpRuntimeException {
+
+ }
+
+ @Override
+ public void onDetach() throws SpRuntimeException {
+
+ }
+}
+
+
+```
+
+## Adding an implementation
+
+Everything we need to do now is to add an implementation.
+
+Add the following piece of code to the onEvent method, which realizes the Geofencing functionality:
+
+```java
+
+  @Override
+  public void onEvent(Event event, SpOutputCollector collector) throws SpRuntimeException {
+      float latitude = event.getFieldBySelector(latitudeFieldName).getAsPrimitive().getAsFloat();
+      float longitude = event.getFieldBySelector(longitudeFieldName).getAsPrimitive().getAsFloat();
+
+      float distance = distFrom(latitude, longitude, centerLatitude, centerLongitude);
+
+      if (distance <= radius) {
+      collector.collect(event);
+      }
+  }
+
+  public static float distFrom(float lat1, float lng1, float lat2, float lng2) {
+    double earthRadius = 6371000;
+    double dLat = Math.toRadians(lat2-lat1);
+    double dLng = Math.toRadians(lng2-lng1);
+    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
+            Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
+                    Math.sin(dLng/2) * Math.sin(dLng/2);
+    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+    return (float) (earthRadius * c);
+  }
+
+}
+```
+
+We won't go into details here as this isn't StreamPipes-related code, but in general the class extracts latitude and longitude fields from the input event (which is provided as a map data type) and calculates the distance between the geofence center and these coordinates.
+If the distance is below the given radius, the event is forwarded to the next operator.
+
+See the [event model](06_extend-sdk-event-model.md) guide to learn how to extract parameters from events.
+
+## Registering the pipeline element
+The final step is to register the data processor in the `Init` method. Add the following line to the `SpServiceDefinitionBuilder`:
+
+```java
+ .registerPipelineElement(new GeofencingProcessor())
+```
+
+## Starting the service
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p>Once you start the service, it will register in StreamPipes with the hostname. The hostname will be auto-discovered and should work out-of-the-box.
+In some cases, the detected hostname is not resolvable from within a container (where the core is running). In this case, provide a SP_HOST environment variable to override the auto-discovery.
+</p>
+</div>
+
+
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p> The default port of all pipeline element services as defined in the `create` method is port 8090.
+       If you'd like to run multiple services at the same time on your development machine, change the port here. As an alternative, you can also provide an env variable `SP_PORT` which overrides the port settings. This is useful to use different configs for dev and prod environments.
+</p>
+</div>
+
+Now we are ready to start our service!
+
+Configure your IDE to provide an environment variable called ``SP_DEBUG`` with value ``true`` when starting the project.
+
+Execute the main method in the class `Init` we've just created.
+
+The service automatically registers itself in StreamPipes.
+To install the just created element, open the StreamPipes UI and follow the manual provided in the [user guide](03_use-install-pipeline-elements.md).
+
+## Read more
+
+Congratulations! You've just created your first data processor for StreamPipes.
+There are many more things to explore and data processors can be defined in much more detail using multiple wrappers.
+Follow our [SDK guide](06_extend-sdk-static-properties.md) to see what's possible!
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-sinks.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-sinks.md
new file mode 100644
index 0000000..222531c
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-sinks.md
@@ -0,0 +1,231 @@
+---
+id: version-0.90.0-extend-tutorial-data-sinks
+title: Tutorial: Data Sinks
+sidebar_label: Tutorial: Data Sinks
+original_id: extend-tutorial-data-sinks
+---
+
+In this tutorial, we will add a new data sink using the standalone wrapper.
+
+From an architectural point of view, we will create a self-contained service that includes the description of the data sink and a corresponding implementation.
+
+## Objective
+
+We are going to create a new data sink that calls an external HTTP endpoint to forward data to an external service.
+
+For each incoming event, an external service is invoked using an HTTP POST request. In this example, we'll call an endpoint provided by [RequestBin](https://requestbin.com/).
+To setup your own endpoint, go to [https://requestbin.com/](https://requestbin.com/) and click "Create a request bin". Copy the URL of the newly created endpoint.
+
+
+## Project setup
+
+Instead of creating a new project from scratch, we recommend to use the Maven archetype to create a new project skeleton (streampipes-archetype-extensions-jvm).
+Enter the following command in a command line of your choice (Apache Maven needs to be installed):
+
+```
+mvn archetype:generate -DarchetypeGroupId=org.apache.streampipes \
+-DarchetypeArtifactId=streampipes-archetype-extensions-jvm -DarchetypeVersion=0.70.0 \
+-DgroupId=org.streampipes.tutorial -DartifactId=sink-tutorial -DclassNamePrefix=Rest -DpackageName=mypackage
+```
+
+You will see a project structure similar to the structure shown in the [archetypes](06_extend-archetypes.md) section.
+
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p>Besides the basic project skeleton, the sample project also includes an example Dockerfile you can use to package your application into a Docker container.</p>
+</div>
+
+Now you're ready to create your first data sink for StreamPipes!
+
+## Adding data sink requirements
+
+First, we will add a new stream requirement.
+Create a class `RestSink` which should look as follows:
+
+```java
+package org.apache.streampipes.pe.example;
+
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.model.DataSinkType;
+import org.apache.streampipes.model.graph.DataSinkDescription;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.model.schema.PropertyScope;
+import org.apache.streampipes.sdk.builder.DataSinkBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.Locales;
+import org.apache.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.wrapper.context.EventSinkRuntimeContext;
+import org.apache.streampipes.wrapper.standalone.SinkParams;
+import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
+
+public class RestSink extends StreamPipesDataSink {
+
+  @Override
+  public DataSinkDescription declareModel() {
+    return DataSinkBuilder.create("org.apache.streampipes.tutorial.pe.sink.rest")
+        .category(DataSinkType.NOTIFICATION)
+        .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+        .withLocales(Locales.EN)
+        .requiredStream(StreamRequirementsBuilder
+                .create()
+                .requiredPropertyWithNaryMapping(EpRequirements.anyProperty(), Labels.withId(
+                        "fields-to-send"), PropertyScope.NONE)
+                .build())
+        .build();
+  }
+
+  @Override
+  public void onInvocation(SinkParams parameters, EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
+
+  }
+
+  @Override
+  public void onEvent(Event event) throws SpRuntimeException {
+
+  }
+
+  @Override
+  public void onDetach() throws SpRuntimeException {
+
+  }
+}
+
+
+```
+
+In this class, we need to implement three methods: The `declareModel` method is used to define abstract stream requirements such as event properties that must be present in any input stream that is later connected to the element using the StreamPipes UI.
+The second method, `onInvocation` is called once a pipeline using this sink is started. The third method, `onEvent`, is called for every incoming event.
+
+The ``declareModel`` method describes the properties of our data sink:
+* ``category`` defines a category for this sink.
+* ``withAssets`` denotes that we will provide an external documentation file and an icon, which can be found in the ``resources`` folder
+* ``withLocales`` defines that we will provide an external language file, also available in the ``resources`` folder
+* ``requiredStream`` defines requirements any input stream connected to this sink must provide. In this case, we do not have any specific requirements, we just forward all incoming events to the REST sink. However, we want to let the user display a list of available fields from the connected input event, where users can select a subset. This is defined by defining a Mapping from the empty requirement. This will later on render a selection dialog in the pipeline editor.
+
+The ``onInvocation`` method is called when a pipeline containing the sink is started. Once a pipeline is started, we would like to extract user-defined parameters.
+In this example, we simply extract the fields selected by users that should be forwarded to the REST sink. Finally, we return a new configured event sink containing the parameters.
+
+## Pipeline element invocation
+
+Once users start a pipeline that uses our geofencing component, the _onInvocation_ method in our class is called. The class `SinkParams` includes a graph that contains information on the configuration parameters a users has selected in the pipeline editor and information on the acutal streams that are connected to the pipeline element.
+
+
+## Adding an implementation
+
+Now we'll add a proper implementation (i.e., the Rest call executed for every incoming event) to the following methods:
+
+Our final class should look as follows:
+
+```java
+package org.apache.streampipes.pe.example;
+
+import com.google.common.base.Charsets;
+import org.apache.http.client.fluent.Request;
+import org.apache.http.entity.StringEntity;
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.dataformat.SpDataFormatDefinition;
+import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.model.DataSinkType;
+import org.apache.streampipes.model.graph.DataSinkDescription;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.model.schema.PropertyScope;
+import org.apache.streampipes.sdk.builder.DataSinkBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.Locales;
+import org.apache.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.wrapper.context.EventSinkRuntimeContext;
+import org.apache.streampipes.wrapper.standalone.SinkParams;
+import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+public class RestSink extends StreamPipesDataSink {
+
+  private static final Logger LOG = LoggerFactory.getLogger(RestSink.class);
+
+  private static final String REST_ENDPOINT_URI = YOUR_REQUEST_BIN_URL;
+  private List<String> fieldsToSend;
+  private SpDataFormatDefinition dataFormatDefinition;
+
+  @Override
+  public DataSinkDescription declareModel() {
+    ...
+  }
+
+  @Override
+  public void onInvocation(SinkParams parameters, EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
+    this.dataFormatDefinition = new JsonDataFormatDefinition();
+    this.fieldsToSend = parameters.extractor().mappingPropertyValues("fields-to-send");
+
+  }
+
+  @Override
+  public void onEvent(Event event) throws SpRuntimeException {
+    Map<String, Object> outEventMap = event.getSubset(fieldsToSend).getRaw();
+    try {
+      String json = new String(dataFormatDefinition.fromMap(outEventMap));
+      Request.Post(REST_ENDPOINT_URI).body(new StringEntity(json, Charsets.UTF_8)).execute();
+    } catch (SpRuntimeException e) {
+      LOG.error("Could not parse incoming event");
+    } catch (IOException e) {
+      LOG.error("Could not reach endpoint at {}", REST_ENDPOINT_URI);
+    }
+  }
+
+  @Override
+  public void onDetach() throws SpRuntimeException {
+
+  }
+}
+
+```
+The only class variable you need to change right now is the REST_ENDPOINT_URL. Change this url to the URL provided by your request bin.
+In the ``ònEvent`` method, we use a helper method to get a subset of the incoming event.
+Finally, we convert the resulting ``Map`` to a JSON string and call the endpoint.
+
+
+## Preparing the service
+The final step is to register the sink as a pipeline element.
+
+Go to the class `Init` and register the sink:
+```java
+.registerPipelineElement(new RestSink())
+```
+
+## Starting the service
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p>Once you start the service, it will register in StreamPipes with the hostname. The hostname will be auto-discovered and should work out-of-the-box.
+In some cases, the detected hostname is not resolvable from within a container (where the core is running). In this case, provide a SP_HOST environment variable to override the auto-discovery.
+</p>
+</div>
+
+
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p> The default port of all pipeline element services as defined in the `create` method is port 8090.
+       If you'd like to run multiple services at the same time on your development machine, change the port here. As an alternative, you can also provide an env variable `SP_PORT` which overrides the port settings. This is useful to use different configs for dev and prod environments.
+</p>
+</div>
+
+Now we are ready to start our service!
+
+Configure your IDE to provide an environment variable called ``SP_DEBUG`` with value ``true`` when starting the project.
+
+Execute the main method in the class `Init` we've just created. The service automatically registers itself in StreamPipes.
+
+To install the created element, open the StreamPipes UI and follow the manual provided in the [user guide](03_use-install-pipeline-elements.md).
+
+## Read more
+
+Congratulations! You've just created your first data sink for StreamPipes.
+There are many more things to explore and data sinks can be defined in much more detail using multiple wrappers.
+Follow our [SDK guide](../dev-guide-sdk-guide-sinks) to see what's possible!
diff --git a/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-sources.md b/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-sources.md
new file mode 100644
index 0000000..56ffd37
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/06_extend-tutorial-data-sources.md
@@ -0,0 +1,205 @@
+---
+id: version-0.90.0-extend-tutorial-data-sources
+title: Tutorial: Data Sources
+sidebar_label: Tutorial: Data Sources
+original_id: extend-tutorial-data-sources
+---
+
+In this tutorial, we will add a new data source consisting of a single data stream. The source will be provided as a standalone component (i.e., the description will be accessible through an integrated web server).
+
+## Objective
+
+We are going to create a new data stream that is produced by a GPS sensor installed in a delivery vehicle.
+The sensor produces a continuous stream of events that contain the current timestamp, the current lat/lng position of the vehicle and the plate number of the vehicle.
+Events are published in a JSON format as follows:
+```json
+{
+  "timestamp" : 145838399,
+  "latitude" : 37.04,
+  "longitude" : 17.04,
+  "plateNumber" : "KA-AB 123"
+}
+```
+
+These events are published to a Kafka broker using the topic `org.streampipes.tutorial.vehicle`.
+
+In the following section, we show how to describe this stream in a form that allows you to import and use it in StreamPipes.
+
+## Project setup
+
+Instead of creating a new project from scratch, we recommend to use the Maven archetype to create a new project skeleton (streampipes-archetype-extensions-jvm).
+Enter the following command in a command line of your choice (Apache Maven needs to be installed):
+
+```
+mvn archetype:generate \
+-DarchetypeGroupId=org.apache.streampipes -DarchetypeArtifactId=streampipes-archetype-extensions-jvm \
+-DarchetypeVersion=0.70.0 -DgroupId=my.groupId \
+-DartifactId=my-source -DclassNamePrefix=MySource -DpackageName=mypackagename
+```
+
+You will see a project structure similar to the structure shown in the [archetypes](06_extend-archetypes.md) section.
+
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p>Besides the basic project skeleton, the sample project also includes an example Dockerfile you can use to package your application into a Docker container.
+</p>
+</div>
+
+## Adding a data stream description
+
+Now we will add a new data stream definition.
+First, create a new class `MyVehicleStream` which should look as follows:
+
+```java
+
+package org.apache.streampipes.pe.example;
+
+import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.sources.AbstractAdapterIncludedStream;
+
+public class MyVehicleStream extends AbstractAdapterIncludedStream {
+
+  @Override
+  public SpDataStream declareModel() {
+    return null;
+  }
+
+  @Override
+  public void executeStream() {
+
+  }
+}
+```
+
+This class extends the class ``AbstractAdapterIncludedStream``, which indicates that this source continuously produces data (configured in the ``executeStream()`` method.
+In contrast, the class `AbstractAlreadyExistingStream` indicates that we only want to describe an already existing stream (e.g., a stream that already sends data to an existing Kafka broker).
+
+Next, we will add the definition of the data stream. Add the following code inside of the `declareModel` method:
+```java
+return DataStreamBuilder.create("org.apache.streampipes.tutorial.vehicle.position", "Vehicle Position", "An event stream " +
+          "that produces current vehicle positions")
+```
+
+This line creates a new instance of the SDK's `DataStreamBuilder` by providing three basic parameters:
+The first parameter must be a unique identifier of your data stream.
+The second and third parameters indicate a label and a description of your stream.
+These values will later be used in the StreamPipes UI to display stream details in a human-readable manner.
+
+Next, we will add the properties as stated above to the stream definition by adding the following lines:
+```java
+.property(EpProperties.timestampProperty("timestamp"))
+.property(EpProperties.stringEp(Labels.from("plate-number", "Plate Number", "Denotes the plate number of the vehicle"), "plateNumber", "http://my.company/plateNumber"))
+.property(EpProperties.doubleEp(Labels.from("latitude", "Latitude", "Denotes the latitude value of the vehicle's position"), "latitude", Geo.lat))
+.property(EpProperties.doubleEp(Labels.from("longitude", "Longitude", "Denotes the longitude value of the vehicle's position"), "longitude", Geo.lng))
+```
+These four _event properties_ compose our _event schema_. An event property must, at least, provide the following attributes:
+
+* **Runtime Name**. The runtime name indicates the key of the property at runtime, e.g., if our JSON message contains a structure such as `{"plateNumber" : "KA-F 123"}`, the runtime name must be `plateNumber`.
+* **Runtime Type**. An event property must have a primitive type (we will later see how to model more complex properties such as lists and nested properties).
+  The type must be an instance of `XMLSchema` primitives, however, the SDK provides convenience methods to provide the property type.
+* **Domain Property**. The domain property indicates the semantics of the event property. For instance, the `latitude` property is linked to the `http://www.w3.org/2003/01/geo/wgs84_pos#lat` property of the WGS84 vocabulary.
+  The domain property should be an URI as part of an existing or domain-specific vocabulary. The SDK provides convenience methods for popuplar vocabularies (e.g., Schema.org, Dolce or WGS84).
+
+In order to complete the minimum required specification of an event stream, we need to provide information on the transport format and protocol of the data stream at runtime.
+
+This can be achieved by extending the builder with the respective properties:
+```java
+.format(Formats.jsonFormat())
+.protocol(Protocols.kafka("localhost", 9094, "org.apache.streampipes.tutoria.vehicle"))
+.build();
+```
+
+
+In this example, we defined that the data stream consists of events in a JSON format and that Kafka is used as a message broker to transmit events.
+The last build() method call triggers the construction of the data stream definition.
+
+That's it! In the next section, we will connect the data stream to a source and inspect the generated RDF description.
+
+## Creating some dummy data
+
+Let's assume our stream should produce some random values that are sent to StreamPipes. We'll add a very simple data simulator to the ``executeStream`` method as follows:
+
+```java
+@Override
+  public void executeStream() {
+
+    SpKafkaProducer producer = new SpKafkaProducer("localhost:9094", "my-topic", Collections.emptyList());
+    Random random = new Random();
+    Runnable runnable = () -> {
+      for (;;) {
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("timestamp", System.currentTimeMillis());
+        jsonObject.addProperty("plateNumber", "KA-SP 1");
+        jsonObject.addProperty("latitude", random.nextDouble());
+        jsonObject.addProperty("longitude", random.nextDouble());
+    
+        producer.publish(jsonObject.toString());
+    
+        try {
+        TimeUnit.SECONDS.sleep(1);
+        } catch (InterruptedException e) {
+        e.printStackTrace();
+        }
+  
+      }
+    };
+
+    new Thread(runnable).start();
+  }
+```
+
+Change the topic and the URL of your Kafka broker (as stated in the controller).
+
+## Registering the data stream
+
+You need to register the stream in the service definition. Open the ``Init`` class and register the ``MyVehicleStream``:
+
+```java
+
+  @Override
+  public SpServiceDefinition provideServiceDefinition() {
+    return SpServiceDefinitionBuilder.create("org.apache.streampipes",
+                    "human-readable service name",
+                    "human-readable service description", 8090)
+            .registerPipelineElement(new ExampleDataProcessor())
+            .registerPipelineElement(new ExampleDataSink())
+            .registerPipelineElement(new MyVehicleStream())
+            .registerMessagingFormats(
+                    new JsonDataFormatFactory(),
+                    new CborDataFormatFactory(),
+                    new SmileDataFormatFactory(),
+                    new FstDataFormatFactory())
+            .registerMessagingProtocols(
+                    new SpKafkaProtocolFactory(),
+                    new SpJmsProtocolFactory(),
+                    new SpMqttProtocolFactory())
+            .build();
+  }
+
+```
+
+You can remove the other two example classes if you want.
+
+## Starting the service
+
+<div class="admonition tip">
+<div class="admonition-title">Tip</div>
+<p>Once you start the service, it will register in StreamPipes with the hostname. The hostname will be auto-discovered and should work out-of-the-box.
+In some cases, the detected hostname is not resolvable from within a container (where the core is running). In this case, provide a SP_HOST environment variable to override the auto-discovery.
+</p>
+</div>
+
+Now we are ready to start our first container!
+
+Configure your IDE to provide an environment variable called ``SP_DEBUG`` with value ``true`` when starting the project.
+
+The service automatically registers itself in StreamPipes.
+
+To install the just created element, open the StreamPipes UI and install the source over the ``Install Pipeline Elements`` section.
+
+## Read more
+
+Congratulations! You've just created your first pipeline element for StreamPipes.
+There are many more things to explore and data sources can be defined in much more detail.
+Also consider that in some cases, you would like to create a configurable adapter, 
+where a data source can be configured by users in the UI when connecting data.
diff --git a/documentation/website/versioned_docs/version-0.90.0/07_technicals-configuration.md b/documentation/website/versioned_docs/version-0.90.0/07_technicals-configuration.md
new file mode 100644
index 0000000..5458dfd
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/07_technicals-configuration.md
@@ -0,0 +1,59 @@
+---
+id: version-0.90.0-technicals-configuration
+title: Configuration
+sidebar_label: Configuration
+original_id: technicals-configuration
+---
+
+On this page we explain how the StreamPipes configuration works.
+StreamPipes allows the individual services (pipeline element containers and third-party services) to store configuration parameters in a distributed key-value store.
+This has the advantage that individual services do not need to store any configurations on the local file system, enabling us to run containers anywhere.
+As a key-value store we use [Consul](https://www.consul.io/), which is an essential service for all our services.
+
+<img src="/docs/img/configuration/consul.png" width="50%" alt="Semantic description of data processor">
+
+
+## Edit Configurations
+All services in StreamPipes can have configuration parameters.
+You can either change them in the consul user interface (which is by default running on port 8500) or directly in the StreamPipes Configurations Page.
+Once a new  pipeline element container is started, it is registered in Consul and the parameters can be edited in the configuration page, as shown below.
+To store changes in Consul, the update button must be clicked.
+
+<div class="my-carousel">
+    <img src="/docs/img/configuration/configuration_1.png" alt="Configuration View">
+</div>
+
+## Configuration for Developers
+We provide a Configurations API for the use of configuration parameters in your services.
+Each processing element project has a “config” package [[Example]](https://github.com/apache/streampipes-extensions/tree/dev/streampipes-sinks-internal-jvm/src/main/java/org/streampipes/sinks/internal/jvm/config).
+This package usually contains two classes.
+One containing unique keys for the configuration values and one containing the getter and setter methods to access these values.
+For the naming of configuration keys, we recommend to use “SP” as a prefix.
+As we explain later, it is possible to set default configurations as environment variables, this prefix makes them unique on your server.
+A configuration entry needs a unique config key. For this key, a value can be specified containing the configuration, like for example the port number of the service.
+For each configuration, a description explaining the parameter can be provided, further the data type must be specified and whether it is a password or not.
+Below, the schema of a configuration item is shown on the left and an example of a port configuration on the right.
+
+<img src="/docs/img/configuration/config_key.png" width="80%" alt="Semantic description of data processor">
+
+As a developer, you can add as many new configurations to services as you wish, but there are some that are required for all processing element containers.
+Those are **the host**, **the port**, and **the name** of the service.
+
+## Default Values
+You can provide default values for the configurations, which are used when a configuration is read for the first time.
+The first option is to register a configuration parameter in the Config class.
+This is a fallback value, which is used if nothing else is defined.
+Since this value is static, we offer a second option.
+It is possible to provide a default value by setting an environment variable.
+In this case, the convention is that the key of a configuration parameter must be used as the environment variable.
+Now, this value is used instead of the value defined in the Config class.
+During development, the configuration values often need to be changed for debugging purposes, therefore we provide an .env file in all processing element projects and archetypes.
+This file can be used by your IDE to set the environment variables. (e.g., [Intellij Plugin](https://plugins.jetbrains.com/plugin/7861-envfile))
+When you need to change the variable at runtime, you can do this in the StreamPipes configurations as explained before.
+Those changes take effect immediately without the need of a container restart.
+
+<div class="admonition warning">
+<div class="admonition-title">Installed pipeline elements</div>
+<p>Be cautious, when the configuration is used in the semantic description of a processing element which is already installed in StreamPipes, you have to reload this element in StreamPipes (my elements -> reload).
+   In addition, changes might affect already running pipelines.</p>
+</div>
diff --git a/documentation/website/versioned_docs/version-0.90.0/09_contribute.md b/documentation/website/versioned_docs/version-0.90.0/09_contribute.md
new file mode 100644
index 0000000..52c4c18
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/09_contribute.md
@@ -0,0 +1,18 @@
+---
+id: version-0.90.0-community-contribute
+title: Contribute
+sidebar_label: Contribute
+original_id: community-contribute
+---
+
+## Contribute
+
+We welcome contributions to StreamPipes. If you are interested in contributing to StreamPipes, let us know! You'll
+get to know an open-minded and motivated team working together to build the next IIoT analytics toolbox.
+
+Here are some first steps in case you want to contribute:
+* Subscribe to our dev mailing list [dev-subscribe@streampipes.apache.org](dev-subscribe@streampipes.apache.org)
+* Send an email, tell us about your interests and which parts of Streampipes you'd like to contribute (e.g., core or UI)!
+* Ask for a mentor who helps you to understand the code base and guides you through the first setup steps
+* Find an issue on [GitHub](https://github.com/apache/streampipes/issues) which is tagged with a _good first issue_ tag
+* Have a look at our **developer wiki** at [https://cwiki.apache.org/confluence/display/STREAMPIPES](https://cwiki.apache.org/confluence/display/STREAMPIPES) to learn more about StreamPipes development.
diff --git a/documentation/website/versioned_docs/version-0.90.0/pipeline-elements.md b/documentation/website/versioned_docs/version-0.90.0/pipeline-elements.md
new file mode 100644
index 0000000..8ff06d9
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/pipeline-elements.md
@@ -0,0 +1,2652 @@
+---
+id: version-0.90.0-pipeline-elements
+title: Overview
+sidebar_label: Overview
+original_id: pipeline-elements
+---
+
+<div class="pe-grid-container">
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor">
+                <img class="pe-icon"
+                     src="/docs/img/pipeline-elements/org.apache.streampipes.processors.pattern-detection.flink.absence/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Absence</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects whether an event does not arrive within a specified time after the
+            occurrence of another event.
+        </div>
+        <div class="pe-container-item-footer">
+            <div>
+                <i class="fas fa-file"></i>
+                <a href="/docs/docs/pe/org.apache.streampipes.processors.pattern-detection.flink.absence">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-pattern-detection-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-pattern-detection-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.aggregation.flink.aggregation/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Aggregation</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Performs different aggregation functions</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.aggregation.flink.aggregation">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-aggregation-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-aggregation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.pattern-detection.flink.and/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">And</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects whether an event co-occurs with another event within a given time.
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.pattern-detection.flink.and">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-pattern-detection-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-pattern-detection-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.protocol.stream.kafka/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Apache Kafka</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Consumes messages from an Apache Kafka broker</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.protocol.stream.kafka">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters-iiot">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.protocol.stream.pulsar/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Apache Pulsar</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Consumes messages from an Apache Pulsar broker</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.protocol.stream.pulsar">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters-iiot">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.flink.processor.boilerplate/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Boilerplate Removal</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Removes boilerplate and extract fulltext from HTML</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.flink.processor.boilerplate">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.booloperator.counter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Boolean Counter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Increases a counter on each change of a boolean value</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.booloperator.counter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.booloperator.inverter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Boolean Inverter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Inverts the boolean value of the selected field</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.booloperator.inverter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.booloperator.timer/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Boolean Timer</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Measures how long a boolean measure does not change</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.booloperator.timer">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.bufferrest/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Buffered REST Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Once a given amount of events is reached, events are posted to the given
+            REST interface.
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.bufferrest">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.csvmetadata/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">CSV Metadata Enricher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Enriches an event with additional fields from a</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.csvmetadata">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.duration-value/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Calculate Duration</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Calculates the time between two timestamps.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.duration-value">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.jvm.chunker/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Chunker (English)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Segments given tokens of a text into different chunks</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.jvm.chunker">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.coindesk/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Coindesk Bitcoin Price</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">The current bitcoin price from the Coindesk API.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.coindesk">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.compose/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Compose</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Merges two event streams</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.compose">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.jvm.couchdb/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">CouchDB</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Stores events in an Apache CouchDB database.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.databases.jvm.couchdb">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.aggregation.flink.count/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Count Aggregation</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Performs an aggregation based on a given event property and outputs the
+            number of occurrences.
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.aggregation.flink.count">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-aggregation-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-aggregation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.count-array/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Count Array</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Counts the size of list items.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.count-array">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.geo.jvm.jts.processor.latLngToGeo/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Creates JTS Point</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Creates a JTS Point from Latitude and Longitude values</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.geo.jvm.jts.processor.latLngToGeo">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.internal.jvm.dashboard/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Dashboard Sink</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Visualizes data streams in the StreamPipes dashboard</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.internal.jvm.dashboard">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-internal-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-internal-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.internal.jvm.datalake/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Data Lake</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Stores events in the StreamPipes data lake.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.internal.jvm.datalake">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-internal-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-internal-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.geo.jvm.processor.distancecalculator/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Distance Calculator</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Calculates the distance between two geo points</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.geo.jvm.processor.distancecalculator">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.geo.jvm.jts.processor.setEPSG/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">EPSG Code</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Adds a corresponding EPSG Code to the Geo-Event</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.geo.jvm.jts.processor.setEPSG">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.ditto/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Eclipse Ditto</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publishes events to Eclipse Ditto.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.databases.ditto">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.flink.elasticsearch/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Elasticsearch</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Stores data in an elasticsearch cluster</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.databases.flink.elasticsearch">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.notifications.jvm.email/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Email Notification</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Email service to send notifications emails</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.notifications.jvm.email">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-notifications-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-notifications-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.aggregation.flink.eventcount/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Event Counter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Counts the number of events within a time window.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.aggregation.flink.eventcount">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-aggregation-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-aggregation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.aggregation.flink.rate/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Event Rate</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Computes current event rate. Output is a number representing events per
+            second.
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.aggregation.flink.rate">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-aggregation-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-aggregation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.flink.field-converter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Field Converter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Converts a string value to a number data type</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.flink.field-converter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.flink.fieldhasher/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Field Hasher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Hashes the value of a field using various hash functions.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.flink.fieldhasher">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.flink.field-mapper/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Field Mapper</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Replaces one or more field with a new field and computes a hash value of
+            these fields
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.flink.field-mapper">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.flink.field-renamer/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Field Renamer</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Replaces the runtime name of an event property with a custom defined name.
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.flink.field-renamer">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.protocol.set.file/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">File Set</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Reads the content from a local file.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.protocol.set.file">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.protocol.stream.file/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">File Stream</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">null</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.protocol.stream.file">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.siddhi.frequency/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Frequency Calculation</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Calculates the frequency of the event stream</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.processors.siddhi.frequency">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-siddhi">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-siddhi">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.siddhi.frequencychange/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Frequency Change</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects when the frequency of the event stream changes</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.siddhi.frequencychange">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-siddhi">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-siddhi">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.gdelt/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">GDELT</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Global Database of Society</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.gdelt">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.imageclassification.jvm.generic-image-classification/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Generic Image Classification</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Classification Description (Generic Model)</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processor.imageclassification.jvm.generic-image-classification">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-image-processing-jvm">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-image-processing-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.geo.jvm.geocoding/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Google Maps Geocoder</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Geocodes a placename to a latitude/longitude combination</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.processor.geo.jvm.geocoding">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.protocol.set.http/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">HTTP Set</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Regularly poll an HTTP endpoint</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.protocol.set.http">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.protocol.stream.http/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">HTTP Stream</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Continuously fetched events from an HTTP REST endpoint.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.protocol.stream.http">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.iex.news/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">IEX Cloud News</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Fetches news for a given company (10 news / minutes maximum)</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.iex.news">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.iex.stocks/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">IEX Cloud Stock Quotes</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Live stock data provided by the IEXCloud API</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.iex.stocks">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.iss/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">ISS Location</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Current Location of the International Space Station (ISS)</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.iss">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.imageclassification.jvm.image-cropper/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Image Cropper</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Crops an image based on given bounding box coordinates</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processor.imageclassification.jvm.image-cropper">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-image-processing-jvm">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-image-processing-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.imageclassification.jvm.image-enricher/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Image Enricher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Enriches an image with a bounding box of given coordinates</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processor.imageclassification.jvm.image-enricher">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-image-processing-jvm">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-image-processing-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.image.set/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Image Upload (Set)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body"></div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.image.set">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.image.stream/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Image Upload (Stream)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body"></div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.image.stream">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.jvm.influxdb/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">InfluxDB</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Stores events in an InfluxDB.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.databases.jvm.influxdb">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.influxdb.set/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">InfluxDB Set Adapter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Creates a data set for an InfluxDB measurement</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.influxdb.set">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.influxdb.stream/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">InfluxDB Stream Adapter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Creates a data stream for an InfluxDB measurement</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.influxdb.stream">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.jvm.iotdb/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">IoTDB</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Stores events in a IoTDB database.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.databases.jvm.iotdb">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.jms/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">JMS Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publishes events to a JMS topic</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.jms">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.kafka/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Kafka Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publish events to Apache Kafka</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.kafka">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.flink.languagedetection/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Language Detection</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects the language of a written text.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.flink.languagedetection">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.jvm.languagedetection/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Language Detection</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects the language of a given text</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.jvm.languagedetection">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.protocol.stream.mqtt/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">MQTT</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">null</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.protocol.stream.mqtt">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.mqtt/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">MQTT Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publishes events to a MQTT topic</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.mqtt">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.enricher.flink.processor.math.mathop/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Math</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Performs calculations on event properties (+, -, *, /, %)</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.enricher.flink.processor.math.mathop">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-enricher-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-enricher-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.booloperator.timekeeping/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Measure Time Between Two Sensors</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Requires two booleans and measures the time between two signals</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.booloperator.timekeeping">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.flink.measurement-unit-converter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Measurement Unit Converter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Converts a unit of measurement to another one</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.flink.measurement-unit-converter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.enrich/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Merge By Enrich</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Merges two event streams by adding properties of one stream to the other
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.enrich">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.merge/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Merge By Time</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Merges two event streams by timestamp</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.merge">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.mysql.set/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">MySQL Set Adapter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Creates a data set from an SQL table</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.mysql.set">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.mysql.stream/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">MySql Stream Adapter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Creates a data stream for a SQL table</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.mysql.stream">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.netio.mqtt/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">NETIO MQTT M2M</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Connect a NETIO power plugs over MQTT</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.netio.mqtt">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.netio.rest/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">NETIO http JSON</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Connect a NETIO REST power plug</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.netio.rest">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.nswaustralia.trafficcamera/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">NSW Traffic Cameras</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Traffic camera images produced by NSW Australia</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.nswaustralia.trafficcamera">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.jvm.namefinder/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Name Finder</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Finds a name in given Tokens of one document</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.jvm.namefinder">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.internal.jvm.notification/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Notification</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publish a notification to the StreamPipes UI.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.internal.jvm.notification">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-internal-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-internal-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.numericalfilter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Numerical Filter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Numerical Filter Description</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.numericalfilter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.siddhi.numericalfilter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Numerical Filter (Siddhi)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body"></div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.siddhi.numericalfilter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-siddhi">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-siddhi">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.numericaltextfilter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Numerical Text Filter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Filters numerical and text values.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.numericaltextfilter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.opcua/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">OPC UA</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Reads values from an OPC-UA server</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.opcua">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.jvm.opcua/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">OPC-UA</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Writes values in an OPC-UA server</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.databases.jvm.opcua">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.notifications.jvm.onesignal/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">OneSignal</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Send Push Message to OneSignal-Application</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.notifications.jvm.onesignal">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-notifications-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-notifications-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.plc4x.s7/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">PLC4X S7</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Connect directly to your PLC</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.plc4x.s7">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.jvm.partofspeech/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Part of Speech (English)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Takes in a stream of tokens and appends a tag at the end of the word
+            corresponding to the part of speech
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.jvm.partofspeech">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.pattern-detection.flink.peak-detection/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Peak Detection</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detect peaks in time series data</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.pattern-detection.flink.peak-detection">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-pattern-detection-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-pattern-detection-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.databases.jvm.postgresql/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">PostgreSQL</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Stores events in a Postgres database.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.databases.jvm.postgresql">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-databases-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-databases-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.project/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Projection</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Outputs a selectable subset of an input event type</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.project">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.pulsar/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Pulsar Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publish events to Apache Pulsar</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.pulsar">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.imageclassification.qrcode/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">QR Code Reader</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects a QR Code in an image</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processor.imageclassification.qrcode">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-image-processing-jvm">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-image-processing-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.rest/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">REST Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Posts events to a REST interface</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.rest">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.ros/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">ROS Bridge</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Connect Robots running on ROS.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.ros">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.brokers.jvm.rabbitmq/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">RabbitMQ Publisher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Forwards events to a RabbitMQ broker</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.sinks.brokers.jvm.rabbitmq">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-brokers-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-brokers-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.simulator.randomdataset/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Random Data Simulator (Set)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publishes a bounded stream of random events</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.simulator.randomdataset">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.simulator.randomdatastream/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Random Data Simulator (Stream)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Publishes a continuous stream of random events</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.simulator.randomdatastream">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.geo.jvm.reversegeocoding/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Reverse Geocoder</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Finds the nearest place based on latitude and longitude</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processor.geo.jvm.reversegeocoding">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.jvm.sentencedetection/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Sentence Detection (English)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Splits a text up in sentences</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.jvm.sentencedetection">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.pattern-detection.flink.sequence/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Sequence</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects a sequence of events.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.pattern-detection.flink.sequence">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-pattern-detection-flink">Docker Container</a>
+            </div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-pattern-detection-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.siddhi.sequence/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Sequence Detection</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Merges events from two event streams, when the top event arrives first and
+            then the bottom event
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.processors.siddhi.sequence">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-siddhi">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-siddhi">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.geo.jvm.jts.processor.trajectory/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Single Trajectory Creator</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Creates a trajectory from JTS point events</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.geo.jvm.jts.processor.trajectory">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.enricher.jvm.sizemeasure/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Size Measure</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Measures the size of an event in Bytes, KB or MB</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.enricher.jvm.sizemeasure">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-enricher-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-enricher-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.slack/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Slack</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Subscribes to a Slack channel</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.slack">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.sinks.notifications.jvm.slack/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Slack Notification</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Slack bot to send notifications to Slack</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.sinks.notifications.jvm.slack">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/sinks-notifications-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-sinks-notifications-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.geo.flink/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Spatial Grid Enrichment</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Groups spatial events into cells of a given size</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.processor.geo.flink">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.geo.jvm.processor.speed/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Speed Calculator</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Calculates the speed of two latlng pairs in kilometers per hour</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.geo.jvm.processor.speed">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.split-array/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Split Array</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Outputs an event for each entry of a list.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.split-array">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.geo.jvm.processor.staticdistancecalculator/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Static Distance Calculator</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Calculates the distance between a fixed location and a moving location</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.geo.jvm.processor.staticdistancecalculator">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processor.geo.jvm.staticgeocoding/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Static Google Maps Geocoder</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Geocodes a fixed placename to lat/lng coordinates and</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processor.geo.jvm.staticgeocoding">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-geo-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.enricher.flink.processor.math.staticmathop/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Static Math</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Performs calculation on an event property with a static value (+, -, *, /,
+            %)
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.enricher.flink.processor.math.staticmathop">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-enricher-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-enricher-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.statistics.flink.statistics-summary/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Statistics Summary</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Calculate simple descriptive summary statistics</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.statistics.flink.statistics-summary">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-statistics-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-statistics-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.siddhi.stop/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Stream Stop Detection</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Triggers an event when the input data stream stops sending events</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.processors.siddhi.stop">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-siddhi">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-siddhi">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.stringoperator.counter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">String Counter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Increases a counter on each change of a string value.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.stringoperator.counter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.stringoperator.timer/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">String Timer</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Measures how long a string value does not change</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.stringoperator.timer">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.ti/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">TI Sensor Tag</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">null</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.connect.adapters.ti">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.taskduration/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Task Duration</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Computes the time difference between two events</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.taskduration">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.textfilter/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Text Filter</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Text Filter Description</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.textfilter">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.filters.jvm.threshold/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Threshold Detector</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">When threshold rule is fulfilled true is appended</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.filters.jvm.threshold">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-jvm">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.enricher.flink.timestamp/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Timestamp Enricher</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Appends the current time in ms to the event payload</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.enricher.flink.timestamp">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-enricher-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-enricher-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.processor.timestampextractor/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Timestamp Extractor</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Extracts a timestamp into its individual time fields.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.processor.timestampextractor">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.jvm.tokenizer/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Tokenizer (English)</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Segments a text into different tokens</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.jvm.tokenizer">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.transform-to-boolean/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Transform to boolean</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Transforms a string or number to a boolean</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.transform-to-boolean">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.siddhi.increase/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Trend</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Detects the increase of a numerical field over a customizable time window.
+            Example: A temperature value increases by 10 percent within 5 minutes.
+        </div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a href="/docs/docs/pe/org.apache.streampipes.processors.siddhi.increase">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-filters-siddhi">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-filters-siddhi">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.enricher.flink.processor.trigonometry/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Trigonometry Functions</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Performs Trigonometric functions on event properties</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.enricher.flink.processor.trigonometry">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-enricher-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-enricher-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.enricher.flink.processor.urldereferencing/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">URL Dereferencing</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Append the html page as a string to event</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.enricher.flink.processor.urldereferencing">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/processors-enricher-flink">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-enricher-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.transformation.jvm.changed-value/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Value Changed</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Outpus an event every time a specific field changes.</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.transformation.jvm.changed-value">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-transformation-jvm">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-transformation-jvm">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.wikipedia.edit/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Wikipedia Edits</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Continuously publishes recent Wikipedia edits</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.wikipedia.edit">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-sink">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-sink"><img class="pe-icon"
+                                                                  src="/docs/img/pipeline-elements/org.apache.streampipes.connect.adapters.wikipedia.new/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-sink">Data Sink</div>
+                <div class="pe-container-item-label-name">Wikipedia New Articles</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Continuously publishes articles created on Wikipedia</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.connect.adapters.wikipedia.new">Documentation</a></div>
+            <div><i class="fab fa-docker"></i> <a href="https://hub.docker.com/r/streampipes/connect-adapters">Docker
+                Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-connect-adapters">Code
+                on Github</a></div>
+        </div>
+    </div>
+    <div class="pe-container-item pe-container-item-processor">
+        <div class="pe-container-item-header">
+            <div class="pe-container-item-icon pe-icon-processor"><img class="pe-icon"
+                                                                       src="/docs/img/pipeline-elements/org.apache.streampipes.processors.textmining.flink.wordcount/icon.png">
+            </div>
+            <div class="pe-container-item-header-pe">
+                <div class="pe-container-item-label pe-container-item-label-processor">Data Processor</div>
+                <div class="pe-container-item-label-name">Word Count</div>
+            </div>
+        </div>
+        <div class="pe-container-item-body">Counts words on continuous text-based streams</div>
+        <div class="pe-container-item-footer">
+            <div><i class="fas fa-file"></i> <a
+                    href="/docs/docs/pe/org.apache.streampipes.processors.textmining.flink.wordcount">Documentation</a>
+            </div>
+            <div><i class="fab fa-docker"></i> <a
+                    href="https://hub.docker.com/r/streampipes/processors-text-mining-flink">Docker Container</a></div>
+            <div><i class="fab fa-github"></i> <a
+                    href="https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-text-mining-flink">Code
+                on Github</a></div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/documentation/website/versioned_docs/version-0.90.0/user-guide-installation.md b/documentation/website/versioned_docs/version-0.90.0/user-guide-installation.md
new file mode 100644
index 0000000..f83060d
--- /dev/null
+++ b/documentation/website/versioned_docs/version-0.90.0/user-guide-installation.md
@@ -0,0 +1,121 @@
+---
+id: version-0.90.0-user-guide-installation
+title: Installation
+sidebar_label: Installation
+original_id: user-guide-installation
+---
+## Prerequisites
+
+### Hardware
+
+* Docker (latest version, see instructions below)
+* Docker Compose (latest version., see instructions below)
+
+### Supported operating systems
+We rely on Docker and support three operating systems for the StreamPipes system
+
+* Linux
+* OSX
+* Windows 10
+    * Please note that older Windows versions are not compatible with Docker. Also Linux VMs under Windows might not work, due to network problems with docker.
+
+### Web Browser
+StreamPipes is a modern web application, therefore you need a recent version of Chrome (recommended), Firefox or Edge.
+
+### Docker
+You need to have Docker installed on your system before you continue with the installation guide.
+
+
+<div class="admonition info">
+<div class="admonition-title">Install Docker</div>
+<p>Go to https://docs.docker.com/installation/ and follow the instructions to install Docker for your OS. Make sure docker can be started as a non-root user (described in the installation manual, don’t forget to log out and in again) and check that Docker is installed correctly by executing docker-run hello-world</p>
+</div>
+
+<div class="admonition info">
+<div class="admonition-title">Configure Docker</div>
+<p>By default, Docker uses only a limited number of CPU cores and memory.
+       If you run StreamPipes on Windows or on a Mac you need to adjust the default settings.
+       To do that, click on the Docker icon in your tab bar and open the preferences.
+       Go to the advanced preferences and set the **number of CPUs to 6** (recommended) and the **Memory to 4GB**.
+       After changing the settings, Docker needs to be restarted.</p></div>
+
+
+## Install StreamPipes
+
+<div class="tab-content" id="myTabContent">
+    <div class="tab-pane fade show active" id="linux" role="tabpanel" aria-labelledby="linux-tab">
+        <ul style="padding-left:0">
+            <li class="installation-step">
+                <div class="wrapper-container" style="align-items: center;justify-content: center;">
+                    <div class="wrapper-step">
+                        <span class="fa-stack fa-2x">
+                             <i class="fas fa-circle fa-stack-2x sp-color-green"></i>
+                             <strong class="fa-stack-1x" style="color:white;">1</strong>
+                        </span>
+                    </div>
+                    <div class="wrapper-instruction">
+                        <a href="https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=streampipes/installer/0.70.0/apache-streampipes-installer-0.70.0-incubating-source-release.zip">Download</a>
+                        the latest Apache StreamPipes release and extract the zip file to a directory of your choice.
+                    </div>
+                </div>
+            </li>
+            <li class="installation-step">
+                <div class="wrapper-container" style="align-items: center;justify-content: center;">
+                    <div class="wrapper-step">
+                        <span class="fa-stack fa-2x">
+                             <i class="fas fa-circle fa-stack-2x sp-color-green"></i>
+                             <strong class="fa-stack-1x" style="color:white;">2</strong>
+                        </span>
+                    </div>
+                    <div class="wrapper-instruction">
+                       In a command prompt, open the folder <code>/compose</code> and run <code>docker-compose up -d</code>.
+                    </div>
+                </div>
+            </li>
+            <li class="installation-step">
+                <div class="wrapper-container" style="align-items: center;justify-content: center;">
+                    <div class="wrapper-step">
+                        <span class="fa-stack fa-2x">
+                             <i class="fas fa-circle fa-stack-2x sp-color-green"></i>
+                             <strong class="fa-stack-1x" style="color:white;">3</strong>
+                        </span>
+                    </div>
+                    <div class="wrapper-instruction">
+                        Open your browser, navigate to http://localhost:80 (or the domain name of your server) and finish the setup according to the instructions below.
+                    </div>
+                </div>
+            </li>
+        </ul>
+        </div>
+    </div>
+
+## Setup StreamPipes
+
+Once you've opened the browser at the URL given above, you should see StreamPipes application as shown below.
+To set up the system, enter an email address and a password and click on install.
+At this point, it is not necessary to change anything in the advanced settings menu.
+The installation might take some time, continue by clicking on "Go to login page", once all components are successfully configured.
+
+
+On the login page, enter your credentials, then you should be forwarded to the home page.
+
+Congratulations! You've successfully managed to install StreamPipes. Now we're ready to build our first pipeline!
+
+<div class="my-carousel">
+    <img src="/docs/img/quickstart/setup/01_register_user.png" alt="Set Up User">
+    <img src="/docs/img/quickstart/setup/02_user_set_up.png" alt="SetUp StreamPipes Components">
+    <img src="/docs/img/quickstart/setup/03_login.png" alt="Go to login page">
+    <img src="/docs/img/quickstart/setup/04_home.png" alt="Home page">
+</div>
+
+<div class="admonition error">
+<div class="admonition-title">Errors during the installation process</div>
+<p>In most cases, errors during the installation are due to an under-powered system.<br/>
+If there is a problem with any of the components, please restart the whole system and delete the "config" directory on the server.
+   This directory is in the same folder as the docker-compose.yml file.<br/>
+   Please also make sure that your system meets the hardware requirements as mentioned in the first section of the installation guide.</p>
+</div>
+
+## Next Steps
+
+Now you can continue with the tutorial on page [First steps](user-guide-first-steps.md).
diff --git a/documentation/website/versioned_sidebars/version-0.90.0-sidebars.json b/documentation/website/versioned_sidebars/version-0.90.0-sidebars.json
new file mode 100644
index 0000000..c7453cf
--- /dev/null
+++ b/documentation/website/versioned_sidebars/version-0.90.0-sidebars.json
@@ -0,0 +1,213 @@
+{
+  "version-0.90.0-documentation": {
+    "🚀 Try StreamPipes": [
+      "version-0.90.0-user-guide-introduction",
+      "version-0.90.0-try-installation"
+    ],
+    "💡 Concepts": [
+      "version-0.90.0-concepts-overview"
+    ],
+    "🎓 Use StreamPipes": [
+      "version-0.90.0-use-connect",
+      "version-0.90.0-use-pipeline-editor",
+      "version-0.90.0-use-managing-pipelines",
+      "version-0.90.0-use-dashboard",
+      "version-0.90.0-use-data-explorer",
+      "version-0.90.0-use-notifications",
+      "version-0.90.0-use-install-pipeline-elements",
+      "version-0.90.0-use-configurations"
+    ],
+    "📚 Pipeline Elements": [
+      {
+        "type": "subcategory",
+        "label": "Adapters",
+        "ids": [
+          "version-0.90.0-pe/org.apache.streampipes.connect.protocol.stream.kafka",
+          "version-0.90.0-pe/org.apache.streampipes.connect.protocol.stream.pulsar",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.coindesk",
+          "version-0.90.0-pe/org.apache.streampipes.connect.protocol.stream.file",
+          "version-0.90.0-pe/org.apache.streampipes.protocol.set.file",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.flic.mqtt",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.gdelt",
+          "version-0.90.0-pe/org.apache.streampipes.connect.protocol.stream.httpserver",
+          "version-0.90.0-pe/org.apache.streampipes.protocol.set.http",
+          "version-0.90.0-pe/org.apache.streampipes.connect.protocol.stream.http",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.iex.news",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.iex.stocks",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.iss",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.image.set",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.image.stream",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.influxdb.set",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.influxdb.stream",
+          "version-0.90.0-pe/org.apache.streampipes.connect.protocol.stream.mqtt",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.simulator.machine",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.mysql.set",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.mysql.stream",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.netio.mqtt",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.netio.rest",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.nswaustralia.trafficcamera",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.opcua",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.plc4x.modbus",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.plc4x.s7",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.ros",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.simulator.randomdataset",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.simulator.randomdatastream",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.slack",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.ti",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.wikipedia.edit",
+          "version-0.90.0-pe/org.apache.streampipes.connect.adapters.wikipedia.new"
+        ]
+      },
+      {
+        "type": "subcategory",
+        "label": "Data Processors",
+        "ids": [
+          "version-0.90.0-pe/org.apache.streampipes.processors.pattern-detection.flink.absence",
+          "version-0.90.0-pe/org.apache.streampipes.processors.aggregation.flink.aggregation",
+          "version-0.90.0-pe/org.apache.streampipes.processors.pattern-detection.flink.and",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.flink.processor.boilerplate",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.booloperator.counter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.booloperator.inverter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.booloperator.timer",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.booloperator.state",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.csvmetadata",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.duration-value",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.jvm.chunker",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.compose",
+          "version-0.90.0-pe/org.apache.streampipes.processors.aggregation.flink.count",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.count-array",
+          "version-0.90.0-pe/org.apache.streampipes.processors.geo.jvm.jts.processor.latLngToGeo",
+          "version-0.90.0-pe/org.apache.streampipes.processors.changedetection.jvm.cusum",
+          "version-0.90.0-pe/org.apache.streampipes.processors.geo.jvm.processor.distancecalculator",
+          "version-0.90.0-pe/org.apache.streampipes.processors.geo.jvm.jts.processor.setEPSG",
+          "version-0.90.0-pe/org.apache.streampipes.processors.aggregation.flink.eventcount",
+          "version-0.90.0-pe/org.apache.streampipes.processors.aggregation.flink.rate",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.flink.field-converter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.flink.fieldhasher",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.flink.field-mapper",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.flink.field-renamer",
+          "version-0.90.0-pe/org.apache.streampipes.processors.siddhi.frequency",
+          "version-0.90.0-pe/org.apache.streampipes.processors.siddhi.frequencychange",
+          "version-0.90.0-pe/org.apache.streampipes.processor.imageclassification.jvm.generic-image-classification",
+          "version-0.90.0-pe/org.apache.streampipes.processor.geo.jvm.geocoding",
+          "version-0.90.0-pe/org.apache.streampipes.processor.imageclassification.jvm.image-cropper",
+          "version-0.90.0-pe/org.apache.streampipes.processor.imageclassification.jvm.image-enricher",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.flink.languagedetection",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.jvm.languagedetection",
+          "version-0.90.0-pe/org.apache.streampipes.processors.enricher.flink.processor.math.mathop",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.booloperator.timekeeping",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.flink.measurement-unit-converter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.enrich",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.jvm.namefinder",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.state.labeler.number",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.numericalfilter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.siddhi.numericalfilter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.numericaltextfilter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.jvm.partofspeech",
+          "version-0.90.0-pe/org.apache.streampipes.processors.pattern-detection.flink.peak-detection",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.project",
+          "version-0.90.0-pe/org.apache.streampipes.processor.imageclassification.qrcode",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.limit",
+          "version-0.90.0-pe/org.apache.streampipes.processor.geo.jvm.reversegeocoding",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.jvm.sentencedetection",
+          "version-0.90.0-pe/org.apache.streampipes.processors.pattern-detection.flink.sequence",
+          "version-0.90.0-pe/org.apache.streampipes.processors.siddhi.sequence",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.booloperator.edge",
+          "version-0.90.0-pe/org.apache.streampipes.processors.geo.jvm.jts.processor.trajectory",
+          "version-0.90.0-pe/org.apache.streampipes.processors.enricher.jvm.sizemeasure",
+          "version-0.90.0-pe/org.apache.streampipes.processor.geo.flink",
+          "version-0.90.0-pe/org.apache.streampipes.processors.geo.jvm.processor.speed",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.split-array",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.state.buffer",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.state.labeler.buffer",
+          "version-0.90.0-pe/org.apache.streampipes.processors.geo.jvm.processor.staticdistancecalculator",
+          "version-0.90.0-pe/org.apache.streampipes.processor.geo.jvm.staticgeocoding",
+          "version-0.90.0-pe/org.apache.streampipes.processors.enricher.flink.processor.math.staticmathop",
+          "version-0.90.0-pe/org.apache.streampipes.processors.statistics.flink.statistics-summary",
+          "version-0.90.0-pe/org.apache.streampipes.processors.siddhi.stop",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.stringoperator.counter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.stringoperator.timer",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.stringoperator.state",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.merge",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.taskduration",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.textfilter",
+          "version-0.90.0-pe/org.apache.streampipes.processors.filters.jvm.threshold",
+          "version-0.90.0-pe/org.apache.streampipes.processors.enricher.flink.timestamp",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.processor.timestampextractor",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.jvm.tokenizer",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.transform-to-boolean",
+          "version-0.90.0-pe/org.apache.streampipes.processors.siddhi.increase",
+          "version-0.90.0-pe/org.apache.streampipes.processors.enricher.flink.processor.trigonometry",
+          "version-0.90.0-pe/org.apache.streampipes.processors.enricher.flink.processor.urldereferencing",
+          "version-0.90.0-pe/org.apache.streampipes.processors.transformation.jvm.changed-value",
+          "version-0.90.0-pe/org.apache.streampipes.processors.textmining.flink.wordcount"
+        ]
+      },
+      {
+        "type": "subcategory",
+        "label": "Data Sinks",
+        "ids": [
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.bufferrest",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.jvm.couchdb",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.internal.jvm.dashboard",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.internal.jvm.datalake",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.ditto",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.flink.elasticsearch",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.notifications.jvm.email",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.jvm.influxdb",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.jvm.iotdb",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.jms",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.kafka",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.jvm.mysql",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.nats",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.internal.jvm.notification",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.jvm.opcua",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.notifications.jvm.onesignal",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.databases.jvm.postgresql",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.pulsar",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.rest",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.brokers.jvm.rabbitmq",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.notifications.jvm.slack",
+          "version-0.90.0-pe/org.apache.streampipes.sinks.notifications.jvm.telegram"
+        ]
+      }
+    ],
+    "âš¡ Deploy StreamPipes": [
+      "version-0.90.0-deploy-docker",
+      "version-0.90.0-deploy-kubernetes",
+      "version-0.90.0-deploy-use-ssl",
+      "version-0.90.0-deploy-security"
+    ],
+    "💻 Extend StreamPipes": [
+      "version-0.90.0-extend-setup",
+      "version-0.90.0-extend-cli",
+      "version-0.90.0-extend-archetypes",
+      "version-0.90.0-extend-first-processor",
+      "version-0.90.0-extend-tutorial-data-sources",
+      "version-0.90.0-extend-tutorial-data-processors",
+      "version-0.90.0-extend-tutorial-data-sinks",
+      "version-0.90.0-extend-sdk-functions",
+      "version-0.90.0-extend-sdk-event-model",
+      "version-0.90.0-extend-sdk-stream-requirements",
+      "version-0.90.0-extend-sdk-static-properties",
+      "version-0.90.0-extend-sdk-output-strategies",
+      "version-0.90.0-extend-sdk-migration-service-discovery"
+    ],
+    "🔧 Technicals": [
+      "version-0.90.0-technicals-architecture",
+      "version-0.90.0-technicals-user-guidance",
+      "version-0.90.0-technicals-runtime-wrappers",
+      "version-0.90.0-technicals-messaging",
+      "version-0.90.0-technicals-configuration"
+    ],
+    "👪 Community": [
+      "version-0.90.0-community-get-help",
+      "version-0.90.0-community-contribute"
+    ]
+  },
+  "version-0.90.0-faq": {
+    "FAQ": [
+      "version-0.90.0-faq-common-problems"
+    ]
+  }
+}
diff --git a/documentation/website/versions.json b/documentation/website/versions.json
index db5a878..d9aa237 100644
--- a/documentation/website/versions.json
+++ b/documentation/website/versions.json
@@ -1,4 +1,5 @@
 [
+  "0.90.0",
   "0.70.0",
   "0.69.0",
   "0.68.0",