summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:15:40 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:15:40 +0000
commitb7fd908d538ed19fe41f03c0a3f93351d8da64e9 (patch)
tree46e14f318948cd4f5d7e874f83e7dfcc5d42fc64 /doc
parentInitial commit. (diff)
downloadicingaweb2-module-businessprocess-upstream.tar.xz
icingaweb2-module-businessprocess-upstream.zip
Adding upstream version 2.5.0.upstream/2.5.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc')
-rw-r--r--doc/01-About.md19
-rw-r--r--doc/02-Installation.md24
-rw-r--r--doc/02-Installation.md.d/From-Source.md15
-rw-r--r--doc/03-Getting-Started.md77
-rw-r--r--doc/04-Create-your-first-process-node.md67
-rw-r--r--doc/05-Importing-Processes.md53
-rw-r--r--doc/06-Customize-Node-Order.md71
-rw-r--r--doc/07-State-Overrides.md45
-rw-r--r--doc/09-Operators.md43
-rw-r--r--doc/10-Monitoring.md49
-rw-r--r--doc/12-Web-Components-Breadcrumb.md69
-rw-r--r--doc/13-Web-Components-Tile-Renderer.md22
-rw-r--r--doc/14-Web-Components-Tree-Renderer.md13
-rw-r--r--doc/16-Add-To-Dashboard.md20
-rw-r--r--doc/21-Store-Config.md23
-rw-r--r--doc/22-Upload-Config.md26
-rw-r--r--doc/31-Permissions.md25
-rw-r--r--doc/81-History.md43
-rw-r--r--doc/screenshot/00_preview/0001_preview-tree-view.pngbin0 -> 59495 bytes
-rw-r--r--doc/screenshot/00_preview/0002_preview_tile_view.pngbin0 -> 22985 bytes
-rw-r--r--doc/screenshot/00_preview/0003_preview_businessprocesses_on_dashboard.png0
-rw-r--r--doc/screenshot/00_preview/0004_preview_tile_and_subtree.pngbin0 -> 27261 bytes
-rw-r--r--doc/screenshot/00_preview/0005_readme-preview.pngbin0 -> 150226 bytes
-rw-r--r--doc/screenshot/02_installation/101_menu-configuration-modules.pngbin0 -> 7272 bytes
-rw-r--r--doc/screenshot/02_installation/102_enable-module.pngbin0 -> 80770 bytes
-rw-r--r--doc/screenshot/03_getting-started/0201_empty-dashboard.pngbin0 -> 38430 bytes
-rw-r--r--doc/screenshot/03_getting-started/0202_create-new-configuration.pngbin0 -> 34234 bytes
-rw-r--r--doc/screenshot/03_getting-started/0203_create-new_name.pngbin0 -> 4367 bytes
-rw-r--r--doc/screenshot/03_getting-started/0204_create-new_title.pngbin0 -> 6917 bytes
-rw-r--r--doc/screenshot/03_getting-started/0205_create-new_description.pngbin0 -> 13943 bytes
-rw-r--r--doc/screenshot/03_getting-started/0206_create-new_backend.pngbin0 -> 9024 bytes
-rw-r--r--doc/screenshot/03_getting-started/0207_create-new_state-type.pngbin0 -> 7100 bytes
-rw-r--r--doc/screenshot/03_getting-started/0208_create-new_add-to-menu.pngbin0 -> 5854 bytes
-rw-r--r--doc/screenshot/03_getting-started/0209_new-empty-configuration.pngbin0 -> 19156 bytes
-rw-r--r--doc/screenshot/03_getting-started/0210_new-on-dashboard.pngbin0 -> 37480 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0301_empty-config.pngbin0 -> 19156 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0302_add-new-node.pngbin0 -> 27807 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0303_node-title.pngbin0 -> 5428 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0304_operator.pngbin0 -> 11318 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0305_display.pngbin0 -> 7537 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0306_info-url.pngbin0 -> 4088 bytes
-rw-r--r--doc/screenshot/04_first-root-node/0307_first-node-created.pngbin0 -> 28115 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0401_subprocesses_only.pngbin0 -> 68346 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0402_choose_existing_process.pngbin0 -> 32248 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0403_choose_configuration.pngbin0 -> 8035 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0404_choose_process.pngbin0 -> 8112 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0405_import_successful.pngbin0 -> 32816 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0406_breadcrumb_integration.pngbin0 -> 12574 bytes
-rw-r--r--doc/screenshot/05_importing_nodes/0407_jump_to_original.pngbin0 -> 30339 bytes
-rw-r--r--doc/screenshot/06_customize_node_order/0501_tiles_grab_tile.pngbin0 -> 52954 bytes
-rw-r--r--doc/screenshot/06_customize_node_order/0502_tiles_drop_at_location.pngbin0 -> 52986 bytes
-rw-r--r--doc/screenshot/06_customize_node_order/0503_tree_grab_header.pngbin0 -> 53453 bytes
-rw-r--r--doc/screenshot/06_customize_node_order/0504_tree_drop_at_location.pngbin0 -> 61292 bytes
-rw-r--r--doc/screenshot/07_state_overrides/0701_override_config.pngbin0 -> 76256 bytes
-rw-r--r--doc/screenshot/07_state_overrides/0702_overridden_tile.pngbin0 -> 36046 bytes
-rw-r--r--doc/screenshot/07_state_overrides/0703_overridden_tree.pngbin0 -> 40178 bytes
-rw-r--r--doc/screenshot/09_operators/0901_and-operator.pngbin0 -> 31172 bytes
-rw-r--r--doc/screenshot/09_operators/0902_or-operator.pngbin0 -> 30888 bytes
-rw-r--r--doc/screenshot/09_operators/0903_or-operator-without-ok.pngbin0 -> 31421 bytes
-rw-r--r--doc/screenshot/09_operators/0904_min-operator.pngbin0 -> 30888 bytes
-rw-r--r--doc/screenshot/09_operators/0905_deg-operator.jpgbin0 -> 68934 bytes
-rw-r--r--doc/screenshot/09_operators/0906_xor-operator.pngbin0 -> 30888 bytes
-rw-r--r--doc/screenshot/09_operators/0907_xor-operator-not-ok.pngbin0 -> 30767 bytes
-rw-r--r--doc/screenshot/12_web-components_breadcrumb/1201_simple-breadcrumb.pngbin0 -> 17797 bytes
-rw-r--r--doc/screenshot/12_web-components_breadcrumb/1202_return-from-fullscreen.pngbin0 -> 7114 bytes
-rw-r--r--doc/screenshot/12_web-components_breadcrumb/1203_add-to-dashboard.pngbin0 -> 16510 bytes
-rw-r--r--doc/screenshot/12_web-components_breadcrumb/1204_unlocked_config.pngbin0 -> 21001 bytes
-rw-r--r--doc/screenshot/13_web-components-tile-renderer/1301_tile-view.pngbin0 -> 57393 bytes
-rw-r--r--doc/screenshot/13_web-components-tile-renderer/1302_tile-and-subtree.pngbin0 -> 88235 bytes
-rw-r--r--doc/screenshot/14_web-components-tree-renderer/1401_tree-view.pngbin0 -> 70406 bytes
-rw-r--r--doc/screenshot/16_dashboard/1601_add-to-dashboard-link.pngbin0 -> 16510 bytes
-rw-r--r--doc/screenshot/16_dashboard/1602_add_to_dashboard-form.pngbin0 -> 24578 bytes
-rw-r--r--doc/screenshot/16_dashboard/1603_businessprocesses_on_dashboard.pngbin0 -> 151132 bytes
-rw-r--r--doc/screenshot/21_store-config/2101_Pending-Changes.pngbin0 -> 11792 bytes
-rw-r--r--doc/screenshot/21_store-config/2102_Store-Config.pngbin0 -> 52360 bytes
-rw-r--r--doc/screenshot/21_store-config/2103_Show-Diff.pngbin0 -> 36463 bytes
-rw-r--r--doc/screenshot/22_upload-config/2201_go-to-upload.pngbin0 -> 32819 bytes
-rw-r--r--doc/screenshot/22_upload-config/2202_choose-file.pngbin0 -> 16146 bytes
-rw-r--r--doc/screenshot/22_upload-config/2203_syntax-error.pngbin0 -> 25406 bytes
-rw-r--r--doc/screenshot/22_upload-config/2204_duplicate-name.pngbin0 -> 40201 bytes
-rw-r--r--doc/screenshot/81_history/8101_bpaddon-overview.pngbin0 -> 77964 bytes
-rw-r--r--doc/screenshot/81_history/8102_bpaddon-detail.pngbin0 -> 46198 bytes
82 files changed, 704 insertions, 0 deletions
diff --git a/doc/01-About.md b/doc/01-About.md
new file mode 100644
index 0000000..44672b4
--- /dev/null
+++ b/doc/01-About.md
@@ -0,0 +1,19 @@
+# Icinga Business Process Modeling
+
+If you want to visualize and monitor hierarchical business processes based on
+objects monitored by Icinga, Icinga Business Process Modeling is the solution.
+
+[![Dashboard](screenshot/16_dashboard/1603_businessprocesses_on_dashboard.png)](16-Add-To-Dashboard.md)
+
+Want to create custom process-based dashboards? Trigger notifications at
+process or sub-process level? Provide a quick top-level view for thousands of
+components on a single screen? That's what this module has been designed for!
+
+You're running a huge cloud, want to get rid of the monitoring noise triggered
+by your auto-scaling platform but still want to have detailed information just
+a couple of clicks away in case you need them? You will love this little module!
+
+## Documentation
+
+* [Installation](02-Installation.md)
+* [Getting Started](03-Getting-Started.md)
diff --git a/doc/02-Installation.md b/doc/02-Installation.md
new file mode 100644
index 0000000..6d479b1
--- /dev/null
+++ b/doc/02-Installation.md
@@ -0,0 +1,24 @@
+<!-- {% if index %} -->
+# Installing Icinga Business Process Modeling
+
+The recommended way to install Icinga Business Process Modeling is to use prebuilt packages for
+all supported platforms from our official release repository.
+Please note that [Icinga Web](https://icinga.com/docs/icinga-web) is required to run Icinga
+Business Process Modeling and if it is not already set up, it is best to do this first.
+
+The following steps will guide you through installing and setting up Icinga Business Process Modeling.
+<!-- {% else %} -->
+<!-- {% if not icingaDocs %} -->
+
+## Installing the Package
+
+If the [repository](https://packages.icinga.com) is not configured yet, please add it first.
+Then use your distribution's package manager to install the `icinga-businessprocess` package
+or install [from source](02-Installation.md.d/From-Source.md).
+<!-- {% endif %} --><!-- {# end if not icingaDocs #} -->
+
+## Configuring Icinga Business Process Modeling
+
+That's it, Icinga Business Process Modeling is now ready to use.
+Please read more on [how to get started](03-Getting-Started.md).
+<!-- {% endif %} --><!-- {# end else if index #} -->
diff --git a/doc/02-Installation.md.d/From-Source.md b/doc/02-Installation.md.d/From-Source.md
new file mode 100644
index 0000000..9e4f6ec
--- /dev/null
+++ b/doc/02-Installation.md.d/From-Source.md
@@ -0,0 +1,15 @@
+# Installing Icinga Business Process Modeling from Source
+
+Please see the Icinga Web documentation on
+[how to install modules](https://icinga.com/docs/icinga-web/latest/doc/08-Modules/#installation) from source.
+Make sure you use `businessprocess` as the module name. The following requirements must also be met.
+
+## Requirements
+
+* PHP (≥7.2)
+* [Icinga Web](https://github.com/Icinga/icingaweb2) (≥2.9)
+* [Icinga DB Web](https://github.com/Icinga/icingadb-web) (≥1.0)
+* [Icinga PHP Library (ipl)](https://github.com/Icinga/icinga-php-library) (≥0.13.0)
+* [Icinga PHP Thirdparty](https://github.com/Icinga/icinga-php-thirdparty) (≥0.12.0)
+
+<!-- {% include "02-Installation.md" %} -->
diff --git a/doc/03-Getting-Started.md b/doc/03-Getting-Started.md
new file mode 100644
index 0000000..baacde0
--- /dev/null
+++ b/doc/03-Getting-Started.md
@@ -0,0 +1,77 @@
+# Getting Started
+
+Once you enable Icinga Business Process Modeling, it will pop up in your menu.
+If you click on it, it will show you a new Dashboard:
+
+![Empty Dashboard](screenshot/03_getting-started/0201_empty-dashboard.png)
+
+## A new Business Process configuration
+
+From here we choose to create a new *Business Process configuration*:
+
+![New Business Process](screenshot/03_getting-started/0202_create-new-configuration.png)
+
+Let's have a look at the single fields:
+
+### Configuration name
+
+![Configuration name](screenshot/03_getting-started/0203_create-new_name.png)
+
+The Business Process definition will be stored with this name. This is going to
+be used when referencing this process in URLs and in Check Commands.
+
+### Title
+
+![Configuration name](screenshot/03_getting-started/0204_create-new_title.png)
+
+You might optionally want to provide an additional title. In that case the title
+is shown in the GUI, while the name is still used as a reference. The title will
+default to the name.
+
+### Description
+
+![Description](screenshot/03_getting-started/0205_create-new_description.png)
+
+Provide a short description explaining within 100-150 character what this
+configuration provides. This will be shown on the Dashboard.
+
+### Backend
+
+![Backend](screenshot/03_getting-started/0206_create-new_backend.png)
+
+**Hint:** *Usually this should not be changed*
+
+Icinga Web 2 currently uses only one Monitoring Backend, but in theory you
+could configure multiple ones. They won't be usable in a meaningful way at the
+time of this writing. Still, you might want to use a different backend as a data
+provider for your Business Process.
+
+### State Type
+
+![State Type](screenshot/03_getting-started/0207_create-new_state-type.png)
+
+You can decide whether `SOFT` or `HARD` states should be the used as a base when
+calculating the state of a Business Process definition.
+
+### Add to menu
+
+Business Process configurations can be linked to the Icinga Web 2 menu. Only the
+first five configurations a user is allowed to see will be shown there:
+
+![Add to menu](screenshot/03_getting-started/0208_create-new_add-to-menu.png)
+
+That's all for now, click `Add` to store your new (still empty) Business Process
+configuration.
+
+## Empty configuration
+
+You are redirected to your newly created Business Process configuration:
+
+![Empty configuration](screenshot/03_getting-started/0209_new-empty-configuration.png)
+
+From here we can now add as many deeply nested Business Processes as we want.
+But let's first have a look at our Dashboard once again:
+
+![New on Dashboard](screenshot/03_getting-started/0210_new-on-dashboard.png)
+
+Now let's move on and [create your first Nodes](04-Create-your-first-process-node.md).
diff --git a/doc/04-Create-your-first-process-node.md b/doc/04-Create-your-first-process-node.md
new file mode 100644
index 0000000..ad3273d
--- /dev/null
+++ b/doc/04-Create-your-first-process-node.md
@@ -0,0 +1,67 @@
+# Create your first Business Process Node
+
+A *Business Process Node* consists of a *name*, *title*, an *operator* and one or
+more child nodes. It can be a Root Node, child node of other Business Process
+Nodes - or both.
+
+![Empty Config](screenshot/04_first-root-node/0301_empty-config.png)
+
+## Configuring our first node
+
+To create our first *Business Process Node* we click the *Add* button. This
+leads to the related configuration form:
+
+![Add new Node](screenshot/04_first-root-node/0302_add-new-node.png)
+
+First setting is the *Node name*, an identifier that must be unique throughout
+all Nodes that are going to be defined. This identifier will be used in every
+link and also in *Check Commands* referring this node from an Icinga *Service
+Check*.
+
+### Set a title
+
+As uniqueness sometimes leads to not-so-beautiful names, you are additionally
+allowed to specify a title. This is what the frontend is going to show:
+
+![Node Title](screenshot/04_first-root-node/0303_node-title.png)
+
+### Choose an operator
+
+Every Business Process requires an *Operator*. This operator defines it's
+behaviour, this specifies how it's very own state is going to be calculated:
+
+![Operator](screenshot/04_first-root-node/0304_operator.png)
+
+### Specify where to display
+
+The form suggests to create a *Toplevel Process*. It does so as we are about
+to create a new *root node*. We could alternatively also create a sub process.
+As we are currently not adding it to another Node, this would lead to an *Unbound
+Node* that could be linked later on.
+
+![Node Display](screenshot/04_first-root-node/0305_display.png)
+
+### Provide an optional Info URL
+
+One might also want to provide a link to additional information related to a
+specific process. This could be instructions with more technical details or
+hints telling what should happen if outage occurs. You might not want to do so
+for every single Node, but it might come in handy for your most important (top
+level?) nodes:
+
+![Node Info Url](screenshot/04_first-root-node/0306_info-url.png)
+
+That's it, your are ready to submit the form.
+
+### First Business Process Node ready
+
+You are now shown your first Business Process Node. A red bar reminds you that
+your pending changes have not been stored yet:
+
+![First Node created](screenshot/04_first-root-node/0307_first-node-created.png)
+
+You could now *Store the Configuration* or move on with adding additional nodes
+to complete your configuration.
+
+**Hint**: the blue arrow makes part of a breadcrumb showing your current position.
+ You might want to learn more about [breadcrumbs](12-Web-Components-Breadcrumb.md).
diff --git a/doc/05-Importing-Processes.md b/doc/05-Importing-Processes.md
new file mode 100644
index 0000000..3095bbf
--- /dev/null
+++ b/doc/05-Importing-Processes.md
@@ -0,0 +1,53 @@
+# Importing Processes
+
+To avoid redundancy and make complex *Business Process Configurations* easier
+to maintain it is possible to import processes from other configurations.
+
+In order to be able to import a process create a root node first. You cannot
+import processes into the root level.
+
+![Subprocesses Only](screenshot/05_importing_nodes/0401_subprocesses_only.png)
+
+## Importing a Process
+
+Once the related configuration form is open, choose `Existing Process` and wait
+for the form to refresh.
+
+![Existing Process](screenshot/05_importing_nodes/0402_choose_existing_process.png)
+
+### Choose Configuration
+
+You can now choose the configuration to import processes from. Or simply hit
+`Next` to just utilize a process from the current configuration.
+
+![Choose Configuration](screenshot/05_importing_nodes/0403_choose_configuration.png)
+
+### Select Processes
+
+Now select the processes you want to import and submit the form.
+
+![Select Processes](screenshot/05_importing_nodes/0404_choose_process.png)
+
+### Import Successful
+
+You are now looking at the result. The process has been imported. Do not forget
+to save your changes!
+
+![Import Successful](screenshot/05_importing_nodes/0405_import_successful.png)
+
+## Navigation with Imported Processes
+
+### Seamless Breadcrumbs
+
+You may have already noticed that the breadcrumbs integrate the hierarchy
+of the imported process. Once you navigate further the actions below the
+breadcrumbs change and don't permit to unlock editing.
+
+![Seamless Breadcrumbs](screenshot/05_importing_nodes/0406_breadcrumb_integration.png)
+
+To change imported processes you need to open them in their original
+configuration first. To do so click on the arrow to the right which is
+displayed in a tile's action urls in the upper left. While in tree view
+these can be found at the very right of an process' row.
+
+![Jump To Original](screenshot/05_importing_nodes/0407_jump_to_original.png)
diff --git a/doc/06-Customize-Node-Order.md b/doc/06-Customize-Node-Order.md
new file mode 100644
index 0000000..880eaa6
--- /dev/null
+++ b/doc/06-Customize-Node-Order.md
@@ -0,0 +1,71 @@
+# Customize Node Order
+
+By default all nodes are ordered alphabetically while viewing them in the UI.
+Though, it is also possible to order nodes entirely manually.
+
+> **Note**
+>
+> Once manual order is applied (no matter where) alphabetical order is
+> disabled for the entire configuration.
+
+## Reorder by Drag'n'Drop
+
+Make sure to unlock the configuration first to be able to reorder nodes.
+
+### Tile View
+
+To move a tile simply grab it with your mouse and drag it to the location you
+want it to appear at.
+
+![Grab Tile](screenshot/06_customize_node_order/0501_tiles_grab_tile.png)
+![Drop Tile](screenshot/06_customize_node_order/0502_tiles_drop_at_location.png)
+
+### Tree View
+
+While in tree view nodes can be moved the same way. You just have a narrower
+area to grab them.
+
+![Grab Row](screenshot/06_customize_node_order/0503_tree_grab_header.png)
+![Drop Row](screenshot/06_customize_node_order/0504_tree_drop_at_location.png)
+
+The tree view also has an advantage the tile view has not. It is possible to
+move nodes within the entire hierarchy. But remember to unfold processes first,
+if you want to move a node into them.
+
+## File Format Extensions
+
+The configuration file format has slightly been changed to accommodate the new
+manual order. Though, previous configurations are perfectly upwards compatible.
+
+### New Header
+
+A new header is used to flag a configuration file as being manually ordered.
+
+```
+# ManualOrder : yes
+```
+
+Once this is set alphabetical order is disabled and only the next techniques
+define the order of nodes.
+
+### Changed `display` Semantic
+
+Previously there were only two valid values for the `display` directive.
+(0 = Subprocess, 1 = Toplevel Process)
+
+```
+display 0|1;<name>;<title>
+```
+
+This has now been extended so that values greater than zero refer to the order
+of root nodes. (ascending)
+
+```
+display 0|n;<name>;<title>
+```
+
+### Significant Children Order
+
+Previously the order of a node's children in a configuration file was not
+important in any way. Now this is significant and refers to the order in
+which children appear in the UI and how process states are determined.
diff --git a/doc/07-State-Overrides.md b/doc/07-State-Overrides.md
new file mode 100644
index 0000000..dfdbaeb
--- /dev/null
+++ b/doc/07-State-Overrides.md
@@ -0,0 +1,45 @@
+# State Overrides
+
+Business processes utilize their children's states to calculate their own state.
+While you can influence this with [operators](09-Operators.md), it's also possible
+to override individual states. (This applies to host and service nodes.)
+
+## Configuring Overrides
+
+State overrides get configured per node. When adding or editing a node, you can
+define which state should be overridden with another one.
+
+Below `WARNING` is chosen as a replacement for `CRITICAL`.
+
+![Service State Override Configuration](screenshot/07_state_overrides/0701_override_config.png "Service State Override Configuration")
+
+## Identifying Overrides
+
+In tile view overridden states are indicated by an additional state ball in the
+lower left of a tile. This is then the actual state the object is in.
+
+![Overridden Tile State](screenshot/07_state_overrides/0702_overridden_tile.png "Overridden Tile State")
+
+In tree view overridden states are indicated on the very right of a row. There
+the actual state is shown and which one it is replaced with.
+
+![Overridden Tree State](screenshot/07_state_overrides/0703_overridden_tree.png "Overridden Tree State")
+
+## File Format Extensions
+
+The configuration file format has slightly been changed to accommodate state
+overrides. Though, previous configurations are perfectly upwards compatible.
+
+### New Extra Line
+
+For process nodes a new extra line is used to store state overrides.
+
+```
+state_overrides dev_database_servers!mysql;mysql|2-1
+```
+
+The full syntax for this is as follows:
+
+```
+state_overrides <process>!<child>|n-n[!<child>|n-n[,n-n]]
+```
diff --git a/doc/09-Operators.md b/doc/09-Operators.md
new file mode 100644
index 0000000..8d54ba3
--- /dev/null
+++ b/doc/09-Operators.md
@@ -0,0 +1,43 @@
+# Operators
+
+Every Business Process requires an Operator. This operator defines its behaviour and specifies how its very own state is
+going to be calculated.
+
+## AND
+
+The `AND` operator selects the **WORST** state of its child nodes:
+
+![And Operator](screenshot/09_operators/0901_and-operator.png)
+
+## OR
+
+The `OR` operator selects the **BEST** state of its child nodes:
+
+![Or Operator](screenshot/09_operators/0902_or-operator.png)
+
+![Or Operator #2](screenshot/09_operators/0903_or-operator-without-ok.png)
+
+## XOR
+
+The `XOR` operator shows OK if only one of n children is OK at the same time. In all other cases the parent node is CRITICAL.
+Useful for a service on n servers, only one of which may be running. If both were running,
+race conditions and duplication of data could occur.
+
+![Xor Operator](screenshot/09_operators/0906_xor-operator.png)
+
+![Xor Operator #2](screenshot/09_operators/0907_xor-operator-not-ok.png)
+
+## DEGRADED
+
+The `DEGRADED` operator behaves like an `AND`, but if the resulting
+state is **CRITICAL** it transforms it into a **WARNING**.
+Refer to the table below for the case-by-case
+analysis of the statuses.
+
+![Degraded Operator](screenshot/09_operators/0905_deg-operator.jpg)
+
+## MIN n
+
+The `MIN` operator selects the **WORST** state out of the **BEST n** child node states:
+
+![MIN](screenshot/09_operators/0904_min-operator.png)
diff --git a/doc/10-Monitoring.md b/doc/10-Monitoring.md
new file mode 100644
index 0000000..2d7c70c
--- /dev/null
+++ b/doc/10-Monitoring.md
@@ -0,0 +1,49 @@
+# Monitoring
+
+## Process Check Command
+
+The module provides a CLI command to check a business process.
+
+### Usage
+
+General: `icingacli businessprocess process check <process> [options]`
+
+Options:
+
+```
+ --config <configname> Name of the config that contains <process>
+ --details Show problem details as a tree
+ --colors Show colored output
+ --state-type <type> Define which state type to look at. Could be either soft
+ or hard, overrides an eventually configured default
+ --blame Show problem details as a tree reduced to the nodes
+ which have the same state as the business process
+ --root-cause Used in combination with --blame. Only shows
+ the path of the nodes which are responsible
+ for the state of the business process
+ --downtime-is-ok Treat hosts/services in downtime always as UP/OK.
+ --ack-is-ok Treat acknowledged hosts/services always as UP/OK.
+```
+
+### Detail View Integration
+
+It is possible to show the monitored process in the service detail view.
+
+For this to work, the name of the checkcommand configured in Icinga 2 must either
+be `icingacli-businessprocess` or the name that can be configured in the module
+configuration:
+
+**/etc/icingaweb2/modules/businessprocess/config.ini**
+```ini
+[DetailviewExtension]
+checkcommand_name=businessprocess-check
+```
+
+A service can define specific custom variables for this. Mandatory ones
+that are not defined, cause the detail view integration to not be active.
+
+| Variable Name | Mandatory | Description |
+|--------------------------------------|-----------|----------------------------------------------|
+| icingacli\_businessprocess\_process | Yes | The `<process>` being checked |
+| icingacli\_businessprocess\_config | No | Name of the config that contains `<process>` |
+| icingaweb\_businessprocess\_as\_tree | No | Whether to show `<process>` as tree or tiles |
diff --git a/doc/12-Web-Components-Breadcrumb.md b/doc/12-Web-Components-Breadcrumb.md
new file mode 100644
index 0000000..27391f0
--- /dev/null
+++ b/doc/12-Web-Components-Breadcrumb.md
@@ -0,0 +1,69 @@
+# Web Components: Breadcrumb
+
+All Business Process renderers show a **breadcrumb** component to always give
+you a quick indication of your current location.
+
+![Símple Breadcrumb](screenshot/12_web-components_breadcrumb/1201_simple-breadcrumb.png)
+
+The left-most section shows the title of the current *Business Process Configuration*.
+The remaining sections show the path to the current *Business Process Node* currently
+being shown.
+
+Hovering the Breadcrumb with your mouse shows you that all of it sections are
+highlighted, as they are links pointing to either the root level when clicking
+on the *Configuration Node* itself or to the corresponding *Business Process Node*.
+
+All but the last section, showing your current position in the tree. Even if
+not being highlighted, it is still a link an can be clicked in case you need
+so.
+
+In case you're showing some related details in a split-screen view of *Icinga
+Web 2*, a click on any *Breadcrumb* section will switch back to a wide single
+column view to make it obvious that you moved to another context. It is also
+perfectly legal to open any of the available links in a new browser tab or
+window.
+
+## Available actions below the Breadcrumb
+
+### Choose a renderer
+
+The first link allows to toggle the used Renderer. Currently a *Tree* and a
+*Tile* renderer are available.
+
+### Move to Full Screen Mode
+
+Every view can be shown in *Full Screen Mode*. Full screen means that left and
+upper menu together with some other details are hidden. Your Business Process
+will be able to use all of the available space. Want even more? Then please
+additionally switch your browser to full screen mode. This is usually done by
+pressing the `F11` key.
+
+Once being in full screen mode you'll find an icon on the right side that will
+allow you to switch back to normal view:
+
+![Return from fullscreen](screenshot/12_web-components_breadcrumb/1202_return-from-fullscreen.png)
+
+**Hint:** We know that the web application might request real full screen mode
+on their own. We refused doing so as many people find this being an annoying
+feature.
+
+### Unlock the Configuration
+
+When clicking `Unlock`, additional actions are shown. One of them is immediately
+shown next to the `Unlock` link and reads `Config`. It allows you to reach Configuration
+settings for the your currently loaded *Business Process Configuration*:
+
+![Unlocked config](screenshot/12_web-components_breadcrumb/1204_unlocked_config.png)
+
+But there is more. When unlocked, all nodes provide links allowing you to modify or
+to delete them. Host/Service Nodes now allow you to simulate a specific state.
+
+## Other main actions
+
+### Add content to your Dashboard
+
+When being in *locked* mode, you are allowed to add the currently shown process
+at the given path with the active renderer in the main (or a custom) [Icinga Web 2
+Dashboard](16-Add-To-Dashboard.md):
+
+![Add to Dashboard](screenshot/12_web-components_breadcrumb/1203_add-to-dashboard.png)
diff --git a/doc/13-Web-Components-Tile-Renderer.md b/doc/13-Web-Components-Tile-Renderer.md
new file mode 100644
index 0000000..4d5df8c
--- /dev/null
+++ b/doc/13-Web-Components-Tile-Renderer.md
@@ -0,0 +1,22 @@
+# Web Components: Tile Renderer
+
+The default Business Process *Renderer* is the *Tile Renderer*. It always shows
+one level of your tree, enriched with badges giving some hint on lower level
+node problems. This is what it looks like:
+
+![Tile Renderer](screenshot/13_web-components-tile-renderer/1301_tile-view.png)
+
+Please click on *Tree* below the [breadcrumb](12-Web-Components-Breadcrumb.md)
+to switch to the [Tree View](14-Web-Components-Tree-Renderer.md). In the left
+corner of every *Tile* you can find two icons, both of them will show the related
+sub-process. On your mobile phone this usually replaces your current view, please
+use the [breadcrumb](12-Web-Components-Breadcrumb.md) to navigate back to a higher
+level.
+
+On a Notebook or Desktop Computer this usually leady to a split-screen view:
+
+![Split View - Tiles and Tree](screenshot/13_web-components-tile-renderer/1302_tile-and-subtree.png)
+
+This example shows a subtree shown with the [Tree Renderer](14-Web-Components-Tree-Renderer.md),
+it is of course also perfectly legal to drill down using the *Tile Renderer*
+only.
diff --git a/doc/14-Web-Components-Tree-Renderer.md b/doc/14-Web-Components-Tree-Renderer.md
new file mode 100644
index 0000000..b761360
--- /dev/null
+++ b/doc/14-Web-Components-Tree-Renderer.md
@@ -0,0 +1,13 @@
+# Web Components: Tree Renderer
+
+The main advantage of the *Tree Renderer* is that it is able to show all nodes
+of Business Process trees at once. This works fine even for huge trees with lots
+of nodes. Please have a look at this screenshot to get an idea of how the tree
+view looks like:
+
+![Tree View](screenshot/14_web-components-tree-renderer/1401_tree-view.png)
+
+Clicking Business Process Nodes collapses or unfolds them, clicking single hosts
+or services show the related monitored object. You can of course always switch
+back to the [Tile Renderer](13-Web-Components-Tile-Renderer.md) with a single
+click at any time.
diff --git a/doc/16-Add-To-Dashboard.md b/doc/16-Add-To-Dashboard.md
new file mode 100644
index 0000000..4b9f8a8
--- /dev/null
+++ b/doc/16-Add-To-Dashboard.md
@@ -0,0 +1,20 @@
+# Show Processes on a Dashboard
+
+When being in *Locked mode*, you can add any Business Process at top or sub level
+to any Icinga Web 2 Dashboard. The related link can be found in the Tab bar:
+
+![Add to Dashboard - Link](screenshot/16_dashboard/1601_add-to-dashboard-link.png)
+
+This leads to the standard Icinga Web 2 *Add Dashlet to Dashboard* form. Feel
+free to add your Business Process View to any existing Dashboard. You might also
+want to create a dedicated Dashboard as shown in this example:
+
+![Add to Dashboard - Form](screenshot/16_dashboard/1602_add_to_dashboard-form.png)
+
+
+## Want more?
+
+Head on and add multiple Business Processes to your Dashboard to show all of
+them at once:
+
+![Sample Dashboard](screenshot/16_dashboard/1603_businessprocesses_on_dashboard.png)
diff --git a/doc/21-Store-Config.md b/doc/21-Store-Config.md
new file mode 100644
index 0000000..a8380e7
--- /dev/null
+++ b/doc/21-Store-Config.md
@@ -0,0 +1,23 @@
+# Store your Configuration
+
+Changes to your *Business Process Configuration* are added to a stack and will
+not be stored immediately. In case there are pending unstored changes, this will
+be shown on every screen:
+
+![Pending Changes](screenshot/21_store-config/2101_Pending-Changes.png)
+
+A click on *Dismiss* immediately throws away all unstored changes. A click on
+*Store* brings you to the configuration form. You have seen this before, once
+you created your [very first configuration](03-Getting-Started.md):
+
+![Store Config](screenshot/21_store-config/2102_Store-Config.png)
+
+## Config Diff
+
+If unsure what changes you're going to store, you can still check the *Config Diff*
+before finally storing to disk:
+
+![Show Diff](screenshot/21_store-config/2103_Show-Diff.png)
+
+You can also download your existing configuration to safe it elsewhere or to
+apply manual modifications with our favourite plaintext editor.
diff --git a/doc/22-Upload-Config.md b/doc/22-Upload-Config.md
new file mode 100644
index 0000000..2afdb01
--- /dev/null
+++ b/doc/22-Upload-Config.md
@@ -0,0 +1,26 @@
+# Upload a Configuration File
+
+You can upload a formerly downloaded or even a manually created file directly
+through the web frontend. Given sufficient permissions, the Dashboard provides
+a related link:
+
+![From Dashboard to Upload](screenshot/22_upload-config/2201_go-to-upload.png)
+
+## Chose a file
+
+This can be any file:
+
+![Choose a File](screenshot/22_upload-config/2202_choose-file.png)
+
+It should be valid of course, but don't worry - Icinga Business Process Modeling
+protects you from syntax errors:
+
+![Syntax Error](screenshot/22_upload-config/2203_syntax-error.png)
+
+Just for fun you could try to upload an image or whatever you want - it will not
+break. It will also protect you from accidentally overwriting existing files:
+
+![Duplicate Name](screenshot/22_upload-config/2204_duplicate-name.png)
+
+So in case you need to replace an existing process, please delete it before
+uploading a new one.
diff --git a/doc/31-Permissions.md b/doc/31-Permissions.md
new file mode 100644
index 0000000..b6b8b98
--- /dev/null
+++ b/doc/31-Permissions.md
@@ -0,0 +1,25 @@
+# Permission System
+
+The permission system of the module is based on permissions and restrictions.
+
+## Permissions
+
+The module has five levels of permissions:
+
+* Granting general module access allows a user to view business processes. (`module/businessprocess`)
+* Create permissions allow to create new business processes. (`businessprocess/create`)
+* Modify permissions allow to modify already existing ones. (`businessprocess/modify`)
+* Permission to view all business processes regardless restrictions. (`businessprocess/showall`)
+* Full permissions. (`businessprocess/*`)
+
+## Restrictions
+
+There are two ways to configure restrictions: prefix-based and access controls
+
+### Prefix-based
+
+This option allows to limit access of a role to only business processes with a specific prefix. For this the ID (Configuration name) of a business process has to start with a prefix and it has to be set as restriction on the role. (`businessprocess/prefix`)
+
+### Access controls
+
+This option allows for more fine granular permissions based on user (`AllowedUsers`), group (`AllowedGroups`) and role (`AllowedRoles`). These attributes take a comma-separated list, get added to the header of the business process configuration file and limit access to the owner and the mentioned ones.
diff --git a/doc/81-History.md b/doc/81-History.md
new file mode 100644
index 0000000..82a4024
--- /dev/null
+++ b/doc/81-History.md
@@ -0,0 +1,43 @@
+# Project History
+
+Icinga Business Process Modeling is based on the ideas of the Nagios(tm) [Business
+Process AddOn](http://bp-addon.monitoringexchange.org/) written by Bernd
+Strößenreuther. We always loved its simplicity, and while it looks pretty
+oldschool right now there are still many shops happily using it in production.
+
+![BpAddOn Overview](screenshot/81_history/8101_bpaddon-overview.png)
+
+## Compatibility
+
+We fully support the BPaddon configuration language and will continue to do so.
+It's also perfectly valid to run both products in parallel based on the very same
+config files. New features are (mostly) added in a compatible way.
+
+Configuration titles and descriptions, properties related to state types or
+permissions are examples for new features that didn't formerly exist. They are
+stored as commented metadata in the file header and therefore invisible to the
+old AddOn.
+
+The only way to break compatibility is to use newly introduced operators like
+`NOT`. Once you do so, the old AddOn will no longer be able to parse your
+configuration.
+
+![BpAddOn Details](screenshot/81_history/8102_bpaddon-detail.png)
+
+Lot's of changes went on and are still going on under the hood. We have more
+features and new language constructs. We separated the config reader from the
+state fetcher in our code base. This will allow us to eventually support config
+backends like SQL databases or the Icinga 2 DSL.
+
+This would make it easier to distribute configuration in large environments.
+
+## Improvements
+
+Major focus has been put on execution speed. So while the Web integration shows
+much more details at once and is able to display huge unfolded trees, it should
+still render and refresh faster. Same goes for the Check Plugin.
+
+Behaviour for all operators is now strictly specified and Unit-tested. You still
+can manually edit your configuration files. But much better, you also delegate
+this to your co-workers, as Business Process definitions can now be built directly
+in the GUI.
diff --git a/doc/screenshot/00_preview/0001_preview-tree-view.png b/doc/screenshot/00_preview/0001_preview-tree-view.png
new file mode 100644
index 0000000..2015a31
--- /dev/null
+++ b/doc/screenshot/00_preview/0001_preview-tree-view.png
Binary files differ
diff --git a/doc/screenshot/00_preview/0002_preview_tile_view.png b/doc/screenshot/00_preview/0002_preview_tile_view.png
new file mode 100644
index 0000000..08770ae
--- /dev/null
+++ b/doc/screenshot/00_preview/0002_preview_tile_view.png
Binary files differ
diff --git a/doc/screenshot/00_preview/0003_preview_businessprocesses_on_dashboard.png b/doc/screenshot/00_preview/0003_preview_businessprocesses_on_dashboard.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/screenshot/00_preview/0003_preview_businessprocesses_on_dashboard.png
diff --git a/doc/screenshot/00_preview/0004_preview_tile_and_subtree.png b/doc/screenshot/00_preview/0004_preview_tile_and_subtree.png
new file mode 100644
index 0000000..e8db7ae
--- /dev/null
+++ b/doc/screenshot/00_preview/0004_preview_tile_and_subtree.png
Binary files differ
diff --git a/doc/screenshot/00_preview/0005_readme-preview.png b/doc/screenshot/00_preview/0005_readme-preview.png
new file mode 100644
index 0000000..4515c86
--- /dev/null
+++ b/doc/screenshot/00_preview/0005_readme-preview.png
Binary files differ
diff --git a/doc/screenshot/02_installation/101_menu-configuration-modules.png b/doc/screenshot/02_installation/101_menu-configuration-modules.png
new file mode 100644
index 0000000..0c2d9df
--- /dev/null
+++ b/doc/screenshot/02_installation/101_menu-configuration-modules.png
Binary files differ
diff --git a/doc/screenshot/02_installation/102_enable-module.png b/doc/screenshot/02_installation/102_enable-module.png
new file mode 100644
index 0000000..140d38d
--- /dev/null
+++ b/doc/screenshot/02_installation/102_enable-module.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0201_empty-dashboard.png b/doc/screenshot/03_getting-started/0201_empty-dashboard.png
new file mode 100644
index 0000000..b8fddcb
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0201_empty-dashboard.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0202_create-new-configuration.png b/doc/screenshot/03_getting-started/0202_create-new-configuration.png
new file mode 100644
index 0000000..48e91fa
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0202_create-new-configuration.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0203_create-new_name.png b/doc/screenshot/03_getting-started/0203_create-new_name.png
new file mode 100644
index 0000000..02845eb
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0203_create-new_name.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0204_create-new_title.png b/doc/screenshot/03_getting-started/0204_create-new_title.png
new file mode 100644
index 0000000..99e26bb
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0204_create-new_title.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0205_create-new_description.png b/doc/screenshot/03_getting-started/0205_create-new_description.png
new file mode 100644
index 0000000..454ec82
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0205_create-new_description.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0206_create-new_backend.png b/doc/screenshot/03_getting-started/0206_create-new_backend.png
new file mode 100644
index 0000000..31fcc83
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0206_create-new_backend.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0207_create-new_state-type.png b/doc/screenshot/03_getting-started/0207_create-new_state-type.png
new file mode 100644
index 0000000..f875057
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0207_create-new_state-type.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0208_create-new_add-to-menu.png b/doc/screenshot/03_getting-started/0208_create-new_add-to-menu.png
new file mode 100644
index 0000000..c868015
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0208_create-new_add-to-menu.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0209_new-empty-configuration.png b/doc/screenshot/03_getting-started/0209_new-empty-configuration.png
new file mode 100644
index 0000000..b1fbe86
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0209_new-empty-configuration.png
Binary files differ
diff --git a/doc/screenshot/03_getting-started/0210_new-on-dashboard.png b/doc/screenshot/03_getting-started/0210_new-on-dashboard.png
new file mode 100644
index 0000000..6717d3d
--- /dev/null
+++ b/doc/screenshot/03_getting-started/0210_new-on-dashboard.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0301_empty-config.png b/doc/screenshot/04_first-root-node/0301_empty-config.png
new file mode 100644
index 0000000..b1fbe86
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0301_empty-config.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0302_add-new-node.png b/doc/screenshot/04_first-root-node/0302_add-new-node.png
new file mode 100644
index 0000000..f3eeb87
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0302_add-new-node.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0303_node-title.png b/doc/screenshot/04_first-root-node/0303_node-title.png
new file mode 100644
index 0000000..b6f9d12
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0303_node-title.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0304_operator.png b/doc/screenshot/04_first-root-node/0304_operator.png
new file mode 100644
index 0000000..1ffa1c2
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0304_operator.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0305_display.png b/doc/screenshot/04_first-root-node/0305_display.png
new file mode 100644
index 0000000..39e30b3
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0305_display.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0306_info-url.png b/doc/screenshot/04_first-root-node/0306_info-url.png
new file mode 100644
index 0000000..770102d
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0306_info-url.png
Binary files differ
diff --git a/doc/screenshot/04_first-root-node/0307_first-node-created.png b/doc/screenshot/04_first-root-node/0307_first-node-created.png
new file mode 100644
index 0000000..3fd5be6
--- /dev/null
+++ b/doc/screenshot/04_first-root-node/0307_first-node-created.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0401_subprocesses_only.png b/doc/screenshot/05_importing_nodes/0401_subprocesses_only.png
new file mode 100644
index 0000000..d4f58ba
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0401_subprocesses_only.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0402_choose_existing_process.png b/doc/screenshot/05_importing_nodes/0402_choose_existing_process.png
new file mode 100644
index 0000000..4fc5f63
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0402_choose_existing_process.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0403_choose_configuration.png b/doc/screenshot/05_importing_nodes/0403_choose_configuration.png
new file mode 100644
index 0000000..19b4c05
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0403_choose_configuration.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0404_choose_process.png b/doc/screenshot/05_importing_nodes/0404_choose_process.png
new file mode 100644
index 0000000..010992c
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0404_choose_process.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0405_import_successful.png b/doc/screenshot/05_importing_nodes/0405_import_successful.png
new file mode 100644
index 0000000..9f4f346
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0405_import_successful.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0406_breadcrumb_integration.png b/doc/screenshot/05_importing_nodes/0406_breadcrumb_integration.png
new file mode 100644
index 0000000..0929546
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0406_breadcrumb_integration.png
Binary files differ
diff --git a/doc/screenshot/05_importing_nodes/0407_jump_to_original.png b/doc/screenshot/05_importing_nodes/0407_jump_to_original.png
new file mode 100644
index 0000000..8fc0e2d
--- /dev/null
+++ b/doc/screenshot/05_importing_nodes/0407_jump_to_original.png
Binary files differ
diff --git a/doc/screenshot/06_customize_node_order/0501_tiles_grab_tile.png b/doc/screenshot/06_customize_node_order/0501_tiles_grab_tile.png
new file mode 100644
index 0000000..5697786
--- /dev/null
+++ b/doc/screenshot/06_customize_node_order/0501_tiles_grab_tile.png
Binary files differ
diff --git a/doc/screenshot/06_customize_node_order/0502_tiles_drop_at_location.png b/doc/screenshot/06_customize_node_order/0502_tiles_drop_at_location.png
new file mode 100644
index 0000000..cd7b673
--- /dev/null
+++ b/doc/screenshot/06_customize_node_order/0502_tiles_drop_at_location.png
Binary files differ
diff --git a/doc/screenshot/06_customize_node_order/0503_tree_grab_header.png b/doc/screenshot/06_customize_node_order/0503_tree_grab_header.png
new file mode 100644
index 0000000..7687713
--- /dev/null
+++ b/doc/screenshot/06_customize_node_order/0503_tree_grab_header.png
Binary files differ
diff --git a/doc/screenshot/06_customize_node_order/0504_tree_drop_at_location.png b/doc/screenshot/06_customize_node_order/0504_tree_drop_at_location.png
new file mode 100644
index 0000000..828aebe
--- /dev/null
+++ b/doc/screenshot/06_customize_node_order/0504_tree_drop_at_location.png
Binary files differ
diff --git a/doc/screenshot/07_state_overrides/0701_override_config.png b/doc/screenshot/07_state_overrides/0701_override_config.png
new file mode 100644
index 0000000..49ca2ad
--- /dev/null
+++ b/doc/screenshot/07_state_overrides/0701_override_config.png
Binary files differ
diff --git a/doc/screenshot/07_state_overrides/0702_overridden_tile.png b/doc/screenshot/07_state_overrides/0702_overridden_tile.png
new file mode 100644
index 0000000..db2012e
--- /dev/null
+++ b/doc/screenshot/07_state_overrides/0702_overridden_tile.png
Binary files differ
diff --git a/doc/screenshot/07_state_overrides/0703_overridden_tree.png b/doc/screenshot/07_state_overrides/0703_overridden_tree.png
new file mode 100644
index 0000000..ccf4fde
--- /dev/null
+++ b/doc/screenshot/07_state_overrides/0703_overridden_tree.png
Binary files differ
diff --git a/doc/screenshot/09_operators/0901_and-operator.png b/doc/screenshot/09_operators/0901_and-operator.png
new file mode 100644
index 0000000..c6e7775
--- /dev/null
+++ b/doc/screenshot/09_operators/0901_and-operator.png
Binary files differ
diff --git a/doc/screenshot/09_operators/0902_or-operator.png b/doc/screenshot/09_operators/0902_or-operator.png
new file mode 100644
index 0000000..fd05ec3
--- /dev/null
+++ b/doc/screenshot/09_operators/0902_or-operator.png
Binary files differ
diff --git a/doc/screenshot/09_operators/0903_or-operator-without-ok.png b/doc/screenshot/09_operators/0903_or-operator-without-ok.png
new file mode 100644
index 0000000..e9fcd4e
--- /dev/null
+++ b/doc/screenshot/09_operators/0903_or-operator-without-ok.png
Binary files differ
diff --git a/doc/screenshot/09_operators/0904_min-operator.png b/doc/screenshot/09_operators/0904_min-operator.png
new file mode 100644
index 0000000..fd05ec3
--- /dev/null
+++ b/doc/screenshot/09_operators/0904_min-operator.png
Binary files differ
diff --git a/doc/screenshot/09_operators/0905_deg-operator.jpg b/doc/screenshot/09_operators/0905_deg-operator.jpg
new file mode 100644
index 0000000..9dc05a3
--- /dev/null
+++ b/doc/screenshot/09_operators/0905_deg-operator.jpg
Binary files differ
diff --git a/doc/screenshot/09_operators/0906_xor-operator.png b/doc/screenshot/09_operators/0906_xor-operator.png
new file mode 100644
index 0000000..fd05ec3
--- /dev/null
+++ b/doc/screenshot/09_operators/0906_xor-operator.png
Binary files differ
diff --git a/doc/screenshot/09_operators/0907_xor-operator-not-ok.png b/doc/screenshot/09_operators/0907_xor-operator-not-ok.png
new file mode 100644
index 0000000..8ec41b3
--- /dev/null
+++ b/doc/screenshot/09_operators/0907_xor-operator-not-ok.png
Binary files differ
diff --git a/doc/screenshot/12_web-components_breadcrumb/1201_simple-breadcrumb.png b/doc/screenshot/12_web-components_breadcrumb/1201_simple-breadcrumb.png
new file mode 100644
index 0000000..a4f9a4d
--- /dev/null
+++ b/doc/screenshot/12_web-components_breadcrumb/1201_simple-breadcrumb.png
Binary files differ
diff --git a/doc/screenshot/12_web-components_breadcrumb/1202_return-from-fullscreen.png b/doc/screenshot/12_web-components_breadcrumb/1202_return-from-fullscreen.png
new file mode 100644
index 0000000..fe3406b
--- /dev/null
+++ b/doc/screenshot/12_web-components_breadcrumb/1202_return-from-fullscreen.png
Binary files differ
diff --git a/doc/screenshot/12_web-components_breadcrumb/1203_add-to-dashboard.png b/doc/screenshot/12_web-components_breadcrumb/1203_add-to-dashboard.png
new file mode 100644
index 0000000..b1daec5
--- /dev/null
+++ b/doc/screenshot/12_web-components_breadcrumb/1203_add-to-dashboard.png
Binary files differ
diff --git a/doc/screenshot/12_web-components_breadcrumb/1204_unlocked_config.png b/doc/screenshot/12_web-components_breadcrumb/1204_unlocked_config.png
new file mode 100644
index 0000000..0ba84a9
--- /dev/null
+++ b/doc/screenshot/12_web-components_breadcrumb/1204_unlocked_config.png
Binary files differ
diff --git a/doc/screenshot/13_web-components-tile-renderer/1301_tile-view.png b/doc/screenshot/13_web-components-tile-renderer/1301_tile-view.png
new file mode 100644
index 0000000..80a142f
--- /dev/null
+++ b/doc/screenshot/13_web-components-tile-renderer/1301_tile-view.png
Binary files differ
diff --git a/doc/screenshot/13_web-components-tile-renderer/1302_tile-and-subtree.png b/doc/screenshot/13_web-components-tile-renderer/1302_tile-and-subtree.png
new file mode 100644
index 0000000..a03209d
--- /dev/null
+++ b/doc/screenshot/13_web-components-tile-renderer/1302_tile-and-subtree.png
Binary files differ
diff --git a/doc/screenshot/14_web-components-tree-renderer/1401_tree-view.png b/doc/screenshot/14_web-components-tree-renderer/1401_tree-view.png
new file mode 100644
index 0000000..7bacb00
--- /dev/null
+++ b/doc/screenshot/14_web-components-tree-renderer/1401_tree-view.png
Binary files differ
diff --git a/doc/screenshot/16_dashboard/1601_add-to-dashboard-link.png b/doc/screenshot/16_dashboard/1601_add-to-dashboard-link.png
new file mode 100644
index 0000000..b1daec5
--- /dev/null
+++ b/doc/screenshot/16_dashboard/1601_add-to-dashboard-link.png
Binary files differ
diff --git a/doc/screenshot/16_dashboard/1602_add_to_dashboard-form.png b/doc/screenshot/16_dashboard/1602_add_to_dashboard-form.png
new file mode 100644
index 0000000..ab2d255
--- /dev/null
+++ b/doc/screenshot/16_dashboard/1602_add_to_dashboard-form.png
Binary files differ
diff --git a/doc/screenshot/16_dashboard/1603_businessprocesses_on_dashboard.png b/doc/screenshot/16_dashboard/1603_businessprocesses_on_dashboard.png
new file mode 100644
index 0000000..116bf04
--- /dev/null
+++ b/doc/screenshot/16_dashboard/1603_businessprocesses_on_dashboard.png
Binary files differ
diff --git a/doc/screenshot/21_store-config/2101_Pending-Changes.png b/doc/screenshot/21_store-config/2101_Pending-Changes.png
new file mode 100644
index 0000000..7e33981
--- /dev/null
+++ b/doc/screenshot/21_store-config/2101_Pending-Changes.png
Binary files differ
diff --git a/doc/screenshot/21_store-config/2102_Store-Config.png b/doc/screenshot/21_store-config/2102_Store-Config.png
new file mode 100644
index 0000000..d985786
--- /dev/null
+++ b/doc/screenshot/21_store-config/2102_Store-Config.png
Binary files differ
diff --git a/doc/screenshot/21_store-config/2103_Show-Diff.png b/doc/screenshot/21_store-config/2103_Show-Diff.png
new file mode 100644
index 0000000..7025f6c
--- /dev/null
+++ b/doc/screenshot/21_store-config/2103_Show-Diff.png
Binary files differ
diff --git a/doc/screenshot/22_upload-config/2201_go-to-upload.png b/doc/screenshot/22_upload-config/2201_go-to-upload.png
new file mode 100644
index 0000000..1dda67c
--- /dev/null
+++ b/doc/screenshot/22_upload-config/2201_go-to-upload.png
Binary files differ
diff --git a/doc/screenshot/22_upload-config/2202_choose-file.png b/doc/screenshot/22_upload-config/2202_choose-file.png
new file mode 100644
index 0000000..a8717dd
--- /dev/null
+++ b/doc/screenshot/22_upload-config/2202_choose-file.png
Binary files differ
diff --git a/doc/screenshot/22_upload-config/2203_syntax-error.png b/doc/screenshot/22_upload-config/2203_syntax-error.png
new file mode 100644
index 0000000..ca81da0
--- /dev/null
+++ b/doc/screenshot/22_upload-config/2203_syntax-error.png
Binary files differ
diff --git a/doc/screenshot/22_upload-config/2204_duplicate-name.png b/doc/screenshot/22_upload-config/2204_duplicate-name.png
new file mode 100644
index 0000000..5f9c809
--- /dev/null
+++ b/doc/screenshot/22_upload-config/2204_duplicate-name.png
Binary files differ
diff --git a/doc/screenshot/81_history/8101_bpaddon-overview.png b/doc/screenshot/81_history/8101_bpaddon-overview.png
new file mode 100644
index 0000000..6ae8cb0
--- /dev/null
+++ b/doc/screenshot/81_history/8101_bpaddon-overview.png
Binary files differ
diff --git a/doc/screenshot/81_history/8102_bpaddon-detail.png b/doc/screenshot/81_history/8102_bpaddon-detail.png
new file mode 100644
index 0000000..7b38a1e
--- /dev/null
+++ b/doc/screenshot/81_history/8102_bpaddon-detail.png
Binary files differ