diff --git a/docs/05_deploy-choosing-the-right-flavor.md b/docs/05_deploy-choosing-the-right-flavor.md
new file mode 100644
index 0000000..a140bf4
--- /dev/null
+++ b/docs/05_deploy-choosing-the-right-flavor.md
@@ -0,0 +1,47 @@
+---
+id: choosing-the-right-flavor
+title: Choosing the right flavor
+sidebar_label: Service selection options
+---
+
+
+## Introduction
+
+StreamPipes comes with many different options to customize a deployment. This section introduces the various options you can choose from when installing StreamPipes.
+
+You can choose between various **deployment modes**, choose from two different core packages and several extension packages, wich are described below.
+
+## Deployment Mode
+
+For the deployment model, you choose between a standard multi-container `Docker-Compose` installation and the `Kubernetes` installation.
+we provide several `Docker-Compose` files for the various options shown here and a `helm chart`. 
+See [Docker Deployment](05_deploy-docker.md) and [Kubernetes Deployment](05_deploy-kubernetes.md) for more details.
+
+### Running StreamPipes in a non-containerized environment
+
+Of course, it is also possible to launch StreamPipes in a non-containerized environment. 
+You will need to build your own executable binaries by running `mvn package`.
+In addition, it is required to install the required 3rd party services (see [Architecture](07_technicals-architecture.md)) and configure the environment variables as described in [Environment Variables](05_deploy-environment-variables.md).
+
+## Core Service
+
+We provide two different pre-packaged versions of core services. The default `streampipes-service-core` is a packaged JAR file which includes client libraries for the various messaging systems StreamPipes supports at the cost of a larger file size.
+In case you plan to run StreamPipes on less resource-intensive hardware, we recommend to switch to the `streampipes-service-core-minimal` package, which only includes support for MQTT and NATS, but has a smaller file size and slightly improved startup performance.
+
+## Extension Services
+
+Similar to the core, we provide several pre-packaged extension services which differ mainly by their file size, number of supported adapters and pipeline elements and messaging systems.
+
+The following packages exist:
+
+* `streampipes-extensions-all-jvm` is the largest package and includes all official StreamPipes adapters and pipeline elements. It also includes support for all messaging systems Streampipes currently supports.
+* `streampipes-extensions-all-iiot` is a subset of the aforementioned package and excludes adapters and pipeline elements which are often not relevant for IIoT use cases. For instance, the package excludes text mining-related pipeline elements.
+* `streampipes-extensions-iiot-minimal` is a subset of the aforementioned package and includes only support for the lightweight messaging systems MQTT and NATS.
+
+Generally said, in cases where you plan to deploy StreamPipes on a resource-limited edge device, we recommend a combination of the `streampipes-service-core-minimal` and `streampipes-extensions-iiot-minimal` package. This could, for instance, be a device with less than 4GB memory.
+In other cases, it depends on the use case and if you need all adapters and pipeline elements or are ok with the IIoT-related extensions.
+
+## Messaging System
+
+StreamPipes can be configured to use different messaging systems for exchanging events between adapters and pipeline elements.
+The section [Messaging](07_technicals-messaging.md) includes detailed information on the configuration of messaging systems. 
diff --git a/docs/05_deploy-environment-variables.md b/docs/05_deploy-environment-variables.md
index 26b925f..c4066fb 100644
--- a/docs/05_deploy-environment-variables.md
+++ b/docs/05_deploy-environment-variables.md
@@ -1,5 +1,88 @@
 ---
-
+id: deploy-environment-variables
+title: Environment Variables
+sidebar_label: Environment Variables
 ---
 
----
\ No newline at end of file
+## Introduction
+
+A StreamPipes installation can be configured in many ways by providing environment variables.
+The following lists describe available environment variables along with a description.
+
+## StreamPipes Core Service
+
+### Internal
+
+| Env Variable Name              | Default Value                                           | Description                                                                                                                      |
+|--------------------------------|---------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|
+| SP_DEBUG                       | false                                                   | Should only be set for local development to reroute traffic to localhost                                                         |
+| SP_INITIAL_ADMIN_EMAIL         | admin@streampipes.apache.org                            | Installation-time variable for defining the default user name                                                                    |
+| SP_INITIAL_ADMIN_PASSWORD      | admin                                                   | Installation-time variable for defining the default user password                                                                |
+| SP_INITIAL_SERVICE_USER        | sp-service-client                                       | Installation-time variable for defining the initial service user (must be same to the configured user in the extension service)  |
+| SP_INITIAL_SERVICE_USER_SECRET | my-apache-streampipes-secret-key-change-me              | Installation-time variable for defining the initial service secret (minimum 35 chars)                                            |
+| SP_JWT_SECRET                  | Empty for Docker, Auto-generated for K8s                | JWT secret, base64-encoded, minimum 256 bits                                                                                     |
+| SP_JWT_SIGNING_MODE            | HMAC                                                    | HMAC or RSA, RSA can be used to authenticate Core-Extensions communication                                                       |
+| SP_JWT_PRIVATE_KEY_LOC         | Empty                                                   | Required id SP_JWT_SIGNING_MODE=RSA, path to the private key, can be generated in the UI (Settings->Security->Generate Key Pair) |
+| SP_ENCRYPTION_PASSCODE         | eGgemyGBoILAu3xckolp for Docker, Auto-generated for K8s | Encryption passcode for `SecretStaticProperties`                                                                                 |
+| SP_PRIORITIZED_PROTOCOL        | kafka                                                   | Messaging layer for data exchange between extensions                                                                             |
+
+
+### Third-party services
+
+| Env Variable Name      | Default Value | Description                                                               |
+|------------------------|---------------|---------------------------------------------------------------------------|
+| SP_COUCHDB_HOST        | couchdb       | The hostname or IP of the CouchDB database                                |
+| SP_COUCHDB_PROTOCOL    | http          | The protocol (http or https) of the CouchDB database                      |
+| SP_COUCHDB_PORT        | 5984          | The port of the CouchDB database                                          |
+| SP_COUCHDB_USER        | admin         | The user of the CouchDB database (must have permissions to add databases) |
+| SP_COUCHDB_PASSWORD    | admin         | The password of the CouchDB user                                          |
+| SP_TS_STORAGE_HOST     | influxdb      | The hostname of the timeseries storage (currently InfluxDB)               |
+| SP_TS_STORAGE_PORT     | 8086          | The port of the timeseries storage                                        |
+| SP_TS_STORAGE_PROTOCOL | http          | The protocol of the timeseries storage (http or https)                    |
+| SP_TS_STORAGE_BUCKET   | sp            | The InfluxDB storage bucket name                                          |
+| SP_TS_STORAGE_ORG      | sp            | The InfluxDB storage org                                                  |
+| SP_TS_STORAGE_TOKEN    | sp-admin      | The InfluxDB storage token                                                |
+
+The InfluxDB itself can be configured by providing the variables `DOCKER_INFLUXDB_INIT_PASSWORD` and `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN`. See the `docker-compose` file for details.
+
+## StreamPipes Extensions Service
+
+### Internal
+
+| Env Variable Name              | Default Value                              | Description                                                                                                        |
+|--------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
+| SP_CLIENT_USER                 | Empty                                      | Service account for communication with Core                                                                        |
+| SP_CLIENT_SECRET               | Empty                                      | Service secret for communication with Core                                                                         |
+| SP_EXT_AUTH_MODE               | sp-service-client                          | When set to AUTH: all interfaces are only accessible with authentication (requires SP_JET_PRIVATE_KEY_LOC in Core) |
+| SP_JWT_PUBLIC_KEY_LOC          | my-apache-streampipes-secret-key-change-me | Path to the public key of the corresponding SP_JWT_PRIVATE_KEY defined in Core                                     |
+
+### Third-party services
+
+The following variables are only required for extensions which require access to the internal time-series storage (the `Data Lake Sink`).
+
+| Env Variable Name      | Default Value | Description                                                               |
+|------------------------|---------------|---------------------------------------------------------------------------|
+| SP_TS_STORAGE_HOST     | influxdb      | The hostname of the timeseries storage (currently InfluxDB)               |
+| SP_TS_STORAGE_PORT     | 8086          | The port of the timeseries storage                                        |
+| SP_TS_STORAGE_PROTOCOL | http          | The protocol of the timeseries storage (http or https)                    |
+| SP_TS_STORAGE_BUCKET   | sp            | The InfluxDB storage bucket name                                          |
+| SP_TS_STORAGE_ORG      | sp            | The InfluxDB storage org                                                  |
+| SP_TS_STORAGE_TOKEN    | sp-admin      | The InfluxDB storage token                                                |
+
+
+## Recommended variables
+
+For a standard deployment, it is recommended to customize the following variables:
+
+*	Initiales Admin-Passwort (SP_INITIAL_ADMIN_PASSWORD, Core)
+*	Initiales Client Secret (SP_INITIAL_SERVICE_USER_SECRET, Core)
+*	Client Secret Extensions (SP_CLIENT_USER, Extensions)
+*	Encryption Passcode (SP_ENCRYPTION_PASSCODE, Core)
+*	CouchDB-Password (SP_COUCHDB_PASSWORD, Core + Extensions + CouchDB)
+*	InfluxDB Storage Password (DOCKER_INFLUXDB_INIT_PASSWORD, InfluxDB)
+*	InfluxDB Storage Token (SP_TS_STORAGE_TOKEN (Core, Extensions)
+  * DOCKER_INFLUXDB_INIT_ADMIN_TOKEN (InfluxDB service)
+
+## Auto-generation of variables in K8s setups
+
+See the [Kubernetes Guide](05_deploy-kubernetes.md) for an overview of auto-generated variables.
diff --git a/docs/05_deploy-kubernetes.md b/docs/05_deploy-kubernetes.md
index 327a568..478e1a3 100644
--- a/docs/05_deploy-kubernetes.md
+++ b/docs/05_deploy-kubernetes.md
@@ -18,7 +18,7 @@
 ```
 After a while, all containers should successfully started, indicated by the `Running` status.
 
-The `values.yaml` file contains several configuration options to customize your StreamPipes installation. See the file for all configuration options.
+The `values.yaml` file contains several configuration options to customize your StreamPipes installation. See the section below for all configuration options.
 
 ## Ingress
 
@@ -28,6 +28,256 @@
 
 You can override the `storageClassName` variable to configure StreamPipes for dynamic volume provisioning.
 
+## Parameters
+
+Here is an overview of the supported parameters to configure StreamPipes.
+
+### Common parameters
+
+| Parameter Name                                   | Description                                             | Value                                   |
+|--------------------------------------------------|---------------------------------------------------------|-----------------------------------------|
+| deployment                                       | Deployment type (lite or full)                          | lite                                    |
+| preferredBroker                                  | Preferred broker for deployment                         | "nats"                                  |
+| monitoringSystem                                 | Enable monitoring system (true/false)                   | false                                   |
+| pullPolicy                                       | Image pull policy                                       | "Always"                                |
+| restartPolicy                                    | Restart policy for the container                        | Always                                  |
+| persistentVolumeReclaimPolicy                    | Reclaim policy for persistent volumes                   | "Delete"                                |
+| persistentVolumeAccessModes                      | Access mode for persistent volumes                      | "ReadWriteOnce"                         |
+| initialDelaySeconds                              | Initial delay for liveness and readiness probes         | 60                                      |
+| periodSeconds                                    | Interval between liveness and readiness probes          | 30                                      |
+| failureThreshold                                 | Number of consecutive failures for readiness probes     | 30                                      |
+| hostPath                                         | Host path for the application                           | ""                                      |
+
+### StreamPipes common parameters
+
+| Parameter Name                                  | Description                                             | Value                                    |
+|-------------------------------------------------|---------------------------------------------------------|------------------------------------------|
+| streampipes.version                             | StreamPipes version                                     | "0.93.0-SNAPSHOT"                        |
+| streampipes.registry                            | StreamPipes registry URL                                | "apachestreampipes"                      |
+| streampipes.auth.secretName                     | The secret name for storing secrets                     | "sp-secrets"                             |
+| streampipes.auth.users.admin.user               | The initial admin user                                  | "admin@streampipes.apache.org"           |
+| streampipes.auth.users.admin.password           | The initial admin password (leave empty for autogen)    | "admin"                                  |
+| streampipes.auth.users.service.user             | The initial service account user                        | "sp-service-client"                      |
+| streampipes.auth.users.service.secret           | The initial service account secret                      | empty (auto-generated)                   |
+| streampipes.auth.encryption.passcode            | Passcode for value encryption                           | empty (auto-generated)                   |
+| streampipes.core.appName                        | StreamPipes backend application name                    | "backend"                                |
+| streampipes.core.port                           | StreamPipes backend port                                | 8030                                     |
+| streampipes.core.persistence.storageClassName   | Storage class name for backend PVs                      | "hostpath"                               |
+| streampipes.core.persistence.storageSize        | Size of the backend PV                                  | "1Gi"                                    |
+| streampipes.core.persistence.claimName          | Name of the backend PersistentVolumeClaim               | "backend-pvc"                            |
+| streampipes.core.persistence.pvName             | Name of the backend PersistentVolume                    | "backend-pv"                             |
+| streampipes.core.service.name                   | Name of the backend service                             | "backend"                                |
+| streampipes.core.service.port                   | TargetPort of the StreamPipes backend service           | 8030                                     |
+| streampipes.ui.appName                          | StreamPipes UI application name                         | "ui"                                     |
+| streampipes.ui.resolverActive                   | Flag for enabling DNS resolver for Nginx proxy          | true                                     |
+| streampipes.ui.port                             | StreamPipes UI port                                     | 8088                                     |
+| streampipes.ui.resolver                         | DNS resolver for Nginx proxy                            | "kube-dns.kube-system.svc.cluster.local" |
+| streampipes.ui.service.name                     | Name of the UI service                                  | "ui"                                     |
+| streampipes.ui.service.type                     | Type of the UI service                                  | "ClusterIP"                              |
+| streampipes.ui.service.nodePort                 | Node port for the UI service                            | 8088                                     |
+| streampipes.ui.service.port                     | TargetPort of the StreamPipes UI service                | 8088                                     |
+| streampipes.ingress.active                      | Flag for enabling Ingress for StreamPipes               | false                                    |
+| streampipes.ingress.annotations                 | Annotations for Ingress                                 | {}                                       |
+| streampipes.ingress.host                        | Hostname for Ingress                                    | ""                                       |
+| streampipes.ingressroute.active                 | Flag for enabling IngressRoute for StreamPipes          | true                                     |
+| streampipes.ingressroute.annotations            | Annotations for IngressRoute                            | {}                                       |
+| streampipes.ingressroute.entryPoints            | Entry points for IngressRoute                           | ["web", "websecure"]                     |
+| streampipes.ingressroute.host                   | Hostname for IngressRoute                               | ""                                       |
+| streampipes.ingressroute.certResolverActive     | Flag for enabling certificate resolver for IngressRoute | true                                     |
+| streampipes.ingressroute.certResolver           | Certificate resolver for IngressRoute                   | ""                                       |
+
+
+### Extensions common parameters
+
+| Parameter Name                                  | Description                                             | Value                                    |
+|-------------------------------------------------|---------------------------------------------------------|------------------------------------------|
+| extensions.iiot.appName                         | IIoT extensions application name                        | extensions-all-iiot                      |
+| extensions.iiot.port                            | Port for the IIoT extensions application                | 8090                                     |
+| extensions.iiot.service.name                    | Name of the IIoT extensions service                     | extensions-all-iiot                      |
+| extensions.iiot.service.port                    | TargetPort of the IIoT extensions service               | 8090                                     |
+
+
+### External common parameters
+
+#### Consul common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.consul.appName                         | Consul application name                                  | "consul"                                 |
+| external.consul.version                         | Consul version                                           | 1.14.3                                   |
+| external.consul.webPort                         | Port number for the Consul web interface                 | 8500                                     |
+| external.consul.dnsPort                         | Port number for the Consul DNS interface                 | 8600                                     |
+| external.consul.persistence.storageClassName    | Storage class name for Consul PVs                        | "hostpath"                               |
+| external.consul.persistence.storageSize         | Size of the Consul PV                                    | "1Gi"                                    |
+| external.consul.persistence.claimName           | Name of the Consul PersistentVolumeClaim                 | "consul-pvc"                             |
+| external.consul.persistence.pvName              | Name of the Consul PersistentVolume                      | "consul-pv"                              |
+| external.consul.service.name                    | Name of the Consul service                               | "consul"                                 |
+| external.consul.service.webPort                 | TargetPort of the Consul service for web interface       | 8500                                     |
+| external.consul.service.dnsPort                 | TargetPort of the Consul service for DNS interface       | 8600                                     |
+
+#### Couchdb common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.couchdb.appName                        | CouchDB application name                                 | "couchdb"                                |
+| external.couchdb.version                        | CouchDB version                                          | 3.3.1                                    |
+| external.couchdb.user                           | CouchDB admin username                                   | "admin"                                  |
+| external.couchdb.password                       | CouchDB admin password                                   | empty (auto-generated)                   |
+| external.couchdb.port                           | Port for the CouchDB service                             | 5984                                     |
+| external.couchdb.service.name                   | Name of the CouchDB service                              | "couchdb"                                |
+| external.couchdb.service.port                   | TargetPort of the CouchDB service                        | 5984                                     |
+| external.couchdb.persistence.storageClassName   | Storage class name for CouchDB PVs                       | "hostpath"                               |
+| external.couchdb.persistence.storageSize        | Size of the CouchDB PV                                   | "1Gi"                                    |
+| external.couchdb.persistence.claimName          | Name of the CouchDB PersistentVolumeClaim                | "couchdb-pvc"                            |
+| external.couchdb.persistence.pvName             | Name of the CouchDB PersistentVolume                     | "couchdb-pv"                             |
+
+#### Influxdb common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.influxdb.appName                       | InfluxDB application name                                | "influxdb"                               |
+| external.influxdb.version                       | InfluxDB version                                         | 2.6                                      |
+| external.influxdb.username                      | InfluxDB admin username                                  | "admin"                                  |
+| external.influxdb.password                      | InfluxDB admin password                                  | empty (auto-generated)                   |
+| external.influxdb.adminToken                    | InfluxDB admin token                                     | empty (auto-generated)                   |
+| external.influxdb.initOrg                       | InfluxDB initial organization                            | "sp"                                     |
+| external.influxdb.initBucket                    | InfluxDB initial bucket                                  | "sp"                                     |
+| external.influxdb.initMode                      | InfluxDB initialization mode                             | "setup"                                  |
+| external.influxdb.apiPort                       | Port number for the InfluxDB service (API)               | 8083                                     |
+| external.influxdb.httpPort                      | Port number for the InfluxDB service (HTTP)              | 8086                                     |
+| external.influxdb.grpcPort                      | Port number for the InfluxDB service (gRPC)              | 8090                                     |
+| external.influxdb.service.name                  | Name of the InfluxDB service                             | "influxdb"                               |
+| external.influxdb.service.apiPort               | TargetPort of the InfluxDB service for API               | 8083                                     |
+| external.influxdb.service.httpPort              | TargetPort of the InfluxDB service for HTTP              | 8086                                     |
+| external.influxdb.service.grpcPort              | TargetPort of the InfluxDB service for gRPC              | 8090                                     |
+| external.influxdb.persistence.storageClassName  | Storage class name for InfluxDB PVs                      | "hostpath"                               |
+| external.influxdb.persistence.storageSize       | Size of the InfluxDB PV                                  | "1Gi"                                    |
+| external.influxdb.persistence.storageSizeV1     | Size of the InfluxDB PV for v1 databases                 | "1Gi"                                    |
+| external.influxdb.persistence.claimName         | Name of the InfluxDBv2 PersistentVolumeClaim             | "influxdb2-pvc"                          |
+| external.influxdb.persistence.claimNameV1       | Name of the InfluxDBv1 PersistentVolumeClaim             | "influxdb-pvc"                           |
+| external.influxdb.persistence.pvName            | Name of the InfluxDBv2 PersistentVolume                  | "influxdb2-pv"                           |
+| external.influxdb.persistence.pvNameV1          | Name of the InfluxDBv1 PersistentVolume                  | "influxdb-pv"                            |
+
+
+#### Nats common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.nats.appName                           | NATS application name                                    | "nats"                                   |
+| external.nats.port                              | Port for the NATS service                                | 4222                                     |
+| external.nats.version                           | NATS version                                             |                                          |
+| external.nats.service.type                      | Type of the NATS service                                 | "NodePort"                               |
+| external.nats.service.externalTrafficPolicy     | External traffic policy for the NATS service             | "Local"                                  |
+| external.nats.service.name                      | Name of the NATS service                                 | "nats"                                   |
+| external.nats.service.port                      | TargetPort of the NATS service                           | 4222                                     |
+
+
+#### Kafka common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.kafka.appName                          | Kafka application name                                   | "kafka"                                  |
+| external.kafka.version                          | Kafka version                                            | 2.2.0                                    |
+| external.kafka.port                             | Port for the Kafka service                               | 9092                                     |
+| external.kafka.external.hostname                | Name which will be advertised to external clients. Clients which use (default) port 9094       | "localhost"
+| external.kafka.service.name                     | Name of the Kafka service                                | "kafka"                                  |
+| external.kafka.service.port                     | TargetPort of the Kafka service                          | 9092                                     |
+| external.kafka.service.portOutside              | Port for Kafka client outside of the cluster | 9094                              |
+| external.kafka.persistence.storageClassName     | Storage class name for Kafka PVs                         | "hostpath"                               |
+| external.kafka.persistence.storageSize          | Size of the Kafka PV                                     | "1Gi"                                    |
+| external.kafka.persistence.claimName            | Name of the Kafka PersistentVolumeClaim                  | "kafka-pvc"                              |
+| external.kafka.persistence.pvName               | Name of the Kafka PersistentVolume                       | "kafka-pv"                               |
+|
+
+#### Zookeeper common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.zookeeper.appName                      | ZooKeeper application name                               | "zookeeper"                              |
+| external.zookeeper.version                      | ZooKeeper version                                        | 3.4.13                                   |
+| external.zookeeper.port                         | Port for the ZooKeeper service                           | 2181                                     |
+| external.zookeeper.service.name                 | Name of the ZooKeeper service                            | "zookeeper"                              |
+| external.zookeeper.service.port                 | TargetPort of the ZooKeeper service                      | 2181                                     |
+| external.zookeeper.persistence.storageClassName | Storage class name for ZooKeeper PVs                     | "hostpath"                               |
+| external.zookeeper.persistence.storageSize      | Size of the ZooKeeper PV                                 | "1Gi"                                    |
+| external.zookeeper.persistence.claimName        | Name of the ZooKeeper PersistentVolumeClaim              | "zookeeper-pvc"                          |
+| external.zookeeper.persistence.pvName           | Name of the ZooKeeper PersistentVolume                   | "zookeeper-pv"                           |
+
+
+#### Pulsar common parameters
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| external.pulsar.appName                         | pulsar application name                                  | "pulsar"                                 |
+| external.pulsar.version                         | pulsar version                                           | 3.0.0                                    |
+| external.pulsar.port                            | Port for the pulsar service                              | 6650                                     |
+| external.pulsar.service.name                    | Name of the pulsar service                               | "pulsar"                                 |
+| external.pulsar.service.port                    | TargetPort of the pulsar service                         | 6650                                     |
+| external.pulsar.persistence.storageClassName    | Storage class name for pulsar PVs                        | "hostpath"                               |
+| external.pulsar.persistence.storageSize         | Size of the pulsar PV                                    | "1Gi"                                    |
+| external.pulsar.persistence.claimName           | Name of the pulsar PersistentVolumeClaim                 | "pulsar-pvc"                             |
+| external.pulsar.persistence.pvName              | Name of the pulsar PersistentVolume                      | "pulsar-pv"                              |
+
+### Monitoring common parameters
+
+#### Monitoring - Prometheus
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| prometheus.appName                              | Prometheus application name                              | "prometheus"                             |
+| prometheus.version                              | Prometheus version                                       | 2.45.0                                   |
+| prometheus.port                                 | Prometheus port                                          | 9090                                     |
+| prometheus.service.name                         | Prometheus service name                                  | "prometheus"                             |
+| prometheus.service.port                         | Prometheus service port                                  | 9090                                     |
+| prometheus.persistence.storageClassName         | Prometheus storage class name                            | "hostpath"                               |
+| prometheus.persistence.storageSize              | Prometheus storage size                                  | "2Gi"                                    |
+| prometheus.persistence.claimName                | Prometheus PVC claim name                                | "prometheus-pvc"                         |
+| prometheus.persistence.pvName                   | Prometheus PV name                                       | "prometheus-pv"                          |
+| prometheus.persistence.tokenStorageSize         | Prometheus token storage size                            | "16Ki"                                   |
+| prometheus.config.scrapeInterval                | Prometheus scrape interval                               | 10s                                      |
+| prometheus.config.evaluationInterval            | Prometheus evaluation interval                           | 15s                                      |
+| prometheus.config.backendJobName                | Prometheus backend job name                              | "backend"                                |
+| prometheus.config.extensionsName                | Prometheus extensions job name                           | "extensions-all-iiot"                    |
+| prometheus.config.tokenFileName                 | Prometheus token file name                               | "token"                                  |
+| prometheus.config.tokenFileDir                  | Prometheus token file directory                          | "/opt/data"
+
+#### Monitoring - Grafana
+
+| Parameter Name                                  | Description                                              | Value                                    |
+|-------------------------------------------------|----------------------------------------------------------|------------------------------------------|
+| grafana.appName                                 | Grafana application name                                 | "grafana"                                |
+| grafana.version                                 | Grafana version                                          | 10.1.2                                   |
+| grafana.port                                    | Grafana port                                             | 3000                                     |
+| grafana.service.name                            | Grafana service name                                     | "grafana"                                |
+| grafana.service.port                            | Grafana service port                                     | 3000                                     |
+| grafana.persistence.storageClassName            | Grafana storage class name                               | "hostpath"                               |
+| grafana.persistence.storageSize                 | Grafana storage size                                     | "1Gi"                                    |
+| grafana.persistence.claimName                   | Grafana PVC claim name                                   | "grafana-pvc"                            |
+| grafana.persistence.pvName                      | Grafana PV name                                          | "grafana-pv"                             |
+
+
+## Auto-generation of parameters.
+
+The helm chart includes a `secrets.yaml` file which auto-generates several settings as follows:
+
+```yaml
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: sp-secrets
+  namespace: {{ .Release.Namespace | quote }}
+type: Opaque
+data:
+  sp-initial-admin-password: {{ ternary (randAlphaNum 10) .Values.streampipes.auth.users.admin.password (empty .Values.streampipes.auth.users.admin.password) | b64enc | quote }}
+  sp-initial-client-secret: {{ ternary (randAlphaNum 35) .Values.streampipes.auth.users.service.secret (empty .Values.streampipes.auth.users.service.secret) | b64enc | quote }}
+  sp-encryption-passcode:  {{ ternary (randAlphaNum 20) .Values.streampipes.auth.encryption.passcode (empty .Values.streampipes.auth.encryption.passcode) | b64enc | quote }}
+  sp-couchdb-password:  {{ ternary (randAlphaNum 20) .Values.external.couchdb.password (empty .Values.external.couchdb.password) | b64enc | quote }}
+  sp-ts-storage-password:  {{ ternary (randAlphaNum 20) .Values.external.influxdb.password (empty .Values.external.influxdb.password) | b64enc | quote }}
+  sp-ts-storage-token:  {{ ternary (randAlphaNum 20) .Values.external.influxdb.adminToken (empty .Values.external.influxdb.adminToken) | b64enc | quote }}
+
+```
+
 
 ## Deleting the current helm chart deployment:
 ```bash
diff --git a/docs/06_extend-customize-ui.md b/docs/06_extend-customize-ui.md
new file mode 100644
index 0000000..c09823f
--- /dev/null
+++ b/docs/06_extend-customize-ui.md
@@ -0,0 +1,226 @@
+---
+id: extend-customize-ui
+title: UI customization
+sidebar_label: UI customization
+---
+
+
+## Custom theme
+
+It is possible to use a custom theme with individual styles, logos and images instead of the default StreamPipes theme.
+
+In this section, we describe the necessary steps to build and deploy a custom theme.
+
+
+### Prerequisite: Learn how to run and build the UI
+
+To use a custom theme, it is required to build the UI with the custom settings.
+In general, the UI can be found in the `ui` folder of the source code.
+
+Perform the following steps to build the UI;
+
+```bash
+
+# Install all necessary packages
+npm install 
+
+# Start the UI for development purposes
+npm run start
+
+# Build the StreamPipes UI
+npm run build 
+
+```
+
+## Customizable assets
+
+The following assets can be provided in a customized theme:
+
+* **Logo** This is the main logo image, which is shown e.g., on the login page.
+* **Navigation Logo** This is the logo which appears in the top navigation bar after successful login
+* **Favicon** The favicon is shown in the browser navbar. It is also used as the loading animation in StreamPipes.
+* **String constants** Customizable strings, e.g., when you want to use another application name than **Apache StreamPipes**.
+* **Theme variables** An scss file which defines custom colors and layouts.
+
+## Customize constants
+
+To customize constants, you can create a custom file `app.constants.ts` and modify the content based on the template below:
+
+```javascript
+
+import {Injectable} from '@angular/core';
+
+@Injectable()
+export class AppConstants {
+
+  public readonly APP_NAME = "Apache StreamPipes";
+  public readonly APP_TITLE = 'Apache StreamPipes';
+  public readonly EMAIL = "admin@streampipes.apache.org";
+}
+
+
+```
+
+## Customize theme
+
+To customize the theme, we provide a file named `variables.scss` which can be overridden with default color and style settings.
+
+See the example below:
+
+```scss
+
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+$sp-color-primary: rgb(57, 181, 74);
+$sp-color-primary-600: #06c12a;
+
+$sp-color-accent: #1b1464;
+
+$sp-color-accent-light-blue: rgb(59, 92, 149);
+$sp-color-accent-light: rgb(156, 156, 156);
+$sp-color-accent-light-transparent: rgba(156, 156, 156, 0.4);
+
+$sp-color-accent-dark: #83a3de;
+
+$sp-color-adapter: #7f007f;
+$sp-color-stream: #ffeb3b;
+$sp-color-processor: #009688;
+$sp-color-sink: #3f51b5;
+
+$sp-color-error: #b71c1c;
+
+body {
+    --color-data-view: rgb(122, 206, 227);
+    --color-dashboard: rgb(76, 115, 164);
+    --color-adapter: rgb(182, 140, 97);
+    --color-data-source: #ffeb3b;
+    --color-pipeline: rgb(102, 185, 114);
+    --color-measurement: rgb(39, 164, 155);
+    --color-file: rgb(163, 98, 190);
+
+    --button-border-radius: 5px;
+    --iconbar-width: 35px;
+    --navbar-icon-border-radius: 0;
+    --navbar-icon-padding: 0;
+}
+
+:root {
+    --color-loading-bar: #{$sp-color-accent};
+}
+
+.dark-mode {
+    --color-primary: #{$sp-color-primary};
+    --color-accent: #{$sp-color-accent-dark};
+    --color-bg-outer: var(--color-bg-1);
+    --color-bg-page-container: var(--color-bg-0);
+    --color-bg-main-panel-header: var(--color-bg-0);
+    --color-bg-main-panel-content: var(--color-bg-0);
+    --color-bg-navbar-icon: inherit;
+    --color-bg-navbar-icon-selected: inherit;
+    --color-bg-0: #121212;
+    --color-bg-1: #282828;
+    --color-bg-2: #404040;
+    --color-bg-3: #424242;
+    --color-bg-4: #5f5f5f;
+    --color-bg-dialog: rgb(66, 66, 66);
+    --color-shadow: #c4c4c4;
+    --color-pe: #404040;
+    --color-default-text: rgba(255, 255, 255, 0.87);
+    --color-warn: #b36161;
+
+    --color-tab-border: #cccccc;
+
+    --color-navigation-bg: var(--color-primary);
+    --color-navigation-link-text: var(--color-bg-0);
+    --color-navigation-text: #121212;
+    --color-navigation-selected: #{$sp-color-primary};
+    --color-navigation-hover: #{$sp-color-primary-600};
+    --color-navigation-bg-selected: var(--color-bg-1);
+    --color-navigation-divider: #{$sp-color-primary};
+
+    --content-box-color: #404040;
+    --canvas-color: linear-gradient(
+            90deg,
+            rgba(50, 50, 50, 0.5) 10%,
+            transparent 0%
+        ),
+        linear-gradient(rgba(50, 50, 50, 0.5) 10%, transparent 0%);
+}
+
+.light-mode {
+    --color-primary: #{$sp-color-primary};
+    --color-accent: #{$sp-color-accent};
+    --color-bg-outer: var(--color-bg-1);
+    --color-bg-page-container: var(--color-bg-0);
+    --color-bg-main-panel-header: var(--color-bg-0);
+    --color-bg-main-panel-content: var(--color-bg-0);
+    --color-bg-navbar-icon: inherit;
+    --color-bg-navbar-icon-selected: inherit;
+    --color-bg-0: #ffffff;
+    --color-bg-1: #fafafa;
+    --color-bg-2: #f1f1f1;
+    --color-bg-3: rgb(224, 224, 224);
+    --color-bg-4: rgb(212, 212, 212);
+    --color-bg-dialog: #ffffff;
+    --color-shadow: #555;
+    --color-pe: #ffffff;
+    --color-default-text: #121212;
+    --color-warn: #b71c1c;
+
+    --color-tab-border: #cccccc;
+
+    --color-navigation-bg: var(--color-primary);
+    --color-navigation-link-text: var(--color-bg-0);
+    --color-navigation-text: #ffffff;
+    --color-navigation-selected: #{$sp-color-primary};
+    --color-navigation-hover: #{$sp-color-primary-600};
+    --color-navigation-bg-selected: var(--color-bg-1);
+    --color-navigation-divider: var(--color-primary);
+
+    --content-box-color: rgb(156, 156, 156);
+    --canvas-color: linear-gradient(
+            90deg,
+            rgba(208, 208, 208, 0.5) 10%,
+            transparent 0%
+        ),
+        linear-gradient(rgba(208, 208, 208, 0.5) 10%, transparent 0%);
+}
+
+```
+## Run a customized build
+
+To create a new UI build with customized themes, use the following command:
+
+````bash
+
+UI_LOC=PATH_TO_FOLDER_WITH_CUSTOM_TEMPLATES \\
+THEME_LOC=$UI_LOC/_variables.scss \\
+LOGO_HEADER_LOC=$UI_LOC/img/logo.png \\
+FAVICON_LOC=$UI_LOC/img/favicon.png \\
+LOGO_NAV_LOC=$UI_LOC/img/logo-navigation.png \\
+CONSTANTS_FILE=$UI_LOC/app.constants.ts \\
+npm run build
+
+````
+
+First, we create a helper environment variable that links to a folder which includes custom logos, the theme file and constants.
+Next, we set the variables above to override default logos and stylings.
+Finally, the usual build process is executed.
+
+Once finished, you've successfully customized an Apache StreamPipes instance!
diff --git a/docs/07_technicals-messaging.md b/docs/07_technicals-messaging.md
index 9ce44b9..d5308a6 100644
--- a/docs/07_technicals-messaging.md
+++ b/docs/07_technicals-messaging.md
@@ -40,3 +40,26 @@
 StreamPipes ensures that only pipeline elements which have a commonly supported protocol can be connected.
 
 Note that you might need to change the installation files. For the `Docker-Compose` based installation, we provide various compose file for different messaging setups. For the `Kubernetes` installation, we provide variables which can be set in the helm chart's `values.yaml` file.
+
+### Configure broker addresses
+
+By default, StreamPipes assumes that the messaging system is started from its own environment, e.g., the system configured in the selected `Docker-Compose` file.
+
+Besides that, it is also possible to let StreamPipes connect to an externally provided messaging system. For this purpose, various environment variables exist.
+
+* `SP_PRIORITIZED_PROTOCOL` to set the prioritized protocol to either `kafka`, `mqtt`, `nats` or `pulsar`
+
+* `SP_KAFKA_HOST`, `SP_KAFKA_PORT` to configure Kafka access
+* `SP_MQTT_HOST`, `SP_MQTT_PORT` to configure MQTT access
+* `SP_NATS_HOST`, `SP_NATS_PORT` to configure NATS access
+* `SP_PULSAR_URL` to configure Pulsar access
+
+
+Most settings can also be set in the UI under `Settings->Messaging`.
+
+:::warning Installation-time configurations
+Although it is currently possible to change messaging settings in the user interface, we do not support dynamic modification of messaging systems.
+Choosing a proper system is considered an installation-time setting which should not be changed afterwards.
+Already existing Adapters and pipeline elements are not properly updated after changes of the messaging layer.
+:::
+
diff --git a/docs/07_technicals-runtime-wrappers.md b/docs/07_technicals-runtime-wrappers.md
index 8b757ca..9cebadf 100644
--- a/docs/07_technicals-runtime-wrappers.md
+++ b/docs/07_technicals-runtime-wrappers.md
@@ -4,4 +4,34 @@
 sidebar_label: Runtime Wrappers
 ---
 
-tbd
\ No newline at end of file
+## Overview
+
+In general, StreamPipes has an exchangeable runtime layer, e.g., the actual processing of incoming events can be delegated to a third-party stream processing system such as Kafka Streams or Apache Flink.
+
+The default runtime wrapper is the StreamPipes Native Wrapper, called the `StandaloneWrapper`.
+
+Although not recommended for production, we invite interested developers to check out our experimental wrappers:
+
+* Kafka Streams runtime wrapper at [https://github.com/apache/streampipes/tree/dev/streampipes-wrapper-kafka-streams](https://github.com/apache/streampipes/tree/dev/streampipes-wrapper-kafka-streams) 
+* Apache Flink runtime wrapper at [https://github.com/apache/streampipes/tree/dev/streampipes-wrapper-flink](https://github.com/apache/streampipes/tree/dev/streampipes-wrapper-flink)
+
+## Assigning a runtime wrapper to an extension service
+
+Runtime wrappers can be assigned in the `Service Definition` of the `Init` class of an extension service:
+
+```java
+
+  @Override
+  public SpServiceDefinition provideServiceDefinition(){
+    return SpServiceDefinitionBuilder.create("org.apache.streampipes.extensions.all.jvm",
+    "StreamPipes Extensions (JVM)",
+    "",8090)
+    ...
+    .registerRuntimeProvider(new StandaloneStreamPipesRuntimeProvider())
+    ...
+    .build();
+  }
+
+```
+
+Please let us know through our communication channels if you are interested in this feature and if you are willing to contribute!
diff --git a/website-v2/sidebars.json b/website-v2/sidebars.json
index a5d0c24..ce4d65d 100644
--- a/website-v2/sidebars.json
+++ b/website-v2/sidebars.json
@@ -176,10 +176,12 @@
       }
     ],
     "⚡ Deploy StreamPipes": [
+      "choosing-the-right-flavor",
       "deploy-docker",
       "deploy-kubernetes",
       "deploy-use-ssl",
-      "deploy-security"
+      "deploy-security",
+      "deploy-environment-variables"
     ],
     "💻 Customize StreamPipes": [
       "extend-setup",
@@ -196,11 +198,11 @@
       "extend-sdk-stream-requirements",
       "extend-sdk-static-properties",
       "extend-sdk-output-strategies",
-      "extend-sdk-migration-service-discovery"
+      "extend-sdk-migration-service-discovery",
+      "extend-customize-ui"
     ],
     "🔧 Technicals": [
       "technicals-architecture",
-      "technicals-user-guidance",
       "technicals-runtime-wrappers",
       "technicals-messaging"
     ],
@@ -214,4 +216,4 @@
       "faq-common-problems"
     ]
   }
-}
\ No newline at end of file
+}
diff --git a/website-v2/versioned_sidebars/version-0.92.0-sidebars.json b/website-v2/versioned_sidebars/version-0.92.0-sidebars.json
index cc356dd..657aa11 100644
--- a/website-v2/versioned_sidebars/version-0.92.0-sidebars.json
+++ b/website-v2/versioned_sidebars/version-0.92.0-sidebars.json
@@ -197,7 +197,6 @@
     ],
     "\uD83D\uDD27 Technicals": [
       "technicals-architecture",
-      "technicals-user-guidance",
       "technicals-runtime-wrappers",
       "technicals-messaging"
     ],
