You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by mc...@apache.org on 2020/11/12 19:43:42 UTC

[incubator-hop-docs] branch master updated (be4ddce -> abdf017)

This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git.


    from be4ddce  switch to asf-site branch and website node
     new 9d34077  Basic metadata plugins documentation
     new 395586c  Metadata plugins: discovery logic explained
     new abdf017  Merge pull request #4 from mattcasters/master

The 18 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../modules/ROOT/pages/metadata-plugins.adoc       | 45 ++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc


[incubator-hop-docs] 14/18: switch CI key

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit bd9fe3294d27de3a17235a7037ce08786d4345d6
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 16:14:32 2020 +0100

    switch CI key
---
 Jenkinsfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index bdff542..b36939e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -18,7 +18,7 @@
  */
 
 def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def githubToken = "5f95d117-af3b-452a-9e5c-4bddb22a67f4"
+def githubToken = "399061d0-5ab5-4142-a186-a52081fef742"
 
 pipeline {
 


[incubator-hop-docs] 16/18: Basic metadata plugins documentation

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 9d34077eeb8fd39c0e50300d375c1501eab96bfd
Author: Matt Casters <ma...@gmail.com>
AuthorDate: Thu Nov 12 20:40:14 2020 +0100

    Basic metadata plugins documentation
---
 .../modules/ROOT/pages/metadata-plugins.adoc       | 43 ++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc b/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc
new file mode 100644
index 0000000..b79ab34
--- /dev/null
+++ b/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc
@@ -0,0 +1,43 @@
+[[MetadataPlugins-MetadataPlugins]]
+= Metadata plugins
+
+Writing metadata plugins is easy in Hop.  Any Plain Old Java Object can be used as a starting point.
+
+== @HopMetadata Annotation
+
+This annotation signals to the Metadata plugin type that there is something worth looking at.  The class which carries this annotation will contain the metadata.
+
+Here are the attributes of the @HopMetadata annotation:
+
+* key : this uniquely identifies the plugin and will be the name of the folder in which the metadata resides when serialising to JSON (see below)
+* name : a human readable name
+* description : an extended description
+* iconImage : the path to an image which helps identify the metadata in the Hop GUI
+
+Example: https://github.com/apache/incubator-hop/blob/f8f2ad2d0bc0cfd143ae90cc32e73b6c9e1cda78/engine/src/main/java/org/apache/hop/partition/PartitionSchema.java#L47[PartitionSchema.java]
+
+
+== The dialog to edit the metadata
+
+You also want to have a dialog to edit the metadata.  This can be any old SWT dialog as long as it implements the IMetadataDialog interface it will be picked up.
+
+Example: https://github.com/apache/incubator-hop/blob/2e16685ad80a3bc213d796366316d18f7bfd74d2/ui/src/main/java/org/apache/hop/ui/partition/PartitionSchemaDialog.java#L71[PartitionSchemaDialog.java]
+
+The path to the Dialog class will be found automatically by looking at the name of the metadata class and then simply by appending Dialog to it.
+If you prefer to keep metadata and GUI code separate the Hop GUI will also look in package ```org.apache.hop.ui``` instead of ```org.apache.hop```
+
+Working examples:
+
+* ```org.apache.hop.path.to.MyMetadata```  -> ```org.apache.hop.path.to.MyMetadataDialog```
+* ```org.apache.hop.my.plugin.MyMetadata```  -> ```org.apache.hop.ui.my.plugin.MyMetadataDialog```
+
+== Metadata serialisation
+
+As mentioned above, the key or ID the @HopMetadata plugin is used as a top level folder to store objects in.
+For the serialisation to JSON most simple data types are supported. However we suggest you use the KISS principle.
+If you want to serialize interfaces (for example like IDatabase used by DatabaseMeta) you might want to flag the interface with the @HopMetadataObject annotation.
+This annotation allows you to specify an object factory for those classes.  Such an object factory implements interface ```IHopMetadataObjectFactory``` with the 2 following methods:
+
+* ```public Object createObject( String id, Object parentObject ) throws HopException``` -> Creates an object using an ID.  The parent object is often another metadata object.  You can use it to check if it implements IVariables so you can inherit variables from there.
+* ```public String getObjectId( Object object ) throws HopException``` -> Retrieves the object ID from the given object. We recommend that you check the instance of the object until the factory interface supports generics. (TODO)
+


[incubator-hop-docs] 15/18: switch to asf-site branch and website node

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit be4ddcecf81de5aa25d30db5462847fd7f838232
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 16:39:19 2020 +0100

    switch to asf-site branch and website node
---
 Jenkinsfile | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index b36939e..01c84ab 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -17,8 +17,7 @@
  * under the License.
  */
 
-def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def githubToken = "399061d0-5ab5-4142-a186-a52081fef742"
+def AGENT_LABEL = env.AGENT_LABEL ?: 'git-websites'
 
 pipeline {
 
@@ -42,8 +41,8 @@ pipeline {
          }
         stage('checkout Hop Code') {
             when {
-                branch 'master'
-                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
+                branch 'asf-site'
+                //not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
                 dir('hop') {
@@ -54,8 +53,8 @@ pipeline {
         }
         stage('Copy project docs') {
             when {
-                branch 'master'
-                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
+                branch 'asf-site'
+                //not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
                     sh 'mkdir ./tmp'
@@ -64,11 +63,10 @@ pipeline {
         }
         stage('Process Docs') {
             when {
-                branch 'master'
-                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
+                branch 'asf-site'
+                //not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
-                withCredentials([usernamePassword(credentialsId: githubToken, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
                 echo 'Adding new Files from Hop'
                 sh '''
                     cd ./tmp;
@@ -87,17 +85,15 @@ pipeline {
                 '''
                 echo 'Generate new Navigation'
                 sh './generate_navigation.sh'
-                sh 'git config --local credential.helper "!f() { echo username=\\$GIT_USERNAME; echo password=\\$GIT_PASSWORD; }; f";'
                 sh 'git add .'
                 sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
-                sh 'git push --force origin HEAD:master'
+                sh 'git push --force origin asf-site'
                 }
-            }
         }
         stage('Website update') {
             when {
-                branch 'master'
-                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
+                branch 'asf-site'
+                //not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
                 build job: 'Hop/Hop-website/master', wait: false


[incubator-hop-docs] 02/18: Initial version

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 64a039fba99350688217eb0679dc06e4b5f70f66
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 14:04:17 2020 +0100

    Initial version
---
 .gitignore                                         |   8 +
 Jenkinsfile                                        |  89 ++++
 LICENSE                                            | 201 +++++++++
 README.md                                          |  80 +++-
 generate_navigation.sh                             |  94 +++++
 hop-dev-manual/antora.yml                          |   5 +
 .../modules/.asciidoctor/pages/index.adoc          |  16 +
 hop-dev-manual/modules/.asciidoctor/pom.xml        | 131 ++++++
 hop-dev-manual/modules/ROOT/assets/.placeholder    |   0
 hop-dev-manual/modules/ROOT/nav.adoc               |   1 +
 .../modules/ROOT/pages/getting-started.adoc        |  57 +++
 hop-dev-manual/modules/ROOT/pages/index.adoc       |   5 +
 .../modules/ROOT/pages/porting-kettle-plugins.adoc |  92 ++++
 hop-dev-manual/pom.xml                             |  31 ++
 hop-doc-resources/pom.xml                          |  39 ++
 .../src/main/resources/themes/hop-theme.yml        |   7 +
 hop-tech-manual/README.md                          |   7 +
 hop-tech-manual/antora.yml                         |   5 +
 .../modules/.asciidoctor/pages/index.adoc          |  17 +
 hop-tech-manual/modules/.asciidoctor/pom.xml       | 131 ++++++
 hop-tech-manual/modules/ROOT/assets/.placeholder   |   0
 hop-tech-manual/modules/ROOT/nav.adoc              |   1 +
 .../modules/ROOT/pages/getting-started.adoc        |   2 +
 hop-tech-manual/modules/ROOT/pages/hop-uit.adoc    |  78 ++++
 hop-tech-manual/modules/ROOT/pages/index.adoc      |   4 +
 hop-tech-manual/pom.xml                            |  31 ++
 hop-user-manual/README.md                          |   7 +
 hop-user-manual/antora.yml                         |   5 +
 .../modules/.asciidoctor/assembly-jar.xml          |  22 +
 .../assets/images/generic_connection.png           | Bin 0 -> 32997 bytes
 .../getting-started-add-transform.png              | Bin 0 -> 91782 bytes
 .../getting-started-add-two-transforms.png         | Bin 0 -> 15304 bytes
 .../getting-started-click-anywhere.png             | Bin 0 -> 14722 bytes
 .../getting-started/getting-started-create-hop.png | Bin 0 -> 14478 bytes
 .../getting-started-debug-dialog.png               | Bin 0 -> 64600 bytes
 .../getting-started-debug-pipeline.png             | Bin 0 -> 65943 bytes
 .../getting-started-debug-results.png              | Bin 0 -> 56897 bytes
 .../getting-started-execution-results-metrics.png  | Bin 0 -> 26064 bytes
 .../getting-started/getting-started-hop-gui.png    | Bin 0 -> 11701 bytes
 .../getting-started/getting-started-new-dialog.png | Bin 0 -> 69907 bytes
 .../getting-started-new-pipeline.png               | Bin 0 -> 65121 bytes
 .../getting-started-new-slave-config.png           | Bin 0 -> 83469 bytes
 .../getting-started-new-slave-run-config.png       | Bin 0 -> 114389 bytes
 .../getting-started/getting-started-new-slave.png  | Bin 0 -> 53489 bytes
 .../getting-started-new-transform.png              | Bin 0 -> 143202 bytes
 .../getting-started-new-workflow-abort.png         | Bin 0 -> 27276 bytes
 .../getting-started-new-workflow-actions.png       | Bin 0 -> 30376 bytes
 ...etting-started-new-workflow-pipeline-action.png | Bin 0 -> 103317 bytes
 .../getting-started-new-workflow.png               | Bin 0 -> 60518 bytes
 .../getting-started-pipeline-toolbar.png           | Bin 0 -> 5766 bytes
 .../getting-started-preview-dialog.png             | Bin 0 -> 55180 bytes
 .../getting-started-preview-pipeline.png           | Bin 0 -> 47704 bytes
 .../getting-started-preview-results.png            | Bin 0 -> 52513 bytes
 .../getting-started-run-configuration-dialog.png   | Bin 0 -> 73108 bytes
 .../getting-started-run-pipeline-dialog.png        | Bin 0 -> 50272 bytes
 .../getting-started-run-workflow-config-dialog.png | Bin 0 -> 88115 bytes
 .../getting-started-run-workflow-dialog.png        | Bin 0 -> 72350 bytes
 .../getting-started-run-workflow-logging.png       | Bin 0 -> 230863 bytes
 .../getting-started-run-workflow-metrics.png       | Bin 0 -> 162969 bytes
 .../getting-started-run-workflow-with-config.png   | Bin 0 -> 56533 bytes
 .../getting-started-save-pipeline.png              | Bin 0 -> 23784 bytes
 .../getting-started-server-index.png               | Bin 0 -> 17976 bytes
 ...ing-started-server-status-after-run-details.png | Bin 0 -> 117401 bytes
 .../getting-started-server-status-after-run.png    | Bin 0 -> 118999 bytes
 .../getting-started-server-status.png              | Bin 0 -> 108332 bytes
 .../getting-started/icons/Antu_edit-redo.svg       |   5 +
 .../getting-started/icons/Antu_edit-undo.svg       |   5 +
 .../assets/images/getting-started/icons/HOP.svg    |   7 +
 .../images/getting-started/icons/align-bottom.svg  |  76 ++++
 .../images/getting-started/icons/align-left.svg    |  51 +++
 .../images/getting-started/icons/align-right.svg   |  68 +++
 .../images/getting-started/icons/align-top.svg     |  54 +++
 .../assets/images/getting-started/icons/back.svg   |  22 +
 .../images/getting-started/icons/cleanup.svg       |  24 ++
 .../assets/images/getting-started/icons/close.svg  |  10 +
 .../assets/images/getting-started/icons/debug.svg  |  26 ++
 .../icons/distribute-horizontally.svg              |  73 ++++
 .../icons/distribute-vertically.svg                |  76 ++++
 .../assets/images/getting-started/icons/job.svg    |  12 +
 .../assets/images/getting-started/icons/pause.svg  |  13 +
 .../assets/images/getting-started/icons/print.png  | Bin 0 -> 441 bytes
 .../assets/images/getting-started/icons/run.svg    |  10 +
 .../images/getting-started/icons/run_option.svg    |  17 +
 .../images/getting-started/icons/show-all.svg      |  78 ++++
 .../images/getting-started/icons/show-selected.svg |  83 ++++
 .../images/getting-started/icons/snap-to-grid.svg  | 164 ++++++++
 .../assets/images/getting-started/icons/stop.svg   |  33 ++
 .../assets/images/getting-started/icons/trans.svg  |  12 +
 .../images/getting-started/icons/view-as-xml.svg   |  12 +
 .../assets/images/getting-started/icons/view.svg   |  10 +
 .../.asciidoctor/assets/images/test_image.jpg      | Bin 0 -> 460554 bytes
 .../modules/.asciidoctor/pages/index.adoc          | 308 ++++++++++++++
 hop-user-manual/modules/.asciidoctor/pom.xml       | 149 +++++++
 hop-user-manual/modules/ROOT/assets/.placeholder   |   0
 .../ROOT/assets/images/concepts/environments.png   | Bin 0 -> 64392 bytes
 .../ROOT/assets/images/concepts/pipeline.png       | Bin 0 -> 34989 bytes
 .../ROOT/assets/images/concepts/workflow.png       | Bin 0 -> 27620 bytes
 .../ROOT/assets/images/generic_connection.png      | Bin 0 -> 32997 bytes
 .../getting-started-add-transform.png              | Bin 0 -> 91782 bytes
 .../getting-started-add-two-transforms.png         | Bin 0 -> 15304 bytes
 .../getting-started-click-anywhere.png             | Bin 0 -> 14722 bytes
 .../getting-started/getting-started-create-hop.png | Bin 0 -> 14478 bytes
 .../getting-started-debug-dialog.png               | Bin 0 -> 64600 bytes
 .../getting-started-debug-pipeline.png             | Bin 0 -> 65943 bytes
 .../getting-started-debug-results.png              | Bin 0 -> 56897 bytes
 .../getting-started-execution-results-metrics.png  | Bin 0 -> 26064 bytes
 .../getting-started/getting-started-hop-gui.png    | Bin 0 -> 11701 bytes
 .../getting-started/getting-started-new-dialog.png | Bin 0 -> 69907 bytes
 .../getting-started-new-pipeline.png               | Bin 0 -> 65121 bytes
 .../getting-started-new-slave-config.png           | Bin 0 -> 83469 bytes
 .../getting-started-new-slave-run-config.png       | Bin 0 -> 114389 bytes
 .../getting-started/getting-started-new-slave.png  | Bin 0 -> 53489 bytes
 .../getting-started-new-transform.png              | Bin 0 -> 143202 bytes
 .../getting-started-new-workflow-abort.png         | Bin 0 -> 27276 bytes
 .../getting-started-new-workflow-actions.png       | Bin 0 -> 30376 bytes
 ...etting-started-new-workflow-pipeline-action.png | Bin 0 -> 103317 bytes
 .../getting-started-new-workflow.png               | Bin 0 -> 60518 bytes
 .../getting-started-pipeline-toolbar.png           | Bin 0 -> 5766 bytes
 .../getting-started-preview-dialog.png             | Bin 0 -> 55180 bytes
 .../getting-started-preview-pipeline.png           | Bin 0 -> 47704 bytes
 .../getting-started-preview-results.png            | Bin 0 -> 52513 bytes
 .../getting-started-run-configuration-dialog.png   | Bin 0 -> 73108 bytes
 .../getting-started-run-pipeline-dialog.png        | Bin 0 -> 50272 bytes
 .../getting-started-run-workflow-config-dialog.png | Bin 0 -> 88115 bytes
 .../getting-started-run-workflow-dialog.png        | Bin 0 -> 72350 bytes
 .../getting-started-run-workflow-logging.png       | Bin 0 -> 230863 bytes
 .../getting-started-run-workflow-metrics.png       | Bin 0 -> 162969 bytes
 .../getting-started-run-workflow-with-config.png   | Bin 0 -> 56533 bytes
 .../getting-started-save-pipeline.png              | Bin 0 -> 23784 bytes
 .../getting-started-server-index.png               | Bin 0 -> 17976 bytes
 ...ing-started-server-status-after-run-details.png | Bin 0 -> 117401 bytes
 .../getting-started-server-status-after-run.png    | Bin 0 -> 118999 bytes
 .../getting-started-server-status.png              | Bin 0 -> 108332 bytes
 .../getting-started/icons/Antu_edit-redo.svg       |   5 +
 .../getting-started/icons/Antu_edit-undo.svg       |   5 +
 .../assets/images/getting-started/icons/HOP.svg    |   7 +
 .../images/getting-started/icons/align-bottom.svg  |  76 ++++
 .../images/getting-started/icons/align-left.svg    |  51 +++
 .../images/getting-started/icons/align-right.svg   |  68 +++
 .../images/getting-started/icons/align-top.svg     |  54 +++
 .../assets/images/getting-started/icons/back.svg   |  22 +
 .../images/getting-started/icons/cleanup.svg       |  24 ++
 .../assets/images/getting-started/icons/close.svg  |  10 +
 .../assets/images/getting-started/icons/debug.svg  |  26 ++
 .../icons/distribute-horizontally.svg              |  73 ++++
 .../icons/distribute-vertically.svg                |  76 ++++
 .../assets/images/getting-started/icons/job.svg    |  12 +
 .../assets/images/getting-started/icons/pause.svg  |  13 +
 .../assets/images/getting-started/icons/print.png  | Bin 0 -> 441 bytes
 .../assets/images/getting-started/icons/run.svg    |  10 +
 .../images/getting-started/icons/run_option.svg    |  17 +
 .../images/getting-started/icons/show-all.svg      |  78 ++++
 .../images/getting-started/icons/show-selected.svg |  83 ++++
 .../images/getting-started/icons/snap-to-grid.svg  | 164 ++++++++
 .../assets/images/getting-started/icons/stop.svg   |  33 ++
 .../assets/images/getting-started/icons/trans.svg  |  12 +
 .../images/getting-started/icons/view-as-xml.svg   |  12 +
 .../assets/images/getting-started/icons/view.svg   |  10 +
 .../environment/create-environment-dialogue.png    | Bin 0 -> 111443 bytes
 .../environment/create-project-dialogue.png        | Bin 0 -> 427481 bytes
 .../hop-gui/environment/edit-environment-menu.png  | Bin 0 -> 40294 bytes
 .../images/hop-gui/environment/environment-add.svg |  49 +++
 .../hop-gui/environment/environment-delete.svg     |  48 +++
 .../hop-gui/environment/environment-edit.svg       |  66 +++
 .../hop-gui/environment/environment-files.png      | Bin 0 -> 27654 bytes
 .../images/hop-gui/environment/hop-conf-help.png   | Bin 0 -> 233024 bytes
 .../assets/images/hop-gui/environment/hop-conf.png | Bin 0 -> 93785 bytes
 .../hop-gui/environment/new-environment-dialog.png | Bin 0 -> 21553 bytes
 .../images/hop-gui/environment/new-environment.png | Bin 0 -> 106890 bytes
 .../images/hop-gui/environment/project-add.svg     |  51 +++
 .../images/hop-gui/environment/project-delete.svg  |  50 +++
 .../images/hop-gui/environment/project-edit.svg    |  68 +++
 .../environment/switch-environment-list.png        | Bin 0 -> 19746 bytes
 .../hop-gui/environment/switch-environment.png     | Bin 0 -> 16515 bytes
 .../hop-gui/environment/switch-project-list.png    | Bin 0 -> 22703 bytes
 .../ROOT/assets/images/hop-gui/new-work-item.png   | Bin 0 -> 32021 bytes
 .../modules/ROOT/assets/images/hop-gui/new.svg     |  20 +
 .../images/hop-gui/pipeline/debug-pipeline.png     | Bin 0 -> 15392 bytes
 .../images/hop-gui/pipeline/executed-pipeline.png  | Bin 0 -> 5389 bytes
 .../images/hop-gui/pipeline/failed-pipeline.png    | Bin 0 -> 6513 bytes
 .../assets/images/hop-gui/pipeline/hop-type.png    | Bin 0 -> 14135 bytes
 .../images/hop-gui/pipeline/logging-pipeline.png   | Bin 0 -> 20143 bytes
 .../hop-gui/pipeline/monitoring-pipeline.png       | Bin 0 -> 10384 bytes
 .../images/hop-gui/pipeline/new-pipeline.png       | Bin 0 -> 19068 bytes
 .../hop-gui/pipeline/parameters-pipeline.png       | Bin 0 -> 12681 bytes
 .../hop-gui/pipeline/preview-menu-pipeline.PNG     | Bin 0 -> 17015 bytes
 .../images/hop-gui/pipeline/preview-pipeline.png   | Bin 0 -> 11054 bytes
 .../hop-gui/pipeline/properties-pipeline.png       | Bin 0 -> 14529 bytes
 .../pipeline/run-configuration-pipeline.png        | Bin 0 -> 25182 bytes
 .../images/hop-gui/pipeline/save-pipeline.png      | Bin 0 -> 18525 bytes
 .../images/hop-gui/pipeline/simple-pipeline.png    | Bin 0 -> 3408 bytes
 .../pipeline/transform-metrics-pipeline.png        | Bin 0 -> 12135 bytes
 .../assets/images/hop-gui/pipeline/transforms.png  | Bin 0 -> 37768 bytes
 .../hop-gui/workflow/new-run-configuration.png     | Bin 0 -> 20372 bytes
 .../hop-gui/workflow/parameters-properties.png     | Bin 0 -> 11721 bytes
 .../hop-gui/workflow/settings-properties.png       | Bin 0 -> 8576 bytes
 .../images/hop-gui/workflow/simple-workflow.png    | Bin 0 -> 11276 bytes
 .../images/hop-gui/workflow/workflow-action.png    | Bin 0 -> 19545 bytes
 .../hop-gui/workflow/workflow-properties.png       | Bin 0 -> 14994 bytes
 .../workflow/workflow-run-configuration.png        | Bin 0 -> 14474 bytes
 .../ROOT/assets/images/hop-run/hop-run-options.png | Bin 0 -> 54697 bytes
 .../assets/images/hop-server/hop-server-index.png  | Bin 0 -> 8064 bytes
 .../images/hop-server/hop-server-no-tasks.png      | Bin 0 -> 39787 bytes
 .../images/hop-server/hop-server-options.png       | Bin 0 -> 41358 bytes
 .../images/run-configuration/beam-dataflow.png     | Bin 0 -> 68070 bytes
 .../images/run-configuration/beam-direct.png       | Bin 0 -> 53999 bytes
 .../assets/images/run-configuration/beam-flink.png | Bin 0 -> 72845 bytes
 .../assets/images/run-configuration/beam-spark.png | Bin 0 -> 74898 bytes
 .../run-configuration/configuration-selection.png  | Bin 0 -> 38231 bytes
 .../images/run-configuration/local-engine.png      | Bin 0 -> 39873 bytes
 .../images/run-configuration/remote-engine.png     | Bin 0 -> 36880 bytes
 .../ROOT/assets/images/system-properties-menu.png  | Bin 0 -> 30760 bytes
 .../modules/ROOT/assets/images/test_image.jpg      | Bin 0 -> 460554 bytes
 .../ROOT/assets/images/variable-indicator.png      | Bin 0 -> 10854 bytes
 hop-user-manual/modules/ROOT/nav.adoc              | 289 +++++++++++++
 hop-user-manual/modules/ROOT/pages/concepts.adoc   |  71 ++++
 hop-user-manual/modules/ROOT/pages/faq/faq.adoc    |   6 +
 .../modules/ROOT/pages/getting-started.adoc        | 461 +++++++++++++++++++++
 .../pages/hop-gui/environments/environments.adoc   | 192 +++++++++
 .../modules/ROOT/pages/hop-gui/index.adoc          |  39 ++
 .../pages/hop-gui/pipelines/create-pipeline.adoc   | 154 +++++++
 .../hop-gui/pipelines/hop-pipeline-editor.adoc     |  32 ++
 .../hop-gui/pipelines/metadata-injection.adoc      |   4 +
 .../beam-dataflow-pipeline-engine.adoc             |  69 +++
 .../beam-direct-pipeline-engine.adoc               |  34 ++
 .../beam-flink-pipeline-engine.adoc                |  52 +++
 .../beam-spark-pipeline-engine.adoc                |  42 ++
 .../local-pipeline-engine.adoc                     |  23 +
 .../pipeline-run-configurations.adoc               |  58 +++
 .../remote-pipeline-engine.adoc                    |  20 +
 .../ROOT/pages/hop-gui/pipelines/pipelines.adoc    |  10 +
 .../pipelines/run-preview-debug-pipeline.adoc      | 113 +++++
 .../modules/ROOT/pages/hop-gui/shortcuts.adoc      |  49 +++
 .../ROOT/pages/hop-gui/variables/variables.adoc    |  97 +++++
 .../pages/hop-gui/workflows/create-workflow.adoc   | 127 ++++++
 .../hop-gui/workflows/run-debug-workflow.adoc      |  40 ++
 .../workflow-run-configurations.adoc               |  33 ++
 .../ROOT/pages/hop-gui/workflows/workflows.adoc    |   8 +
 .../modules/ROOT/pages/hop-gui/workitems.adoc      |  28 ++
 .../modules/ROOT/pages/hop-run/index.adoc          |  38 ++
 .../modules/ROOT/pages/hop-server/index.adoc       |  87 ++++
 .../ROOT/pages/hop-vs-kettle/hop-vs-kettle.adoc    |  65 +++
 .../pages/hop-vs-kettle/if-you-know-kettle.adoc    |  45 ++
 .../modules/ROOT/pages/hop-vs-kettle/index.adoc    |   4 +
 .../modules/ROOT/pages/image-testpage.adoc         |  15 +
 hop-user-manual/modules/ROOT/pages/index.adoc      |   4 +
 .../modules/ROOT/pages/plugins/actions.adoc        |   8 +
 .../modules/ROOT/pages/plugins/actions/abort.adoc  |  17 +
 .../pages/plugins/actions/addresultfilenames.adoc  |  20 +
 .../pages/plugins/actions/checkdbconnection.adoc   |  20 +
 .../pages/plugins/actions/checkfilelocked.adoc     |  23 +
 .../ROOT/pages/plugins/actions/columnsexist.adoc   |  20 +
 .../ROOT/pages/plugins/actions/copyfiles.adoc      |  54 +++
 .../plugins/actions/copymoveresultfilenames.adoc   |  33 ++
 .../ROOT/pages/plugins/actions/createfile.adoc     |  18 +
 .../ROOT/pages/plugins/actions/createfolder.adoc   |  18 +
 .../modules/ROOT/pages/plugins/actions/delay.adoc  |  18 +
 .../ROOT/pages/plugins/actions/deletefile.adoc     |  18 +
 .../ROOT/pages/plugins/actions/deletefiles.adoc    |  21 +
 .../ROOT/pages/plugins/actions/deletefolders.adoc  |  27 ++
 .../plugins/actions/deleteresultfilenames.adoc     |  19 +
 .../ROOT/pages/plugins/actions/dostounix.adoc      |  40 ++
 .../ROOT/pages/plugins/actions/dtdvalidator.adoc   |  19 +
 .../modules/ROOT/pages/plugins/actions/eval.adoc   | 137 ++++++
 .../pages/plugins/actions/evalfilesmetrics.adoc    |  66 +++
 .../plugins/actions/evaluatetablecontent.adoc      |  30 ++
 .../ROOT/pages/plugins/actions/filecompare.adoc    |  18 +
 .../ROOT/pages/plugins/actions/fileexists.adoc     |  23 +
 .../ROOT/pages/plugins/actions/filesexist.adoc     |  24 ++
 .../ROOT/pages/plugins/actions/folderisempty.adoc  |  20 +
 .../ROOT/pages/plugins/actions/folderscompare.adoc |  24 ++
 .../modules/ROOT/pages/plugins/actions/ftp.adoc    |  72 ++++
 .../ROOT/pages/plugins/actions/ftpdelete.adoc      |  81 ++++
 .../modules/ROOT/pages/plugins/actions/ftpput.adoc |  55 +++
 .../ROOT/pages/plugins/actions/ftpsget.adoc        |  67 +++
 .../ROOT/pages/plugins/actions/ftpsput.adoc        |  53 +++
 .../modules/ROOT/pages/plugins/actions/getpop.adoc |  27 ++
 .../modules/ROOT/pages/plugins/actions/http.adoc   |  46 ++
 .../modules/ROOT/pages/plugins/actions/mail.adoc   | 104 +++++
 .../ROOT/pages/plugins/actions/mailvalidator.adoc  |  30 ++
 .../ROOT/pages/plugins/actions/movefiles.adoc      |  91 ++++
 .../ROOT/pages/plugins/actions/msgboxinfo.adoc     |  25 ++
 .../ROOT/pages/plugins/actions/mssqlbulkload.adoc  |  57 +++
 .../ROOT/pages/plugins/actions/mysqlbulkfile.adoc  |  32 ++
 .../ROOT/pages/plugins/actions/mysqlbulkload.adoc  |  31 ++
 .../pages/plugins/actions/pgpdecryptfiles.adoc     |  79 ++++
 .../pages/plugins/actions/pgpencryptfiles.adoc     |  81 ++++
 .../ROOT/pages/plugins/actions/pgpfiles.adoc       |   4 +
 .../ROOT/pages/plugins/actions/pgpverify.adoc      |  20 +
 .../modules/ROOT/pages/plugins/actions/ping.adoc   |  22 +
 .../ROOT/pages/plugins/actions/pipeline.adoc       |  84 ++++
 .../plugins/actions/sendnagiospassivecheck.adoc    |  30 ++
 .../ROOT/pages/plugins/actions/setvariables.adoc   |  24 ++
 .../modules/ROOT/pages/plugins/actions/sftp.adoc   |  59 +++
 .../ROOT/pages/plugins/actions/sftpput.adoc        |  57 +++
 .../modules/ROOT/pages/plugins/actions/shell.adoc  |  32 ++
 .../ROOT/pages/plugins/actions/simpleeval.adoc     |  63 +++
 .../ROOT/pages/plugins/actions/snmptrap.adoc       |  28 ++
 .../modules/ROOT/pages/plugins/actions/sql.adoc    |  22 +
 .../ROOT/pages/plugins/actions/success.adoc        |  16 +
 .../modules/ROOT/pages/plugins/actions/syslog.adoc |  24 ++
 .../ROOT/pages/plugins/actions/tableexists.adoc    |  21 +
 .../modules/ROOT/pages/plugins/actions/telnet.adoc |  19 +
 .../ROOT/pages/plugins/actions/truncatetables.adoc |  23 +
 .../modules/ROOT/pages/plugins/actions/unzip.adoc  |  39 ++
 .../ROOT/pages/plugins/actions/waitforfile.adoc    |  22 +
 .../ROOT/pages/plugins/actions/waitforsql.adoc     |  28 ++
 .../pages/plugins/actions/webserviceavailable.adoc |  19 +
 .../ROOT/pages/plugins/actions/workflow.adoc       |  81 ++++
 .../ROOT/pages/plugins/actions/writetofile.adoc    |  22 +
 .../ROOT/pages/plugins/actions/writetolog.adoc     |  19 +
 .../ROOT/pages/plugins/actions/xmlwellformed.adoc  |  32 ++
 .../ROOT/pages/plugins/actions/xsdvalidator.adoc   |  25 ++
 .../modules/ROOT/pages/plugins/actions/xslt.adoc   |  32 ++
 .../ROOT/pages/plugins/actions/zipfile.adoc        |  50 +++
 .../modules/ROOT/pages/plugins/databases.adoc      |  29 ++
 .../ROOT/pages/plugins/databases/as400.adoc        |  16 +
 .../ROOT/pages/plugins/databases/cache.adoc        |  16 +
 .../modules/ROOT/pages/plugins/databases/db2.adoc  |  16 +
 .../ROOT/pages/plugins/databases/derby.adoc        |  16 +
 .../ROOT/pages/plugins/databases/exasol.adoc       |  16 +
 .../ROOT/pages/plugins/databases/firebird.adoc     |  16 +
 .../pages/plugins/databases/googlebigquery.adoc    |  16 +
 .../ROOT/pages/plugins/databases/greenplum.adoc    |  16 +
 .../modules/ROOT/pages/plugins/databases/h2.adoc   |  16 +
 .../ROOT/pages/plugins/databases/hypersonic.adoc   |  16 +
 .../ROOT/pages/plugins/databases/infinidb.adoc     |  16 +
 .../ROOT/pages/plugins/databases/infobright.adoc   |  16 +
 .../ROOT/pages/plugins/databases/informix.adoc     |  16 +
 .../ROOT/pages/plugins/databases/ingres.adoc       |  16 +
 .../ROOT/pages/plugins/databases/interbase.adoc    |  16 +
 .../ROOT/pages/plugins/databases/kingbasees.adoc   |  16 +
 .../ROOT/pages/plugins/databases/mariadb.adoc      |  16 +
 .../ROOT/pages/plugins/databases/monetdb.adoc      |  16 +
 .../ROOT/pages/plugins/databases/mssql.adoc        |  18 +
 .../ROOT/pages/plugins/databases/mssqlnative.adoc  |  29 ++
 .../ROOT/pages/plugins/databases/mysql.adoc        |  16 +
 .../ROOT/pages/plugins/databases/netezza.adoc      |  16 +
 .../ROOT/pages/plugins/databases/oracle.adoc       |  16 +
 .../ROOT/pages/plugins/databases/oraclerdb.adoc    |  16 +
 .../ROOT/pages/plugins/databases/postgresql.adoc   |  16 +
 .../ROOT/pages/plugins/databases/redshift.adoc     |  16 +
 .../ROOT/pages/plugins/databases/sapdb.adoc        |  16 +
 .../ROOT/pages/plugins/databases/snowflake.adoc    |  16 +
 .../ROOT/pages/plugins/databases/sqlbase.adoc      |  16 +
 .../ROOT/pages/plugins/databases/sqlite.adoc       |  16 +
 .../ROOT/pages/plugins/databases/sybase.adoc       |  16 +
 .../ROOT/pages/plugins/databases/sybaseiq.adoc     |  16 +
 .../ROOT/pages/plugins/databases/teradata.adoc     |  15 +
 .../ROOT/pages/plugins/databases/universe.adoc     |  16 +
 .../ROOT/pages/plugins/databases/vectorwise.adoc   |  16 +
 .../ROOT/pages/plugins/databases/vertica.adoc      |  16 +
 .../modules/ROOT/pages/plugins/plugins.adoc        |  19 +
 .../modules/ROOT/pages/plugins/transforms.adoc     |   9 +
 .../ROOT/pages/plugins/transforms/abort.adoc       |  19 +
 .../ROOT/pages/plugins/transforms/addsequence.adoc |  27 ++
 .../ROOT/pages/plugins/transforms/addxml.adoc      |  87 ++++
 .../pages/plugins/transforms/analyticquery.adoc    |  89 ++++
 .../ROOT/pages/plugins/transforms/append.adoc      |  26 ++
 .../plugins/transforms/beambigqueryinput.adoc      |  24 ++
 .../plugins/transforms/beambigqueryoutput.adoc     |  22 +
 .../ROOT/pages/plugins/transforms/beamconsume.adoc |  30 ++
 .../ROOT/pages/plugins/transforms/beaminput.adoc   |  40 ++
 .../ROOT/pages/plugins/transforms/beamoutput.adoc  |  43 ++
 .../ROOT/pages/plugins/transforms/beamproduce.adoc |  20 +
 .../pages/plugins/transforms/beampublisher.adoc    |  22 +
 .../pages/plugins/transforms/beamsubscriber.adoc   |  23 +
 .../pages/plugins/transforms/beamtimestamp.adoc    |  18 +
 .../ROOT/pages/plugins/transforms/beamwindow.adoc  |  47 +++
 .../plugins/transforms/blockingtransform.adoc      |  23 +
 .../transforms/blockuntiltransformsfinish.adoc     |  27 ++
 .../ROOT/pages/plugins/transforms/calculator.adoc  | 131 ++++++
 .../plugins/transforms/changefileencoding.adoc     |  22 +
 .../ROOT/pages/plugins/transforms/checksum.adoc    |  27 ++
 .../ROOT/pages/plugins/transforms/clonerow.adoc    |  22 +
 .../ROOT/pages/plugins/transforms/closure.adoc     |  21 +
 .../pages/plugins/transforms/columnexists.adoc     |  23 +
 .../plugins/transforms/combinationlookup.adoc      |  50 +++
 .../pages/plugins/transforms/concatfields.adoc     |  73 ++++
 .../ROOT/pages/plugins/transforms/constant.adoc    |  17 +
 .../plugins/transforms/creditcardvalidator.adoc    |  23 +
 .../ROOT/pages/plugins/transforms/csvinput.adoc    |  44 ++
 .../ROOT/pages/plugins/transforms/cubeinput.adoc   |  19 +
 .../ROOT/pages/plugins/transforms/cubeoutput.adoc  |  10 +
 .../pages/plugins/transforms/databasejoin.adoc     |  40 ++
 .../pages/plugins/transforms/databaselookup.adoc   |  46 ++
 .../ROOT/pages/plugins/transforms/datagrid.adoc    |  25 ++
 .../ROOT/pages/plugins/transforms/dbproc.adoc      |  29 ++
 .../ROOT/pages/plugins/transforms/delay.adoc       |  19 +
 .../ROOT/pages/plugins/transforms/delete.adoc      |  23 +
 .../pages/plugins/transforms/denormaliser.adoc     |  41 ++
 .../plugins/transforms/detectemptystream.adoc      |  19 +
 .../pages/plugins/transforms/detectlastrow.adoc    |  17 +
 .../pages/plugins/transforms/dimensionlookup.adoc  | 112 +++++
 .../ROOT/pages/plugins/transforms/dummy.adoc       |  16 +
 .../pages/plugins/transforms/dynamicsqlrow.adoc    |  24 ++
 .../ROOT/pages/plugins/transforms/edi2xml.adoc     |  35 ++
 .../ROOT/pages/plugins/transforms/excelinput.adoc  | 102 +++++
 .../ROOT/pages/plugins/transforms/exceloutput.adoc |  77 ++++
 .../ROOT/pages/plugins/transforms/excelwriter.adoc |  92 ++++
 .../ROOT/pages/plugins/transforms/execprocess.adoc |  26 ++
 .../ROOT/pages/plugins/transforms/execsqlrow.adoc  |  28 ++
 .../plugins/transforms/fieldschangesequence.adoc   |  18 +
 .../pages/plugins/transforms/fieldsplitter.adoc    |  64 +++
 .../ROOT/pages/plugins/transforms/fileexists.adoc  |  23 +
 .../ROOT/pages/plugins/transforms/filelocked.adoc  |  16 +
 .../pages/plugins/transforms/filesfromresult.adoc  |  31 ++
 .../pages/plugins/transforms/filestoresult.adoc    |  18 +
 .../ROOT/pages/plugins/transforms/filterrows.adoc  |  71 ++++
 .../ROOT/pages/plugins/transforms/flattener.adoc   |  38 ++
 .../ROOT/pages/plugins/transforms/fuzzymatch.adoc  |  53 +++
 .../pages/plugins/transforms/getfilenames.adoc     |  46 ++
 .../pages/plugins/transforms/getfilesrowcount.adoc |  47 +++
 .../pages/plugins/transforms/getslavesequence.adoc | 118 ++++++
 .../pages/plugins/transforms/getsubfolders.adoc    |  37 ++
 .../pages/plugins/transforms/gettablenames.adoc    |  35 ++
 .../ROOT/pages/plugins/transforms/getvariable.adoc |  36 ++
 .../ROOT/pages/plugins/transforms/getxmldata.adoc  |  80 ++++
 .../ROOT/pages/plugins/transforms/groupby.adoc     |  49 +++
 .../ROOT/pages/plugins/transforms/http.adoc        |  51 +++
 .../ROOT/pages/plugins/transforms/httppost.adoc    |  62 +++
 .../ROOT/pages/plugins/transforms/ifnull.adoc      |  17 +
 .../ROOT/pages/plugins/transforms/injector.adoc    |  20 +
 .../pages/plugins/transforms/insertupdate.adoc     |  24 ++
 .../ROOT/pages/plugins/transforms/janino.adoc      | 143 +++++++
 .../ROOT/pages/plugins/transforms/javafilter.adoc  |  55 +++
 .../ROOT/pages/plugins/transforms/javascript.adoc  |  26 ++
 .../ROOT/pages/plugins/transforms/joinrows.adoc    |  26 ++
 .../ROOT/pages/plugins/transforms/jsoninput.adoc   | 109 +++++
 .../ROOT/pages/plugins/transforms/jsonoutput.adoc  | 185 +++++++++
 .../ROOT/pages/plugins/transforms/ldapinput.adoc   |  77 ++++
 .../ROOT/pages/plugins/transforms/ldapoutput.adoc  |  72 ++++
 .../ROOT/pages/plugins/transforms/ldifinput.adoc   |  56 +++
 .../pages/plugins/transforms/loadfileinput.adoc    |  84 ++++
 .../ROOT/pages/plugins/transforms/mail.adoc        | 100 +++++
 .../ROOT/pages/plugins/transforms/mailinput.adoc   |  77 ++++
 .../pages/plugins/transforms/mailvalidator.adoc    |  31 ++
 .../ROOT/pages/plugins/transforms/memgroupby.adoc  |  25 ++
 .../ROOT/pages/plugins/transforms/mergejoin.adoc   |  28 ++
 .../ROOT/pages/plugins/transforms/mergerows.adoc   |  41 ++
 .../ROOT/pages/plugins/transforms/metainject.adoc  |  84 ++++
 .../ROOT/pages/plugins/transforms/multimerge.adoc  |  22 +
 .../ROOT/pages/plugins/transforms/normaliser.adoc  |  29 ++
 .../ROOT/pages/plugins/transforms/nullif.adoc      |  13 +
 .../ROOT/pages/plugins/transforms/numberrange.adoc |  24 ++
 .../pages/plugins/transforms/pgbulkloader.adoc     |  59 +++
 .../pages/plugins/transforms/pgpdecryptstream.adoc |  23 +
 .../pages/plugins/transforms/pgpencryptstream.adoc |  23 +
 .../plugins/transforms/pipelineexcecutor.adoc      |  71 ++++
 .../pages/plugins/transforms/processfiles.adoc     |  25 ++
 .../pages/plugins/transforms/propertyinput.adoc    |  60 +++
 .../pages/plugins/transforms/propertyoutput.adoc   |  42 ++
 .../ROOT/pages/plugins/transforms/randomvalue.adoc |  26 ++
 .../plugins/transforms/recordsfromstream.adoc      |  40 ++
 .../ROOT/pages/plugins/transforms/regexeval.adoc   | 130 ++++++
 .../pages/plugins/transforms/replacestring.adoc    |  39 ++
 .../plugins/transforms/reservoirsampling.adoc      |  19 +
 .../ROOT/pages/plugins/transforms/rest.adoc        |  90 ++++
 .../pages/plugins/transforms/rowgenerator.adoc     |  22 +
 .../pages/plugins/transforms/rowsfromresult.adoc   |  41 ++
 .../pages/plugins/transforms/rowstoresult.adoc     |  17 +
 .../pages/plugins/transforms/selectvalues.adoc     |  76 ++++
 .../pages/plugins/transforms/setvalueconstant.adoc |  27 ++
 .../pages/plugins/transforms/setvaluefield.adoc    |  24 ++
 .../ROOT/pages/plugins/transforms/setvariable.adoc |  27 ++
 .../ROOT/pages/plugins/transforms/sort.adoc        |  28 ++
 .../ROOT/pages/plugins/transforms/sortedmerge.adoc |  23 +
 .../pages/plugins/transforms/splitfieldtorows.adoc |  24 ++
 .../modules/ROOT/pages/plugins/transforms/sql.adoc |  28 ++
 .../pages/plugins/transforms/sqlfileoutput.adoc    |  48 +++
 .../modules/ROOT/pages/plugins/transforms/ssh.adoc |  52 +++
 .../pages/plugins/transforms/streamlookup.adoc     |  29 ++
 .../plugins/transforms/streamschemamerge.adoc      |  21 +
 .../ROOT/pages/plugins/transforms/stringcut.adoc   |  24 ++
 .../pages/plugins/transforms/stringoperations.adoc |  39 ++
 .../ROOT/pages/plugins/transforms/switchcase.adoc  |  32 ++
 .../plugins/transforms/synchronizeaftermerge.adoc  |  43 ++
 .../ROOT/pages/plugins/transforms/syslog.adoc      |  25 ++
 .../ROOT/pages/plugins/transforms/systemdata.adoc  | 123 ++++++
 .../pages/plugins/transforms/tablecompare.adoc     |  26 ++
 .../ROOT/pages/plugins/transforms/tableexists.adoc |  20 +
 .../ROOT/pages/plugins/transforms/tableinput.adoc  |  33 ++
 .../ROOT/pages/plugins/transforms/tableoutput.adoc |  52 +++
 .../ROOT/pages/plugins/transforms/terafast.adoc    |  33 ++
 .../pages/plugins/transforms/textfileinput.adoc    | 224 ++++++++++
 .../pages/plugins/transforms/textfileoutput.adoc   |  94 +++++
 .../ROOT/pages/plugins/transforms/uniquerows.adoc  |  21 +
 .../plugins/transforms/uniquerowsbyhashset.adoc    |  28 ++
 .../ROOT/pages/plugins/transforms/update.adoc      |  31 ++
 .../plugins/transforms/userdefinedjavaclass.adoc   | 202 +++++++++
 .../ROOT/pages/plugins/transforms/validator.adoc   |  53 +++
 .../ROOT/pages/plugins/transforms/valuemapper.adoc |  35 ++
 .../plugins/transforms/webserviceavailable.adoc    |  21 +
 .../ROOT/pages/plugins/transforms/webservices.adoc |  34 ++
 .../pages/plugins/transforms/workflowexecutor.adoc |  55 +++
 .../ROOT/pages/plugins/transforms/writetolog.adoc  |  44 ++
 .../pages/plugins/transforms/xmlinputstream.adoc   |  71 ++++
 .../ROOT/pages/plugins/transforms/xmljoin.adoc     |  34 ++
 .../ROOT/pages/plugins/transforms/xmloutput.adoc   |  71 ++++
 .../pages/plugins/transforms/xsdvalidator.adoc     |  44 ++
 .../ROOT/pages/plugins/transforms/xslt.adoc        |  24 ++
 .../ROOT/pages/plugins/transforms/yamlinput.adoc   |  62 +++
 .../ROOT/pages/plugins/transforms/zipfile.adoc     |  25 ++
 hop-user-manual/modules/ROOT/pages/projects.adoc   |  47 +++
 .../modules/ROOT/pages/samples/dummy-sample.adoc   |   5 +
 .../modules/ROOT/pages/samples/samples.adoc        |   5 +
 .../modules/ROOT/templates/template-faq.adoc       |   4 +
 .../modules/ROOT/templates/template-plugin.adoc    |   5 +
 .../modules/ROOT/templates/template-sample.adoc    |   2 +
 hop-user-manual/pom.xml                            |  31 ++
 pom.xml                                            |  29 ++
 511 files changed, 16381 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..533682a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.idea/
+**/target/
+*.pdf
+*.iml
+*.html
+*.jar
+hop-user-manual/modules/asciidoctor/assets
+hop-tech-manual/modules/asciidoctor/assets
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..2e5ddb0
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,89 @@
+pipeline {
+    agent any
+    tools {
+        maven 'M3'
+    }
+
+    options {
+        buildDiscarder(
+            logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
+        )
+
+        timestamps()
+    }
+    stages {
+        stage('create local branch'){
+            when {
+                branch 'master'
+            }
+            steps{
+                sh('git checkout -B master')
+            }
+        }
+        stage('Generate navigation'){
+            when {
+                branch 'master'
+            }
+            steps{
+                sh('./generate_navigation.sh')
+            }
+        }
+        stage('Push') {
+            when {
+                branch 'master'
+            }
+            environment { 
+                GIT_AUTH = credentials('1f897a89-aed2-478f-9efc-29ae9b6aaa7c') 
+            }
+            steps {
+                sh('''
+                    git config --local credential.helper "!f() { echo username=\\$GIT_AUTH_USR; echo password=\\$GIT_AUTH_PSW; }; f"
+                    ls
+                    git add .;
+                    git commit -m "Jenkins Update navigation" || echo;
+                    git push origin HEAD:master || echo;
+                ''')
+            }
+        }
+        stage('artifactory build') {
+            steps {
+                rtMavenResolver (
+                    id: 'hop-resolver',
+                    serverId: 'ART',
+                    releaseRepo: 'hop-releases',
+                    snapshotRepo: 'hop-snapshots'
+                )  
+ 
+                rtMavenDeployer (
+                    id: 'hop-deployer',
+                    serverId: 'ART',
+                    releaseRepo: 'hop-releases-local',
+                    snapshotRepo: 'hop-snapshots-local',
+                    // By default, 3 threads are used to upload the artifacts to Artifactory. You can override this default by setting:
+                    threads: 6
+                )
+
+                rtMavenRun (
+                    // Tool name from Jenkins configuration.
+                    tool: 'M3',
+                    pom: 'pom.xml',
+                    goals: 'clean install',
+                    // Maven options.
+                    opts: '-Xms1024m -Xmx4096m',
+                    resolverId: 'hop-resolver',
+                    deployerId: 'hop-deployer'
+                )
+            }
+        }
+        stage('Start Website Build') {
+            when {
+                branch 'master'
+            }
+            steps {
+                script {
+                    build job: "hop-website/master", wait: false
+                }
+            }
+        }
+    }
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
diff --git a/README.md b/README.md
index e3f78a0..a339742 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,79 @@
-incubator-hop-docs
+# About Project Hop documentation
+
+The hop documentation project consists of multiple types of documentation. Each with their own purpose.
+
+## Hop User manual
+The user manual contains general guidelines and info for starting hop users and reference material about actions and transforms for the more advanced users.
+It will contain Frequently Asked Questions and step by step samples
+
+A part of the user manual is imported from the main HOP repository, the database,action and transform documentation is maintained together with the code.
+
+## Hop Tech manual
+This reference guide will contain reference architectures and more advanced configuration and set-ups using HOP
+
+## Hop Development manual
+The Development manual contains information on how to create plugins and how the code of HOP works.
+
+# Structure
+When opening one of the three documentation folders you will notice there are two modules one is called ROOT the other is asciidoctor.
+The ROOT module contains all the content, the asciidoctor is a placeholder to generate a PDF book based on the ROOT module.
+
+```
+The asciidoctor module is currently not being used, it is a future project
+```
+
+Under the ROOT module you will find following folders:
+
+* assets
+  * Used for images, place your images in this folder
+* pages
+  * actual page content
+* templates
+  * templates you can use to base other material on
+
+And one special file called `nav.adoc` this file is (at least in the user manual) partially generated you will see a start and endtag in this file, do not add new pages between it, it will be overwritten in the next build.
+The `nav.adoc` is used to generate the list on the left hand side of the documentation website.
+
+
+
+# Build
+## Tools used
+
+For the website build Antora is used to generate the documents.
+
+We also generate a pdf-book using a Asciidoctor maven project.
+
+## Website
+The content in this repository is used to generate the website [User Manual](https://www.project-hop.org/manual/latest/) and [Technical Documentation](https://www.project-hop.org/tech-manual/latest/) each commit in master triggers a jenkins build that pushes the latest changes to the website. Testing the website version before deployment is currently not possible
+
+## PDF Book
+The same content is used to generate a book version of the manual that can be downloaded or distributed with the installation of hop (currently under discussion)
+
+The book can be generated using maven.
+
+```
+mvn clean install
+```
+
+The final result can be found in following location:
+
+hop-user/tech-manual/modules/asciidoctor/target/generated-docs
+
+
+# Contributing
+
+## Changing existing content
+
+1. create a fork of our repository
+2. update a page
+3. check if book lay-out does not break
+4. create pull request
+
+## Adding a new page
+
+When creating a new page following must be taken into account:
+* add your new page to nav.adoc
+* add your new page to asciidoctor index.adoc
+* when using xref to link to other Antora pages add a tag website-links[]
+
+For more information take a look at our [Contribution Guide](https://www.project-hop.org/community/contributing/) or feel free to ask us question on our [Chat](https://chat.project-hop.org)
\ No newline at end of file
diff --git a/generate_navigation.sh b/generate_navigation.sh
new file mode 100755
index 0000000..c568ea7
--- /dev/null
+++ b/generate_navigation.sh
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+#remove current list of plugins
+< ./hop-user-manual/modules/ROOT/nav.adoc sed '/::=START/,/::=END/{/::=START/!{/::=END/!d}}' > ./hop-user-manual/modules/ROOT/nav_temp.adoc
+
+#replace nav with empty
+cp ./hop-user-manual/modules/ROOT/nav_temp.adoc ./hop-user-manual/modules/ROOT/nav.adoc
+
+#move to plugins directory
+cd ./hop-user-manual/modules/ROOT/pages/plugins/
+
+
+#loop over adoc files
+FILE_LIST=""
+for f in $(find . -type f -name '*.adoc' ! -name 'plugins.adoc' -exec bash -c 'echo -n '{}':; echo '{}' | grep -o / | wc -l | sort' \; | LC_ALL=C sort -r)
+do
+	#get details
+	NESTING_LEVEL=$(($(awk -F  ":" '{print $2}' <<< $f)+1));
+	FILE_LOCATION=$(awk -F  ":" '{print $1}' <<< $f | cut -c3-)
+	FILE_PATH=$(echo "$FILE_LOCATION" | cut -f1 -d/)
+	FILE_NAME=$(grep -m 1 -nr "=" $(awk -F  ":" '{print $1}' <<< $f) | awk -F  "=" '{print $2}' | sed -e 's/^[[:space:]]*//');
+	NESTING_STARS=$(printf '*%.0s' $(seq $NESTING_LEVEL))
+	FILE_LIST="${FILE_LIST}/$FILE_LOCATION;$FILE_NAME;$NESTING_STARS;$FILE_PATH\n"
+done
+echo -e "$FILE_LIST" | head -c -1 > /tmp/nav-unsorted 
+
+#read sorted file
+while read -r line
+do
+	#get sorted details
+	FILE_LOCATION=$(echo "$line" | cut -f1 -d\;)
+	FILE_NAME=$(echo "$line" | cut -f2 -d\;)
+	NESTING_STARS=$(echo "$line" | cut -f3 -d\;)
+		
+	#create xref
+	NEW_LINE="$NESTING_STARS xref:plugins$FILE_LOCATION[$FILE_NAME]"
+	
+	#add xref to file
+	awk "/::=START/ { print; print \"$(echo "$NEW_LINE")\"; next }1" ../../nav.adoc > ../../nav_temp.adoc
+	cp ../../nav_temp.adoc ../../nav.adoc
+	echo """$NEW_LINE"""
+done < <(sort --field-separator=';' -k4,4 -k2,2r /tmp/nav-unsorted)
+
+#remove temp
+rm /tmp/nav-unsorted
+rm ../../nav_temp.adoc
+
+#go back to root
+cd ../../../../..
+
+
+#generate asciidoc index based on antora naviagtion file
+
+#remove current list
+< ./hop-user-manual/modules/.asciidoctor/pages/index.adoc sed '/::=START/,/::=END/{/::=START/!{/::=END/!d}}' > ./hop-user-manual/modules/.asciidoctor/pages/index_temp.adoc
+
+#replace nav with empty
+cp ./hop-user-manual/modules/.asciidoctor/pages/index_temp.adoc ./hop-user-manual/modules/.asciidoctor/pages/index.adoc
+
+#reverse file order
+tac ./hop-user-manual/modules/ROOT/nav.adoc > /tmp/nav_reversed.adoc
+
+#read nav.adoc
+
+while read p; do
+	#count * in line
+  	echo "Line: $p"
+	NESTING_LEVEL=$(echo "$p" | tr -d -c '*' | awk '{ print length; }')
+	NESTING_LEVEL=$(($NESTING_LEVEL-1))
+	echo "Nesting Level: $NESTING_LEVEL"
+
+	if (($NESTING_LEVEL >= 0)) 
+	then
+		# if [ $NESTING_LEVEL -eq 0 ]
+		# then
+			# NEW_LINE="include::{sourcepath}/$(grep -oP '(?<=\:).*?(?=\[)' <<< "$p")"
+		# else
+			NEW_LINE="include::{sourcepath}/$(grep -oP '(?<=\:).*?(?=\[)' <<< "$p")[leveloffset=+$NESTING_LEVEL]"
+		# fi
+	
+	echo "File Path: $NEW_LINE"
+	awk "/::=START/ { print; print \"$(echo "$NEW_LINE")\"; next }1" ./hop-user-manual/modules/.asciidoctor/pages/index.adoc > ./hop-user-manual/modules/.asciidoctor/pages/index_temp.adoc
+	cp ./hop-user-manual/modules/.asciidoctor/pages/index_temp.adoc ./hop-user-manual/modules/.asciidoctor/pages/index.adoc
+	
+	fi
+
+
+done < /tmp/nav_reversed.adoc
+
+#cleanup
+rm /tmp/nav_reversed.adoc
+rm ./hop-user-manual/modules/.asciidoctor/pages/index_temp.adoc
+
+
diff --git a/hop-dev-manual/antora.yml b/hop-dev-manual/antora.yml
new file mode 100644
index 0000000..e76034d
--- /dev/null
+++ b/hop-dev-manual/antora.yml
@@ -0,0 +1,5 @@
+name: dev-manual
+title: Development Documentation
+version: latest
+nav:
+- modules/ROOT/nav.adoc
diff --git a/hop-dev-manual/modules/.asciidoctor/pages/index.adoc b/hop-dev-manual/modules/.asciidoctor/pages/index.adoc
new file mode 100644
index 0000000..93fe06d
--- /dev/null
+++ b/hop-dev-manual/modules/.asciidoctor/pages/index.adoc
@@ -0,0 +1,16 @@
+:author: Project Hop
+:email: info@project-hop.org
+:sectnums:
+:sectnumlevels: 5
+:toc:
+:toc-title: Hop Technical Guide
+:toc: left
+:toclevels: 5
+
+:description: This guide will help you with more complex installations and configurations.
+:keywords: hop technical
+:sourcepath: ../../ROOT/pages
+
+= Hop Technical Guide
+
+include::{sourcepath}/getting-started.adoc[]
\ No newline at end of file
diff --git a/hop-dev-manual/modules/.asciidoctor/pom.xml b/hop-dev-manual/modules/.asciidoctor/pom.xml
new file mode 100644
index 0000000..3172828
--- /dev/null
+++ b/hop-dev-manual/modules/.asciidoctor/pom.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>hop-dev-manual</artifactId>
+        <groupId>org.hop.doc</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.hop.doc</groupId>
+    <artifactId>hop-dev-manual-asciidoctor</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <name>Hop Development Manual</name>
+    <description></description>
+    <packaging>pom</packaging>
+    <url>http://project-hop.org</url>
+
+    <properties>
+        <output.filename>hop-dev-manual</output.filename>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>hop-doc-resources</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+        <!--Use resources plugin to grab images from other module for PDF build-->
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>copy-resource-one</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+
+                        <configuration>
+                            <outputDirectory>./target/assets/images</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../ROOT/assets/images</directory>
+                                    <includes>
+                                        <include>**</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <version>1.6.0</version>
+                <configuration>
+                    <resourceBundles>
+                        <resourceBundle>org.hop.doc:hop-doc-resources:${project.version}</resourceBundle>
+                    </resourceBundles>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>2.0.0-RC.1</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctor-maven-plugin</artifactId>
+                        <version>${asciidoctor.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-pdf</artifactId>
+                        <version>${asciidoctorj.pdf.version}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <sourceDirectory>pages</sourceDirectory>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>output-html</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>html</backend>
+                            <doctype>book</doctype>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>output-pdf-book</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>pdf</backend>
+                            <doctype>book</doctype>
+                            <attributes>
+                                <pdf-stylesdir>${project.basedir}/target/maven-shared-archive-resources/themes</pdf-stylesdir>
+                                <pdf-style>hop</pdf-style>
+                            </attributes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/hop-dev-manual/modules/ROOT/assets/.placeholder b/hop-dev-manual/modules/ROOT/assets/.placeholder
new file mode 100644
index 0000000..e69de29
diff --git a/hop-dev-manual/modules/ROOT/nav.adoc b/hop-dev-manual/modules/ROOT/nav.adoc
new file mode 100644
index 0000000..024cdef
--- /dev/null
+++ b/hop-dev-manual/modules/ROOT/nav.adoc
@@ -0,0 +1 @@
+* xref:getting-started.adoc[Getting started]
\ No newline at end of file
diff --git a/hop-dev-manual/modules/ROOT/pages/getting-started.adoc b/hop-dev-manual/modules/ROOT/pages/getting-started.adoc
new file mode 100644
index 0000000..bdebade
--- /dev/null
+++ b/hop-dev-manual/modules/ROOT/pages/getting-started.adoc
@@ -0,0 +1,57 @@
+[[GettingStarted-GettingStarted]]
+= Getting Started
+
+Welcome to the Hop project! The size of the codebase can appear to be a bit daunting at first so remember: *Don't Panic*!
+
+When it comes down to it the codebase is fairly simple in structure.
+
+Let's go over the main modules in the source code:
+
+== Core
+
+Like the name suggests this module contains the essentials to bootstrap Hop. It has the following types of things on board:
+
+- Tools: *hop-encrypt*
+- The plugin registry which keeps track of all the plugins: *PluginRegistry*
+- Core data types: *IValueMeta, ValueMetaString, ...*
+- Rows of data: *IRowMeta, RowMeta*
+- Logging: *HopLogStore, ILogChannel,...*
+- Generic relational database handling: *Database, IDatabaseMeta, ...*
+- Internationalization a.k.a. i18n to translate stuff: *BaseMessages*
+- Password obfuscation and encryption: *Encr*
+- Other utility classes like: *Const*
+- Plugin types: *LoggingPluginType, ValueMetaPluginType, DatabasePluginType, ExtensionPointPluginType, TwoWayPasswordEncoderPluginType*
+- Bootstrap everything in core with : *HopClientEnvironment.init()*
+
+== Engine
+
+This module contains the actual framework to handle pipelines and workflows.
+
+- Tools: *hop-server, hop-run*
+- Pipelines : *IPipelineMeta, Pipeline, IPipelineEngine, ...*
+- Workflows : *IWorkflowMeta, Workflow, ...*
+- Web server: *HopServer, StartPipelineServlet, ...*
+- Auditing: *AuditManager, AuditEvent, ...*
+- Other stuff worth mentioning: partitioning, lineage, ...
+- Plugin types: *RowDistributionPluginType, TransformPluginType, TransformDialogFragmentType, PartitionerPluginType, JobEntryPluginType,JobEntryDialogFragmentType, LogTablePluginType, LifecyclePluginType, HopLifecyclePluginType, HopServerPluginType, CompressionPluginType, AuthenticationProviderPluginType, AuthenticationConsumerPluginType, PipelineEnginePluginType*
+- Bootstrap everything in engine with : *HopEnvironment.init()*
+
+== UI
+
+This module obviously contains everything related to the Hop GUI
+
+- Tools: *hop-gui, hop-translate*
+- Hop GUI: *HopGui, HopDataOrchestrationPerspective, HopPipelineFileType, ...*
+- Translator, a tool to help you translate Hop itself: *Translator*
+- The rest is mostly a collection of re-usable dialogs and widgets
+
+== Metastore
+
+This module contains the core metadata serialization API for every shared object in Hop
+
+== Plugins
+
+The plugins module contains all the functionality in Hop which is not absolutely strictly essential.  This means that you will find a lot of transforms and actions in this module.
+You can use this collection as a series of examples on how to build plugins for Hop.
+
+
diff --git a/hop-dev-manual/modules/ROOT/pages/index.adoc b/hop-dev-manual/modules/ROOT/pages/index.adoc
new file mode 100644
index 0000000..2fa3519
--- /dev/null
+++ b/hop-dev-manual/modules/ROOT/pages/index.adoc
@@ -0,0 +1,5 @@
+= Index Page
+
+* xref:getting-started.adoc[Getting started]
+* xref:porting-kettle-plugins.adoc[Porting Kettle plugins]
+
diff --git a/hop-dev-manual/modules/ROOT/pages/porting-kettle-plugins.adoc b/hop-dev-manual/modules/ROOT/pages/porting-kettle-plugins.adoc
new file mode 100644
index 0000000..57507dd
--- /dev/null
+++ b/hop-dev-manual/modules/ROOT/pages/porting-kettle-plugins.adoc
@@ -0,0 +1,92 @@
+[[PortingKettlePlugins-PortingKettlePlugins]]
+= Porting Kettle Plugins
+
+== Change maven dependencies
+
+You no longer need a Pentaho specific *$HOME/.m2/settings.xml*
+
+- Change group *pentaho-kettle* to *org.hop*
+- Change dependency *kettle-core* to *hop-core*
+- Change dependency *kettle-engine* to *hop-engine*
+- Change dependency *kettle-ui-swt* to *hop-ui-swt*
+
+== API changes
+
+=== Interface naming
+
+All interface classes have changed from <Name>Interface to I<Name>.
+For example: *RowMetaInterface -> IRowMeta*
+
+=== Transformations
+
+Transformations are now called Pipelines.  This means that the corresponding classes have changed.
+
+For example:
+- TransMeta is now called *PipelineMeta*
+- Trans is now called *Pipeline*
+
+=== Steps
+
+Steps are now called Transforms.  For example:
+
+- StepMeta is now called *TransformMeta*
+- StepMetaInterface is now called *ITransformMeta*
+- BaseStep is now called *BaseTransform*
+- StepDataInterface is now called *ITransformData*
+
+...and so on
+
+=== Transform Generics
+
+ITransform no longer expects you to pass ITransformMeta and ITransformData classes in the following methods:
+
+- processRow()
+- init()
+- dispose()
+- stopRunning()
+
+This greatly simplifies the code.
+Your need to let Hop know what the relationship is between your implementation of ITransform, ITransformMeta, ITransformData, for example:
+
+```
+public class Sample extends BaseTransform<SampleMeta, SampleData> implements ITransform<SampleMeta, SampleData> {
+
+ ...
+
+}
+```
+
+The same is true for your implementation of ITransformMeta:
+
+```
+public class SampleMeta extends BaseTransformMeta implements ITransformMeta<Sample, SampleData> {
+
+ ...
+
+}
+```
+
+== Repository
+
+Any references to Repository, including parameters and the saveRep() and loadRep() methods in Transforms and Actions can be safely removed
+
+== Slave Servers and Database Connections
+
+These objects are no longer stored in a Pipeline or a Workflow, they are now fully shared objects so any references of those in the interface methods of Transforms and Actions can be safely removed:
+
+- List<DatabaseMeta> databases
+- List<SlaveServer> slaveServers
+
+
+== MetaStore
+
+MetaStore elements can now be managed in a standard way.  In your transform dialogs you can use the widget:
+
+*MetaSelectionLine<IHopMetaStoreElement>*
+
+This will take care of adding label, tooltip, combo box and a few buttons to manage the metastore elements.
+
+If you want your own MetaStore element types to appear in the Hop GUI when creating, editing or deleting elements, create a new class implementing *IGuiMetaStorePlugin<IHopMetaStoreElement>*.
+Provide this class with a *@GuiPlugin* annotation as well as *@GuiMetaStoreElement*.
+
+
diff --git a/hop-dev-manual/pom.xml b/hop-dev-manual/pom.xml
new file mode 100644
index 0000000..31567cb
--- /dev/null
+++ b/hop-dev-manual/pom.xml
@@ -0,0 +1,31 @@
+
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.hop.doc</groupId>
+        <artifactId>hop-doc</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.hop.doc</groupId>
+    <artifactId>hop-dev-manual</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <name>Hop Development Manual Wrapper</name>
+    <description></description>
+    <packaging>pom</packaging>
+    <url>http://project-hop.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <modules>
+        <module>modules/.asciidoctor</module>
+    </modules>
+    
+</project>
\ No newline at end of file
diff --git a/hop-doc-resources/pom.xml b/hop-doc-resources/pom.xml
new file mode 100644
index 0000000..002dfdc
--- /dev/null
+++ b/hop-doc-resources/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>hop-doc</artifactId>
+        <groupId>org.hop.doc</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>hop-doc-resources</artifactId>
+    <name>Hop Documentation Resources</name>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <version>1.6.0</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>bundle</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <includes>
+                        <include>**/*.yml</include>
+                    </includes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/hop-doc-resources/src/main/resources/themes/hop-theme.yml b/hop-doc-resources/src/main/resources/themes/hop-theme.yml
new file mode 100644
index 0000000..50e7c60
--- /dev/null
+++ b/hop-doc-resources/src/main/resources/themes/hop-theme.yml
@@ -0,0 +1,7 @@
+title_page:
+  align: left
+
+page:
+  layout: portrait
+  margin: [0.75in, 1in, 0.75in, 1in]
+  size: A4
diff --git a/hop-tech-manual/README.md b/hop-tech-manual/README.md
new file mode 100644
index 0000000..1677522
--- /dev/null
+++ b/hop-tech-manual/README.md
@@ -0,0 +1,7 @@
+# Hop Technical manual
+The asciidoc documents in this repository are used to generate the documentation that is available on the hop [website](https://www.project-hop.org/technical/latest)
+
+## Contributing
+To contribute to this documentation create a pull request adding new content to the existing pages or add new pages to the repoitory.
+
+The document structure is represented by the [nav.adoc](modules/ROOT/nav.adoc) file add an xref in this file when creating a new page.
\ No newline at end of file
diff --git a/hop-tech-manual/antora.yml b/hop-tech-manual/antora.yml
new file mode 100644
index 0000000..6a342b4
--- /dev/null
+++ b/hop-tech-manual/antora.yml
@@ -0,0 +1,5 @@
+name: tech-manual
+title: Technical Documentation
+version: latest
+nav:
+- modules/ROOT/nav.adoc
diff --git a/hop-tech-manual/modules/.asciidoctor/pages/index.adoc b/hop-tech-manual/modules/.asciidoctor/pages/index.adoc
new file mode 100644
index 0000000..1d352a3
--- /dev/null
+++ b/hop-tech-manual/modules/.asciidoctor/pages/index.adoc
@@ -0,0 +1,17 @@
+:author: Project Hop
+:email: info@project-hop.org
+:sectnums:
+:sectnumlevels: 5
+:toc:
+:toc-title: Hop Technical Guide
+:toc: left
+:toclevels: 5
+
+:description: This guide will help you with more complex installations and configurations.
+:keywords: hop technical
+:sourcepath: ../../ROOT/pages
+
+= Hop Technical Guide
+
+include::{sourcepath}/getting-started.adoc[]
+include::{sourcepath}/hop-uit.adoc[]
diff --git a/hop-tech-manual/modules/.asciidoctor/pom.xml b/hop-tech-manual/modules/.asciidoctor/pom.xml
new file mode 100644
index 0000000..5c75107
--- /dev/null
+++ b/hop-tech-manual/modules/.asciidoctor/pom.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>hop-tech-manual</artifactId>
+        <groupId>org.hop.doc</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.hop.doc</groupId>
+    <artifactId>hop-tech-manual-asciidoctor</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <name>Hop Technical Manual</name>
+    <description></description>
+    <packaging>pom</packaging>
+    <url>http://project-hop.org</url>
+
+    <properties>
+        <output.filename>hop-tech-manual</output.filename>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>hop-doc-resources</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+        <!--Use resources plugin to grab images from other module for PDF build-->
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>copy-resource-one</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+
+                        <configuration>
+                            <outputDirectory>./target/assets/images</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../ROOT/assets/images</directory>
+                                    <includes>
+                                        <include>**</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <version>1.6.0</version>
+                <configuration>
+                    <resourceBundles>
+                        <resourceBundle>org.hop.doc:hop-doc-resources:${project.version}</resourceBundle>
+                    </resourceBundles>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>2.0.0-RC.1</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctor-maven-plugin</artifactId>
+                        <version>${asciidoctor.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-pdf</artifactId>
+                        <version>${asciidoctorj.pdf.version}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <sourceDirectory>pages</sourceDirectory>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>output-html</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>html</backend>
+                            <doctype>book</doctype>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>output-pdf-book</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>pdf</backend>
+                            <doctype>book</doctype>
+                            <attributes>
+                                <pdf-stylesdir>${project.basedir}/target/maven-shared-archive-resources/themes</pdf-stylesdir>
+                                <pdf-style>hop</pdf-style>
+                            </attributes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/hop-tech-manual/modules/ROOT/assets/.placeholder b/hop-tech-manual/modules/ROOT/assets/.placeholder
new file mode 100644
index 0000000..e69de29
diff --git a/hop-tech-manual/modules/ROOT/nav.adoc b/hop-tech-manual/modules/ROOT/nav.adoc
new file mode 100644
index 0000000..3ef2732
--- /dev/null
+++ b/hop-tech-manual/modules/ROOT/nav.adoc
@@ -0,0 +1 @@
+* xref:getting-started.adoc[Getting started]
diff --git a/hop-tech-manual/modules/ROOT/pages/getting-started.adoc b/hop-tech-manual/modules/ROOT/pages/getting-started.adoc
new file mode 100644
index 0000000..881c821
--- /dev/null
+++ b/hop-tech-manual/modules/ROOT/pages/getting-started.adoc
@@ -0,0 +1,2 @@
+[[GettingStarted-GettingStarted]]
+= Getting Started
diff --git a/hop-tech-manual/modules/ROOT/pages/hop-uit.adoc b/hop-tech-manual/modules/ROOT/pages/hop-uit.adoc
new file mode 100644
index 0000000..a04e1fc
--- /dev/null
+++ b/hop-tech-manual/modules/ROOT/pages/hop-uit.adoc
@@ -0,0 +1,78 @@
+[[hop-uit]]
+= Hop Ultimate Import Tool
+
+The Hop Ultimate Import Tool converts Pentaho Data Integration (PDI) files to the equivalent Hop files. A conversion is required because various tags of the XML based file format have changed. In some cases also content in the XML file has changed. One additional important difference is that Hop aims to be completely metadata driven and has removed database connection information from the XML file into to separate database metadata files. Hop provides a new and enhanced way to work with  [...]
+
+Pentaho PDI creates files for jobs with the extension .kjb and files for transformations with the extension .ktr. The tool converts these to the equivalent files for Hop workflows with the extension of .hwf and files for pipelines with the extension .hpl.
+
+The tool parses the XML files in a given input folder and converts the relevant tags and other information in the files. Subfolders in the input folder are processed recursively. Database connection information is extracted and Hop database metadata files are created in an environment base folder. Finally the resulting Hop files are written to a given output folder.
+
+The recommendation is to specify a Hop config directory when running the tool. In this directory, important and required system information used by the Hop Gui are stored. It also contains information about the configuration for one or multiple environments that have been created. The Hop Ultimate Import Tool will output the generated metadata files to this directory and thus make them readily available to the Hop Gui (required restart).
+
+NOTE: last update: 13th June 2020
+
+== Building the Tool from Source
+
+The tool is available freely under the Apache 2 licence at: https://github.com/uwegeercken/hop-uit
+
+Clone the repository and run a "mvn clean install" to build the package.
+
+In the folder named "target" there will be following files and folders:
+
+* a folder "lib" with all dependent libraries
+* the hop-uit library file: hop-uit-<version>.jar
+* a log4j2.properties file
+* a shell script hop-uit.sh to run the tool.
+
+NOTE: You will need to change the file permissions on the hop-uit.sh script so that the file is executable.
+
+== Conversion Process
+Below are the details of the conversion process.
+
+=== General
+The tool reads files from a given input folder and outputs the converted files to a given output folder. All files from the input folder are converted. In case a single filename is specified using the -f argument, then only this file is converted. Conversion of multiple single files or folders is possible by specifying the -f flag multiple times. The converted files can then be opened in the Hop GUI or otherwise be run on the command line or on a Hop server.
+
+If no input folder and/or no output folder is defined, the tool will display a help text and exit. Also, if the argument -h or the argument --help is passed the help text is displayed and the tool exits.
+
+Optionally a folder pointing to the Hop config directory may be specified.
+
+=== Parsing of Files
+The tool parses all files independent of their extension. The process looks for a <job> root tag for .kjb files and for a <transformation> root tag for .ktr files. If the tag is found, the relevant files are converted. Other files are ignored and are not copied to the output folder.
+
+=== Environment Folder
+The Hop platform allows the user to create environment configurations. These can be used to re-use the same workflow or pipeline using different configurations - e.g. for a development environment, an environment for testing and a production environment.
+
+The Hop Ultimate Import Tool creates a folder "hop-uit-environment" in the output folder. This folder represents a Hop environment base folder. Database metadata files from the conversion are created in a subfolder of this folder.
+
+If a Hop config directory is defined in the system variable HOP_CONFIG_FOLDER or it is specified by passing the "-c" flag as an argument, then an environment metadata file is created in this location instead of the output folder as described in the paragraph before. In this case, without further manual interaction, this will make the environment configuration available to the Hop platform and allow the user to switch to this environment from within the Hop GUI and have all environment co [...]
+
+If no system variable HOP_CONFIG_FOLDER and no -c flag is specified, then the environment metadata file is created in the output folder specified. After the comversion process is complete, it can be copied from this folder to the folder where the Hop platform is installed: /[Hop installation folder]/config/environments/metastore/Hop Environment.
+
+Alternatively - after conversion -a new environment can be also defined manually in the Hop GUI. In this case a new environment needs to be created where the environment base folder points to the "hop-uit-environment" folder that was created during the conversion process.
+
+At a later stage additional environment related features may be implemented.
+
+=== Logging
+The tool uses log4j2 to output details of the conversion process. The log4j2.properties file can be adjusted to log to a different destination (e.g. a file) or to adjust the log level. A log level of "debug" will provide much more details about the conversion process.
+
+== Usage
+The tool can be run from the command line. Input folder and output folder are mandatory arguments. The input folder must exist. If the output folder does not exist, it will be created. If multiple single files or folders shall be converted specify the -f argument for each file or folder.
+
+Existing files in the output folder structure will not be overwritten.
+
+----
+./hop-uit.sh -i=[inputfolder] -o=[outputfolder] -f=[file name] -c=[configfolder]
+----
+
+* [inputfolder] : required. path to the folder where the .ktr or .kjb files are located
+* [outputfolder] : required. path to the folder where the converted ktr files (hpl files) are output to
+* [file name] : optional. name of a ktr or kjb file to convert. argument may be specified multiple times.
+* [configfolder] : optional. path to the Hop config folder
+
+=== Examples:
+----
+./hop-uit.sh -i=/home/me/input -o=/home/me/output
+./hop-uit.sh -i=/home/me/input -o=/home/me/output -c=/home/me/hop/config
+./hop-uit.sh -i=/home/me/input -o=/home/me/output -f=myfile.ktr
+./hop-uit.sh -i=/home/me/input -o=/home/me/output -f=myfile1.ktr -f=myfile2.ktr
+----
diff --git a/hop-tech-manual/modules/ROOT/pages/index.adoc b/hop-tech-manual/modules/ROOT/pages/index.adoc
new file mode 100644
index 0000000..4642387
--- /dev/null
+++ b/hop-tech-manual/modules/ROOT/pages/index.adoc
@@ -0,0 +1,4 @@
+= Index Page
+
+* xref:getting-started.adoc[Getting started]
+* xref:hop-uit.adoc[Hop Ultimate Import Tool]
diff --git a/hop-tech-manual/pom.xml b/hop-tech-manual/pom.xml
new file mode 100644
index 0000000..7bce206
--- /dev/null
+++ b/hop-tech-manual/pom.xml
@@ -0,0 +1,31 @@
+
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.hop.doc</groupId>
+        <artifactId>hop-doc</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.hop.doc</groupId>
+    <artifactId>hop-tech-manual</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <name>Hop Technical Manual Wrapper</name>
+    <description></description>
+    <packaging>pom</packaging>
+    <url>http://project-hop.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <modules>
+        <module>modules/.asciidoctor</module>
+    </modules>
+    
+</project>
\ No newline at end of file
diff --git a/hop-user-manual/README.md b/hop-user-manual/README.md
new file mode 100644
index 0000000..230d699
--- /dev/null
+++ b/hop-user-manual/README.md
@@ -0,0 +1,7 @@
+# Hop user manual
+The asciidoc documents in this repository are used to generate the documentation that is available on the hop [website](https://www.project-hop.org/manual/latest)
+
+## Contributing
+To contribute to this documentation create a pull request adding new content to the existing pages or add new pages to the repoitory.
+
+The document structure is represented by the [nav.adoc](modules/ROOT/nav.adoc) file add an xref in this file when creating a new page.
\ No newline at end of file
diff --git a/hop-user-manual/antora.yml b/hop-user-manual/antora.yml
new file mode 100644
index 0000000..5021f52
--- /dev/null
+++ b/hop-user-manual/antora.yml
@@ -0,0 +1,5 @@
+name: manual
+title: User manual
+version: latest
+nav:
+- modules/ROOT/nav.adoc
diff --git a/hop-user-manual/modules/.asciidoctor/assembly-jar.xml b/hop-user-manual/modules/.asciidoctor/assembly-jar.xml
new file mode 100644
index 0000000..85b135a
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assembly-jar.xml
@@ -0,0 +1,22 @@
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+    <id>assembly-jar</id>
+    <includeBaseDirectory>true</includeBaseDirectory>
+
+    <formats>
+        <format>jar</format>
+    </formats>
+    <fileSets>
+        <fileSet>
+            <directory>${project.build.directory}/assets/</directory>
+            <outputDirectory>/assets/</outputDirectory>
+        </fileSet>
+    </fileSets>
+    <files>
+        <file>
+            <source> ${project.build.directory}/generated-docs/index.html</source>
+            <outputDirectory>/pages/</outputDirectory>
+        </file>
+    </files>
+</assembly>
\ No newline at end of file
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/generic_connection.png b/hop-user-manual/modules/.asciidoctor/assets/images/generic_connection.png
new file mode 100644
index 0000000..5f398d7
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/generic_connection.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-add-transform.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-add-transform.png
new file mode 100644
index 0000000..4c8ae98
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-add-transform.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-add-two-transforms.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-add-two-transforms.png
new file mode 100644
index 0000000..1a7c063
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-add-two-transforms.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-click-anywhere.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-click-anywhere.png
new file mode 100644
index 0000000..6c96ab3
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-click-anywhere.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-create-hop.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-create-hop.png
new file mode 100644
index 0000000..2a69a73
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-create-hop.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-dialog.png
new file mode 100644
index 0000000..8961d69
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-pipeline.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-pipeline.png
new file mode 100644
index 0000000..4765dc2
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-pipeline.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-results.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-results.png
new file mode 100644
index 0000000..192c842
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-debug-results.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-execution-results-metrics.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-execution-results-metrics.png
new file mode 100644
index 0000000..02ac9a2
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-execution-results-metrics.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-hop-gui.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-hop-gui.png
new file mode 100644
index 0000000..2131fa6
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-hop-gui.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-dialog.png
new file mode 100644
index 0000000..bafedbd
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-pipeline.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-pipeline.png
new file mode 100644
index 0000000..355bad1
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-pipeline.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave-config.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave-config.png
new file mode 100644
index 0000000..b4db566
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave-config.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave-run-config.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave-run-config.png
new file mode 100644
index 0000000..f6eda64
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave-run-config.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave.png
new file mode 100644
index 0000000..6f1433a
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-slave.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-transform.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-transform.png
new file mode 100644
index 0000000..91db819
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-transform.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-abort.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-abort.png
new file mode 100644
index 0000000..36a3ab7
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-abort.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-actions.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-actions.png
new file mode 100644
index 0000000..d6eb48c
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-actions.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-pipeline-action.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-pipeline-action.png
new file mode 100644
index 0000000..7325975
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow-pipeline-action.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow.png
new file mode 100644
index 0000000..d289206
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-new-workflow.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-pipeline-toolbar.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-pipeline-toolbar.png
new file mode 100644
index 0000000..4d6da40
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-pipeline-toolbar.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-dialog.png
new file mode 100644
index 0000000..a603322
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-pipeline.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-pipeline.png
new file mode 100644
index 0000000..33f7b86
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-pipeline.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-results.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-results.png
new file mode 100644
index 0000000..a057dc9
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-preview-results.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-configuration-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-configuration-dialog.png
new file mode 100644
index 0000000..7a489d6
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-configuration-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-pipeline-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-pipeline-dialog.png
new file mode 100644
index 0000000..270c1f6
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-pipeline-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-config-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-config-dialog.png
new file mode 100644
index 0000000..b8c548d
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-config-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-dialog.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-dialog.png
new file mode 100644
index 0000000..69777d0
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-dialog.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-logging.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-logging.png
new file mode 100644
index 0000000..40a7fb3
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-logging.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-metrics.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-metrics.png
new file mode 100644
index 0000000..77fd704
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-metrics.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-with-config.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-with-config.png
new file mode 100644
index 0000000..fecf9cd
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-run-workflow-with-config.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-save-pipeline.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-save-pipeline.png
new file mode 100644
index 0000000..b1359b7
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-save-pipeline.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-index.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-index.png
new file mode 100644
index 0000000..59d0915
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-index.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status-after-run-details.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status-after-run-details.png
new file mode 100644
index 0000000..35b7d3c
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status-after-run-details.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status-after-run.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status-after-run.png
new file mode 100644
index 0000000..c005f04
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status-after-run.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status.png
new file mode 100644
index 0000000..6ffee87
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/getting-started-server-status.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/Antu_edit-redo.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/Antu_edit-redo.svg
new file mode 100644
index 0000000..7e7c703
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/Antu_edit-redo.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <path
+      d="m257.75 113.71c-74.42 0-140.28 35.892-181.77 91.16l-75.978-75.995v242.61h242.61l-82.54-82.53c21.931-66.52 84.47-114.58 158.33-114.58 92.16 0 166.79 74.69 166.79 166.8.0001-125.63-101.82-227.45-227.43-227.45"
+      transform="matrix(-.04122 0 0 .04122 21 .998)" fill="#4d4d4d"/>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/Antu_edit-undo.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/Antu_edit-undo.svg
new file mode 100644
index 0000000..0f854b8
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/Antu_edit-undo.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <path
+      d="m257.75 113.71c-74.42 0-140.28 35.892-181.77 91.16l-75.978-75.995v242.61h242.61l-82.54-82.53c21.931-66.52 84.47-114.58 158.33-114.58 92.16 0 166.79 74.69 166.79 166.8.0001-125.63-101.82-227.45-227.43-227.45"
+      transform="matrix(.04122 0 0 .04122 1 .998)" fill="#4d4d4d"/>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/HOP.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/HOP.svg
new file mode 100644
index 0000000..0cf92c8
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/HOP.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<polygon fill="#0E3A5A" points="15,8 12.6,8 3.1,4.6 4.4,8 1,8 1,8.4 4.3,8.4 3.1,11.7 12.4,8.4 15,8.4 "/>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-bottom.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-bottom.svg
new file mode 100644
index 0000000..7869732
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-bottom.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="align-bottom.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="22.627417"
+      inkscape:cx="11.034218"
+      inkscape:cy="7.3764479"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74"
+        width="1.9361738"
+        height="2.0744655"
+        x="-295.66226"
+        y="5.0174847"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect4609"
+        width="0.47103932"
+        height="7.6911559"
+        x="-296.68744"
+        y="0.44491023"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-3"
+        width="1.9361739"
+        height="2.0744655"
+        x="-295.66223"
+        y="1.8734894"
+        transform="rotate(-90)"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-left.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-left.svg
new file mode 100644
index 0000000..2e65f28
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-left.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    id="svg72"
+    version="1.1"
+    viewBox="0 0 8.4666659 8.4666659"
+    height="32"
+    width="32">
+  <defs
+      id="defs66"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      transform="translate(0,-288.53334)"
+      id="layer1">
+    <rect
+        y="289.72552"
+        x="2.0435982"
+        height="2.0744655"
+        width="1.9361738"
+        id="rect74"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        y="288.93954"
+        x="0.9552325"
+        height="7.6911559"
+        width="0.47103932"
+        id="rect4609"
+        style="opacity:1;fill:#000000;fill-opacity:0.99506178;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        y="293.46786"
+        x="2.0749466"
+        height="2.0744655"
+        width="1.9361739"
+        id="rect74-3"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-right.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-right.svg
new file mode 100644
index 0000000..1331d83
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-right.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    id="svg72"
+    version="1.1"
+    viewBox="0 0 8.4666659 8.4666659"
+    height="32"
+    width="32"
+    sodipodi:docname="align-right.svg"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <sodipodi:namedview
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1"
+      objecttolerance="10"
+      gridtolerance="10"
+      guidetolerance="10"
+      inkscape:pageopacity="0"
+      inkscape:pageshadow="2"
+      inkscape:window-width="640"
+      inkscape:window-height="480"
+      id="namedview4692"
+      showgrid="false"
+      inkscape:zoom="52.143555"
+      inkscape:cx="15.662898"
+      inkscape:cy="16"
+      inkscape:current-layer="svg72"/>
+  <defs
+      id="defs66"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <rect
+      style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+      id="rect74"
+      width="1.9361738"
+      height="2.0744655"
+      x="5.2504497"
+      y="1.0653249"/>
+  <rect
+      style="opacity:1;fill:#000000;fill-opacity:0.99506178;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+      id="rect4609"
+      width="0.47103932"
+      height="7.6911559"
+      x="7.6480131"
+      y="0.31993774"/>
+  <rect
+      style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+      id="rect74-3"
+      width="1.9361739"
+      height="2.0744655"
+      x="5.2817984"
+      y="4.8076649"/>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-top.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-top.svg
new file mode 100644
index 0000000..f3ce2be
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/align-top.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    id="svg72"
+    version="1.1"
+    viewBox="0 0 8.4666659 8.4666659"
+    height="32"
+    width="32">
+  <defs
+      id="defs66"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      transform="translate(0,-288.53334)"
+      id="layer1">
+    <rect
+        transform="rotate(-90)"
+        y="4.7906747"
+        x="-291.86316"
+        height="2.0744655"
+        width="1.9361738"
+        id="rect74"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        transform="rotate(-90)"
+        y="0.42600939"
+        x="-289.4295"
+        height="7.6911559"
+        width="0.47103932"
+        id="rect4609"
+        style="opacity:1;fill:#000000;fill-opacity:0.99506178;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        transform="rotate(-90)"
+        y="1.6466794"
+        x="-291.86313"
+        height="2.0744655"
+        width="1.9361739"
+        id="rect74-3"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/back.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/back.svg
new file mode 100644
index 0000000..e823004
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/back.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;}
+	.st1{display:inline;}
+	.st2{fill:#434343;}
+	.st3{display:inline;fill:#424242;}
+	.st4{fill:#414141;}
+</style>
+  <g id="Layer_1_1_" class="st0">
+	<title>stop</title>
+    <g id="ptdjwZ.tif" class="st1">
+		<path class="st2" d="M0.1,3.2h15.7v15.7H0.1V3.2z M2.3,5.2v11.2h11.1V5.2H2.3z"/>
+	</g>
+    <polygon class="st3" points="17,9.4 19.3,11.6 21.5,9.4 22,9.9 19.3,12.6 16.5,9.9 	"/>
+</g>
+  <g>
+	<polygon class="st4" points="5.1,9.7 22,9.7 22,12.3 5.1,12.3 12,19.4 10.1,21.3 0.1,11 10.2,0.7 12.1,2.6 	"/>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/cleanup.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/cleanup.svg
new file mode 100644
index 0000000..2d43d3d
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/cleanup.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;}
+	.st1{display:inline;}
+	.st2{fill:#434343;}
+	.st3{display:inline;fill:#424242;}
+	.st4{fill:#424242;}
+</style>
+  <g id="Layer_1_1_" class="st0">
+	<title>stop</title>
+    <g id="ptdjwZ.tif" class="st1">
+		<path class="st2" d="M0.1,3.2h15.7v15.7H0.1V3.2z M2.3,5.2v11.2h11.1V5.2H2.3z"/>
+	</g>
+    <polygon class="st3" points="17,9.4 19.3,11.6 21.5,9.4 22,9.9 19.3,12.6 16.5,9.9 	"/>
+</g>
+  <polygon class="st4" points="15.4,13.7 14.4,12.7 16.5,12.7 16.5,10.5 10.6,10.5 10.6,16.4 12.8,16.4 12.8,14.3 13.8,15.3 "/>
+  <polygon class="st4" points="2.8,12.7 4.9,12.7 0.3,17.3 1.9,18.9 6.5,14.3 6.5,16.4 8.8,16.4 8.8,10.5 2.8,10.5 "/>
+  <polygon class="st4" points="16.5,6.2 14.4,6.2 19,1.6 17.4,0 12.8,4.6 12.8,2.5 10.6,2.5 10.6,8.4 16.5,8.4 "/>
+  <polygon class="st4" points="6.5,4.6 1.9,0 0.3,1.6 4.9,6.2 2.8,6.2 2.8,8.4 8.8,8.4 8.8,2.5 6.5,2.5 "/>
+  <path class="st4" d="M20.3,15l-4.4,4.4l-1.5-1.5l-1.3,1.3l2.8,2.8l5.7-5.7L20.3,15z"/>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/close.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/close.svg
new file mode 100644
index 0000000..2e7bf85
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/close.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <defs>
+    <style>.cls-1{fill:#434343;}</style>
+  </defs>
+  <title>close</title>
+  <g id="Layer_3" data-name="Layer 3">
+    <rect class="cls-1" x="10.21" y="0.81" width="2.4" height="20.22" transform="translate(11.07 -4.87) rotate(45)"/>
+    <rect class="cls-1" x="10.21" y="0.81" width="2.4" height="20.22" transform="translate(27.21 10.58) rotate(135)"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/debug.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/debug.svg
new file mode 100644
index 0000000..9ddf103
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/debug.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="Layer_2">
+	<g id="Layer_2_1_">
+		<rect fill="none" width="16" height="16"/>
+	</g>
+</g>
+  <g id="art">
+	<g>
+		<polygon fill="#FFFFFF" points="6.1,2.5 3.8,8.9 5,12.2 7.4,13.6 9.3,12.9 12.2,10.6 10.3,3.8 9.6,2.4 		"/>
+    <path fill="#3D6480" d="M16,11.7V9.2c0-0.9-0.7-1.7-1.7-1.7h-1.6c-0.1-0.3-0.3-0.5-0.5-0.8l1.4-1.5C13.8,5,14,4.5,14,4.2V1.7
+			l-1.7-1v3.1c0,0.1,0,0.3-0.1,0.4l-0.9,1c-0.4-0.7-0.6-1.5-0.6-2.6c0-1.2-0.8-2.3-2-2.6v1.6c0,0.4-0.3,0.7-0.7,0.7
+			c-0.4,0-0.7-0.3-0.7-0.7V0c-1.1,0.3-2,1.3-2,2.6c0,1.1-0.3,1.9-0.6,2.6L3.8,4.2C3.7,4.1,3.7,4,3.7,3.8V0.7L2,1.7v2.5
+			c0,0.3,0.1,0.8,0.3,1l1.4,1.5C3.6,7,3.4,7.3,3.3,7.5H1.7C0.8,7.5,0,8.3,0,9.2v2.5l1.7-1V9.9c0-0.4,0.3-0.7,0.7-0.7h0.3
+			c0,0.2,0,0.3,0,0.5c0,0.6,0.1,1.3,0.3,1.8l-1,1.1c-0.2,0.2-0.3,0.6-0.3,0.9V16l1.7-1v-1c0-0.1,0-0.3,0.1-0.4L4,13
+			c0.6,0.7,1.4,1.5,2.4,1.7c0,0,0,0,0.1,0c0.1,0,0.1,0,0.2,0c0,0,1.2,0.6,2.7,0c0.1,0,0.1,0,0.2,0l0.1,0c1-0.3,1.8-1,2.4-1.7
+			l0.5,0.5c0.1,0.1,0.1,0.3,0.1,0.4v1l1.7,1v-2.5c0-0.3-0.1-0.7-0.3-0.9l-1-1.1c0.2-0.6,0.3-1.2,0.3-1.8c0-0.2,0-0.3,0-0.5h0.3
+			c0.4,0,0.7,0.3,0.7,0.7v0.8L16,11.7z M11.2,10.1c0,1.6-1.4,2.9-3.1,2.9c-1.7,0-3.1-1.3-3.1-2.9c0-0.1,0-0.2,0-0.4h0L5,9.4
+			c0,0,0-0.1,0-0.1l0.8-3c0-0.3,0.1-0.6,0.2-0.8l0,0l0,0c0.4-0.7,1.1-1.1,2-1.1c1,0,1.8,0.6,2.1,1.4l0,0l0,0.1c0,0.1,0,0.1,0.1,0.2
+			l0.9,3.3c0,0,0,0,0,0l0.1,0.4h0C11.1,9.9,11.2,10,11.2,10.1z"/>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/distribute-horizontally.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/distribute-horizontally.svg
new file mode 100644
index 0000000..4d4baed
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/distribute-horizontally.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="distribute-horizontally.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="45.254834"
+      inkscape:cx="6.6334329"
+      inkscape:cy="13.292542"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74"
+        width="1.9361739"
+        height="2.0744655"
+        x="3.3213022"
+        y="291.66656"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359674;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-3"
+        width="1.936174"
+        height="2.0744655"
+        x="0.65159398"
+        y="291.65063"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359674;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-4"
+        width="1.936174"
+        height="2.0744655"
+        x="5.9013805"
+        y="291.6412"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/distribute-vertically.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/distribute-vertically.svg
new file mode 100644
index 0000000..e7bea49
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/distribute-vertically.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="distribute-vertically.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="32"
+      inkscape:cx="4.3955456"
+      inkscape:cy="16.663154"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74"
+        width="1.9361738"
+        height="2.0744655"
+        x="-293.60446"
+        y="3.2325137"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-3"
+        width="1.9361739"
+        height="2.0744655"
+        x="-296.27417"
+        y="3.2166057"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-4"
+        width="1.9361739"
+        height="2.0744655"
+        x="-291.02438"
+        y="3.2071607"
+        transform="rotate(-90)"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/job.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/job.svg
new file mode 100644
index 0000000..53299b9
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/job.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#F99C1C;}
+</style>
+  <polygon class="st0" points="11,7 11,5.3 13,5.3 9,1.2 10.2,0 14.2,4 14.2,2.1 16,2.1 16,7 "/>
+  <polygon class="st0" points="9,11 10.7,11 10.7,13 14.8,9 16,10.2 12,14.2 13.9,14.2 13.9,16 9,16 "/>
+  <polygon class="st0" points="5,9 5,10.7 3,10.7 7,14.8 5.8,16 1.8,12 1.8,13.9 0,13.9 0,9 "/>
+  <polygon class="st0" points="7,5 5.3,5 5.3,3 1.2,7 0,5.8 4,1.8 2.1,1.8 2.1,0 7,0 "/>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/pause.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/pause.svg
new file mode 100644
index 0000000..b6ad0fb
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/pause.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#424243;}
+</style>
+  <title>pause</title>
+  <g>
+	<rect x="6.5" y="4.6" class="st0" width="2.6" height="13"/>
+    <rect x="13.1" y="4.6" class="st0" width="2.6" height="13"/>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/print.png b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/print.png
new file mode 100644
index 0000000..a79aa32
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/print.png differ
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/run.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/run.svg
new file mode 100644
index 0000000..f48567f
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/run.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#414242;}
+</style>
+  <title>run</title>
+  <path class="st0" d="M3.6,19l15.7-8L3.6,3V19z M5.2,5.6L15.7,11L5.2,16.4V5.6z"/>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/run_option.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/run_option.svg
new file mode 100644
index 0000000..c63611b
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/run_option.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#414242;}
+</style>
+  <title>run</title>
+  <path class="st0" d="M0,19l15.7-8L0,3V19z M1.6,5.6L12.1,11L1.6,16.4V5.6z"/>
+  <g id="Layer_2_1_">
+	<g>
+		<g>
+			<polygon class="st0" points="17.1,10.4 19.3,12.6 21.5,10.4 22,10.9 19.3,13.6 16.6,10.9 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/show-all.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/show-all.svg
new file mode 100644
index 0000000..904dd21
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/show-all.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="show-all.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="45.254834"
+      inkscape:cx="7.671996"
+      inkscape:cy="15.899998"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842"
+        width="1.6837981"
+        height="1.660412"
+        x="1.0231411"
+        y="289.1832"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-3"
+        width="1.6837981"
+        height="1.660412"
+        x="5.4255714"
+        y="290.99564"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-6"
+        width="1.6837981"
+        height="1.660412"
+        x="1.8065749"
+        y="294.05338"/>
+    <path
+        style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        d="m 2.1865988,290.07188 c 3.928862,1.68964 3.9580945,1.69549 3.9580945,1.69549 l -3.3500562,3.06358 v 0 l -0.6080383,-4.46674 v 0"
+        id="path871"
+        inkscape:connector-curvature="0"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/show-selected.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/show-selected.svg
new file mode 100644
index 0000000..b50f86d
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/show-selected.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="show-selected.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="45.254834"
+      inkscape:cx="7.671996"
+      inkscape:cy="15.899998"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842"
+        width="1.6837981"
+        height="1.660412"
+        x="1.0231411"
+        y="289.1832"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-3"
+        width="1.6837981"
+        height="1.660412"
+        x="5.4255714"
+        y="290.99564"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-6"
+        width="1.6837981"
+        height="1.660412"
+        x="1.8065749"
+        y="294.05338"/>
+    <path
+        style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        d="m 2.1865988,290.07188 c 3.928862,1.68964 3.9580945,1.69549 3.9580945,1.69549 l -3.3500562,3.06358 v 0 l -0.6080383,-4.46674 v 0"
+        id="path871"
+        inkscape:connector-curvature="0"/>
+    <polygon
+        transform="matrix(0.59370318,0,0,0.7770137,-1.1721096,284.24272)"
+        points="16,11.8 15,10.9 11.8,14.1 10.8,13 9.8,14 11.8,16 "
+        id="polygon14"
+        style="fill:#3d6480"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/snap-to-grid.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/snap-to-grid.svg
new file mode 100644
index 0000000..acbcb98
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/snap-to-grid.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="snap-to-grid.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="39.531689"
+      inkscape:cx="11.942076"
+      inkscape:cy="19.76492"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9457181"
+        y="294.92465"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.93985528"
+        y="294.92938"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.93503"
+        y="294.90106"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9881415"
+        y="294.88687"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3-7"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9374499"
+        y="293.34543"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.93158704"
+        y="293.35016"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.9267621"
+        y="293.32184"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9-0"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9798732"
+        y="293.30765"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9374499"
+        y="291.69177"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56-3"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.93158704"
+        y="291.6965"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2-7"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.9267621"
+        y="291.66818"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9-5"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9798732"
+        y="291.65399"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9539864"
+        y="289.93063"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.94812351"
+        y="289.93536"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2-28"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.9432983"
+        y="289.90704"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9964094"
+        y="289.89285"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/stop.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/stop.svg
new file mode 100644
index 0000000..0bd2732
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/stop.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;}
+	.st1{display:inline;}
+	.st2{fill:#434343;}
+	.st3{display:inline;fill:#424242;}
+	.st4{fill:#424243;}
+	.st5{fill:#414242;}
+</style>
+  <g id="Layer_1" class="st0">
+	<title>stop</title>
+    <g id="ptdjwZ.tif" class="st1">
+		<path class="st2" d="M0.1,3.2h15.7v15.7H0.1V3.2z M2.3,5.2v11.2h11.1V5.2H2.3z"/>
+	</g>
+    <polygon class="st3" points="17,9.4 19.3,11.6 21.5,9.4 22,9.9 19.3,12.6 16.5,9.9 	"/>
+</g>
+  <g id="Layer_2">
+	<g>
+		<g id="ptdjwZ.tif_1_">
+			<g>
+				<path class="st4" d="M0.1,3.2c5,0,9.1,0,14.8,0c0,5.7,0,9.8,0,14.8c-5.2,0-9.6,0-14.8,0C0.1,12.8,0.1,8.4,0.1,3.2z M1.6,4.8
+					v11.7h11.7V4.8H1.6z"/>
+			</g>
+		</g>
+    <g>
+			<polygon class="st5" points="17,9.4 19.2,11.6 21.4,9.4 21.9,9.9 19.2,12.6 16.5,9.9 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/trans.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/trans.svg
new file mode 100644
index 0000000..c71e9d7
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/trans.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#1CB24B;}
+</style>
+  <polygon class="st0" points="13.8,10.7 13.8,9 8.9,9 8.9,13.9 10.6,13.9 10.6,12 14.7,16 15.9,14.8 11.9,10.7 "/>
+  <polygon class="st0" points="7.1,13.9 5.4,13.9 5.4,12 1.3,16 0.1,14.8 4.1,10.7 2.2,10.7 2.2,9 7.1,9 "/>
+  <polygon class="st0" points="8.9,7 13.8,7 13.8,5.3 11.9,5.3 15.9,1.2 14.7,0 10.6,4 10.6,2.1 8.9,2.1 "/>
+  <polygon class="st0" points="2.2,7 2.2,5.3 4.1,5.3 0.1,1.2 1.3,0 5.4,4 5.4,2.1 7.1,2.1 7.1,7 "/>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/view-as-xml.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/view-as-xml.svg
new file mode 100644
index 0000000..39b8122
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/view-as-xml.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#424242;}
+</style>
+  <g>
+	<polygon class="st0" points="13.8,5.4 12.7,4.3 8.9,8 8.8,0.1 7.2,0.1 7.2,8 3.3,4.2 2.2,5.4 8,11.2 	"/>
+    <polygon class="st0" points="15.9,8.9 14.2,7.3 14.2,14.3 1.8,14.3 1.8,7.4 0.1,9 0.1,15.9 15.9,15.9 	"/>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/view.svg b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/view.svg
new file mode 100644
index 0000000..a2f5600
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/assets/images/getting-started/icons/view.svg
@@ -0,0 +1,10 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <defs>
+    <style>.cls-1{fill:#434343;}</style>
+  </defs>
+  <title>view</title>
+  <g id="QdVc5y.tif">
+    <path class="cls-1"
+          d="M19.41,10.71v.64a8.09,8.09,0,0,1-8,5.13,8.09,8.09,0,0,1-8-5.13v-.64a8.26,8.26,0,0,1,8-5.12A8.24,8.24,0,0,1,19.41,10.71ZM13.3,7.09a5.13,5.13,0,0,1,.15,7.8,8,8,0,0,0,4.47-3.15,1.09,1.09,0,0,0,0-1.31A8.4,8.4,0,0,0,13.3,7.09Zm-4,7.78A5.09,5.09,0,0,1,9.45,7.1a8.78,8.78,0,0,0-4.54,3.16,1.21,1.21,0,0,0,0,1.57A8.28,8.28,0,0,0,9.28,14.87Z"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/.asciidoctor/assets/images/test_image.jpg b/hop-user-manual/modules/.asciidoctor/assets/images/test_image.jpg
new file mode 100644
index 0000000..92afb4a
Binary files /dev/null and b/hop-user-manual/modules/.asciidoctor/assets/images/test_image.jpg differ
diff --git a/hop-user-manual/modules/.asciidoctor/pages/index.adoc b/hop-user-manual/modules/.asciidoctor/pages/index.adoc
new file mode 100644
index 0000000..49f4c81
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/pages/index.adoc
@@ -0,0 +1,308 @@
+:author: Project Hop
+:email: info@project-hop.org
+:sectnums:
+:sectnumlevels: 5
+:toc:
+:toc-title: Hop Getting Started Guide
+:toc: left
+:toclevels: 5
+
+:description: This getting started guide helps you to quickly get a feeling of what Hop is and how it can make your life easier.
+:keywords: hop gettingstarted
+:sourcepath: ../../ROOT/pages
+
+= Hop User Manual
+
+Website Generated using the online version of the documentation, this documentation can be found http://www.project-hop.org/manual/latest/[here]
+
+//::=START AUTO GENERATED LINKS
+include::{sourcepath}/getting-started.adoc[leveloffset=+0]
+include::{sourcepath}/concepts.adoc[leveloffset=+0]
+include::{sourcepath}/hop-vs-kettle/index.adoc[leveloffset=+0]
+include::{sourcepath}/hop-vs-kettle/hop-vs-kettle.adoc[leveloffset=+1]
+include::{sourcepath}/hop-vs-kettle/if-you-know-kettle.adoc[leveloffset=+1]
+include::{sourcepath}/hop-gui/index.adoc[leveloffset=+0]
+include::{sourcepath}/hop-gui/environments/environments.adoc[leveloffset=+1]
+include::{sourcepath}/hop-gui/pipelines/pipelines.adoc[leveloffset=+1]
+include::{sourcepath}/hop-gui/pipelines/hop-pipeline-editor.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/pipelines/create-pipeline.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/pipelines/run-preview-debug-pipeline.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc[leveloffset=+3]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/beam-direct-pipeline-engine.adoc[leveloffset=+3]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/beam-flink-pipeline-engine.adoc[leveloffset=+3]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/beam-spark-pipeline-engine.adoc[leveloffset=+3]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/local-pipeline-engine.adoc[leveloffset=+3]
+include::{sourcepath}/hop-gui/pipelines/pipeline-run-configurations/remote-pipeline-engine.adoc[leveloffset=+3]
+include::{sourcepath}/hop-gui/pipelines/metadata-injection.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/workflows/workflows.adoc[leveloffset=+1]
+include::{sourcepath}/hop-gui/workflows/create-workflow.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/workflows/run-debug-workflow.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.adoc[leveloffset=+2]
+include::{sourcepath}/hop-gui/variables/variables.adoc[leveloffset=+1]
+include::{sourcepath}/hop-run/index.adoc[leveloffset=+0]
+include::{sourcepath}/hop-server/index.adoc[leveloffset=+0]
+include::{sourcepath}/plugins/plugins.adoc[leveloffset=+0]
+include::{sourcepath}/plugins/transforms.adoc[leveloffset=+1]
+include::{sourcepath}/plugins/transforms/abort.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/constant.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/addsequence.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/addxml.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/checksum.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/fieldschangesequence.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/analyticquery.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/append.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beambigqueryinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beambigqueryoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beampublisher.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beamsubscriber.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beaminput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beamconsume.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beamproduce.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beamoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beamtimestamp.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/beamwindow.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/blockingtransform.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/blockuntiltransformsfinish.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/csvinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/calculator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/dbproc.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/changefileencoding.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/filelocked.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/webserviceavailable.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/clonerow.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/closure.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/columnexists.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/combinationlookup.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/concatfields.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/rowstoresult.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/creditcardvalidator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/cubeinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/cubeoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/datagrid.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/validator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/databasejoin.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/databaselookup.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/delay.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/delete.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/detectemptystream.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/dimensionlookup.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/dummy.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/dynamicsqlrow.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/edi2xml.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/mailinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/excelwriter.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/sql.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/execprocess.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/execsqlrow.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/fileexists.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/filesfromresult.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/filestoresult.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/filterrows.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/fuzzymatch.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/randomvalue.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/getxmldata.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/getslavesequence.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/rowsfromresult.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/getsubfolders.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/systemdata.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/getfilenames.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/getfilesrowcount.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/recordsfromstream.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/gettablenames.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/getvariable.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/groupby.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/httppost.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/http.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/detectlastrow.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/ifnull.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/injector.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/insertupdate.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/jsoninput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/jsonoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/javafilter.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/javascript.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/joinrows.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/ldapinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/ldapoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/ldifinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/loadfileinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/mail.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/mailvalidator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/memgroupby.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/mergejoin.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/mergerows.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/metainject.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/excelinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/exceloutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/multimerge.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/nullif.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/numberrange.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/pgpdecryptstream.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/pgpencryptstream.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/pipelineexcecutor.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/pgbulkloader.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/processfiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/rest.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/propertyinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/regexeval.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/replacestring.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/reservoirsampling.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/denormaliser.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/flattener.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/rowgenerator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/normaliser.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/ssh.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/sqlfileoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/selectvalues.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/syslog.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/setvariable.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/setvaluefield.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/setvalueconstant.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/sort.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/sortedmerge.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/fieldsplitter.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/splitfieldtorows.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/streamlookup.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/streamschemamerge.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/stringoperations.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/stringcut.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/switchcase.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/synchronizeaftermerge.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/tablecompare.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/tableexists.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/tableinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/tableoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/terafast.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/textfileinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/textfileoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/uniquerows.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/uniquerowsbyhashset.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/update.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/userdefinedjavaclass.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/janino.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/valuemapper.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/webservices.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/workflowexecutor.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/propertyoutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/writetolog.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/xmlinputstream.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/xmljoin.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/xmloutput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/xsdvalidator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/xslt.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/yamlinput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/transforms/zipfile.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases.adoc[leveloffset=+1]
+include::{sourcepath}/plugins/databases/as400.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/derby.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/cache.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/db2.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/exasol.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/googlebigquery.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/greenplum.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/sqlbase.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/h2.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/hypersonic.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/universe.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/infinidb.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/infobright.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/mssql.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/mssqlnative.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/mariadb.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/sapdb.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/mysql.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/netezza.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/oracle.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/oraclerdb.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/postgresql.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/redshift.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/snowflake.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/sqlite.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/sybase.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/sybaseiq.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/teradata.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/vectorwise.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/vertica.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/firebird.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/informix.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/ingres.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/interbase.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/kingbasees.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/databases/monetdb.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions.adoc[leveloffset=+1]
+include::{sourcepath}/plugins/actions/abort.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/addresultfilenames.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/checkdbconnection.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/checkfilelocked.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/webserviceavailable.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/xmlwellformed.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/filesexist.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/columnsexist.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/copyfiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/copymoveresultfilenames.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/createfile.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/createfolder.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/dtdvalidator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/pgpdecryptfiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/delay.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/deletefile.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/deletefiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/deletefolders.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/deleteresultfilenames.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/msgboxinfo.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/dostounix.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/pgpencryptfiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/evalfilesmetrics.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/evaluatetablecontent.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/ftpdelete.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/fileexists.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/filecompare.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/folderisempty.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/folderscompare.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/getpop.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/ftp.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/ftpsget.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/sftp.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/http.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/eval.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/mssqlbulkload.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/mail.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/mailvalidator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/movefiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/mysqlbulkfile.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/mysqlbulkload.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/pgpfiles.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/ping.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/pipeline.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/ftpput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/sftpput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/sql.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/sendnagiospassivecheck.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/syslog.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/setvariables.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/shell.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/simpleeval.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/snmptrap.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/success.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/tableexists.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/telnet.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/truncatetables.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/unzip.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/ftpsput.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/pgpverify.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/waitforsql.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/waitforfile.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/workflow.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/writetofile.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/writetolog.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/xsdvalidator.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/xslt.adoc[leveloffset=+2]
+include::{sourcepath}/plugins/actions/zipfile.adoc[leveloffset=+2]
+include::{sourcepath}/samples/samples.adoc[leveloffset=+0]
+include::{sourcepath}/samples/dummy-sample.adoc[leveloffset=+1]
+include::{sourcepath}/faq/faq.adoc[leveloffset=+0]
+include::{sourcepath}/image-testpage.adoc[leveloffset=+0]
+//::=END AUTO GENERATED LINKS
+
+Website Generated using the online version of the documentation, this documentation can be found http://www.project-hop.org/manual/latest/[here]
diff --git a/hop-user-manual/modules/.asciidoctor/pom.xml b/hop-user-manual/modules/.asciidoctor/pom.xml
new file mode 100644
index 0000000..8b2538d
--- /dev/null
+++ b/hop-user-manual/modules/.asciidoctor/pom.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>hop-user-manual</artifactId>
+        <groupId>org.hop.doc</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.hop.doc</groupId>
+    <artifactId>hop-user-manual-asciidoctor</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <name>Hop User Manual</name>
+    <description></description>
+    <packaging>pom</packaging>
+    <url>http://project-hop.org</url>
+
+    <properties>
+        <output.filename>hop-user-manual</output.filename>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>hop-doc-resources</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+        <!--Use resources plugin to grab images from other module for PDF build-->
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>copy-resource-one</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+
+                        <configuration>
+                            <outputDirectory>./target/assets/images</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../ROOT/assets/images</directory>
+                                    <includes>
+                                        <include>**</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <version>1.6.0</version>
+                <configuration>
+                    <resourceBundles>
+                        <resourceBundle>org.hop.doc:hop-doc-resources:${project.version}</resourceBundle>
+                    </resourceBundles>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>2.0.0-RC.1</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctor-maven-plugin</artifactId>
+                        <version>${asciidoctor.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-pdf</artifactId>
+                        <version>${asciidoctorj.pdf.version}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <sourceDirectory>pages</sourceDirectory>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>output-html</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>html</backend>
+                            <doctype>book</doctype>
+                        </configuration>
+                    </execution>
+                    <!--<execution>
+                        <id>output-pdf-book</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>pdf</backend>
+                            <doctype>book</doctype>
+                            <attributes>
+                                <pdf-stylesdir>${project.basedir}/target/maven-shared-archive-resources/themes</pdf-stylesdir>
+                                <pdf-style>hop</pdf-style>
+                            </attributes>
+                        </configuration>
+                    </execution>-->
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <descriptors>
+                                <descriptor>assembly-jar.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/.placeholder b/hop-user-manual/modules/ROOT/assets/.placeholder
new file mode 100644
index 0000000..e69de29
diff --git a/hop-user-manual/modules/ROOT/assets/images/concepts/environments.png b/hop-user-manual/modules/ROOT/assets/images/concepts/environments.png
new file mode 100644
index 0000000..f70527a
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/concepts/environments.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/concepts/pipeline.png b/hop-user-manual/modules/ROOT/assets/images/concepts/pipeline.png
new file mode 100644
index 0000000..b9914b0
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/concepts/pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/concepts/workflow.png b/hop-user-manual/modules/ROOT/assets/images/concepts/workflow.png
new file mode 100644
index 0000000..230ba4a
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/concepts/workflow.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/generic_connection.png b/hop-user-manual/modules/ROOT/assets/images/generic_connection.png
new file mode 100644
index 0000000..5f398d7
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/generic_connection.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-add-transform.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-add-transform.png
new file mode 100644
index 0000000..4c8ae98
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-add-transform.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-add-two-transforms.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-add-two-transforms.png
new file mode 100644
index 0000000..1a7c063
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-add-two-transforms.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-click-anywhere.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-click-anywhere.png
new file mode 100644
index 0000000..6c96ab3
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-click-anywhere.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-create-hop.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-create-hop.png
new file mode 100644
index 0000000..2a69a73
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-create-hop.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-dialog.png
new file mode 100644
index 0000000..8961d69
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-pipeline.png
new file mode 100644
index 0000000..4765dc2
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-results.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-results.png
new file mode 100644
index 0000000..192c842
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-debug-results.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-execution-results-metrics.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-execution-results-metrics.png
new file mode 100644
index 0000000..02ac9a2
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-execution-results-metrics.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-hop-gui.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-hop-gui.png
new file mode 100644
index 0000000..2131fa6
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-hop-gui.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-dialog.png
new file mode 100644
index 0000000..bafedbd
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-pipeline.png
new file mode 100644
index 0000000..355bad1
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave-config.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave-config.png
new file mode 100644
index 0000000..b4db566
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave-config.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave-run-config.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave-run-config.png
new file mode 100644
index 0000000..f6eda64
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave-run-config.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave.png
new file mode 100644
index 0000000..6f1433a
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-slave.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-transform.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-transform.png
new file mode 100644
index 0000000..91db819
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-transform.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-abort.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-abort.png
new file mode 100644
index 0000000..36a3ab7
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-abort.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-actions.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-actions.png
new file mode 100644
index 0000000..d6eb48c
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-actions.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-pipeline-action.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-pipeline-action.png
new file mode 100644
index 0000000..7325975
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow-pipeline-action.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow.png
new file mode 100644
index 0000000..d289206
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-new-workflow.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-pipeline-toolbar.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-pipeline-toolbar.png
new file mode 100644
index 0000000..4d6da40
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-pipeline-toolbar.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-dialog.png
new file mode 100644
index 0000000..a603322
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-pipeline.png
new file mode 100644
index 0000000..33f7b86
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-results.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-results.png
new file mode 100644
index 0000000..a057dc9
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-preview-results.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-configuration-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-configuration-dialog.png
new file mode 100644
index 0000000..7a489d6
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-configuration-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-pipeline-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-pipeline-dialog.png
new file mode 100644
index 0000000..270c1f6
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-pipeline-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-config-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-config-dialog.png
new file mode 100644
index 0000000..b8c548d
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-config-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-dialog.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-dialog.png
new file mode 100644
index 0000000..69777d0
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-logging.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-logging.png
new file mode 100644
index 0000000..40a7fb3
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-logging.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-metrics.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-metrics.png
new file mode 100644
index 0000000..77fd704
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-metrics.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-with-config.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-with-config.png
new file mode 100644
index 0000000..fecf9cd
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-run-workflow-with-config.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-save-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-save-pipeline.png
new file mode 100644
index 0000000..b1359b7
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-save-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-index.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-index.png
new file mode 100644
index 0000000..59d0915
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-index.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status-after-run-details.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status-after-run-details.png
new file mode 100644
index 0000000..35b7d3c
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status-after-run-details.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status-after-run.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status-after-run.png
new file mode 100644
index 0000000..c005f04
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status-after-run.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status.png
new file mode 100644
index 0000000..6ffee87
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/getting-started-server-status.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/Antu_edit-redo.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/Antu_edit-redo.svg
new file mode 100644
index 0000000..7e7c703
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/Antu_edit-redo.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <path
+      d="m257.75 113.71c-74.42 0-140.28 35.892-181.77 91.16l-75.978-75.995v242.61h242.61l-82.54-82.53c21.931-66.52 84.47-114.58 158.33-114.58 92.16 0 166.79 74.69 166.79 166.8.0001-125.63-101.82-227.45-227.43-227.45"
+      transform="matrix(-.04122 0 0 .04122 21 .998)" fill="#4d4d4d"/>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/Antu_edit-undo.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/Antu_edit-undo.svg
new file mode 100644
index 0000000..0f854b8
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/Antu_edit-undo.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <path
+      d="m257.75 113.71c-74.42 0-140.28 35.892-181.77 91.16l-75.978-75.995v242.61h242.61l-82.54-82.53c21.931-66.52 84.47-114.58 158.33-114.58 92.16 0 166.79 74.69 166.79 166.8.0001-125.63-101.82-227.45-227.43-227.45"
+      transform="matrix(.04122 0 0 .04122 1 .998)" fill="#4d4d4d"/>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/HOP.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/HOP.svg
new file mode 100644
index 0000000..0cf92c8
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/HOP.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<polygon fill="#0E3A5A" points="15,8 12.6,8 3.1,4.6 4.4,8 1,8 1,8.4 4.3,8.4 3.1,11.7 12.4,8.4 15,8.4 "/>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-bottom.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-bottom.svg
new file mode 100644
index 0000000..7869732
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-bottom.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="align-bottom.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="22.627417"
+      inkscape:cx="11.034218"
+      inkscape:cy="7.3764479"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74"
+        width="1.9361738"
+        height="2.0744655"
+        x="-295.66226"
+        y="5.0174847"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect4609"
+        width="0.47103932"
+        height="7.6911559"
+        x="-296.68744"
+        y="0.44491023"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-3"
+        width="1.9361739"
+        height="2.0744655"
+        x="-295.66223"
+        y="1.8734894"
+        transform="rotate(-90)"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-left.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-left.svg
new file mode 100644
index 0000000..2e65f28
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-left.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    id="svg72"
+    version="1.1"
+    viewBox="0 0 8.4666659 8.4666659"
+    height="32"
+    width="32">
+  <defs
+      id="defs66"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      transform="translate(0,-288.53334)"
+      id="layer1">
+    <rect
+        y="289.72552"
+        x="2.0435982"
+        height="2.0744655"
+        width="1.9361738"
+        id="rect74"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        y="288.93954"
+        x="0.9552325"
+        height="7.6911559"
+        width="0.47103932"
+        id="rect4609"
+        style="opacity:1;fill:#000000;fill-opacity:0.99506178;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        y="293.46786"
+        x="2.0749466"
+        height="2.0744655"
+        width="1.9361739"
+        id="rect74-3"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-right.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-right.svg
new file mode 100644
index 0000000..1331d83
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-right.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    id="svg72"
+    version="1.1"
+    viewBox="0 0 8.4666659 8.4666659"
+    height="32"
+    width="32"
+    sodipodi:docname="align-right.svg"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <sodipodi:namedview
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1"
+      objecttolerance="10"
+      gridtolerance="10"
+      guidetolerance="10"
+      inkscape:pageopacity="0"
+      inkscape:pageshadow="2"
+      inkscape:window-width="640"
+      inkscape:window-height="480"
+      id="namedview4692"
+      showgrid="false"
+      inkscape:zoom="52.143555"
+      inkscape:cx="15.662898"
+      inkscape:cy="16"
+      inkscape:current-layer="svg72"/>
+  <defs
+      id="defs66"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <rect
+      style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+      id="rect74"
+      width="1.9361738"
+      height="2.0744655"
+      x="5.2504497"
+      y="1.0653249"/>
+  <rect
+      style="opacity:1;fill:#000000;fill-opacity:0.99506178;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+      id="rect4609"
+      width="0.47103932"
+      height="7.6911559"
+      x="7.6480131"
+      y="0.31993774"/>
+  <rect
+      style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+      id="rect74-3"
+      width="1.9361739"
+      height="2.0744655"
+      x="5.2817984"
+      y="4.8076649"/>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-top.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-top.svg
new file mode 100644
index 0000000..f3ce2be
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/align-top.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    id="svg72"
+    version="1.1"
+    viewBox="0 0 8.4666659 8.4666659"
+    height="32"
+    width="32">
+  <defs
+      id="defs66"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      transform="translate(0,-288.53334)"
+      id="layer1">
+    <rect
+        transform="rotate(-90)"
+        y="4.7906747"
+        x="-291.86316"
+        height="2.0744655"
+        width="1.9361738"
+        id="rect74"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        transform="rotate(-90)"
+        y="0.42600939"
+        x="-289.4295"
+        height="7.6911559"
+        width="0.47103932"
+        id="rect4609"
+        style="opacity:1;fill:#000000;fill-opacity:0.99506178;stroke:#000000;stroke-width:0.17156053;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+    <rect
+        transform="rotate(-90)"
+        y="1.6466794"
+        x="-291.86313"
+        height="2.0744655"
+        width="1.9361739"
+        id="rect74-3"
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/back.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/back.svg
new file mode 100644
index 0000000..e823004
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/back.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;}
+	.st1{display:inline;}
+	.st2{fill:#434343;}
+	.st3{display:inline;fill:#424242;}
+	.st4{fill:#414141;}
+</style>
+  <g id="Layer_1_1_" class="st0">
+	<title>stop</title>
+    <g id="ptdjwZ.tif" class="st1">
+		<path class="st2" d="M0.1,3.2h15.7v15.7H0.1V3.2z M2.3,5.2v11.2h11.1V5.2H2.3z"/>
+	</g>
+    <polygon class="st3" points="17,9.4 19.3,11.6 21.5,9.4 22,9.9 19.3,12.6 16.5,9.9 	"/>
+</g>
+  <g>
+	<polygon class="st4" points="5.1,9.7 22,9.7 22,12.3 5.1,12.3 12,19.4 10.1,21.3 0.1,11 10.2,0.7 12.1,2.6 	"/>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/cleanup.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/cleanup.svg
new file mode 100644
index 0000000..2d43d3d
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/cleanup.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;}
+	.st1{display:inline;}
+	.st2{fill:#434343;}
+	.st3{display:inline;fill:#424242;}
+	.st4{fill:#424242;}
+</style>
+  <g id="Layer_1_1_" class="st0">
+	<title>stop</title>
+    <g id="ptdjwZ.tif" class="st1">
+		<path class="st2" d="M0.1,3.2h15.7v15.7H0.1V3.2z M2.3,5.2v11.2h11.1V5.2H2.3z"/>
+	</g>
+    <polygon class="st3" points="17,9.4 19.3,11.6 21.5,9.4 22,9.9 19.3,12.6 16.5,9.9 	"/>
+</g>
+  <polygon class="st4" points="15.4,13.7 14.4,12.7 16.5,12.7 16.5,10.5 10.6,10.5 10.6,16.4 12.8,16.4 12.8,14.3 13.8,15.3 "/>
+  <polygon class="st4" points="2.8,12.7 4.9,12.7 0.3,17.3 1.9,18.9 6.5,14.3 6.5,16.4 8.8,16.4 8.8,10.5 2.8,10.5 "/>
+  <polygon class="st4" points="16.5,6.2 14.4,6.2 19,1.6 17.4,0 12.8,4.6 12.8,2.5 10.6,2.5 10.6,8.4 16.5,8.4 "/>
+  <polygon class="st4" points="6.5,4.6 1.9,0 0.3,1.6 4.9,6.2 2.8,6.2 2.8,8.4 8.8,8.4 8.8,2.5 6.5,2.5 "/>
+  <path class="st4" d="M20.3,15l-4.4,4.4l-1.5-1.5l-1.3,1.3l2.8,2.8l5.7-5.7L20.3,15z"/>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/close.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/close.svg
new file mode 100644
index 0000000..2e7bf85
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/close.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <defs>
+    <style>.cls-1{fill:#434343;}</style>
+  </defs>
+  <title>close</title>
+  <g id="Layer_3" data-name="Layer 3">
+    <rect class="cls-1" x="10.21" y="0.81" width="2.4" height="20.22" transform="translate(11.07 -4.87) rotate(45)"/>
+    <rect class="cls-1" x="10.21" y="0.81" width="2.4" height="20.22" transform="translate(27.21 10.58) rotate(135)"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/debug.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/debug.svg
new file mode 100644
index 0000000..9ddf103
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/debug.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="Layer_2">
+	<g id="Layer_2_1_">
+		<rect fill="none" width="16" height="16"/>
+	</g>
+</g>
+  <g id="art">
+	<g>
+		<polygon fill="#FFFFFF" points="6.1,2.5 3.8,8.9 5,12.2 7.4,13.6 9.3,12.9 12.2,10.6 10.3,3.8 9.6,2.4 		"/>
+    <path fill="#3D6480" d="M16,11.7V9.2c0-0.9-0.7-1.7-1.7-1.7h-1.6c-0.1-0.3-0.3-0.5-0.5-0.8l1.4-1.5C13.8,5,14,4.5,14,4.2V1.7
+			l-1.7-1v3.1c0,0.1,0,0.3-0.1,0.4l-0.9,1c-0.4-0.7-0.6-1.5-0.6-2.6c0-1.2-0.8-2.3-2-2.6v1.6c0,0.4-0.3,0.7-0.7,0.7
+			c-0.4,0-0.7-0.3-0.7-0.7V0c-1.1,0.3-2,1.3-2,2.6c0,1.1-0.3,1.9-0.6,2.6L3.8,4.2C3.7,4.1,3.7,4,3.7,3.8V0.7L2,1.7v2.5
+			c0,0.3,0.1,0.8,0.3,1l1.4,1.5C3.6,7,3.4,7.3,3.3,7.5H1.7C0.8,7.5,0,8.3,0,9.2v2.5l1.7-1V9.9c0-0.4,0.3-0.7,0.7-0.7h0.3
+			c0,0.2,0,0.3,0,0.5c0,0.6,0.1,1.3,0.3,1.8l-1,1.1c-0.2,0.2-0.3,0.6-0.3,0.9V16l1.7-1v-1c0-0.1,0-0.3,0.1-0.4L4,13
+			c0.6,0.7,1.4,1.5,2.4,1.7c0,0,0,0,0.1,0c0.1,0,0.1,0,0.2,0c0,0,1.2,0.6,2.7,0c0.1,0,0.1,0,0.2,0l0.1,0c1-0.3,1.8-1,2.4-1.7
+			l0.5,0.5c0.1,0.1,0.1,0.3,0.1,0.4v1l1.7,1v-2.5c0-0.3-0.1-0.7-0.3-0.9l-1-1.1c0.2-0.6,0.3-1.2,0.3-1.8c0-0.2,0-0.3,0-0.5h0.3
+			c0.4,0,0.7,0.3,0.7,0.7v0.8L16,11.7z M11.2,10.1c0,1.6-1.4,2.9-3.1,2.9c-1.7,0-3.1-1.3-3.1-2.9c0-0.1,0-0.2,0-0.4h0L5,9.4
+			c0,0,0-0.1,0-0.1l0.8-3c0-0.3,0.1-0.6,0.2-0.8l0,0l0,0c0.4-0.7,1.1-1.1,2-1.1c1,0,1.8,0.6,2.1,1.4l0,0l0,0.1c0,0.1,0,0.1,0.1,0.2
+			l0.9,3.3c0,0,0,0,0,0l0.1,0.4h0C11.1,9.9,11.2,10,11.2,10.1z"/>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/distribute-horizontally.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/distribute-horizontally.svg
new file mode 100644
index 0000000..4d4baed
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/distribute-horizontally.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="distribute-horizontally.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="45.254834"
+      inkscape:cx="6.6334329"
+      inkscape:cy="13.292542"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74"
+        width="1.9361739"
+        height="2.0744655"
+        x="3.3213022"
+        y="291.66656"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359674;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-3"
+        width="1.936174"
+        height="2.0744655"
+        x="0.65159398"
+        y="291.65063"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359674;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-4"
+        width="1.936174"
+        height="2.0744655"
+        x="5.9013805"
+        y="291.6412"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/distribute-vertically.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/distribute-vertically.svg
new file mode 100644
index 0000000..e7bea49
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/distribute-vertically.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="distribute-vertically.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="32"
+      inkscape:cx="4.3955456"
+      inkscape:cy="16.663154"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359671;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74"
+        width="1.9361738"
+        height="2.0744655"
+        x="-293.60446"
+        y="3.2325137"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-3"
+        width="1.9361739"
+        height="2.0744655"
+        x="-296.27417"
+        y="3.2166057"
+        transform="rotate(-90)"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19359672;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect74-4"
+        width="1.9361739"
+        height="2.0744655"
+        x="-291.02438"
+        y="3.2071607"
+        transform="rotate(-90)"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/job.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/job.svg
new file mode 100644
index 0000000..53299b9
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/job.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#F99C1C;}
+</style>
+  <polygon class="st0" points="11,7 11,5.3 13,5.3 9,1.2 10.2,0 14.2,4 14.2,2.1 16,2.1 16,7 "/>
+  <polygon class="st0" points="9,11 10.7,11 10.7,13 14.8,9 16,10.2 12,14.2 13.9,14.2 13.9,16 9,16 "/>
+  <polygon class="st0" points="5,9 5,10.7 3,10.7 7,14.8 5.8,16 1.8,12 1.8,13.9 0,13.9 0,9 "/>
+  <polygon class="st0" points="7,5 5.3,5 5.3,3 1.2,7 0,5.8 4,1.8 2.1,1.8 2.1,0 7,0 "/>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/pause.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/pause.svg
new file mode 100644
index 0000000..b6ad0fb
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/pause.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#424243;}
+</style>
+  <title>pause</title>
+  <g>
+	<rect x="6.5" y="4.6" class="st0" width="2.6" height="13"/>
+    <rect x="13.1" y="4.6" class="st0" width="2.6" height="13"/>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/print.png b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/print.png
new file mode 100644
index 0000000..a79aa32
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/print.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/run.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/run.svg
new file mode 100644
index 0000000..f48567f
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/run.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#414242;}
+</style>
+  <title>run</title>
+  <path class="st0" d="M3.6,19l15.7-8L3.6,3V19z M5.2,5.6L15.7,11L5.2,16.4V5.6z"/>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/run_option.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/run_option.svg
new file mode 100644
index 0000000..c63611b
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/run_option.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#414242;}
+</style>
+  <title>run</title>
+  <path class="st0" d="M0,19l15.7-8L0,3V19z M1.6,5.6L12.1,11L1.6,16.4V5.6z"/>
+  <g id="Layer_2_1_">
+	<g>
+		<g>
+			<polygon class="st0" points="17.1,10.4 19.3,12.6 21.5,10.4 22,10.9 19.3,13.6 16.6,10.9 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/show-all.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/show-all.svg
new file mode 100644
index 0000000..904dd21
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/show-all.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="show-all.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="45.254834"
+      inkscape:cx="7.671996"
+      inkscape:cy="15.899998"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842"
+        width="1.6837981"
+        height="1.660412"
+        x="1.0231411"
+        y="289.1832"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-3"
+        width="1.6837981"
+        height="1.660412"
+        x="5.4255714"
+        y="290.99564"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-6"
+        width="1.6837981"
+        height="1.660412"
+        x="1.8065749"
+        y="294.05338"/>
+    <path
+        style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        d="m 2.1865988,290.07188 c 3.928862,1.68964 3.9580945,1.69549 3.9580945,1.69549 l -3.3500562,3.06358 v 0 l -0.6080383,-4.46674 v 0"
+        id="path871"
+        inkscape:connector-curvature="0"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/show-selected.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/show-selected.svg
new file mode 100644
index 0000000..b50f86d
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/show-selected.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="show-selected.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="45.254834"
+      inkscape:cx="7.671996"
+      inkscape:cy="15.899998"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842"
+        width="1.6837981"
+        height="1.660412"
+        x="1.0231411"
+        y="289.1832"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-3"
+        width="1.6837981"
+        height="1.660412"
+        x="5.4255714"
+        y="290.99564"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect842-6"
+        width="1.6837981"
+        height="1.660412"
+        x="1.8065749"
+        y="294.05338"/>
+    <path
+        style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        d="m 2.1865988,290.07188 c 3.928862,1.68964 3.9580945,1.69549 3.9580945,1.69549 l -3.3500562,3.06358 v 0 l -0.6080383,-4.46674 v 0"
+        id="path871"
+        inkscape:connector-curvature="0"/>
+    <polygon
+        transform="matrix(0.59370318,0,0,0.7770137,-1.1721096,284.24272)"
+        points="16,11.8 15,10.9 11.8,14.1 10.8,13 9.8,14 11.8,16 "
+        id="polygon14"
+        style="fill:#3d6480"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/snap-to-grid.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/snap-to-grid.svg
new file mode 100644
index 0000000..acbcb98
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/snap-to-grid.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    width="32"
+    height="32"
+    viewBox="0 0 8.4666659 8.4666659"
+    version="1.1"
+    id="svg72"
+    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+    sodipodi:docname="snap-to-grid.svg">
+  <defs
+      id="defs66"/>
+  <sodipodi:namedview
+      id="base"
+      pagecolor="#ffffff"
+      bordercolor="#666666"
+      borderopacity="1.0"
+      inkscape:pageopacity="0.0"
+      inkscape:pageshadow="2"
+      inkscape:zoom="39.531689"
+      inkscape:cx="11.942076"
+      inkscape:cy="19.76492"
+      inkscape:document-units="mm"
+      inkscape:current-layer="layer1"
+      showgrid="false"
+      units="px"/>
+  <metadata
+      id="metadata69">
+    <rdf:RDF>
+      <cc:Work
+          rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      id="layer1"
+      transform="translate(0,-288.53334)">
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9457181"
+        y="294.92465"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.93985528"
+        y="294.92938"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.93503"
+        y="294.90106"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9881415"
+        y="294.88687"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3-7"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9374499"
+        y="293.34543"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.93158704"
+        y="293.35016"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.9267621"
+        y="293.32184"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9-0"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9798732"
+        y="293.30765"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9374499"
+        y="291.69177"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56-3"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.93158704"
+        y="291.6965"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2-7"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.9267621"
+        y="291.66818"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9-5"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9798732"
+        y="291.65399"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-3-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="2.9539864"
+        y="289.93063"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-56-2"
+        width="0.50559711"
+        height="0.52918857"
+        x="0.94812351"
+        y="289.93536"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-2-28"
+        width="0.50559711"
+        height="0.52918857"
+        x="4.9432983"
+        y="289.90704"/>
+    <rect
+        style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
+        id="rect39-7-9-9"
+        width="0.50559711"
+        height="0.52918857"
+        x="6.9964094"
+        y="289.89285"/>
+  </g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/stop.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/stop.svg
new file mode 100644
index 0000000..0bd2732
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/stop.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 22 22" style="enable-background:new 0 0 22 22;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;}
+	.st1{display:inline;}
+	.st2{fill:#434343;}
+	.st3{display:inline;fill:#424242;}
+	.st4{fill:#424243;}
+	.st5{fill:#414242;}
+</style>
+  <g id="Layer_1" class="st0">
+	<title>stop</title>
+    <g id="ptdjwZ.tif" class="st1">
+		<path class="st2" d="M0.1,3.2h15.7v15.7H0.1V3.2z M2.3,5.2v11.2h11.1V5.2H2.3z"/>
+	</g>
+    <polygon class="st3" points="17,9.4 19.3,11.6 21.5,9.4 22,9.9 19.3,12.6 16.5,9.9 	"/>
+</g>
+  <g id="Layer_2">
+	<g>
+		<g id="ptdjwZ.tif_1_">
+			<g>
+				<path class="st4" d="M0.1,3.2c5,0,9.1,0,14.8,0c0,5.7,0,9.8,0,14.8c-5.2,0-9.6,0-14.8,0C0.1,12.8,0.1,8.4,0.1,3.2z M1.6,4.8
+					v11.7h11.7V4.8H1.6z"/>
+			</g>
+		</g>
+    <g>
+			<polygon class="st5" points="17,9.4 19.2,11.6 21.4,9.4 21.9,9.9 19.2,12.6 16.5,9.9 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/trans.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/trans.svg
new file mode 100644
index 0000000..c71e9d7
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/trans.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#1CB24B;}
+</style>
+  <polygon class="st0" points="13.8,10.7 13.8,9 8.9,9 8.9,13.9 10.6,13.9 10.6,12 14.7,16 15.9,14.8 11.9,10.7 "/>
+  <polygon class="st0" points="7.1,13.9 5.4,13.9 5.4,12 1.3,16 0.1,14.8 4.1,10.7 2.2,10.7 2.2,9 7.1,9 "/>
+  <polygon class="st0" points="8.9,7 13.8,7 13.8,5.3 11.9,5.3 15.9,1.2 14.7,0 10.6,4 10.6,2.1 8.9,2.1 "/>
+  <polygon class="st0" points="2.2,7 2.2,5.3 4.1,5.3 0.1,1.2 1.3,0 5.4,4 5.4,2.1 7.1,2.1 7.1,7 "/>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/view-as-xml.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/view-as-xml.svg
new file mode 100644
index 0000000..39b8122
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/view-as-xml.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#424242;}
+</style>
+  <g>
+	<polygon class="st0" points="13.8,5.4 12.7,4.3 8.9,8 8.8,0.1 7.2,0.1 7.2,8 3.3,4.2 2.2,5.4 8,11.2 	"/>
+    <polygon class="st0" points="15.9,8.9 14.2,7.3 14.2,14.3 1.8,14.3 1.8,7.4 0.1,9 0.1,15.9 15.9,15.9 	"/>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/view.svg b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/view.svg
new file mode 100644
index 0000000..a2f5600
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/getting-started/icons/view.svg
@@ -0,0 +1,10 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+  <defs>
+    <style>.cls-1{fill:#434343;}</style>
+  </defs>
+  <title>view</title>
+  <g id="QdVc5y.tif">
+    <path class="cls-1"
+          d="M19.41,10.71v.64a8.09,8.09,0,0,1-8,5.13,8.09,8.09,0,0,1-8-5.13v-.64a8.26,8.26,0,0,1,8-5.12A8.24,8.24,0,0,1,19.41,10.71ZM13.3,7.09a5.13,5.13,0,0,1,.15,7.8,8,8,0,0,0,4.47-3.15,1.09,1.09,0,0,0,0-1.31A8.4,8.4,0,0,0,13.3,7.09Zm-4,7.78A5.09,5.09,0,0,1,9.45,7.1a8.78,8.78,0,0,0-4.54,3.16,1.21,1.21,0,0,0,0,1.57A8.28,8.28,0,0,0,9.28,14.87Z"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/create-environment-dialogue.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/create-environment-dialogue.png
new file mode 100644
index 0000000..bca2a19
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/create-environment-dialogue.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/create-project-dialogue.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/create-project-dialogue.png
new file mode 100644
index 0000000..dc87754
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/create-project-dialogue.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/edit-environment-menu.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/edit-environment-menu.png
new file mode 100644
index 0000000..4198287
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/edit-environment-menu.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-add.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-add.svg
new file mode 100644
index 0000000..b118711
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-add.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="42px"
+   height="42px"
+   viewBox="0 0 42 42"
+   enable-background="new 0 0 42 42"
+   xml:space="preserve"><metadata
+   id="metadata25"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs23" />
+
+
+<text
+   id="text816"
+   y="19.834593"
+   x="56.459057"
+   style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+   xml:space="preserve"><tspan
+     y="194.53062"
+     x="56.459057"
+     id="tspan814" /></text>
+
+<text
+   id="text820"
+   y="28.070263"
+   x="2.978379"
+   style="font-style:normal;font-weight:normal;font-size:44.69970703px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.23281099"
+   xml:space="preserve"><tspan
+     style="stroke-width:0.23281099"
+     y="28.070263"
+     x="2.978379"
+     id="tspan818">e</tspan></text>
+
+<g
+   transform="matrix(0.48941052,0,0,0.48941052,24.528835,24.811866)"
+   id="art"><polygon
+     id="polygon6"
+     points="18.2,0 13.8,0 13.8,13.8 0,13.8 0,18.2 13.8,18.2 13.8,32 18.2,32 18.2,18.2 32,18.2 32,13.8 18.2,13.8 "
+     style="fill:#3d6380" /></g></svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-delete.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-delete.svg
new file mode 100644
index 0000000..c3aa7b1
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-delete.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="42px"
+   height="42px"
+   viewBox="0 0 42 42"
+   enable-background="new 0 0 42 42"
+   xml:space="preserve"><metadata
+   id="metadata25"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs23" />
+
+
+<text
+   id="text816"
+   y="19.834593"
+   x="56.459057"
+   style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+   xml:space="preserve"><tspan
+     y="194.53062"
+     x="56.459057"
+     id="tspan814" /></text>
+
+<text
+   id="text820"
+   y="28.070263"
+   x="2.978379"
+   style="font-style:normal;font-weight:normal;font-size:44.69970703px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.23281099"
+   xml:space="preserve"><tspan
+     style="stroke-width:0.23281099"
+     y="28.070263"
+     x="2.978379"
+     id="tspan818">e</tspan></text>
+
+<polygon
+   points="37.6,31.4 34.7,34.3 31.8,31.4 30.4,32.7 33.3,35.6 30.4,38.5 31.8,39.9 34.7,37 37.6,39.9 38.9,38.5 36,35.6 38.9,32.7 "
+   id="polygon18"
+   style="fill:#ea102a"
+   transform="matrix(1.6377839,0,0,1.6377839,-23.702184,-25.258686)" /></svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-edit.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-edit.svg
new file mode 100644
index 0000000..48d5ea9
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-edit.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="42px"
+   height="42px"
+   viewBox="0 0 42 42"
+   enable-background="new 0 0 42 42"
+   xml:space="preserve"><metadata
+   id="metadata25"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs23" />
+
+
+<text
+   id="text816"
+   y="19.834593"
+   x="56.459057"
+   style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+   xml:space="preserve"><tspan
+     y="194.53062"
+     x="56.459057"
+     id="tspan814"></tspan></text>
+<text
+   id="text820"
+   y="28.070263"
+   x="2.978379"
+   style="font-style:normal;font-weight:normal;font-size:44.69970703px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.23281099"
+   xml:space="preserve"><tspan
+     style="stroke-width:0.23281099"
+     y="28.070263"
+     x="2.978379"
+     id="tspan818">e</tspan></text>
+<ellipse
+   ry="2.0063434"
+   rx="2.0330944"
+   cy="34.986797"
+   cx="25.54306"
+   id="path2067"
+   style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.72368419;paint-order:markers fill stroke" /><ellipse
+   ry="0.22179212"
+   rx="1.3307527"
+   cy="35.715889"
+   cx="29.202629"
+   id="path2069"
+   style="opacity:0.3;fill:#ffd700;fill-opacity:1;paint-order:markers fill stroke" /><ellipse
+   ry="2.0063434"
+   rx="2.0330944"
+   cy="34.976582"
+   cx="30.903036"
+   id="path2067-1"
+   style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.72368419;paint-order:markers fill stroke" /><ellipse
+   ry="2.0063434"
+   rx="2.0330944"
+   cy="34.976585"
+   cx="36.004257"
+   id="path2067-6"
+   style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.72368419;paint-order:markers fill stroke" /></svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-files.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-files.png
new file mode 100644
index 0000000..7f7ed1f
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/environment-files.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/hop-conf-help.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/hop-conf-help.png
new file mode 100644
index 0000000..433c1de
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/hop-conf-help.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/hop-conf.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/hop-conf.png
new file mode 100644
index 0000000..de640be
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/hop-conf.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/new-environment-dialog.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/new-environment-dialog.png
new file mode 100644
index 0000000..85a92af
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/new-environment-dialog.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/new-environment.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/new-environment.png
new file mode 100644
index 0000000..0cc1671
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/new-environment.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-add.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-add.svg
new file mode 100644
index 0000000..ba1acc9
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-add.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xml:space="preserve"
+   enable-background="new 0 0 42 42"
+   viewBox="0 0 42 42"
+   height="42px"
+   width="42px"
+   y="0px"
+   x="0px"
+   id="Layer_1"
+   version="1.1"><metadata
+   id="metadata25"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs23" />
+
+
+<text
+   xml:space="preserve"
+   style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+   x="56.459057"
+   y="19.834593"
+   id="text816"><tspan
+     id="tspan814"
+     x="56.459057"
+     y="194.53062" /></text>
+
+
+
+
+<g
+   id="art"
+   transform="matrix(0.48941052,0,0,0.48941052,24.528835,24.811866)"><polygon
+     style="fill:#3d6380"
+     points="18.2,0 13.8,0 13.8,13.8 0,13.8 0,18.2 13.8,18.2 13.8,32 18.2,32 18.2,18.2 32,18.2 32,13.8 18.2,13.8 "
+     id="polygon6" /></g><text
+   id="text821"
+   y="28.042698"
+   x="2.8721724"
+   style="font-style:normal;font-weight:normal;font-size:48.81200027px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25422916"
+   xml:space="preserve"><tspan
+     style="stroke-width:0.25422916"
+     y="28.042698"
+     x="2.8721724"
+     id="tspan819">p</tspan></text>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-delete.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-delete.svg
new file mode 100644
index 0000000..21620ab
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-delete.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xml:space="preserve"
+   enable-background="new 0 0 42 42"
+   viewBox="0 0 42 42"
+   height="42px"
+   width="42px"
+   y="0px"
+   x="0px"
+   id="Layer_1"
+   version="1.1"><metadata
+   id="metadata25"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs23" />
+
+
+<text
+   xml:space="preserve"
+   style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+   x="56.459057"
+   y="19.834593"
+   id="text816"><tspan
+     id="tspan814"
+     x="56.459057"
+     y="194.53062" /></text>
+
+
+
+
+<polygon
+   transform="matrix(1.6377839,0,0,1.6377839,-23.702184,-25.258686)"
+   style="fill:#ea102a"
+   id="polygon18"
+   points="37.6,31.4 34.7,34.3 31.8,31.4 30.4,32.7 33.3,35.6 30.4,38.5 31.8,39.9 34.7,37 37.6,39.9 38.9,38.5 36,35.6 38.9,32.7 " /><text
+   id="text821"
+   y="28.091171"
+   x="2.7267504"
+   style="font-style:normal;font-weight:normal;font-size:48.81200027px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25422916"
+   xml:space="preserve"><tspan
+     style="stroke-width:0.25422916"
+     y="28.091171"
+     x="2.7267504"
+     id="tspan819">p</tspan></text>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-edit.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-edit.svg
new file mode 100644
index 0000000..38c26a6
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/project-edit.svg
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xml:space="preserve"
+   enable-background="new 0 0 42 42"
+   viewBox="0 0 42 42"
+   height="42px"
+   width="42px"
+   y="0px"
+   x="0px"
+   id="Layer_1"
+   version="1.1"><metadata
+   id="metadata25"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs23" />
+
+
+<text
+   xml:space="preserve"
+   style="font-style:normal;font-weight:normal;font-size:192px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+   x="56.459057"
+   y="19.834593"
+   id="text816"><tspan
+     id="tspan814"
+     x="56.459057"
+     y="194.53062" /></text>
+
+
+<ellipse
+   style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.72368419;paint-order:markers fill stroke"
+   id="path2067"
+   cx="25.54306"
+   cy="34.986797"
+   rx="2.0330944"
+   ry="2.0063434" /><ellipse
+   style="opacity:0.3;fill:#ffd700;fill-opacity:1;paint-order:markers fill stroke"
+   id="path2069"
+   cx="29.202629"
+   cy="35.715889"
+   rx="1.3307527"
+   ry="0.22179212" /><ellipse
+   style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.72368419;paint-order:markers fill stroke"
+   id="path2067-1"
+   cx="30.903036"
+   cy="34.976582"
+   rx="2.0330944"
+   ry="2.0063434" /><ellipse
+   style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.72368419;paint-order:markers fill stroke"
+   id="path2067-6"
+   cx="36.004257"
+   cy="34.976585"
+   rx="2.0330944"
+   ry="2.0063434" /><text
+   id="text821"
+   y="28.188118"
+   x="2.7025132"
+   style="font-style:normal;font-weight:normal;font-size:48.81200027px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.25422916"
+   xml:space="preserve"><tspan
+     style="stroke-width:0.25422916"
+     y="28.188118"
+     x="2.7025132"
+     id="tspan819">p</tspan></text>
+</svg>
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-environment-list.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-environment-list.png
new file mode 100644
index 0000000..964a755
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-environment-list.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-environment.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-environment.png
new file mode 100644
index 0000000..9bd4b21
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-environment.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-project-list.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-project-list.png
new file mode 100644
index 0000000..0a5399a
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/environment/switch-project-list.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/new-work-item.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/new-work-item.png
new file mode 100644
index 0000000..225a6df
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/new-work-item.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/new.svg b/hop-user-manual/modules/ROOT/assets/images/hop-gui/new.svg
new file mode 100644
index 0000000..5674ded
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/assets/images/hop-gui/new.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
+     viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="Layer_2">
+	<g id="Layer_2_1_">
+		<rect fill="none" width="16" height="16"/>
+	</g>
+</g>
+  <g id="Layer_1">
+	<g>
+		<path fill="#FFFFFF" d="M3,0.8V15c0,0,10.2-0.2,10,0c-0.2,0.2,0-10.5,0-10.5l-0.7-1h-1.9v-2L9,0.7L3,0.8z"/>
+    <path fill="none" d="M10.1,4.5v-3H3v13h10l0-10H10.1z M11,8.4H8.4V11H7.6V8.4H5V7.7h2.6V5h0.8v2.6H11V8.4z"/>
+    <polygon fill="#0E3A5A" stroke="#0E3A5A" stroke-width="0.5" stroke-miterlimit="10" points="8.3,7.7 8.3,5.5 7.7,5.5 7.7,7.7
+			5.5,7.7 5.5,8.3 7.7,8.3 7.7,10.5 8.3,10.5 8.3,8.3 10.5,8.3 10.5,7.7 		"/>
+    <path fill="#0E3A5A" d="M14,4.5l-1.5-1.5v0h-1.4V1.5h0L9.6,0H2v16H14L14,4.5z M3.5,14.5v-13h6.1v3h3l0,10H3.5z"/>
+	</g>
+</g>
+</svg>
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/debug-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/debug-pipeline.png
new file mode 100644
index 0000000..4d69831
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/debug-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/executed-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/executed-pipeline.png
new file mode 100644
index 0000000..7ad6a9d
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/executed-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/failed-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/failed-pipeline.png
new file mode 100644
index 0000000..f2de0bb
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/failed-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/hop-type.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/hop-type.png
new file mode 100644
index 0000000..df9b023
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/hop-type.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/logging-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/logging-pipeline.png
new file mode 100644
index 0000000..5e41578
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/logging-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/monitoring-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/monitoring-pipeline.png
new file mode 100644
index 0000000..ae5abc1
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/monitoring-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/new-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/new-pipeline.png
new file mode 100644
index 0000000..1605c9c
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/new-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/parameters-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/parameters-pipeline.png
new file mode 100644
index 0000000..3db6af3
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/parameters-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/preview-menu-pipeline.PNG b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/preview-menu-pipeline.PNG
new file mode 100644
index 0000000..cf30843
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/preview-menu-pipeline.PNG differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/preview-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/preview-pipeline.png
new file mode 100644
index 0000000..e70b6c8
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/preview-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/properties-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/properties-pipeline.png
new file mode 100644
index 0000000..c27ef8e
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/properties-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/run-configuration-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/run-configuration-pipeline.png
new file mode 100644
index 0000000..88d6d89
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/run-configuration-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/save-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/save-pipeline.png
new file mode 100644
index 0000000..7cbcf6b
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/save-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/simple-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/simple-pipeline.png
new file mode 100644
index 0000000..90143cd
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/simple-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/transform-metrics-pipeline.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/transform-metrics-pipeline.png
new file mode 100644
index 0000000..1c15d49
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/transform-metrics-pipeline.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/transforms.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/transforms.png
new file mode 100644
index 0000000..45dc41c
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/pipeline/transforms.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/new-run-configuration.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/new-run-configuration.png
new file mode 100644
index 0000000..3421e87
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/new-run-configuration.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/parameters-properties.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/parameters-properties.png
new file mode 100644
index 0000000..25dde0e
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/parameters-properties.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/settings-properties.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/settings-properties.png
new file mode 100644
index 0000000..80bac90
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/settings-properties.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/simple-workflow.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/simple-workflow.png
new file mode 100644
index 0000000..836c859
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/simple-workflow.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-action.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-action.png
new file mode 100644
index 0000000..03c51dc
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-action.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-properties.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-properties.png
new file mode 100644
index 0000000..5265910
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-properties.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-run-configuration.png b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-run-configuration.png
new file mode 100644
index 0000000..33bd761
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-gui/workflow/workflow-run-configuration.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-run/hop-run-options.png b/hop-user-manual/modules/ROOT/assets/images/hop-run/hop-run-options.png
new file mode 100644
index 0000000..48929f1
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-run/hop-run-options.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-index.png b/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-index.png
new file mode 100644
index 0000000..b5c9d3e
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-index.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-no-tasks.png b/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-no-tasks.png
new file mode 100644
index 0000000..d8a2132
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-no-tasks.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-options.png b/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-options.png
new file mode 100644
index 0000000..b2c4ee9
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/hop-server/hop-server-options.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-dataflow.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-dataflow.png
new file mode 100644
index 0000000..02ff2c8
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-dataflow.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-direct.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-direct.png
new file mode 100644
index 0000000..e7f77fd
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-direct.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-flink.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-flink.png
new file mode 100644
index 0000000..5f58506
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-flink.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-spark.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-spark.png
new file mode 100644
index 0000000..81b4b5f
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/beam-spark.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/configuration-selection.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/configuration-selection.png
new file mode 100644
index 0000000..ee6824f
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/configuration-selection.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/local-engine.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/local-engine.png
new file mode 100644
index 0000000..a0361b8
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/local-engine.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/run-configuration/remote-engine.png b/hop-user-manual/modules/ROOT/assets/images/run-configuration/remote-engine.png
new file mode 100644
index 0000000..ab73bb9
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/run-configuration/remote-engine.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/system-properties-menu.png b/hop-user-manual/modules/ROOT/assets/images/system-properties-menu.png
new file mode 100644
index 0000000..746d807
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/system-properties-menu.png differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/test_image.jpg b/hop-user-manual/modules/ROOT/assets/images/test_image.jpg
new file mode 100644
index 0000000..92afb4a
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/test_image.jpg differ
diff --git a/hop-user-manual/modules/ROOT/assets/images/variable-indicator.png b/hop-user-manual/modules/ROOT/assets/images/variable-indicator.png
new file mode 100644
index 0000000..9197ba0
Binary files /dev/null and b/hop-user-manual/modules/ROOT/assets/images/variable-indicator.png differ
diff --git a/hop-user-manual/modules/ROOT/nav.adoc b/hop-user-manual/modules/ROOT/nav.adoc
new file mode 100644
index 0000000..893fabe
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/nav.adoc
@@ -0,0 +1,289 @@
+* xref:getting-started.adoc[Getting Started]
+* xref:concepts.adoc[Concepts]
+* xref:hop-vs-kettle/index.adoc[Kettle -> Hop]
+** xref:hop-vs-kettle/hop-vs-kettle.adoc[Hop vs Kettle]
+** xref:hop-vs-kettle/if-you-know-kettle.adoc[If You Know Kettle/PDI]
+* xref:hop-gui/index.adoc[Hop Gui]
+** xref:hop-gui/environments/environments.adoc[Hop Environments]
+** xref:hop-gui/pipelines/pipelines.adoc[Pipelines]
+*** xref:hop-gui/pipelines/hop-pipeline-editor.adoc[Pipeline Editor]
+*** xref:hop-gui/pipelines/create-pipeline.adoc[Create a Pipeline]
+*** xref:hop-gui/pipelines/run-preview-debug-pipeline.adoc[Run, Preview and Debug a Pipeline]
+*** xref:hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.adoc[Pipeline Run Configurations]
+**** xref:hop-gui/pipelines/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc[Beam Google DataFlow]
+**** xref:hop-gui/pipelines/pipeline-run-configurations/beam-direct-pipeline-engine.adoc[Beam Direct]
+**** xref:hop-gui/pipelines/pipeline-run-configurations/beam-flink-pipeline-engine.adoc[Beam Flink]
+**** xref:hop-gui/pipelines/pipeline-run-configurations/beam-spark-pipeline-engine.adoc[Beam Spark]
+**** xref:hop-gui/pipelines/pipeline-run-configurations/local-pipeline-engine.adoc[Local Native]
+**** xref:hop-gui/pipelines/pipeline-run-configurations/remote-pipeline-engine.adoc[Remote Native]
+*** xref:hop-gui/pipelines/metadata-injection.adoc[Metadata Injection]
+** xref:hop-gui/workflows/workflows.adoc[Workflows]
+*** xref:hop-gui/workflows/create-workflow.adoc[Create a Workflow]
+*** xref:hop-gui/workflows/run-debug-workflow.adoc[Run and Debug a Workflow]
+*** xref:hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.adoc[Workflow Run Configurations]
+** xref:hop-gui/variables/variables.adoc[Variables]
+* xref:hop-run/index.adoc[Hop Run]
+* xref:hop-server/index.adoc[Hop Server]
+* xref:plugins/plugins.adoc[Plugins]
+//::=START AUTO GENERATED LINKS
+** xref:plugins/transforms.adoc[Transform Plugins]
+*** xref:plugins/transforms/abort.adoc[Abort]
+*** xref:plugins/transforms/constant.adoc[Add Constants]
+*** xref:plugins/transforms/addsequence.adoc[Add Sequence]
+*** xref:plugins/transforms/addxml.adoc[Add XML]
+*** xref:plugins/transforms/checksum.adoc[Add a checksum]
+*** xref:plugins/transforms/fieldschangesequence.adoc[Add value fields changing sequence]
+*** xref:plugins/transforms/analyticquery.adoc[Analytic Query]
+*** xref:plugins/transforms/append.adoc[Append Streams]
+*** xref:plugins/transforms/beambigqueryinput.adoc[Beam BigQuery Input]
+*** xref:plugins/transforms/beambigqueryoutput.adoc[Beam BigQuery Output]
+*** xref:plugins/transforms/beampublisher.adoc[Beam GCP Pub/Sub : Publish]
+*** xref:plugins/transforms/beamsubscriber.adoc[Beam GCP Pub/Sub : Subscribe]
+*** xref:plugins/transforms/beaminput.adoc[Beam Input]
+*** xref:plugins/transforms/beamconsume.adoc[Beam Kafka Consume]
+*** xref:plugins/transforms/beamproduce.adoc[Beam Kafka Produce]
+*** xref:plugins/transforms/beamoutput.adoc[Beam Output]
+*** xref:plugins/transforms/beamtimestamp.adoc[Beam Timestamp]
+*** xref:plugins/transforms/beamwindow.adoc[Beam Window]
+*** xref:plugins/transforms/blockingtransform.adoc[Blocking transform]
+*** xref:plugins/transforms/blockuntiltransformsfinish.adoc[Blocking until transforms finish]
+*** xref:plugins/transforms/csvinput.adoc[CSV File Input]
+*** xref:plugins/transforms/calculator.adoc[Calculator]
+*** xref:plugins/transforms/dbproc.adoc[Call DB procedure]
+*** xref:plugins/transforms/changefileencoding.adoc[Change file encoding]
+*** xref:plugins/transforms/filelocked.adoc[Check if file is locked]
+*** xref:plugins/transforms/webserviceavailable.adoc[Check if webservice is available]
+*** xref:plugins/transforms/clonerow.adoc[Clone row]
+*** xref:plugins/transforms/closure.adoc[Closure]
+*** xref:plugins/transforms/columnexists.adoc[Column exists]
+*** xref:plugins/transforms/combinationlookup.adoc[Combination lookup/update]
+*** xref:plugins/transforms/concatfields.adoc[Concat Fields]
+*** xref:plugins/transforms/rowstoresult.adoc[Copy rows to result]
+*** xref:plugins/transforms/creditcardvalidator.adoc[Credit card validator]
+*** xref:plugins/transforms/cubeinput.adoc[Cube input]
+*** xref:plugins/transforms/cubeoutput.adoc[Cube output]
+*** xref:plugins/transforms/datagrid.adoc[Data Grid]
+*** xref:plugins/transforms/validator.adoc[Data Validator]
+*** xref:plugins/transforms/databasejoin.adoc[Database Join]
+*** xref:plugins/transforms/databaselookup.adoc[Database Lookup]
+*** xref:plugins/transforms/delay.adoc[Delay row]
+*** xref:plugins/transforms/delete.adoc[Delete]
+*** xref:plugins/transforms/detectemptystream.adoc[Detect Empty Stream]
+*** xref:plugins/transforms/dimensionlookup.adoc[Dimension lookup/update]
+*** xref:plugins/transforms/dummy.adoc[Dummy (do nothing)]
+*** xref:plugins/transforms/dynamicsqlrow.adoc[Dynamic SQL row]
+*** xref:plugins/transforms/edi2xml.adoc[Edi to XML]
+*** xref:plugins/transforms/mailinput.adoc[Email Messages Input]
+*** xref:plugins/transforms/excelwriter.adoc[Excel writer]
+*** xref:plugins/transforms/sql.adoc[Execute SQL script]
+*** xref:plugins/transforms/execprocess.adoc[Execute a process]
+*** xref:plugins/transforms/execsqlrow.adoc[Execute row SQL script]
+*** xref:plugins/transforms/fileexists.adoc[File exists]
+*** xref:plugins/transforms/filesfromresult.adoc[Files from result]
+*** xref:plugins/transforms/filestoresult.adoc[Files to result]
+*** xref:plugins/transforms/filterrows.adoc[Filter Rows]
+*** xref:plugins/transforms/fuzzymatch.adoc[Fuzzy match]
+*** xref:plugins/transforms/randomvalue.adoc[Generate Random Value]
+*** xref:plugins/transforms/getxmldata.adoc[Get Data From XML]
+*** xref:plugins/transforms/getslavesequence.adoc[Get ID from slave server]
+*** xref:plugins/transforms/rowsfromresult.adoc[Get Rows from Result]
+*** xref:plugins/transforms/getsubfolders.adoc[Get SubFolder names]
+*** xref:plugins/transforms/systemdata.adoc[Get System Info]
+*** xref:plugins/transforms/getfilenames.adoc[Get filenames]
+*** xref:plugins/transforms/getfilesrowcount.adoc[Get files rowcount]
+*** xref:plugins/transforms/recordsfromstream.adoc[Get records from stream ]
+*** xref:plugins/transforms/gettablenames.adoc[Get table names]
+*** xref:plugins/transforms/getvariable.adoc[Get variables]
+*** xref:plugins/transforms/groupby.adoc[Group By]
+*** xref:plugins/transforms/httppost.adoc[HTTP Post]
+*** xref:plugins/transforms/http.adoc[HTTP client]
+*** xref:plugins/transforms/detectlastrow.adoc[Identify last row in a stream]
+*** xref:plugins/transforms/ifnull.adoc[If Null]
+*** xref:plugins/transforms/injector.adoc[Injector]
+*** xref:plugins/transforms/insertupdate.adoc[Insert / Update]
+*** xref:plugins/transforms/jsoninput.adoc[JSON Input]
+*** xref:plugins/transforms/jsonoutput.adoc[JSON Output]
+*** xref:plugins/transforms/javafilter.adoc[Java Filter]
+*** xref:plugins/transforms/javascript.adoc[JavaScript]
+*** xref:plugins/transforms/joinrows.adoc[Join Rows]
+*** xref:plugins/transforms/ldapinput.adoc[LDAP Input]
+*** xref:plugins/transforms/ldapoutput.adoc[LDAP Output]
+*** xref:plugins/transforms/ldifinput.adoc[LDIF Input]
+*** xref:plugins/transforms/loadfileinput.adoc[Load file content in memory]
+*** xref:plugins/transforms/mail.adoc[Mail]
+*** xref:plugins/transforms/mailvalidator.adoc[Mail Validator]
+*** xref:plugins/transforms/memgroupby.adoc[Memory Group By]
+*** xref:plugins/transforms/mergejoin.adoc[Merge Join]
+*** xref:plugins/transforms/mergerows.adoc[Merge rows (diff)]
+*** xref:plugins/transforms/metainject.adoc[Metadata Injection]
+*** xref:plugins/transforms/excelinput.adoc[Microsoft Excel input]
+*** xref:plugins/transforms/exceloutput.adoc[Microsoft Excel output]
+*** xref:plugins/transforms/multimerge.adoc[Multiway Merge Join]
+*** xref:plugins/transforms/nullif.adoc[Null If]
+*** xref:plugins/transforms/numberrange.adoc[Number range]
+*** xref:plugins/transforms/pgpdecryptstream.adoc[PGP decrypt stream]
+*** xref:plugins/transforms/pgpencryptstream.adoc[PGP encrypt stream]
+*** xref:plugins/transforms/pipelineexcecutor.adoc[Pipeline Executor]
+*** xref:plugins/transforms/pgbulkloader.adoc[PostgreSQL Bulk Loader]
+*** xref:plugins/transforms/processfiles.adoc[Process files]
+*** xref:plugins/transforms/rest.adoc[REST Client]
+*** xref:plugins/transforms/propertyinput.adoc[Read data (key, value) from properties files.]
+*** xref:plugins/transforms/regexeval.adoc[Regex Evaluation]
+*** xref:plugins/transforms/replacestring.adoc[Replace in String]
+*** xref:plugins/transforms/reservoirsampling.adoc[Reservoir Sampling]
+*** xref:plugins/transforms/denormaliser.adoc[Row Denormaliser]
+*** xref:plugins/transforms/flattener.adoc[Row Flattener]
+*** xref:plugins/transforms/rowgenerator.adoc[Row Generator]
+*** xref:plugins/transforms/normaliser.adoc[Row Normaliser]
+*** xref:plugins/transforms/ssh.adoc[Run SSH commands]
+*** xref:plugins/transforms/sqlfileoutput.adoc[SQL File Output]
+*** xref:plugins/transforms/selectvalues.adoc[Select Values]
+*** xref:plugins/transforms/syslog.adoc[Send Message to Syslog]
+*** xref:plugins/transforms/setvariable.adoc[Set Variables]
+*** xref:plugins/transforms/setvaluefield.adoc[Set field Value]
+*** xref:plugins/transforms/setvalueconstant.adoc[Set field value to a constant]
+*** xref:plugins/transforms/sort.adoc[Sort Rows]
+*** xref:plugins/transforms/sortedmerge.adoc[Sorted Merge]
+*** xref:plugins/transforms/fieldsplitter.adoc[Split Fields]
+*** xref:plugins/transforms/splitfieldtorows.adoc[Split fields]
+*** xref:plugins/transforms/streamlookup.adoc[Stream Lookup]
+*** xref:plugins/transforms/streamschemamerge.adoc[Stream Schema Merge]
+*** xref:plugins/transforms/stringoperations.adoc[String operations]
+*** xref:plugins/transforms/stringcut.adoc[Strings cut]
+*** xref:plugins/transforms/switchcase.adoc[Switch / Case]
+*** xref:plugins/transforms/synchronizeaftermerge.adoc[Synchronize after merge ]
+*** xref:plugins/transforms/tablecompare.adoc[Table Compare]
+*** xref:plugins/transforms/tableexists.adoc[Table Exists]
+*** xref:plugins/transforms/tableinput.adoc[Table Input]
+*** xref:plugins/transforms/tableoutput.adoc[Table Output]
+*** xref:plugins/transforms/terafast.adoc[Teradata Bulk Loader]
+*** xref:plugins/transforms/textfileinput.adoc[Text File Input]
+*** xref:plugins/transforms/textfileoutput.adoc[Text File Output]
+*** xref:plugins/transforms/uniquerows.adoc[Unique Rows]
+*** xref:plugins/transforms/uniquerowsbyhashset.adoc[Unique Rows (HashSet)]
+*** xref:plugins/transforms/update.adoc[Update]
+*** xref:plugins/transforms/userdefinedjavaclass.adoc[User Defined Java Class]
+*** xref:plugins/transforms/janino.adoc[User Defined Java Expression]
+*** xref:plugins/transforms/valuemapper.adoc[Value Mapper]
+*** xref:plugins/transforms/webservices.adoc[Web services lookup]
+*** xref:plugins/transforms/workflowexecutor.adoc[Workflow Executor]
+*** xref:plugins/transforms/propertyoutput.adoc[Write data to properties file]
+*** xref:plugins/transforms/writetolog.adoc[Write to log]
+*** xref:plugins/transforms/xmlinputstream.adoc[XML Input Stream (StAX) ]
+*** xref:plugins/transforms/xmljoin.adoc[XML Join]
+*** xref:plugins/transforms/xmloutput.adoc[XML Output]
+*** xref:plugins/transforms/xsdvalidator.adoc[XSD Validator]
+*** xref:plugins/transforms/xslt.adoc[XSL Transformation]
+*** xref:plugins/transforms/yamlinput.adoc[Yaml Input]
+*** xref:plugins/transforms/zipfile.adoc[Zip file]
+** xref:plugins/databases.adoc[Database Plugins]
+*** xref:plugins/databases/as400.adoc[AS400]
+*** xref:plugins/databases/derby.adoc[Apache Derby]
+*** xref:plugins/databases/cache.adoc[Cache]
+*** xref:plugins/databases/db2.adoc[DB2]
+*** xref:plugins/databases/exasol.adoc[Exasol]
+*** xref:plugins/databases/googlebigquery.adoc[Google BigQuery]
+*** xref:plugins/databases/greenplum.adoc[Greenplum]
+*** xref:plugins/databases/sqlbase.adoc[Gupta SQLBase]
+*** xref:plugins/databases/h2.adoc[H2]
+*** xref:plugins/databases/hypersonic.adoc[Hypersonic]
+*** xref:plugins/databases/universe.adoc[IBM Universe]
+*** xref:plugins/databases/infinidb.adoc[InfiniDB]
+*** xref:plugins/databases/infobright.adoc[Infobright DB]
+*** xref:plugins/databases/mssql.adoc[MS SqlServer]
+*** xref:plugins/databases/mssqlnative.adoc[MS SqlServer (Native)]
+*** xref:plugins/databases/mariadb.adoc[Mariadb]
+*** xref:plugins/databases/sapdb.adoc[MaxDB (SAP DB)]
+*** xref:plugins/databases/mysql.adoc[MySql]
+*** xref:plugins/databases/netezza.adoc[Netezza]
+*** xref:plugins/databases/oracle.adoc[Oracle]
+*** xref:plugins/databases/oraclerdb.adoc[Oracle RDB]
+*** xref:plugins/databases/postgresql.adoc[PostgreSQL]
+*** xref:plugins/databases/redshift.adoc[Redshift]
+*** xref:plugins/databases/snowflake.adoc[Snowflake]
+*** xref:plugins/databases/sqlite.adoc[SqLite]
+*** xref:plugins/databases/sybase.adoc[Sybase]
+*** xref:plugins/databases/sybaseiq.adoc[Sybase IQ]
+*** xref:plugins/databases/teradata.adoc[Teradata]
+*** xref:plugins/databases/vectorwise.adoc[Vectorwise]
+*** xref:plugins/databases/vertica.adoc[Vertica]
+*** xref:plugins/databases/firebird.adoc[firebird]
+*** xref:plugins/databases/informix.adoc[informix]
+*** xref:plugins/databases/ingres.adoc[ingres]
+*** xref:plugins/databases/interbase.adoc[interbase]
+*** xref:plugins/databases/kingbasees.adoc[kingbase es]
+*** xref:plugins/databases/monetdb.adoc[monetdb]
+** xref:plugins/actions.adoc[Action Plugins]
+*** xref:plugins/actions/abort.adoc[Abort]
+*** xref:plugins/actions/addresultfilenames.adoc[Add filenames to result]
+*** xref:plugins/actions/checkdbconnection.adoc[Check Db connections]
+*** xref:plugins/actions/checkfilelocked.adoc[Check Files Locked]
+*** xref:plugins/actions/webserviceavailable.adoc[Check if Webservice is available]
+*** xref:plugins/actions/xmlwellformed.adoc[Check if XML file is well formed]
+*** xref:plugins/actions/filesexist.adoc[Checks if files exists]
+*** xref:plugins/actions/columnsexist.adoc[Columns exist in a table]
+*** xref:plugins/actions/copyfiles.adoc[Copy Files]
+*** xref:plugins/actions/copymoveresultfilenames.adoc[Copy Or Move Files from result]
+*** xref:plugins/actions/createfile.adoc[Create File]
+*** xref:plugins/actions/createfolder.adoc[Create Folder]
+*** xref:plugins/actions/dtdvalidator.adoc[DTD Validator]
+*** xref:plugins/actions/pgpdecryptfiles.adoc[Decrypt files with PGP]
+*** xref:plugins/actions/delay.adoc[Delay]
+*** xref:plugins/actions/deletefile.adoc[Delete File]
+*** xref:plugins/actions/deletefiles.adoc[Delete Files]
+*** xref:plugins/actions/deletefolders.adoc[Delete Folders]
+*** xref:plugins/actions/deleteresultfilenames.adoc[Delete filenames from result]
+*** xref:plugins/actions/msgboxinfo.adoc[Display Msgbox info]
+*** xref:plugins/actions/dostounix.adoc[Dos To Unix]
+*** xref:plugins/actions/pgpencryptfiles.adoc[Encrypt files with PGP]
+*** xref:plugins/actions/evalfilesmetrics.adoc[Evaluate File Metrics]
+*** xref:plugins/actions/evaluatetablecontent.adoc[Evaluate rows number in a table]
+*** xref:plugins/actions/ftpdelete.adoc[FTP delete]
+*** xref:plugins/actions/fileexists.adoc[File Exists]
+*** xref:plugins/actions/filecompare.adoc[File compare]
+*** xref:plugins/actions/folderisempty.adoc[Folder is Empty]
+*** xref:plugins/actions/folderscompare.adoc[Folders Compare]
+*** xref:plugins/actions/getpop.adoc[Get Mail from POP]
+*** xref:plugins/actions/ftp.adoc[Get a file with FTP]
+*** xref:plugins/actions/ftpsget.adoc[Get a file with FTPS]
+*** xref:plugins/actions/sftp.adoc[Get a file with SFTP]
+*** xref:plugins/actions/http.adoc[Http Get]
+*** xref:plugins/actions/eval.adoc[JavaScript]
+*** xref:plugins/actions/mssqlbulkload.adoc[MS SQL Server Bulk Loader]
+*** xref:plugins/actions/mail.adoc[Mail]
+*** xref:plugins/actions/mailvalidator.adoc[Mail Validator]
+*** xref:plugins/actions/movefiles.adoc[Move Files]
+*** xref:plugins/actions/mysqlbulkfile.adoc[MySQL Bulk File]
+*** xref:plugins/actions/mysqlbulkload.adoc[MySQL Bulk Loader]
+*** xref:plugins/actions/pgpfiles.adoc[PGP Files]
+*** xref:plugins/actions/ping.adoc[Ping]
+*** xref:plugins/actions/pipeline.adoc[Pipeline]
+*** xref:plugins/actions/ftpput.adoc[Put a file with FTP]
+*** xref:plugins/actions/sftpput.adoc[Put a file with SFTP]
+*** xref:plugins/actions/sql.adoc[SQL Script Executor]
+*** xref:plugins/actions/sendnagiospassivecheck.adoc[Send Nagios check]
+*** xref:plugins/actions/syslog.adoc[Send information using Syslog]
+*** xref:plugins/actions/setvariables.adoc[Set Variables]
+*** xref:plugins/actions/shell.adoc[Shell Action]
+*** xref:plugins/actions/simpleeval.adoc[Simple Evaluation]
+*** xref:plugins/actions/snmptrap.adoc[Snmp Trap]
+*** xref:plugins/actions/success.adoc[Success Action]
+*** xref:plugins/actions/tableexists.adoc[Table Exists]
+*** xref:plugins/actions/telnet.adoc[Telnet a host]
+*** xref:plugins/actions/truncatetables.adoc[Truncate Tables]
+*** xref:plugins/actions/unzip.adoc[Unzip]
+*** xref:plugins/actions/ftpsput.adoc[Upload files to FTPS]
+*** xref:plugins/actions/pgpverify.adoc[Verify file signature with PGP]
+*** xref:plugins/actions/waitforsql.adoc[Wait for SQL]
+*** xref:plugins/actions/waitforfile.adoc[Wait for file]
+*** xref:plugins/actions/workflow.adoc[Workflow]
+*** xref:plugins/actions/writetofile.adoc[Write to File]
+*** xref:plugins/actions/writetolog.adoc[Write to Log]
+*** xref:plugins/actions/xsdvalidator.adoc[XSD Validator]
+*** xref:plugins/actions/xslt.adoc[XSL Transformation]
+*** xref:plugins/actions/zipfile.adoc[Zip File]
+//::=END AUTO GENERATED LINKS
+* xref:samples/samples.adoc[Samples]
+** xref:samples/dummy-sample.adoc[Dummy Sample]
+* xref:faq/faq.adoc[Frequently Asked Questions]
+* xref:image-testpage.adoc[Image testing page]
diff --git a/hop-user-manual/modules/ROOT/pages/concepts.adoc b/hop-user-manual/modules/ROOT/pages/concepts.adoc
new file mode 100644
index 0000000..aaa003e
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/concepts.adoc
@@ -0,0 +1,71 @@
+[[Concepts]]
+:imagesdir: ../assets/images
+
+= Concepts
+
+== Components
+
+.Hop Components
+[width="90%", cols="3*", options="header"]
+|=======
+|Name |Description |Since
+|Hop UI     |Hop UI is the visual IDE where Workflow and Pipeline developers create, test and run their work before the code is ready to be deployed.  |0.1
+|Hop Server |Hop Server is a lightweight web server that allows to run Workflows and Pipelines through a REST api.  |0.1
+|Hop CLI    |Hop CLI is a command line interface (CLI) for headless execution of Workflows and Pipelines |0.1
+|=======
+
+== Item types
+
+.Hop Item Types
+[width="90%", cols="3*", options="header"]
+|===
+|Name |Description |Since
+|Workflow |A Workflow is a sequence of operations that are performed sequentially by default (with optional parallel execution). Workflows usually do not operate on the data directly, but perform orchestration tasks. Typical tasks in a Workflow consist of retrieving and archiving data, sending emails, error handling etc. ) |0.1
+|Pipeline |Pipelines are the actual data workers. Operations in a Pipeline read, modify, enrich, clean and write data. Orchestration of Pipelines is done through othere Pipelines and/or Workflows.|0.1
+|Action |An Action is one operation performed in a Workflow. Actions are executed sequentially by default, with parallel execution as a configuration option. An Action returns a true or false exit code, which can be used (or ignored) in the Workflow's execution. |0.1
+|Transform |A Transform is a unit of work performed in a Pipeline. Typical Transform operations are reading data from files, databases, performing lookups or joins, enriching, cleaning data and more. All transforms in a Pipeline are executed in parallel. Transforms process data and move batches of processed data on Hops for processing by subsequent Actions.  |0.1
+|Hop |A Hop links Actions in a Workflow or Transforms in a Pipeline. In Workflows, Hops operate based on the exit status of previous Actions, Hops in Pipelines pass data between Transforms. |0.1
+|===
+
+image::concepts/workflow.png[Workflow]
+image::concepts/pipeline.png[Pipeline]
+
+
+== Environment
+
+The link:hop-gui/environments/environments.html[Hop Environment] allows data developers to manage development, acceptance and production environments with their configurations and variables.
+Each environment will remember your opened files, their zoom level and other UI settings.
+
+image::concepts/environments.png[Environment Examples]
+
+== Metadata
+The Hop Metadata is the central storage repository for shared metadata like relational database connections, run configurations, servers, git repositories and so on.
+The Metastore uses the following elements:
+
+* *Object types*: Object types have a key, a name and (optionally) a description.
+* *Objects*: Every object type can have any number of objects which are identified their name
+
+Hop plugins can define their own metadata object types so depending on the installed plugins you can find extra types.
+
+== Various
+The following items are an alphabetically ordered list of concepts that are used throughout Hop and will be mentioned at various locations in the Hop tools and documentation.
+
+.Various Hop Concepts
+[width="90%", cols="2*", options="header"]
+|===
+|Concept | Description
+|Lazy Loading
+| If enabled, all data conversions (character decoding, data conversion, trimming, ...) for the data being read will be postponed as long as possible, effectively reading the data as binary fields. Enabling lazy conversion can significantly decrease the CPU cost of reading data.
+
+
+When to avoid: if the data conversion needs to be performed later in the stream anyway, postponing the conversion may slow things down instead of speeding up.
+
+
+Use cases where Lazy Conversion may speed things up:
+
+  - data is read and written to another file without conversion
+
+  - data needs to be sorted and doesn't fit in memory. In this case, serialization to disk is faster with lazy conversion because encoding and type conversions are postponed.
+
+  - bulk-loading to database without the need for data conversion. Bulk loading utilities typically read text directly and the generation of this text is faster (this does not apply to Table Output).
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/faq/faq.adoc b/hop-user-manual/modules/ROOT/pages/faq/faq.adoc
new file mode 100644
index 0000000..f5b7dac
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/faq/faq.adoc
@@ -0,0 +1,6 @@
+[[Faq]]
+= Frequently Asked Questions
+
+This page contains some of the frequently asked question
+
+== Questions
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/getting-started.adoc b/hop-user-manual/modules/ROOT/pages/getting-started.adoc
new file mode 100644
index 0000000..3867830
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/getting-started.adoc
@@ -0,0 +1,461 @@
+[[GettingStarted]]
+:imagesdir: ../assets/images
+
+= Getting Started
+
+
+== Getting Started with Hop
+* https://www.project-hop.org/download/download/[Download] a recent Hop build.
+* unzip hop to a local directory
+* change to the hop directory
+
+== Introducing Hop
+Hop is a metadata driven environment where you manage your data processing workflows.
+
+Before anything else, we need to explain Hop's two main concepts:
+
+* **Workflow** is a (by default) sequential process that has a starting point and one or more endpoints.
+Between the start and endpoint, a variety of 'actions' can be performed. These actions can range from executing other workflows or pipelines, archiving files that were processed, sending error messages or success notifications and much more.
+
+* **Pipelines**  are more granular items of work. A pipeline is where the actual work is done. Pipelines consist of a chain of transforms that read, process or write data.
+Depending on the execution engine your pipelines run, this can be in batch, streaming or a hybrid mode.
+
+The actions in a workflow and the transforms in a pipeline are connected by 'hops'. Hop are visual links between actions (workflows) and transforms (pipelines).
+
+As you'll discover soon, the process of creating workflows and pipelines is very similar.
+
+However, there are a number of conceptual differences between workflows and pipelines that you have to keep in mind:
+
+* the pipeline engine executes all transforms in a pipeline simultaneously and in parallel. The workflow engine executes all actions in a workflow sequentially by default. When action finishes, the workflow engine checks which action needs to be executed next.
+* hops in a pipeline pass data between transforms. In a workflow, hops can conditionally determine which action the workflow needs to execute next (on success, on failure, unconditionally)
+* because of their sequential nature, workflows have 1 action to start from and 1 or more end actions. Pipelines can start with input from multiple transforms simultaneously.
+
+
+The following tools are at your disposal to work with Hop flows and pipelines:
+
+* the **Hop Gui** is your visual IDE to build, preview, run, test, deploy, ... workflows and pipelines.
+* the **Hop Server** is a lightweight web server that provides a REST api to run workflows and pipelines remotely.
+* **Hop Run** is a command line utility to run workflows and pipelines.
+
+== The Hop GUI
+
+The Hop Gui is your local development environment to build, run, preview and debug (work)flows and pipelines.
+
+Check out this short video to learn how to download, unzip and start the Hop Gui (on Windows).
+
+<!-- [html-validate-disable-next deprecated] -->
+video::RMIOTmZK-YE[youtube, width=75%, height=400px]
+
+=== Start the Hop GUI
+
+On Linux:
+[source,bash]
+ ./hop-gui.sh
+
+On Windows:
+[source,bash]
+hop-gui.bat
+
+=== Hop GUI Walkthrough
+
+After starting the Hop Gui, you'll be presented with a window like the one below.
+
+image::getting-started/getting-started-hop-gui.png[Hop Gui , 75% , align="left"]
+
+After clicking the 'New' icon in the upper left corner, you'll be presented with the window below.
+Choose either 'New Workflow' or 'New Pipeline'.
+
+image::getting-started/getting-started-new-dialog.png[Hop - New Dialog, 75% , align="left"]
+
+==== Pipeline Editor Overview
+
+Your new pipeline is created, and you'll see the dialog below.
+
+image::getting-started/getting-started-new-pipeline.png[Hop - New Pipeline, 75%, align="left"]
+
+Let's walk through the top toolbar:
+
+image::getting-started/getting-started-pipeline-toolbar.png[Hop - Pipeline Toolbar, align="left"]
+
+[width="85%", cols="15%,5%,80%", options="header"]
+|===
+|Action|Icon|Description
+|run|image:getting-started/icons/run.svg[Run, 25px, align="bottom"]|start the execution of the pipeline
+|pause|image:getting-started/icons/pause.svg[Pause, 25px, align="bottom"]|pause the execution of the pipeline
+|stop|image:getting-started/icons/stop.svg[Stop, 25px, align="bottom"]|stop the  execution of the pipeline
+|||
+|preview|image:getting-started/icons/view.svg[Preview, 25px, align="bottom"]|preview the pipeline
+|debug|image:getting-started/icons/debug.svg[Debug, 25px, align="bottom"]|debug the pipeline
+|print|image:getting-started/icons/print.png[Print, 25px, align="bottom"]|print the pipeline
+|||
+|undo|image:getting-started/icons/Antu_edit-undo.svg[Undo, 25px, align="bottom"]|undo an operation
+|redo|image:getting-started/icons/Antu_edit-redo.svg[Redo, 25px, align="bottom"]|redo an operation
+|||
+|align|image:getting-started/icons/snap-to-grid.svg[Snap To Grid, 25px, align="bottom"]|align the specified (selected) transforms to the specified grid size
+|align left|image:getting-started/icons/align-left.svg[Align Left, 25px, align="bottom"]|align the selected transforms with left-most selected transform in the selection
+|align right|image:getting-started/icons/align-right.svg[Align Right, 25px, align="bottom"]|align the selected transforms with right-most selected transform in the selection
+|align top|image:getting-started/icons/align-top.svg[Align Top, 25px, align="bottom"]|align the selected transforms with top-most selected transform in the selection
+|align bottom|image:getting-started/icons/align-bottom.svg[Align Bottom, 25px, align="bottom"]|align the selected transforms with bottom-most selected transform in the selection
+|||
+|distribute horizontally|image:getting-started/icons/distribute-horizontally.svg[Distribute Horizontally, 25px, align="bottom"]|Distribute the selected transforms evenly between the left-most and right-most transform in your selection
+|distribute vertically|image:getting-started/icons/distribute-vertically.svg[Distribute Vertically, 25px, align="bottom"]|Distribute the selected transforms evenly between the top-most and bottom-most transform in your selection
+|===
+
+=== Build Your First Pipeline
+
+==== Concepts
+Pipelines consist of two main work items:
+
+* **transforms** are the basic operations in your pipeline. A pipeline typically consists of a lot of transforms that are chained together by hops.
+Transforms are granular, in the sense that each transform is designed and optimized to perform one and only one task. Although one transform by itself may not offer spectacular functionality, the combination of all transforms in a pipeline is makes your pipelines powerful.
+
+* **hops** link transforms together. When a transform finishes processing the data set it received, that data set is passed to the next transform through a hop.
+Hops are uni-directional (data can't flow backwards). Hops only buffer and pass data around, the hop itself is transform-agnostic, it doesn't know anything about the transforms it passes data from or to.
+Some transforms can read from or write to other transforms conditionally to or from a number of other transforms, but this a transform-specific configuration. The hop is unaware of it.
+Hops can be disabled by clicking on them, or through right-click -> disable.
+
+==== Add Transforms
+
+Click anywhere in the pipeline canvas, the area where you'll see the image below.
+
+image::getting-started/getting-started-click-anywhere.png[Hop - Click Anywhere, 45% , align="left"]
+
+Upon clicking, you'll be presented with the dialog shown below. The search box at the top of this dialog works for transform, name, tags (TODO) etc.
+Once you've found the transform you're looking for, click on it to add it to your pipeline. An alternative to clicking is arrow key navigation + enter.
+Repeat this step now or whenever you want to add more transforms to your pipeline.
+Once you've added a transform to your pipeline, you can drag to reposition it.
+
+TODO: link to transform documentation.
+
+image::getting-started/getting-started-add-transform.png[Hop - Add Transform, 75% , align="left"]
+
+Add a 'Generate Rows' and a 'Add Sequence' transform, and your pipeline should like the one below.
+
+image::getting-started/getting-started-add-two-transforms.png[Hop - Add two transforms, 75% , align="left"]
+
+
+==== Add a Hop
+
+There are a number of ways to create a hop:
+
+* shift-drag: while holding down the shift key on your keyboard. Click on a transform, while holding down your primary mouse button, drag to the second transform. Release the primary mouse button and the shift key.
+* scroll-drag: scroll-click on a transform , while holding down your mouse's scroll button, drag to the second transform. Release the scroll button.
+* click on a transform in your pipeline to open the 'click anywhere' dialog. Click the 'Create hop' image::getting-started/icons/HOP.svg[Create hop, 25px, align="bottom"] button and select the transform you want to create the hop to.
+
+image::getting-started/getting-started-create-hop.png[Hop - Create Hop, 65% , align="left"]
+
+=== Run your first Pipeline
+
+Click the 'run' button image::getting-started/icons/run.svg[Run, 25px, align="bottom"] in your pipeline toolbar
+
+image::getting-started/getting-started-run-pipeline-dialog.png[Hop - Create Hop, 75% , align="left"]
+
+Let's walk through the options in this dialog
+
+* Pipeline run configurations, edit, new, manage your run configurations. Run configurations are used to specify a name, description and engine to run your pipeline.
+* Log level: choose the log level for your pipeline. The available options are
+** Nothing
+** Error
+** Minimal
+** Basic (default)
+** Detailed
+** Debugging
+** Row Level (very detailed)
+* Clear log before running (enabled by default): logging information from previous runs will be cleared from the logging tab.
+* parameters: This table will show the parameter name, default value and description. enter your runtime parameters in the 'value' field.
+* variables: add the variable name and value you want to set in this tab.
+* always show dialog on run (enabled by default): You'll be presented with this dialog every time you run this dialog. When disabled, the pipeline will run with the default options.
+
+Click the 'New' button right next to the 'Pipeline run configuration'.
+Give your run configuration a name and (optionally) a description. Choose the 'local pipeline engine'. As the name implies, the 'local single threaded pipeline engine' runs the pipeline in a single CPU thread. The default 'local pipeline engine' will create a separate CPU thread for each transform in your pipeline to evenly spread the load of your pipeline over your CPU cores.
+
+image::getting-started/getting-started-run-configuration-dialog.png[Hop - Run Configuration Dialog, 75% , align="left"]
+
+Click 'Ok' to create your configuration and select it from the dropdown list.
+For this getting started guide, we'll leave all other options to the defaults. Click 'Launch'.
+
+Since we haven't saved our pipeline yet, you'll be prompted to do so by the dialog below.
+
+image::getting-started/getting-started-save-pipeline.png[Hop - Save Pipeline, 55% , align="left"]
+
+Your pipeline will finish in a matter of milliseconds, and the 'Execution Result' view will show up at the bottom of your IDE.
+This view has 5 tabs:
+
+* transform metrics: transformName, read, written, input, output, update, rejected, errors, buffers input, buffers output, speed, status (TODO: elaborate)
+* logging: the logging output for your pipeline
+* preview data: a preview of the data for the selected transform. This grid shows the data as it passed through this transform.
+* metrics: TODO
+* performance graph: TODO
+
+image::getting-started/getting-started-execution-results-metrics.png[Hop - Execution Results Metrics, 75% , align="left"]
+
+
+=== Preview your first Pipeline
+
+While developing your pipeline, you'll often want to check your data as it enters or exits a transform.
+Previews are an easy way to take a glance at the state of your data stream as it exits a transform.
+
+To preview the data that is processed by a transform, click on a transform and select 'Preview output'.
+The same result can be achieved by selecting a transform in your pipeline (rectangle select) and clicking the preview (eye) icon in the pipeline toolbar.
+
+image::getting-started/getting-started-preview-pipeline.png[Hop - Preview Transform, 75% , align="left"]
+
+You'll be presented with the dialog below. You can change the number of rows to preview (1000 by default), but in most cases, you'll just want to hit the green 'Quick Launch' button.
+
+image::getting-started/getting-started-preview-dialog.png[Hop - Preview Dialog, 75% , align="left"]
+
+Once your pipeline finished processing the selected number of rows for the selected transform, a new popup dialog will show your preview results.
+
+image::getting-started/getting-started-preview-results.png[Hop - Preview Results, 75% , align="left"]
+
+IMPORTANT: your **entire** pipeline is executed for a preview, you're just taking a peek into the processing at the selected transform. If your pipeline modifies data (writes, updates, deletes) further down the stream, those actions **will* be performed, even if you're previewing an earlier transform.
+
+Let's take a quick look at the buttons at the bottom of this dialog:
+
+* Close: closes the preview dialog. The pipeline will remain paused, and will therefore still be active.
+* Stop: stop the preview and the pipeline execution.
+* Get more rows: fetch the next 1000 (or any other selected amount of) rows for preview.
+
+=== Debug your first Pipeline
+
+Debugging a pipeline's transform is very similar to previewing. Instead of pausing the pipeline execution after a given number of rows, the pipeline is paused when a given condition is met.
+The process to start a debug session is similar to starting the preview: click on a transform and select 'Debug output' from the pop-up dialog, or select a transform and hit the bug-icon in the pipeline toolbar.
+
+image::getting-started/getting-started-debug-pipeline.png[Hop - Preview Transform, 75% , align="left"]
+
+You'll be presented with the dialog below. You'll recognize this dialog from the 'preview' we just did, but instead, the 'Retrieve first rows (preview)' option is now unchecked, and 'Pause pipeline on condition' is checked.
+
+In the 'Break-point / pause condition' below that option, you can specify on which condition you want to debug. This dialog is the same as the http://www.project-hop.org/manual/latest/plugins/transforms/filterrows.html[Filter Rows] transform.
+
+In our very basic example, we've set a breakpoint on 'valuename > 5'.
+
+image::getting-started/getting-started-debug-dialog.png[Hop - Preview Dialog, 75% , align="left"]
+
+With the 'valuename > 5' breakpoint, our pipeline is paused as soon as this condition is met (valuename = 6). The rows preceding that moment are also shown, so you can investigate how your data was processed before the breakpoint condition was true.
+
+Similar to the preview options, you can close, stop or continue the debugging ('Get more rows'). When you tell your pipeline to 'Get more rows', the pipeline execution will be resumed until the breakpoint condition is met once more, instead of just fetching the next 1000 (default) rows.
+
+image::getting-started/getting-started-debug-results.png[Hop - Preview Results, 75% , align="left"]
+
+
+
+=== Create your first Workflow
+
+The design and execution of workflows is very similar to that of pipelines. However, keep in mind that there are significant differences between how Hop handles workflows and pipelines under the hood.
+
+To create a workflow, hit the 'new' icon or 'CTRL-N'. From the pop-up dialog, select 'New workflow'.
+
+image::getting-started/getting-started-new-workflow.png[Hop - New Workflow, 75% , align="left"]
+
+Add the following actions to your workflow and create the hops to connect them:
+
+* Start
+* Pipeline
+* Success
+
+image::getting-started/getting-started-new-workflow-actions.png[Hop - New Workflow with actions, 75% , align="left"]
+
+Double-click or single-click and choose 'Edit action' to configure the action for the pipeline you just created.
+
+In the pipeline dialog, use the 'Browse' button to select your pipeline and give the action an appropriate name, for example 'First Pipeline'.
+
+Click 'OK'.
+
+image::getting-started/getting-started-new-workflow-pipeline-action.png[Hop - New Workflow pipeline action, 75% , align="left"]
+
+Notice how the hops in your workflow are a little different from what you've seen in pipeline hops.
+
+Add a fourth action 'Abort' and create a hop from your pipeline action.
+
+image::getting-started/getting-started-new-workflow-abort.png[Hop - New Workflow abort, 75% , align="left"]
+
+You now have the three types of hops that are available in workflows:
+
+* unconditional (lock icon, black hop): 'unconditional' hops are followed no matter what the exit code (true/false) of the previous action is
+* success (green hop, check mark): 'success' hops are used when the previous action executed successfully.
+* failure (red hop, error mark): 'failure' or 'error' hops are followed when the previous action failed.
+
+NOTE: The hop type can be changed by clicking on the hop's icon.
+
+With these three hop types and the actions at your disposal, you're ready to create powerful data orchestration workflows.
+
+=== Run your first Workflow
+
+As with designing workflows, the steps to run a workflow are very similar to running a pipeline.
+
+Click the 'run' button image:getting-started/icons/run.svg[Run, 25px, align="bottom"] in your workflow toolbar
+
+In the workflow run dialog, hit the 'New' button in the upper right corner to create a new 'Workflow run configuration'.
+
+image::getting-started/getting-started-run-workflow-dialog.png[Hop - New Workflow Config, 75% , align="left"]
+
+In the dialog that pops up, add 'Local Workflow' as the workflow configuration name and choose the 'Local workflow engine'.
+
+image::getting-started/getting-started-run-workflow-config-dialog.png[Hop - New Workflow Config Dialog, 75% , align="left"]
+
+Click 'OK' to return to the workflow run dialog, make sure your configuration is selected and hit 'Launch'.
+
+image::getting-started/getting-started-run-workflow-with-config.png[Hop - New Workflow With Config Dialog, 75% , align="left"]
+
+This workflow with our very basic pipeline should execute in less than one second. You'll now have the execution results pane which again looks very similar to the pipeline execution results.
+
+The first tab in your workflow execution is 'Logging'. This tab shows the logging information for your entire workflow. Any errors that occurred in your workflow will be highlighted in red.
+
+image::getting-started/getting-started-run-workflow-logging.png[Hop - New Workflow Logging, 75% , align="left"]
+
+The second tab are your workflow metrics. This tab is less verbose, but gives you an action-by-action overview of the execution of your workflow. The black, green and red color codings indicate information, success and failure.
+In larger worfklows, the metrics tab will give you a quick overview of what happened in your workflow, what the required time per action was, etc.
+
+You'll use the logging tab to find more detailed information about what happened in your workflow or in a particular action.
+
+image::getting-started/getting-started-run-workflow-metrics.png[Hop - New Workflow Metrics, 75% , align="left"]
+
+
+== Hop Server
+
+After you've designed and tested your pipeline or transform locally, you may want to run it on a headless machine.
+
+The Hop Server is a light weight web server that you can use to run your workflows and pipelines remotely.
+
+First, we'll have to start the server. Head over to your Hop directory, and locate the 'hop-server' scripts (sh for Mac/Linux, bat for Windows).
+
+Running the script without any arguments will print its usage:
+
+[source,bash]
+Usage: hop-server <Interface address> <Port> [-h] [-p <arg>] [-s] [-u <arg>]
+or
+Usage: hop-server <Configuration File>
+Starts or stops the hopServer server.
+     -h,--help               This help text
+     -p,--password <arg>     The administrator password.  Required only if
+                             stopping the Hop Server server.
+     -s,--stop               Stop the running hopServer server.  This is only
+                             allowed when using the hostname/port form of the
+                             command.
+     -u,--userName <arg>     The administrator user name.  Required only if
+                             stopping the Hop Server server.
+Example: hop-server.sh 127.0.0.1 8080
+Example: hop-server.sh 192.168.1.221 8081
+Example: hop-server.sh /foo/bar/hop-server-config.xml
+Example: hop-server.sh http://www.example.com/hop-server-config.xml
+Example: hop-server.sh 127.0.0.1 8080 -s -u cluster -p cluster
+
+As an example, let's run our server on our local machine on port 8085:
+
+On Linux:
+[source,bash]
+ ./hop-server.sh localhost 8085
+
+On Windows:
+[source,bash]
+hop-server.bat localhost 8085
+
+The startup process shouldn't take more than 1 or 2 seconds, and should show 2 lines of logging information:
+
+[source,bash]
+2020/04/30 16:22:55 - HopServer - Installing timer to purge stale objects after 1440 minutes.
+2020/04/30 16:22:55 - HopServer - Created listener for webserver @ address : localhost:8085
+
+In your favorite browser, go to http://localhost:8085[] and sign in with the default user 'cluster' and password 'cluster'.
+
+Click the 'show status' link below to get to page shown in the second screenshot.
+
+image::getting-started/getting-started-server-index.png[Hop - Server Index, 75% , align="left"]
+
+image::getting-started/getting-started-server-status.png[Hop - Server Status, 75% , align="left"]
+
+We now have verified our server is up and running. Let's return to Hop Gui to configure a run configuration for it.
+Click the 'New' icon or 'CTRL-N' and select 'Slave Server'.
+
+image::getting-started/getting-started-new-slave.png[Hop - New Slave, 75% , align="left"]
+
+In the slave server dialog, enter the details for the local server we just created.
+
+image::getting-started/getting-started-new-slave-config.png[Hop - New Slave Config, 75% , align="left"]
+
+With our slave server in place, all that's left to do is to create a run configuration for this server.
+Head back to your pipeline (again, the process is similar for workflows), and hit 'run'. Before running your pipeline, create a new 'Pipeline run configuration'.
+
+Name this configuration 'Remote Pipeline', select 'Remote pipeline engine' as the engine type, select the 'local' run configuration we created earlier, and select 'localhost' for the slave server we just created.
+
+Select this run configuration and run your pipeline. Your execution results will be almost identical to the locale execution you did earlier, however, the logs will show you executed the pipeline remotely:
+
+[source,bash]
+2020/04/30 17:01:33 - first_pipeline - Executing this pipeline using the Remote Pipeline Engine with run configuration 'Remote Pipeline'
+...
+...
+...
+2020/04/30 17:01:34 - first_pipeline - Execution finished on a remote pipeline engine with run configuration 'Remote Pipeline'
+
+The execution results for this pipeline will now be available in our server's status page as well:
+
+image::getting-started/getting-started-server-status-after-run.png[Hop - Server Status, 75% , align="left"]
+
+Select the pipeline or workflow line that you want to investigate, and choose one of the options from the options in the upper left corner of the pipeline or workflow overview table.
+Click the eye icon to open the details for that specfific execution:
+
+image::getting-started/getting-started-server-status-after-run-details.png[Hop - Server Status Details, 75% , align="left"]
+
+
+== Hop Run
+
+Hop Run is the last tool we'll discuss in this getting started overview.
+In many cases, you'll want to run your workflows and pipelines on a headless server, but don't necessarily want to run through rest services or from Hop Gui.
+
+Hop Run is a command line that can be used to run workflows or pipelines e.g. over ssh of from a cron job.
+
+The command to run is 'hop-run' (sh on Mac/Linux, bat on Windows).
+Without any arguments, hop-run shows its usage syntax:
+
+[source,bash]
+A filename is needed to run a workflow or pipeline
+Usage: <main class> [-hotw] [-e=<environment>] [-f=<filename>] [-l=<level>]
+                    [-r=<runConfigurationName>] [-p=<parameters>[,
+                    <parameters>...]]... [-s=<systemProperties>[,
+                    <systemProperties>...]]...
+  -e, --environment=<environment>
+                          The name of the environment to use
+  -f, --file=<filename>   The filename of the workflow or pipeline to run
+  -h, --help              Displays this help message and quits.
+  -l, --level=<level>     The debug level, one of NONE, MINIMAL, BASIC, DETAILED,
+                            DEBUG, ROWLEVEL
+  -o, --printoptions      Print the used options
+  -p, --parameters=<parameters>[,<parameters>...]
+                          A comma separated list of PARAMETER=VALUE pairs
+  -r, --runconfig=<runConfigurationName>
+                          The name of the Run Configuration to use
+  -s, --system-properties=<systemProperties>[,<systemProperties>...]
+                          A comma separated list of KEY=VALUE pairs
+  -t, --pipeline          Force execution of a pipeline
+  -w, --workflow          Force execution of a workflow
+
+
+Since we've been working with a very basic pipeline, running it from hop-run is as easy as specifying:
+* the pipeline filename to run
+* the run configuration to use
+
+[source,bash]
+ ./hop-run.sh -f /tmp/first_pipeline.hpl -r local
+
+You'll get output that will be very similar to the one below:
+
+[source,bash]
+2020/04/30 17:16:48 - first_pipeline - Executing this pipeline using the Local Pipeline Engine with run configuration 'local'
+2020/04/30 17:16:48 - first_pipeline - Execution started for pipeline [first_pipeline]
+2020/04/30 17:16:48 - Generate rows.0 - Finished processing (I=0, O=0, R=0, W=10, U=0, E=0)
+2020/04/30 17:16:48 - Add sequence.0 - Finished processing (I=0, O=0, R=10, W=10, U=0, E=0)
+2020/04/30 17:16:48 - first_pipeline - Pipeline duration : 0.079 seconds [  0.079 ]
+2020/04/30 17:16:48 - first_pipeline - Execution finished on a local pipeline engine with run configuration 'local'
+./hop-run.sh -f /tmp/first_pipeline.hpl -r local  5.62s user 0.34s system 258% cpu 2.309 total
+
+== Where to go from here?
+
+We'll be adding more documentation as we go, so keep an eye on the https://www.project-hop.org[Project Hop] documentation section.
+
+A good place to start exploring is the detailed documentation for:
+
+* http://www.project-hop.org/manual/latest/plugins/actions.html[Workflow Actions]
+* http://www.project-hop.org/manual/latest/plugins/transforms.html[Pipeline Transforms]
+
+NOTE: Project Hop considers high-quality documentation a very important part of the project. Help us to improve by creating tickets for any documentation errors, suggestions or feature requests in our https://jira.project-hop.org[JIRA system].
+
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/environments/environments.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/environments/environments.adoc
new file mode 100644
index 0000000..77e2486
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/environments/environments.adoc
@@ -0,0 +1,192 @@
+[[HopEnvironments]]
+:imagesdir: ../../../assets/images
+
+= Environments
+
+== Managing projects and environments
+
+Most developers who design and manage data processing on a daily basis work on a multitude of projects and modules. Different sets of workflows and pipelines require management for at least development, acceptance and production environments. Every project or environment comes with its own set of variables and configurations for databases, file paths, ..
+
+=== How does Hop manage projects and environments
+
+Hop allows developers to manage different projects and environments with their corresponding configurations and variables. Hierarchically each project can have multiple environments with different purposes. Each project will remember opened files, zoom levels and other UI settings.
+
+=== Creating a project
+
+To create a new project click the *Add a new project* button.
+
+image:hop-gui/environment/project-add.svg[Add a new project]
+
+
+This button opens the following dialogue:
+
+image:hop-gui/environment/create-project-dialogue.png[Create a project]
+
+
+.Project Properties
+[id="tab-proj-props", cols="20%,45%,5%,5%,25%", option="header]
+|===
+|Property|Description|Variables Supported|Mandatory|Default
+|Name|The project name|Yes|No|
+|Home folder|The folder where the project is located|Yes|No|
+|Configuration file (relative path)|The folder where the project's configuration json is located.|Yes|Yes|
+|Description|A description for this environment|No|No|
+|Company|The company this environment belongs to|No|No|
+|Department|The department this environment is created for|No|No|
+|Metadata base folder|The folder where this environment's metadata will be stored|Yes|Yes|${ENVIRONMENT_HOME}/metadata
+|Unit test base path|The folder where this environment's unit tests will be stored|Yes|Yes|${ENVIRONMENT_HOME}
+|Data Sets CSV Folder|The folder where this environment's data files will be stored|Yes|Yes|${ENVIRONMENT_HOME}/datasets
+|Enforce execution in environment home|Give an error when trying to execute a pipeline or workflow which is not located in the environment home directory or in a sub-directory|Yes|Yes|checked
+|Project variables to set|A list of variable names, values and variable descriptions to use with this project|No|Yes|
+|===
+
+After creating a project the user interface will switch to it and ask if you want to create an environment.
+
+=== Creating an environment
+
+To create a new environment click the *Add a new environment* button.
+
+image:hop-gui/environment/environment-add.svg[Environment]
+
+This button opens the following dialogue:
+
+image:hop-gui/environment/create-environment-dialogue.png[Create a project]
+
+.Environment Properties
+[id="tab-env-props", cols="20%,45%,5%,5%,25%", option="header]
+|===
+|Property|Description|Variables Supported|Mandatory|Default
+|Name|The environment name|No|No|The last created project
+|Purpose a|The purpose of this environment
+
+* Development
+* Testing
+* Acceptance
+* Production
+* Continuous integration
+* Common build
+* ...|No|No|
+|Project|The project to which this environment belongs|No|No|The last created project
+|Configuration files|Files to use as configuration for this environment|No|No|
+|===
+
+After creating an environment the user interface will switch to it.
+
+=== Switching between projects and environments
+
+To switch between projects the projects list can be used from the main Hop Gui toolbar.
+
+image::hop-gui/environment/switch-project-list.png[Switch project]
+
+After switching to a project the environments list will be updated to the environments which belong to this project. All open files will be restored, including their zoom level and other UI settings.
+
+image::hop-gui/environment/switch-environment-list.png[Switch environment]
+
+
+=== Editing and deleting projects
+
+To edit an existing project click the *Edit the selected project* button.
+
+image:hop-gui/environment/project-edit.svg[Edit the selected project]
+
+Clicking this button will re-open the project dialogue where changes can be made as described in <<tab-proj-props>>.
+
+To delete a project click the *Delete the selected project* button.
+
+image:hop-gui/environment/environment-edit.svg[Delete the selected project]
+
+=== Editing and deleting environments
+
+To edit an existing environment click the *Edit the selected environment* button.
+
+image:hop-gui/environment/project-edit.svg[Edit the selected environment]
+
+Clicking this button will re-open the project dialogue where changes can be made as described in <<tab-env-props>>.
+
+To delete a project click the *Delete the selected environment* button.
+
+image:hop-gui/environment/environment-delete.svg[Delete the selected environment]
+
+
+=== Advanced project and environment management
+
+==== Configuration files
+
+Configuration files will be stored in the chosen project home directory as a json file. An environment can be set to point to (multiple) different configuration files as is needed. These config files contain the following:
+
+[source,json]
+{
+  "metadataBaseFolder" : "${PROJECT_HOME}/metadata",
+  "unitTestsBasePath" : "${PROJECT_HOME}",
+  "dataSetsCsvFolder" : "${PROJECT_HOME}/datasets",
+  "enforcingExecutionInHome" : true,
+  "config" : {
+    "variables" : [ {
+      "name" : "foo"
+    } ]
+  }
+}%
+
+==== Advanced Hop environment configuration
+
+Hop enviroments and their home folders are stored in the hop configuration file 'hop-config.json'. That file lives by default in the *config* folder of the Hop installation. System property 'HOP_CONFIG_FOLDER' can also be used to point to a different folder
+
+[source,json]
+{
+ "environmentConfig" : {
+  "enabled" : true,
+  "openingLastEnvironmentAtStartup" : true,
+  "environmentConfigFilename" : "environment.json",
+  "environmentFolders" : {
+   "Project 1 - DEV" : "/projects/one/dev/",
+   "Project 1 - UAT" : "/projects/one/uat/",
+   "Project 1 - PRD" : "/projects/one/prd/",
+   "Project 2 - DEV" : "/projects/two/dev/",
+   "Project 2 - UAT" : "/projects/two/uat/",
+   "Project 2 - PRD" : "/projects/two/prd/",
+  }
+}
+
+== The Hop command line configuration tool
+
+Hop Conf is a command line tool to manage environments. The *hop-conf.sh* script can be run with the *-h* flag (`./hop-conf.sh -h`) to display available options.
+
+image::hop-gui/environment/hop-conf-help.png[Hop Conf, width="65%"]
+
+The available options are listed below:
+
+.Hop-conf Options
+[id="hop-conf", cols="10%, 40%,50%" width="90%", options="header"]
+|===
+|Short Option|Extended Option|Description
+|-h|--help|Displays this help message and quits.
+|-ec|--environment-create|Create an environment. Also specify the name and its home
+|-ed|--environment-delete|Delete an environment
+|-el|--environment-list|List the defined environments
+|-em|--environment-modify|Modify an environment
+|-pc|--project-create|Create a new project. Also specify the name and its home
+|-pd|--prject-delete|Delete a project
+|-pl|--project-list|List the defined projects
+|-pm|--project-modify|Modify a project
+|-dv|--describe-variable=<describeVariable>|Describe a variable
+|-e|-environment=<environmentName>|The name of the environment to manage
+|-ep|--environment-project=<environmentProject>|The project for the environment
+|-eu|--environment-purpose=<environmentPurpose>|The purpose of the environment: Development, Testing, Production, CI, ...
+|-fj|--generate-fat-jar=<fatJarFilename>|Specify the filename of the fat jar to generate from your current software installation
+|-p|--project=<projectName>|The project name
+|-pa|--project-metadata-base=<projectMetadataBaseFolder>|The metadata base folder (relative to home)
+|-pb|--project-datasets-base-base=<projectDataSetsCsvFolder>|The data sets CSV folder (relative to home)
+|-pf|--project-config-file=<projectConfigFile>|The configuration file relative to the home folder. The default value is project-config.json
+|-ph|--project-home=<projectHome>|The home directory of the project
+|-pp|--project-company=<projectCompany>|The company
+|-ps|--project-description=<projectDescription>|The description of the project
+|-pt|--project-department=<projectDepartment>|The department
+|-pu|--project-unit-tests-base=<projectUnitTestsBasePath>|The unit tests base folder (relative to home)
+|-px|--project-enforce-execution=<projectEnforceExecutionInHome>|Validate before execution that a workflow or pipeline islocated in the project home folder or a sub-folder (true/false)
+|-sv|--set-variable=<setVariable>|Set a variable, use format VAR=Value
+|-cfg|--config-file=<configFile>|Specify the configuration JSON file to manage
+|-cfd|--config-file-describe-variables=<configDescribeVariables>[,<configDescribeVariables>...]|A list of variable=description combinations separated by a comma
+|-cfv|--config-file-set-variables=<configSetVariables> ,<configSetVariables>...]|A list of variable=value combinations separated by a comma
+|-eg|--environment-config-files=<environmentConfigFiles>[, <environmentConfigFiles>...]|A list of configuration files for this lifecycle environment, comma separated
+|-pv|--project-variables=<projectVariables>[,<projectVariables>...]| A list of variable=value combinations separated by a comma
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/index.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/index.adoc
new file mode 100644
index 0000000..71ce6d4
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/index.adoc
@@ -0,0 +1,39 @@
+[[HopGui]]
+
+= Hop Gui
+
+== https://www.project-hop.org/manual/latest/hop-gui/workitems.html[Work Items]
+
+Work items are the building blocks for the start of your Hop journey. Different work items exist and can be used in the Hop environment. They are described in this section and in more detail in the specific Pipeline and Workflow sections. 
+
+== https://www.project-hop.org/manual/latest/hop-gui/pipelines/pipelines.html[Pipelines]
+
+Pipelines are a main concept in Hop. A pipeline is a more granular item of work. The actual work is done in a Pipeline. Following sections describe the basic concepts of Pipelines.
+
+== https://www.project-hop.org/manual/latest/hop-gui/workflows/workflows.html[Workflows]
+
+Workflows perform a variety of actions between a starting point and one or more endpoints. Following sections describe the basic concepts of Workflows.
+
+== Logging & Monitoring
+
+This section describes Logging and Monitoring for Hop and how to implement it on different levels.
+
+== https://www.project-hop.org/manual/latest/hop-gui/environments/environments.html[Hop Environments]
+
+Hop Environments offer the possibility to manage different environments with specific configurations and variables. This section will describe the managing and use of Hop Environments
+
+== https://www.project-hop.org/manual/latest/hop-gui/variables/variables.html[Variables]
+
+Variables provide a way to create a dynamic Hop solution. This section describes how they can be used and configured.
+
+== Working with Git
+
+Hop can be connected to your Git Repository, this section will explain more into detail how to use and configure Hop and Git.
+
+== Metastore Browser
+
+The metastore browser contains all objects in one location. This section handles the metastore browser and the editors of the metastore elements.
+
+== https://www.project-hop.org/manual/latest/hop-gui/shortcuts.html[Hop Shortcuts]
+
+Hop contains a lot of keyboard shortcuts to provide an alternative way to do something that you’d typically do with a mouse. The section below contains a list of shortcuts and their actions.
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/create-pipeline.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/create-pipeline.adoc
new file mode 100644
index 0000000..6f08f66
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/create-pipeline.adoc
@@ -0,0 +1,154 @@
+[[CreatePipeline]]
+:imagesdir: ../assets/images
+= Create a Pipeline
+
+TODO: this content is based on the https://www.project-hop.org/manual/latest/getting-started.html[Getting Started Guide]. Elaborate more.
+
+Pipelines are the fundamentals of your project. A pipeline contains operations executed in a predefined order. Pipelines consist of a chain of transforms that read, process or write data. The image below shows a simple pipeline that reads data from a table, adds a message to the data and sends out an email.
+
+image::hop-gui/pipeline/simple-pipeline.png[Hop - Simple Pipeline, 75%, align="left"]
+
+== Concepts
+
+Pipelines consist of transforms connected by hops. In the mail example 'Table input', 'Add message' and 'Mail' are all transforms.
+
+* **transforms** are the basic operations in your pipeline. A pipeline typically consists of a lot of transforms that are chained together by hops.
+Transforms are granular, in the sense that each transform is designed and optimized to perform one and only one task. Although one transform by itself may not offer spectacular functionality, the combination of all transforms in a pipeline is makes your pipelines powerful.
+
+* **hops** link transforms together. When a transform finishes processing the data set it received, that data set is passed to the next transform through a hop.
+Hops are uni-directional (data can't flow backwards). Hops only buffer and pass data around, the hop itself is transform-agnostic, it doesn't know anything about the transforms it passes data from or to.
+Some transforms can read from or write to other transforms conditionally to or from a number of other transforms, but this a transform-specific configuration. The hop is unaware of it.
+Hops can be disabled by clicking on them, or through right-click -> disable.
+
+== Creation
+
+Create a new pipeline through the https://www.project-hop.org/manual/latest/hop-gui/workitems.html[New Work Item] dialog. You'll be presented with the dialog shown below.
+
+image::hop-gui/pipeline/new-pipeline.png[Hop - New Pipeline, 75%, align="left"]
+
+When you are finished with your pipeline, save it. This can be done via the File menu, the icons or using CTLR s or Command s. For new pipelines a file browser is displayed to navigate towards the location you want to store the file.
+
+== Add Transform to your pipelines
+
+Click anywhere in the pipeline canvas, the area where you'll see the image below.
+
+image::getting-started/getting-started-click-anywhere.png[Hop - Click Anywhere, 45% , align="left"]
+
+Upon clicking, you'll be presented with the dialog shown below. The search box at the top of this dialog works for transform, name, tags (TODO) etc.
+Once you've found the transform you're looking for, click on it to add it to your pipeline. An alternative to clicking is arrow key navigation + enter.
+Repeat this step now or whenever you want to add more transforms to your pipeline.
+Once you've added a transform to your pipeline, you can drag to reposition it.
+
+Check the https://www.project-hop.org/manual/latest/plugins/transforms.html[list] of transforms to add to your pipeline for more details.
+
+
+image::getting-started/getting-started-add-transform.png[Hop - Add Transform, 75% , align="left"]
+
+Add a 'Generate Rows' and a 'Add Sequence' transform, and your pipeline should like the one below.
+
+image::getting-started/getting-started-add-two-transforms.png[Hop - Add two transforms, 75% , align="left"]
+
+The transform object can be configured through a single click on the object. The menu displayed below will be shown based on your transform object.
+
+image::hop-gui/pipeline/transforms.png[Hop - transforms, 75% , align="left"]
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Action|Description
+|Detach transform|Detach the transform from the pipeline
+|Edit the transform|Edit the transform's metadata
+|Copy transform to clipboard|Copies selected items to clipboard.
+|Create hop| Creates a new hop between two transforms.
+|Set the number of transforms|Starts several instances of a transform in parallel.
+|Preview output| Allows you to preview the results of the transform.
+|Debug output|
+|Show the fields entering this transform|Shows metadata, like the field name and type for fields coming into the transform.
+|Show the fields exiting this transform|Shows metadata, like the field name and type for fields coming out of the transform.
+|Distribute rows|In case of more than one hop the data is distributed between the next transforms.
+|Copy rows|In case of more than one hop the daya is copied to the next transforms.
+|Specify transform partitioning|Specify how rows of data need to be grouped into partitions allowing parallel execution where similar rows need to end up on the same transform copy
+|Edit transform description|Add a description to the transform.
+|Transform error handling|Set the error handling for the transform, not available for all transforms.
+|Delete this transform|Delete selected transform from the canvas.
+|Edit Custom Logging| Edit the custom log settings for this transform. This will change the log level used for this transform.
+|Clear Custom Logging|Clear custom log settings. This will clear the log level used for this transform.
+|Sniff output|Take a look at 50 rows coming out of this transform. This will show a real-time table with a continuous output of the selected transform.
+|Set input data set| Defines which data to use instead of the active input transform, applies to the selected unit test
+|Clear input data set|Remove a defined data set from the selected unit test
+|Set golden data set|The input to this transform is taken and compared to the golden data set you are selecting.\nThe transform itself is not executed during testing
+|Clear golden data set|Remove a defined input data set from this transform unit test
+|Create data set|Create an empty dataset with the output fields of this transform
+|Write rows to data set|Run the current pipeline and write the data to a data set
+|Remove from test|When this unit test is run, do not include this transform
+|Include in test|Run the current pipeline and write the data to a data set
+|Bypass in tess|When this unit test is run, bypass this transform (replace with a dummy)
+|Remove bypass in test|Do not bypass this transform in the current pipeline during testing
+|===
+
+== Add a Hop between transforms
+
+There are a number of ways to create a hop:
+
+* shift-drag: while holding down the shift key on your keyboard. Click on a transform, while holding down your primary mouse button, drag to the second transform. Release the primary mouse button and the shift key.
+* scroll-drag: scroll-click on a transform , while holding down your mouse's scroll button, drag to the second transform. Release the scroll button.
+* click on a transform in your pipeline to open the 'click anywhere' dialog. Click the 'Create hop' image::getting-started/icons/HOP.svg[Create hop, 25px, align="bottom"] button and select the transform you want to create the hop to.
+
+image::getting-started/getting-started-create-hop.png[Hop - Create Hop, 65% , align="left"]
+
+Some transforms result in different types of hops.
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Hop|Description
+|Result is TRUE|Specifies that the transform will be executed only when the result from the previous transform is true
+|Result is FALSE|pecifies that the transform will be executed only when the result from the previous transform is false
+|Main output of transform|The default hop between two transforms
+|===
+
+== Pipeline properties
+Pipeline properties are a collection of properties that describe the pipeline and configure its behavior.
+
+The properties dialog can be opened by double clicking on the pipeline canvas.
+
+Following properties can be configured:
+
+* Pipeline
+* Parameters
+* Monitoring
+
+image::hop-gui/pipeline/properties-pipeline.png[Pipeline properties, 75% , align="left"]
+
+The Pipeline tab allows you to specify general properties about the pipeline including:
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Property|Description
+|Pipeline name| The name of the pipeline
+|Synchronize name with filename|If option is enabled the filename and pipeline name are synchronized.
+|Pipeline filename| The filename of the pipeline
+|Description|Short description of the pipeline
+|Extended description| Long extended description of the pipeline
+|Status| Draft or production status
+|Version|Description of the version
+|Created by| Displays the original creator of the pipeline
+|Created at|Displays the date and time when the pipeline was created.
+|Last modified by| Displays the last user that modified the pipeline
+|Last modified at|Displays the date and time when the pipeline was last modified.
+|===
+
+The parameters tab allows you to specify parameters specific for the pipeline. Parameters are defined by a name, a default value and a description.
+
+image::hop-gui/pipeline/parameters-pipeline.png[Parameters properties, 75% , align="left"]
+
+The monitoring tab allows you to specify the monitoring of the pipeline.
+
+image::hop-gui/pipeline/monitoring-pipeline.png[Monitoring properties, 75% , align="left"]
+
+The options to set in this tab are:
+
+[width="85%", cols="30%, 60%, 10%", options="header"]
+|===
+|Property|Description|Type
+|Enable transform performance monitoring|Enable performance monitoring for the transforms in this pipeline|boolean
+|Transform performance measurement interval (ms)|The interval (milliseconds) to monitor the performance for the transforms in this pipeline|integer
+|Maximum number of snapshots in memory|the number of performance monitoring snapshots to keep in memory for the transforms in this pipeline|integer
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/hop-pipeline-editor.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/hop-pipeline-editor.adoc
new file mode 100644
index 0000000..9c16652
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/hop-pipeline-editor.adoc
@@ -0,0 +1,32 @@
+[[HopPipelineEditor]]
+:imagesdir: ../assets/images
+
+= Toolbar
+
+Let's walk through the top toolbar:
+
+image::getting-started/getting-started-pipeline-toolbar.png[Hop - Pipeline Toolbar, align="left"]
+
+[width="85%", cols="15%,5%,80%", options="header"]
+|===
+|Action|Icon|Description
+|run|image:getting-started/icons/run.svg[Run, 25px, align="bottom"]|start the execution of the pipeline
+|pause|image:getting-started/icons/pause.svg[Pause, 25px, align="bottom"]|pause the execution of the pipeline
+|stop|image:getting-started/icons/stop.svg[Stop, 25px, align="bottom"]|stop the  execution of the pipeline
+|||
+|preview|image:getting-started/icons/view.svg[Preview, 25px, align="bottom"]|preview the pipeline
+|debug|image:getting-started/icons/debug.svg[Debug, 25px, align="bottom"]|debug the pipeline
+|print|image:getting-started/icons/print.png[Print, 25px, align="bottom"]|print the pipeline
+|||
+|undo|image:getting-started/icons/Antu_edit-undo.svg[Undo, 25px, align="bottom"]|undo an operation
+|redo|image:getting-started/icons/Antu_edit-redo.svg[Redo, 25px, align="bottom"]|redo an operation
+|||
+|align|image:getting-started/icons/snap-to-grid.svg[Snap To Grid, 25px, align="bottom"]|align the specified (selected) transforms to the specified grid size
+|align left|image:getting-started/icons/align-left.svg[Align Left, 25px, align="bottom"]|align the selected transforms with left-most selected transform in the selection
+|align right|image:getting-started/icons/align-right.svg[Align Right, 25px, align="bottom"]|align the selected transforms with right-most selected transform in the selection
+|align top|image:getting-started/icons/align-top.svg[Align Top, 25px, align="bottom"]|align the selected transforms with top-most selected transform in the selection
+|align bottom|image:getting-started/icons/align-bottom.svg[Align Bottom, 25px, align="bottom"]|align the selected transforms with bottom-most selected transform in the selection
+|||
+|distribute horizontally|image:getting-started/icons/distribute-horizontally.svg[Distribute Horizontally, 25px, align="bottom"]|Distribute the selected transforms evenly between the left-most and right-most transform in your selection
+|distribute vertically|image:getting-started/icons/distribute-vertically.svg[Distribute Vertically, 25px, align="bottom"]|Distribute the selected transforms evenly between the top-most and bottom-most transform in your selection
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/metadata-injection.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/metadata-injection.adoc
new file mode 100644
index 0000000..f177220
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/metadata-injection.adoc
@@ -0,0 +1,4 @@
+[[MetadataInjection]]
+:imagesdir: ../assets/images
+
+= Metadata Injection
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc
new file mode 100644
index 0000000..db6eace
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc
@@ -0,0 +1,69 @@
+[[BeamDataFlowPipelineEngine]]
+:imagesdir: ../assets/images
+= Apache Beam Google DataFlow Pipeline Engine
+
+== Beam DataFlow
+
+Google Cloud Dataflow is a fully managed service for executing Apache Beam pipelines within the Google Cloud Platform ecosystem.
+As a managed Google Cloud service, it provisions worker nodes and out of the box optimization.
+
+The Cloud Dataflow Runner and service are suitable for large scale continuous jobs and provide:
+
+* A fully managed service
+* Autoscaling of the number of workers throughout the lifetime of the job
+* Dynamic work re-balancing
+
+Check the https://cloud.google.com/dataflow/docs/guides/specifying-exec-params[Google DataFlow docs] and https://beam.apache.org/documentation/runners/dataflow/[Apache Beam DataFlow runner docs] for more information.
+
+image::run-configuration/beam-dataflow.png[Beam Dataflow Engine, 65% , align="left"]
+
+=== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Project ID|	The project ID for your Google Cloud Project. This is required if you want to run your pipeline using the Dataflow managed service.
+|Application name|The name of the Dataflow job being executed as it appears in Dataflow's jobs list and job details. Also used when updating an existing pipeline.
+|Staging location|Cloud Storage path for staging local files. Must be a valid Cloud Storage URL, beginning with gs://.
+|Initial number of workers|The initial number of Google Compute Engine instances to use when executing your pipeline. This option determines how many workers the Dataflow service starts up when your job begins.
+|Maximum number of workers|The maximum number of Compute Engine instances to be made available to your pipeline during execution. Note that this can be higher than the initial number of workers (specified by numWorkers to allow your job to scale up, automatically or otherwise.
+|Auto-scaling algorithm a|The autoscaling mode for your Dataflow job. Possible values are THROUGHPUT_BASED to enable autoscaling, or NONE to disable. See https://cloud.google.com/dataflow/service/dataflow-service-desc#Autotuning[Autotuning features] to learn more about how autoscaling works in the Dataflow managed service.
+|Worker machine type|
+The Compute Engine machine type that Dataflow uses when starting worker VMs. You can use any of the available Compute Engine machine type families as well as custom machine types.
+
+For best results, use n1 machine types. Shared core machine types, such as f1 and g1 series workers, are not supported under the Dataflow Service Level Agreement.
+
+Note that Dataflow bills by the number of vCPUs and GB of memory in workers. Billing is independent of the machine type family. Check the link:https://cloud.google.com/compute/docs/machine-types[list] of machine types for reference.
+|Worker disk type|The type of persistent disk to use, specified by a full URL of the disk type resource.
+
+For example, use compute.googleapis.com/projects//zones//diskTypes/pd-ssd to specify a SSD persistent disk.
+
+https://cloud.google.com/compute/docs/disks#pdspecs[more].
+|Disk size in GB|The disk size, in gigabytes, to use on each remote Compute Engine worker instance. If set, specify at least 30 GB to account for the worker boot image and local logs.
+|Region|Specifies a Compute Engine region for launching worker instances to run your pipeline. This option is used to run workers in a different location than the region used to deploy, manage, and monitor jobs. The zone for workerRegion is https://cloud.google.com/dataflow/docs/concepts/regional-endpoints#autozone[automatically assigned].
+
+Note: This option cannot be combined with workerZone or zone.
+
+(https://cloud.google.com/dataflow/docs/concepts/regional-endpoints[regions list]).
+|Zone|Specifies a Compute Engine zone for launching worker instances to run your pipeline. This option is used to run workers in a different location than the region used to deploy, manage, and monitor jobs.
+
+Note: This option cannot be combined with workerRegion or zone.
+|User agent|A user agent string as per https://tools.ietf.org/html/rfc2616[RFC2616], describing the pipeline to external services.
+|Temp location|Cloud Storage path for temporary files. Must be a valid Cloud Storage URL, beginning with gs://.
+|Plugins to stage (, delimited)|Comma separated list of plugins.
+|Transform plugin classes|List of transform plugin classes.
+|XP plugin classes|List of extensions point plugins.
+|Streaming Hop transforms flush interval (ms)|The amount of time after which the internal buffer is sent completely over the network and emptied.
+|Hop streaming transforms buffer size|The internal buffer size to use.
+|Fat jar file location|Fat jar location.
+|===
+
+
+**Environment Settings**
+
+This environment variable need to be set locally.
+
+[source, bash]
+----
+GOOGLE_APPLICATION_CREDENTIALS=/path/to/google-key.json
+----
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-direct-pipeline-engine.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-direct-pipeline-engine.adoc
new file mode 100644
index 0000000..9704c57
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-direct-pipeline-engine.adoc
@@ -0,0 +1,34 @@
+[[BeamDirectPipelineEngine]]
+:imagesdir: ../assets/images
+= Apache Beam Direct Pipeline Engine
+
+== Beam Direct
+
+The Direct runner can be used for local testing and development.
+
+The Direct Runner executes pipelines on your machine and is designed to validate that pipelines adhere to the Apache Beam model as closely as possible. Instead of focusing on efficient pipeline execution, the Direct Runner performs additional checks to ensure that users do not rely on semantics that are not guaranteed by the model.
+
+* Enforcing immutability of elements
+* Enforcing encodability of elements
+* Elements are processed in an arbitrary order at all points
+* Serialization of user functions (DoFn, CombineFn, etc.)
+
+Using the Direct Runner for testing and development helps ensure that pipelines are robust across different Beam runners. In addition, debugging failed runs can be a non-trivial task when a pipeline executes on a remote cluster. Instead, it is often faster and simpler to perform local unit testing on your pipeline code. Unit testing your pipeline locally also allows you to use your preferred local debugging tools.
+
+image::run-configuration/beam-direct.png[Beam Direct Engine, 65% , align="left"]
+
+=== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Number of workers|The Number of threads or subprocesses is used to configure parallelism. From 2.22.0, direct_num_workers = 0 is supported. When direct_num_workers is set to 0, it will set the number of threads/subprocess to the number of cores of the machine where the pipeline is running.
+|User agent|A user agent string as per https://tools.ietf.org/html/rfc2616[RFC2616], describing the pipeline to external services.
+|Temp location|Path for temporary files.
+|Plugins to stage (, delimited)|Comma separated list of plugins.
+|Transform plugin classes|List of transform plugin classes.
+|XP plugin classes|List of extensions point plugins.
+|Streaming Hop transforms flush interval (ms)|The amount of time after which the internal buffer is sent completely over the network and emptied.
+|Hop streaming transforms buffer size|The internal buffer size to use.
+|Fat jar file location|Fat jar location.
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-flink-pipeline-engine.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-flink-pipeline-engine.adoc
new file mode 100644
index 0000000..2b3beea
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-flink-pipeline-engine.adoc
@@ -0,0 +1,52 @@
+[[BeamFlinkPipelineEngine]]
+:imagesdir: ../assets/images
+= Apache Beam Flink Pipeline Engine
+
+== Beam Flink
+
+The Flink runner supports two modes: Local Direct Flink Runner and Flink Runner.
+
+The Flink Runner and Flink are suitable for large scale, continuous jobs, and provide:
+
+* A streaming-first runtime that supports both batch processing and data streaming programs
+* A runtime that supports very high throughput and low event latency at the same time
+* Fault-tolerance with exactly-once processing guarantees
+* Natural back-pressure in streaming programs
+* Custom memory management for efficient and robust switching between in-memory and out-of-core data processing algorithms
+* Integration with YARN and other components of the Apache Hadoop ecosystem
+
+image::run-configuration/beam-flink.png[Beam Flink Engine, 65% , align="left"]
+
+Check the https://beam.apache.org/documentation/runners/flink/[Apache Beam Flink runner docs] for more information.
+
+=== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description|Default
+|The Flink master|Address of the Flink Master where the Pipeline should be executed. Can either be of the form "host:port" or one of the special values [local], [collection] or [auto]|auto
+|Parallelism|The pipeline wide maximum degree of parallelism to be used. The maximum parallelism specifies the upper limit for dynamic scaling and the number of key groups used for partitioned state.|-1
+|Checkpointing interval|The interval in milliseconds at which to trigger checkpoints of the running pipeline.|No checkpointing, -1
+|Checkpointing timeout (ms)|The maximum time in milliseconds that a checkpoint may take before being discarded.|-1
+|Minimum pause between checkpoints|The minimal pause in milliseconds before the next checkpoint is triggered|-1
+|Fail on checkpointing errors| Sets the expected behaviour for tasks in case that they encounter an error in their checkpointing procedure. If this is set to true, the task will fail on checkpointing error. If this is set to false, the task will only decline a the checkpoint and continue running|true
+|Number of execution retries|Sets the number of times that failed tasks are re-executed. A value of zero effectively disables fault tolerance. A value of -1 indicates that the system default value (as defined in the configuration) should be used.|-1
+|Execution retry delay (ms)|Sets the delay in milliseconds between executions. A value of {@code -1} indicates that the default value should be used.|-1
+|Object re-use|Sets the behavior of reusing objects. Enabling the object reuse mode will instruct the runtime to reuse user objects for better performance.|false
+|Disable metrics|Disable Beam metrics in Flink Runner|-1
+|Retain externalized checkpoints on cancellation|Sets the behavior of externalized checkpoints on cancellation.|false
+|Maximum bundle size|The maximum number of elements in a bundle.|1000
+|Maximum bundle time (ms)|The maximum time to wait before finalising a bundle (in milliseconds).|1000
+|Shutdown sources on final watermark|Shuts down sources which have been idle for the configured time of milliseconds. Once a source has been shut down, checkpointing is not possible anymore. Shutting down the sources eventually leads to pipeline shutdown (=Flink job finishes) once all input has been processed. Unless explicitly set, this will default to Long.MAX_VALUE when checkpointing is enabled and to 0 when checkpointing is disabled. See https://issues.apache.org/jira/browse/FLINK-24 [...]
+|Latency tracking interval|	Interval in milliseconds for sending latency tracking marks from the sources to the sinks. Interval value <= 0 disables the feature.|0
+|Auto watermark interval|The interval in milliseconds for automatic watermark emission.|
+|Batch execution mode|Flink mode for data exchange of batch pipelines. Reference {@link org.apache.flink.api.common.ExecutionMode}. Set this to BATCH_FORCED if pipelines get blocked, see https://issues.apache.org/jira/browse/FLINK-10672[FLINK-10672]|P
+|User agent|A user agent string as per https://tools.ietf.org/html/rfc2616[RFC2616], describing the pipeline to external services.|
+|Temp location|Path for temporary files.|
+|Plugins to stage (, delimited)|Comma separated list of plugins.|
+|Transform plugin classes|List of transform plugin classes.|
+|XP plugin classes|List of extensions point plugins.|
+|Streaming Hop transforms flush interval (ms)|The amount of time after which the internal buffer is sent completely over the network and emptied.|
+|Hop streaming transforms buffer size|The internal buffer size to use.|
+|Fat jar file location|Fat jar location.|
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-spark-pipeline-engine.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-spark-pipeline-engine.adoc
new file mode 100644
index 0000000..27bd2ed
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/beam-spark-pipeline-engine.adoc
@@ -0,0 +1,42 @@
+[[BeamSparkPipelineEngine]]
+:imagesdir: ../assets/images
+= Apache Beam Spark Pipeline Engine
+
+== Beam Spark
+
+The Apache Spark Runner can be used to execute Beam pipelines using Apache Spark.
+
+The Spark Runner executes Beam pipelines on top of Apache Spark, providing:
+
+* Batch and streaming (and combined) pipelines.
+* The same fault-tolerance guarantees as provided by RDDs and DStreams.
+* The same security features Spark provides.
+* Built-in metrics reporting using Spark’s metrics system, which reports Beam Aggregators as well.
+* Native support for Beam side-inputs via spark’s Broadcast variables
+
+image::run-configuration/beam-spark.png[Beam Spark Engine, 65% , align="left"]
+
+Check the https://beam.apache.org/documentation/runners/spark/[Apache Beam Spark runner docs] for more information.
+
+=== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description|Default
+|The Spark master|The url of the Spark Master. This is the equivalent of setting SparkConf#setMaster(String) and can either be local[x] to run local with x cores, spark://host:port to connect to a Spark Standalone cluster, mesos://host:port to connect to a Mesos cluster, or yarn to connect to a yarn cluster.|local[4]
+|Streaming: batch interval (ms)|The StreamingContext's batchDuration - setting Spark's batch interval.|1000
+|Streaming: checkpoint directory|	A checkpoint directory for streaming resilience, ignored in batch. For durability, a reliable filesystem such as HDFS/S3/GS is necessary.|local dir in /tmp
+|Streaming: checkpoint duration (ms)||
+|Enable Metrics sink|A servlet within the existing Spark UI to serve metrics data as JSON data.
+|Streaming: maximum records per batch|The maximum records per batch interval.
+|Streaming: minimum read time (ms)|Mimimum elapsed read time.
+|Bundle size|The maximum number of elements in a bundle.
+|User agent|A user agent string as per https://tools.ietf.org/html/rfc2616[RFC2616], describing the pipeline to external services.
+|Temp location|Path for temporary files.
+|Plugins to stage (, delimited)|Comma separated list of plugins.
+|Transform plugin classes|List of transform plugin classes.
+|XP plugin classes|List of extensions point plugins.
+|Streaming Hop transforms flush interval (ms)|The amount of time after which the internal buffer is sent completely over the network and emptied.
+|Hop streaming transforms buffer size|The internal buffer size to use.
+|Fat jar file location|Fat jar location.
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/local-pipeline-engine.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/local-pipeline-engine.adoc
new file mode 100644
index 0000000..b57c505
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/local-pipeline-engine.adoc
@@ -0,0 +1,23 @@
+[[LocalPipelineEngine]]
+:imagesdir: ../assets/images
+= Local Pipeline Engine
+
+== Local
+
+The local runner runs on the local Hop engine.
+
+image::run-configuration/local-engine.png[Hop Local Engine, 65% , align="left"]
+
+=== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description|Default
+|Row set size|The row set buffer size.|10.000
+|Safe mode|Checks every row passed through your pipeline and ensure all layouts are identical. If a row does not have the same layout as the first row, an error is generated and reported.|false
+|Collect metrics|Collects metrics to monitor the performance of your pipeline.|false
+|Sort transforms|Performs a https://en.wikipedia.org/wiki/Topological_sorting[topological sort] of the transforms in the pipeline before execution.|false
+|Log rows feedback|Enables log rows feedback, showing a log line every after processing multiple of 50.000 (default) rows.|false
+|Feedback size in rows|The number of rows to return as feedback.|50.000
+|===
+
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.adoc
new file mode 100644
index 0000000..8c976b3
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.adoc
@@ -0,0 +1,58 @@
+[[PipelineRunConfigurations]]
+:imagesdir: ../assets/images
+= Pipeline Run Configurations
+
+== Description
+
+Run configurations decouple the design and execution phases of Hop pipeline development.
+A pipeline is a definition of _how_ data is processed, a run configurations defines _where_ the pipeline is executed.
+Hop comes supports a number of different runtime engines, each of which will be described in more detail in this section.
+Each run configuration comes with its own set of parameters and configuration options, all of which are stored as Hop Metadata.
+
+== Choosing a Run Configuration
+
+When starting a new transformation click **New** next to 'Pipeline run configuration'.
+All run configurations have a name, description and an engine type, each engine type has its own set of configuration options.
+
+Once created, run configurations are available from the 'Pipeline run configuration' list and are ready to use.
+
+image::run-configuration/configuration-selection.png[Hop Configuration Selection, 45% , align="left"]
+
+== Options
+
+=== Main Tab
+
+The main tab contains the name, description and the dropdown list for the available engine types.
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Name|The name you want to use for this pipeline run configuration.
+|Description|A description you want to use for this pipeline run configuration (optional).
+|Engine type a|
+The available engine types are:
+
+* *Beam DataFlow pipeline engine*: this configuration runs pipelines on Google DataFlow over Apache Beam
+* *Beam Direct pipeline engine*: this configuration runs pipelines on the direct Beam runner (mainly for testing purposes)
+* *Beam Flink pipeline engine*: this configuration runs pipelines on Apache Flink over Apache Beam
+* *Beam Spark pipeline engine*: this configuration runs pipelines on Apache Spark over Apache Beam
+* *Local pipeline engine*: this configuration runs pipelines locally in the native Hop engine
+* *Remote pipeline engine*: this configuration runs pipelines in the native Hop engine on a remote machine
+|===
+
+TIP: Check the link:https://beam.apache.org/documentation/runners/capability-matrix/[Beam Capability Matrix] to help you decide which Beam engine works best for your pipeline.
+
+=== Variables Tab
+
+This tab allows Hop developers to specify a set of variables to be used in the run configurations.
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Variable name|A variable name.
+|Value|The variable value.
+|Description|A description for the variable. The description is optional but recommended.
+|===
+
+== Runners
+
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/remote-pipeline-engine.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/remote-pipeline-engine.adoc
new file mode 100644
index 0000000..62bf3ef
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipeline-run-configurations/remote-pipeline-engine.adoc
@@ -0,0 +1,20 @@
+[[RemotePipelineEngine]]
+:imagesdir: ../assets/images
+= Remote Pipeline Engine
+
+== Remote
+
+The remote runner runs on a remote Hop Server, or a cluster thereof.
+
+image::run-configuration/remote-engine.png[Hop Remote Engine, 65% , align="left"]
+
+=== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description|Default
+|Hop server|The remote Hop server to run this pipeline on.|none
+|Run Configuration|The configuration to use on the remote Hop Server.|-
+|Server poll delay (ms)|The delay in milliseconds between periodic polls to the remote server.|-
+|Server poll interval (ms)|The interval in milliseconds between periodic polls to the remote server.|-
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipelines.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipelines.adoc
new file mode 100644
index 0000000..ea4b577
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/pipelines.adoc
@@ -0,0 +1,10 @@
+[[Pipelines]]
+:imagesdir: ../assets/images
+
+= Pipelines
+
+* https://www.project-hop.org/manual/latest/hop-gui/pipelines/hop-pipeline-editor.html[Pipeline Editor]
+* https://www.project-hop.org/manual/latest/hop-gui/pipelines/create-pipeline.html[Create a Pipeline]
+* https://www.project-hop.org/manual/latest/hop-gui/pipelines/run-preview-debug-pipeline.html[Run, Preview and Debug a Pipeline]
+* https://www.project-hop.org/manual/latest/hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.html[Pipeline Run Configurations]
+* https://www.project-hop.org/manual/latest/hop-gui/pipelines/metadata-injection.html[Metadata Injection]
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/run-preview-debug-pipeline.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/run-preview-debug-pipeline.adoc
new file mode 100644
index 0000000..97f0c13
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/run-preview-debug-pipeline.adoc
@@ -0,0 +1,113 @@
+[[RunPreviewDebugPipeline]]
+:imagesdir: ../assets/images
+
+= Run, Preview and Debug a Pipeline
+
+== Running a Pipeline
+
+Running a pipeline to see how it performs can be done by completing one of the following tasks:
+
+* Using the Run image:getting-started/icons/run.svg[Run, 25px, align="bottom"] icon
+* Select Run and Start execution from the top menu
+* Pressing F8
+
+In the pipeline run dialog, hit the 'New' button in the upper right corner to create a new 'Pipeline run configuration'.
+
+image::run-configuration/configuration-selection.png[Hop Configuration Selection, 45% , align="left"]
+
+In the dialog that pops up, add 'Local Pipeline' as the pipeline configuration name and choose the 'Local pipeline engine' as engine type.
+
+image::hop-gui/pipeline/run-configuration-pipeline.png[Run configuration pipeline, 75%, align="left"]
+
+Click 'Ok' to return to the pipeline run dialog.
+
+Choose the logging level as described below.
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|LogLevel|Description
+|Nothing| Do not record any logging output.
+|Error|Only record errors in logging output.
+|Minimal|Only use minimal logging.
+|Basic|This is the default logging level.
+|Detailed| This logging level gives a detailed logging output.
+|Debugging|Results in a very detailed output for debugging purposes.
+|Row Level|Logging at row level.
+|===
+
+Make sure your configuration is selected and hit 'Launch'.
+
+When a pipeline has run succesfully green check marks are displayed in the right upper corner on the transforms.
+
+image::hop-gui/pipeline/executed-pipeline.png[Executed pipeline, 75%, align="left"]
+
+The transforms also show a little table icon, giving you access to a preview of the results of that transform.
+
+image::hop-gui/pipeline/preview-pipeline.png[Preview pipeline, 75%, align="left"]
+
+When a pipeline has failed a red failed icon is displayed on the transform containing an error.
+
+image::hop-gui/pipeline/failed-pipeline.png[Failed pipeline, 75%, align="left"]
+
+After each run the execution results are displayed in the panel on the bottom of your window. The Execution Results contains two tabs:
+
+* Transform Metrics
+* Logging
+
+The Transform Metrics tab displays metrics per transform.
+
+image::hop-gui/pipeline/transform-metrics-pipeline.png[Transform Metrics pipeline, 75%, align="left"]
+
+Following metrics are displayed:
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Metric|Description
+|Copy|
+|Input| Number of rows read from
+|Read| Number of rows coming from previous transform
+|Written| Number of rows leaving this step toward next transform
+|Output| Number of rows written to a file or table
+|Updated|Number of rows updated by the transform
+|Rejected|
+|Errors| Number of errors in the execution. The whole row is marked red if an error occurs
+|Buffers Input|
+|Buffers Output|
+|Duration|The duration of the execution of the transform
+|Speed|
+|Status|The step status; Running, Stopped, Finished, 
+|===
+
+The loggign tab displays the log of the pipeline according to the log level choosen on execution.
+
+image::hop-gui/pipeline/logging-pipeline.png[Logging pipeline, 75%, align="left"]
+
+== Preview a pipeline
+
+Preview the result off a pipeline to see how it performs can be done by completing one of the following tasks:
+
+* Using the preview image:getting-started/icons/view.svg[Run, 25px, align="bottom"] icon
+* Select Run and Preview from the top menu
+* Select Preview from the transform action Menu
+* Click on the tiny bottom right icon after running the transformation
+
+image::hop-gui/pipeline/preview-menu-pipeline.png[Preview Menu pipeline, 75%, align="left"]
+
+In the pipeline preview dialog the transform from which the result must be previewed can be selected. Furthermore the number of rows to preview can be determined as well as a pause condition. When finished press the Quick Launch button. If you want to change the Pipeline run configuration click Configure. The result is displayed in ascending order.
+The result is previewed as displayed below.
+
+image::hop-gui/pipeline/preview-pipeline.png[Preview pipeline, 75%, align="left"]
+
+== Debug a pipeline
+
+Debugging a pipeline to eliminate errors can be done by completing one of the following tasks:
+
+* Using the debug image:getting-started/icons/debug.svg[Run, 25px, align="bottom"] icon
+* Select Run and Debug from the top menu
+* Select Debug output from the transform action Menu
+
+The same dialog is displayed as when using the preview functionality, only the enabled options are different. 
+
+image::hop-gui/pipeline/debug-pipeline.png[Debug pipeline, 75%, align="left"]
+
+In the pipeline debug dialog the transform from which the result must be debugged can be selected. Furthermore the number of rows can be determined as well as a pause condition. When finished press the Quick Launch button. If you want to change the Pipeline run configuration click Configure. The result is displayed in descending order.
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/shortcuts.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/shortcuts.adoc
new file mode 100644
index 0000000..ff3d10f
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/shortcuts.adoc
@@ -0,0 +1,49 @@
+[[Shortcuts]]
+:imagesdir: ../assets/images
+= Hop Shortcuts
+
+The table below lists the main shortcuts in Hop. Using them will save you a lot of time while working with Hop.
+
+NOTE: If you are a Mac user, please be aware that the Mac keys must be used. Most of the times you can replace ctrl with cmd.
+
+== General Shortcuts
+
+[width="85%", cols="25%, 75%", options="header"]
+|===
+|Shortcut|Action
+|Ctr + n |Create a new work item
+|Ctrl + o |Open a work item
+|Ctr + s |Save a work item
+|Ctrl + Shift + F5|Open the Metadata Exlporer Menu
+|Ctrl + w |Close a work item
+|Ctrl + q |Quit Hop
+|Ctrl + z |Undo last change
+|Ctrl + Shift + z |Redo last change
+|Ctrl + a |Select all items in work item
+|ESC|Unselect all items in work item
+|Ctrl + f |Search the Hop Gui for something
+|Ctrl + c |Copy an object
+|Ctrl + v |Paste an object
+|Ctrl + x |Cut an object
+|DEL|Delete an object
+|Alt + <-|Navigate to the previous file
+|Alt + ->|Navigate to the next file
+|F8|Execute work item
+|===
+
+== Pipeline and Workflow Shortcuts
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Shortcut|Action
+|Ctrl + HOME|Align all items to the specified grid side
+|Ctrl + <-|Align all items on the canvas with the left-most selected in the selection.
+|Ctrl + ->|Align all items on the canvas with the right-most selected in the selection.
+|Ctrl + &uarr;|Align all items on the canvas with the top-most selected in the selection.
+|Ctrl + &darr;|Align all items on the canvas with the bottom-most selected in the selection.
+|Alt + ->|Distribute the selected items evenly between the left-most and right-most item in your selection.
+|Alt + &uarr;|Distribute the selected items evenly between the up-most and down-most item in your selection.
+|Ctrl + =|Zoom In on your canvas
+|Ctrl + -|Zoom out on your canvas
+|Ctrl + 0|Reset the zoom percentage to 100%
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/variables/variables.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/variables/variables.adoc
new file mode 100644
index 0000000..bf21e8c
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/variables/variables.adoc
@@ -0,0 +1,97 @@
+[[Variables]]
+:imagesdir: ../assets/images
+= Variables
+
+== What is a Hop variable?
+
+You don't want to hardcode your solutions. It's simply bad form to hardcode host names, user names, passwords, directories and so on.
+Variables allow your solutions to adapt to a changing environment.  If for example the database server is different when developing than it is when running in production, you set it as a variable.
+
+== How do I use a variable?
+
+In the Hop user interface all places where you can enter a variable have a '$' symbol to the right of the input field:
+
+image::variable-indicator.png[The variable indicator]
+
+You can specify a variable by referencing it like this:
+
+[source]
+${VARIABLE_NAME}
+
+*TIP* _You can see a list of defined variables by using CTRL-SPACE (CMD-SPACE on OSX) in the input field. This helper will insert a selected variable into the input field._
+
+Please note that you don't *have* to specify a variable in these places and that you can combine the variable with other information like:
+
+[source]
+${ENVIRONMENT_HOME}/input/source-file.txt
+
+== How can I define variables?
+
+Variables can be defined in all the places where it makes sense.
+
+== Locality
+
+Variables are local to the place where they are defined.  This means that setting them in a certain place means that it's going to be inherited from that place on.  This also means that's important to know where variables can be set and used and the hierarchy behind it.
+
+== Hierarchy
+
+.Variables Hierarchy
+[width="90%", cols="2*", options="header"]
+|===
+|Place|Inheritance
+|System properties|Inherited by the JVM and all other places in Hop
+|Environment|Inherited by run configurations
+|Run Configurations|Pipeline run configurations are inherited by the environment
+|Pipeline|Inherited by the pipeline run configuration
+|Workflow|Inherited by the workflow run configuration
+|Metadata objects|Inherited by the place where it is loaded
+|===
+
+=== System properties
+
+All system properties defined in the Hop configuration file 'config.json' are available as variables as well as all Java system properties.
+You can define new system properties in the Hop GUI using the system properties editor:
+
+image::system-properties-menu.png[The system properties menu in Hop GUI]
+
+You can also edit the config.json file manually:
+
+[source,json]
+{
+  "systemProperties" : {
+    "MY_SYSTEM_PROPERTY" : "SomeValue"
+  }
+}
+
+You can also use the hop-config command line tool to define system properties:
+
+[source,bash]
+sh hop-config.sh -s MY_SYSTEM_PROPERTY=SomeValue
+
+System properties get set in Java Virtual Machine that Hop is running. This means that you should limit yourself to only those variables which are really system specific.
+
+=== Environment Variables
+
+As you can read in the documentation regarding environments you can set variables there as well.
+This helps you configure folders and other things which are environment specific.
+
+You can set those in the Environment settings dialog or using the command line:
+
+[source,bash]
+sh hop-config.sh -e MyEnvironment -em -ev VARIABLE1=value1
+
+=== Run Configurations
+
+You can specify variables here to make a pipeline or workflow run in an engine agnostic way.
+As an example you can have the same pipeline run on Hadoop with Spark and specify an input directory using hdfs:// and on Google DataFlow using gs://
+
+=== Workflow
+
+You can define variables in a workflow either with the "Set Variables", "JavaScript" actions or by defining parameters.  Parameters are variables which have a description and can have a default value.
+
+=== Pipelines
+
+You can define variables in a pipeline either with the "Set Variables", "JavaScript" transforms or by defining parameters.  Parameters are variables which have a description and can have a default value.
+
+*IMPORTANT* Since in pipelines all transforms run in parallel you should never try to set and use the same variable in the same pipeline.
+
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/create-workflow.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/create-workflow.adoc
new file mode 100644
index 0000000..0574464
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/create-workflow.adoc
@@ -0,0 +1,127 @@
+[[CreateWorkflow]]
+:imagesdir: ../assets/images
+
+= Create a Workflow
+
+Workflows are process that orchestrate a variety of actions defined between a starting and endpoint. These actions can be, but are not limited to:
+
+* Executing other workflows
+* Executing pipelines
+* File handling
+* Error messaging handling
+* Notification handling 
+
+A simple workflow is displayed below, the flow will check if a folder is empty, if not a pipeline is executed.
+
+image::hop-gui/workflow/simple-workflow.png[Hop-Simple Workflow, 75%, align="left"]
+
+== Concepts
+
+Workflows consist of actions connected by hops. In the mail example 'Start', 'Check if a folder is empty', 'Pipeline', 'Success' and 'Abort workflow' are all actions.
+
+* **actions** are the basic operations in your workflow. A workflow typically consists of actions that are chained together by hops.
+
+* **hops** link actions together. Hops can be disabled by clicking on them, or through right-click -> disable.
+
+== Creation
+
+The design and execution of workflows is very similar to that of pipelines. However, keep in mind that there are significant differences between how Hop handles workflows and pipelines under the hood.
+
+To create a workflow, hit the 'new' icon or 'CTRL-N'. From the pop-up dialog, select 'New workflow'.
+
+image::getting-started/getting-started-new-workflow.png[Hop - New Workflow, 75% , align="left"]
+
+When you are finished with your workflow, save it. This can be done via the File menu, the icons or using CTLR s or Command s. For new workflows a file browser is displayed to navigate towards the location you want to store the file.
+
+== Add Action to your workflow
+
+Add the following actions to your workflow and create the hops to connect them:
+
+* Start
+* Pipeline
+* Success
+
+image::getting-started/getting-started-new-workflow-actions.png[Hop - New Workflow with actions, 75% , align="left"]
+
+Double-click or single-click and choose 'Edit action' to configure the action for the pipeline you just created.
+
+In the pipeline dialog, use the 'Browse' button to select your pipeline and give the action an appropriate name, for example 'First Pipeline'.
+
+Click 'OK'.
+
+image::getting-started/getting-started-new-workflow-pipeline-action.png[Hop - New Workflow pipeline action, 75% , align="left"]
+
+The action items can be configured through a single click on the object. The menu displayed below will be shown based on your action object.
+
+image::hop-gui/workflow/workflow-action.png[Workflow Action, 75% , align="left"]
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Action|Description
+|Copy Action to clipboard|Copy the selected action to the clipboard.
+|Edit the action|Edit the selected action.
+|Create hop|Create a hop from the selected action.
+|Deteach action|Detach the action from the workflow.
+|Edit action description|Edit the description of the action.
+|Delete this action|Delete the action from the workflow
+|Edit Custom Logging|Edit the custom log settings for this workflow. This will change the log level used for this action.
+|Clear Custom Logging|Clear custom log settings. This will clear the log level used for this action.
+|Parallel execution|Execute the next actions in parallel.
+|===
+
+Notice how the hops in your workflow are a little different from what you've seen in pipeline hops.
+
+Add a fourth action 'Abort' and create a hop from your pipeline action.
+
+image::getting-started/getting-started-new-workflow-abort.png[Hop - New Workflow abort, 75% , align="left"]
+
+Notice how the hop between your pipeline and Abort is different from the one between pipeline and Success. The hop types used in workflows are listed below.
+
+[width="85%", cols="20%,20%, 60%", options="header"]
+|===
+|Hop|Icon|Description
+|Unconditional hop|Lock icon, black hop|Unconditional hops are followed no matter what the exit code (true/false) of the previous action is
+|Success hop|Check icon, green hop|Success hops are used when the previous action executed successfully.
+|Failure hop|Error icon, red hop|Failure hops are followed when the previous action failed.
+|===
+
+NOTE: The hop type can be changed by clicking on the hop's icon.
+
+== Workflow properties
+Workflow properties are a collection of properties that describe the workflow and configure its behavior.
+
+The properties dialog can be opened by double clicking on the workflow canvas.
+
+Following properties can be configured:
+
+* Workflow
+* Parameters
+* Settings
+
+image::hop-gui/workflow/workflow-properties.png[Workflow properties, 75% , align="left"]
+
+The Workflow tab allows you to specify general properties about the workflow including:
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|Property|Description
+|Workflow name| The name of the workflow
+|Synchronize name with filename|If option is enabled the filename and workflow name are synchronized.
+|Workflow filename| The filename of the workflow
+|Description|Short description of the workflow
+|Extended description| Long extended description of the workflow
+|Status| Draft or production status
+|Version|Description of the version
+|Created by| Displays the original creator of the workflow
+|Created at|Displays the date and time when the workflow was created.
+|Last modified by| Displays the last user that modified the workflow
+|Last modified at|Displays the date and time when the workflow was last modified.
+|===
+
+The parameters tab allows you to specify parameters specific for the workflow. Parameters are defined by a name, a default value and a description.
+
+image::hop-gui/workflow/parameters-properties.png[Parameters properties, 75% , align="left"]
+
+The settings tab allows you to pass the batch ID.
+
+image::hop-gui/workflow/settings-properties.png[Settings properties, 75% , align="left"]
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/run-debug-workflow.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/run-debug-workflow.adoc
new file mode 100644
index 0000000..c705ca7
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/run-debug-workflow.adoc
@@ -0,0 +1,40 @@
+[[RunDebugWorkflow]]
+:imagesdir: ../assets/images
+
+= Run and Debug a Workflow
+
+=== Run your first Workflow
+
+As with designing workflows, the steps to run a workflow are very similar to running a pipeline.
+
+Click the 'run' button image:getting-started/icons/run.svg[Run, 25px, align="bottom"] in your workflow toolbar
+
+In the workflow run dialog, hit the 'New' button in the upper right corner to create a new 'Workflow run configuration'.
+
+image::getting-started/getting-started-run-workflow-dialog.png[Hop - New Workflow Config, 75% , align="left"]
+
+In the dialog that pops up, add 'Local Workflow' as the workflow configuration name and choose the 'Local workflow engine'.
+
+image::getting-started/getting-started-run-workflow-config-dialog.png[Hop - New Workflow Config Dialog, 75% , align="left"]
+
+Click 'OK' to return to the workflow run dialog. 
+
+Choose the logging level as described below.
+
+[width="85%", cols="30%, 70%", options="header"]
+|===
+|LogLevel|Description
+|Nothing| Do not record any logging output.
+|Error|Only record errors in logging output.
+|Minimal|Only use minimal logging.
+|Basic|This is the default logging level.
+|Detailed| This logging level gives a detailed logging output.
+|Debugging|Results in a very detailed output for debugging purposes.
+|Row Level|Logging at row level.
+|===
+
+Make sure your configuration is selected and hit 'Launch'.
+
+image::getting-started/getting-started-run-workflow-with-config.png[Hop - New Workflow With Config Dialog, 75% , align="left"]
+
+This workflow with our very basic pipeline should execute in less than one second. You'll now have the execution results pane which again looks very similar to the pipeline execution results.
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.adoc
new file mode 100644
index 0000000..d6d82a3
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.adoc
@@ -0,0 +1,33 @@
+[[WorkflowRunConfigurations]]
+:imagesdir: ../assets/images
+= Workflow Run Configurations
+
+== Description
+
+Run configurations decouple the design and execution phases of Hop workflow development.
+A workflow is a definition of _how_ data is processed, a run configurations defines _where_ the workflow is executed.
+Hop supports a number of different runtime engines, each of which will be described in more detail in this section.
+Each run configuration comes with its own set of parameters and configuration options, all of which are stored as Hop Metadata.
+
+== Choosing a Run Configuration
+
+When starting a new transformation click **New** next to 'Workflow run configuration'.
+All run configurations have a name, description and an engine type, each engine type has its own set of configuration options.
+
+Once created, run configurations are available from the 'Pipeline run configuration' list and are ready to use.
+
+image::hop-gui/workflow/workflow-run-configuration.png[Workflow Run configuration, 75%, align="left"]
+
+== Options
+
+The tab contains the name, description and the dropdown list for the workflow engine types.
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Name|The name you want to use for this workflow run configuration.
+|Description|A description you want to use for this workflow run configuration (optional).
+|Engine type a|
+The available engine types are:
+*Local workflwo engine*: this configuration runs pipelines on your machine
+*Remote workflow engine*: this configuration runs workflows on a Hop Server using a defined Run Configuration.
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/workflows.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/workflows.adoc
new file mode 100644
index 0000000..3973b0b
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/workflows/workflows.adoc
@@ -0,0 +1,8 @@
+[[Workflows]]
+:imagesdir: ../assets/images
+
+= Workflows
+
+* https://www.project-hop.org/manual/latest/hop-gui/workflows/create-workflow.html[Create a Workflow]
+* https://www.project-hop.org/manual/latest/hop-gui/workflows/run-debug-workflow.html[Run and Debug a Workflow]
+* https://www.project-hop.org/manual/latest/hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.html[Workflow Run Configurations]
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-gui/workitems.adoc b/hop-user-manual/modules/ROOT/pages/hop-gui/workitems.adoc
new file mode 100644
index 0000000..7893a8d
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-gui/workitems.adoc
@@ -0,0 +1,28 @@
+[[WorkItems]]
+:imagesdir: ../assets/images
+= Work Items
+
+From the 'New' menu, there are a number of work items you can create.
+There are several ways to access the 'New Work Item' dialog:
+
+* CTRL-N
+* File -> New
+* Click the 'New' icon in the upper left corner image:hop-gui/new.svg[New, 20, title="New", ]
+
+You'll be presented with the dialog shown below:
+
+image::hop-gui/new-work-item.png[New Work Item, width="75%"]
+
+The work items you can create from this dialog are:
+
+* Beam File Definition
+* Data Set
+* Git Repository
+* https://www.project-hop.org/manual/latest/hop-server/index.html[Hop Server]
+* Partition Schema
+* Pipeline
+* Pipeline Run Configuration
+* Pipeline Unit Test
+* Relational Database Connection
+* Workflow
+* Workflow Run Configuration
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-run/index.adoc b/hop-user-manual/modules/ROOT/pages/hop-run/index.adoc
new file mode 100644
index 0000000..622c07d
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-run/index.adoc
@@ -0,0 +1,38 @@
+[[HopRun]]
+:imagesdir: ../assets/images
+
+= Hop Run
+
+Hop Run is a command line tool to run your workflows and pipelines.
+
+Hop Run can be launched through the script with the corresponding name in your Hop installation directory, either `hop-run.sh` on Mac and Linux or `hop-run.bat` on Windows.
+
+Except for the laucher script, all options are platform agnostic; there is no difference in the way hop-run works on any operating system.
+
+
+== Hop Run Options
+
+You can display Hop Run's options by running the command without any options.
+
+If you're on Windows (tough luck), run `hop-run.bat`, on Mac and Linux, run `hop-run.sh`.
+
+You'll see the option listed in a similar output to the one below:
+
+image::hop-run/hop-run-options.png[Hop Run - Options, align="left"]
+
+The available options are listed in more detail in the table below:
+
+[width="90%", options="header"]
+|===
+|Short|Extended|Description
+|e|environment|The name of the environment to use. Check the https://www.project-hop.org/manual/latest/hop-gui/environments/environments.html[documentation on environments] for more details.
+|f|file|The filename of the workflow or pipeline to run
+|h|help|Displays this help message and quits.
+|l|level|The debug level, one of NONE, MINIMAL, BASIC, DETAILED, DEBUG, ROWLEVEL
+|o|printoptions|Print the used options
+|p|parameters|A comma separated list of PARAMETER=VALUE pairs
+|r|runconfig|The name of the Run Configuration to use. Check the https://www.project-hop.org/manual/latest/hop-gui/run-configurations/run-configurations.html[documentation on run configurations] for more details.
+|s|system-properties|A comma separated list of KEY=VALUE pairs
+|===
+
+== Examples
diff --git a/hop-user-manual/modules/ROOT/pages/hop-server/index.adoc b/hop-user-manual/modules/ROOT/pages/hop-server/index.adoc
new file mode 100644
index 0000000..6c1b795
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-server/index.adoc
@@ -0,0 +1,87 @@
+[[HopServer]]
+:imagesdir: ../assets/images
+
+= Hop Server
+
+Hop Server is a lightweight, Jetty-based server for https://www.project-hop.org/manual/latest/hop-gui/run-configurations/pipeline/remote-pipeline-engine.html[remote execution] of workflows and pipelines.
+
+Except for remote execution, Hop Server can also be accessed directly through a number of REST services.
+
+== Start Hop Server
+
+Hop Server is available as a script in your Hop installation directory.
+
+Run Hop Server without any parameters to display its usage options. On Windows, this is `hop-server.bat`, on Mac and Linux, run `hop-server.sh`.
+
+The output you'll get is similar to what is in the screenshot below.
+
+image::hop-server/hop-server-options.png[Hop Server - Options, align="left"]
+
+Hop Server takes a hostname or ip address and port number as unnamed arguments. All other arguments are named.
+Alternatively, the options can be provided in a configuration XML file.
+*TODO*: document XML configuration file structure.
+
+[source,shell]
+hop-server <Interface address> <Port> [-h] [-p <arg>] [-s] [-u <arg>]
+
+or
+
+[source,shell]
+hop-server <Configuration File>
+
+The Hop Server options are listed in detail in the table below:
+
+[width="90%", options="header"]
+|===
+|Short|Extended|Description
+|h|help|This help text
+|p|password|The administrator password.  Required only if stopping the Hop Server server.
+|s|stop|Stop the running hopServer server.  This is only allowed when using the hostname/port form of the command.
+|u|username|The administrator user name.  Required only if stopping the Hop Server server.
+|===
+
+
+Example startup commands are:
+
+[source,shell]
+hop-server.sh 127.0.0.1 8080
+
+[source,shell]
+hop-server.sh 192.168.1.221 8081
+
+[source,shell]
+hop-server.sh /foo/bar/hop-server-config.xml
+
+[source,shell]
+hop-server.sh http://www.example.com/hop-server-config.xml
+
+[source,shell]
+hop-server.sh 127.0.0.1 8080 -s -u cluster -p cluster
+
+Starting a Hop Server on the local machine on port 8081 will only take 1 or 2 seconds.
+
+The console output will look similar to what is listed below:
+
+[source,shell]
+2020/06/20 18:35:12 - HopServer - Installing timer to purge stale objects after 1440 minutes.
+2020/06/20 18:35:12 - HopServer - Created listener for webserver @ address : localhost:8081
+
+== Connect to the Hop Server UI
+
+To connect to the previously started server, point your browser to http://localhost:8081.
+
+You'll be prompted for your username and password. The default is `cluster` for both the username and password. The defaults obviously should be changed in any environment that goes beyond a simple local developer setup.
+
+Click 'Show status' to move beyond the initial screen.
+
+image::hop-server/hop-server-index.png[Hop Server - Index, align="left"]
+
+Since no workflows or pipelines have been executed on this server yet, the workflow and pipelines lists will be empty.
+
+image::hop-server/hop-server-no-tasks.png[Hop Server - No Tasks, align="left"]
+
+TODO: explain UI for workflows, pipelines
+
+== Hop Server Web Services Overview
+
+TODO: explain Hop Server web services.
diff --git a/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/hop-vs-kettle.adoc b/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/hop-vs-kettle.adoc
new file mode 100644
index 0000000..9cbf6c9
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/hop-vs-kettle.adoc
@@ -0,0 +1,65 @@
+[[HopvsKettle]]
+:imagesdir: ../assets/images
+
+= Hop vs Kettle - A Quick Comparison
+
+== Concepts
+
+[width=90%", cols="6,2,2", options="header"]
+|===
+|Terminology|Kettle|Hop
+|Parallel scalable data pipeline|Transformation|Pipeline
+|An operation in a parallel pipeline|Step|Transform
+|Sequential series of actions|Job|Workflow
+|An action in a workflow|Job Entry|Action
+| Shared metadata container|Metastore|Hop Metadata
+|The graphical user interface|Spoon|Hop Gui
+|Script to run data pipelines|Pan|Hop Run
+|Script to run workflows|Kitchen|Hop Run
+|Server for remote execution|Carte|Hop Server
+|Script for configuration|-|Hop Config
+|===
+
+== Configuration
+
+[width="90%", cols="2,3,3", options="header"]
+|===
+|Configuration|Kettle|Hop
+|System variables|${KETTLE_HOME}/.kettle/kettle.properties|${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json
+|GUI preferences (fonts, colors, preferences…)|${KETTLE_HOME}/.kettle/kettle.properties|${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json
+|Language choice|${KETTLE_HOME}/.kettle/.languageChoice|${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json
+|Shared objects|${KETTLE_HOME}/.kettle/shared.xml|All stored in Hop shared metadata
+|GUI usage information|${KETTLE_HOME}/.kettle/kettle.properties|${HOP_AUDIT_FOLDER}/<project>/
+|Shared metadata|${PENTAHO_METASTORE_FOLDER} or ${HOME}/.pentaho/metastore|${HOP_METADATA_FOLDER} or ${HOP_CONFIG_FOLDER}/metadata
+|Environment/Project configurations|${KETTLE_HOME}/.kettle/environment/metastore|${HOP_CONFIG_FOLDER}/hop-config.json or ./config/hop-config.json
+|===
+
+== Engines
+
+[width="90%", cols="70%,15%,15%", options="header"]
+|===
+|Engine|Kettle|Hop
+|Unit Testing|Plugin|Yes
+|Apache Spark Support|No (PDI EE only)|Yes (Beam)
+|Apache Flink Support|No|Yes (Beam)
+|Google Cloud DataFlow Support|No|Yes (Beam)
+|===
+
+== Features
+
+[width="90%", cols="70%,15%,15%", options="header"]
+|===
+|Feature|Kettle|Hop
+|Projects and Lifecycle Configuration |No|Yes
+|Search Information in projects and configurations|No|Yes
+|Configuration management through UI and command line|No|Yes
+|Standardized shared metadata|No|Yes
+|Pluggable runtime engines|No|Yes
+|Advanced GUI features: memory, native zooom, ...|No|Yes
+|Metadata Injection|Yes|Yes (most transforms)
+|Mapping (sub-transformation/pipeline|Yes|Yes(simplified)
+|Web Interface|WebSpoon|HopWeb (in progress)
+|APL 2.0 license compliance|LGPL doubts regarding pentaho-metastore library|Yes
+|Pluggable metadata objects|No|Yes
+|GUI plugin architecture|XUL based (XML)|Java annotations
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/if-you-know-kettle.adoc b/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/if-you-know-kettle.adoc
new file mode 100644
index 0000000..d8fe5f5
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/if-you-know-kettle.adoc
@@ -0,0 +1,45 @@
+[[IfYouKnowKettle]]
+:imagesdir: ../assets/images
+
+= If You Know Kettle (Pentaho Data Integration)
+
+== Why Hop?
+
+With Hop, we want to allow data engineers to be able to deliver high quality work, deliver that work fast and integrated with bleeding edge technology.
+
+We want Hop to be completely open source, and are eager to hear your feedback on our https://chat.project-hop.org[chat] and just as eager to see your bug tickets and feature request in https://jira.project-hop.org[our JIRA].
+
+As an open source first project, we'll start the https://www.apache.org/[Apache Software Foundation] https://incubator.apache.org/[incubation] process soon, and aim to become and ASF https://projects.apache.org/[top level project] as soon as possible.
+
+Check our http://www.project-hop.org/docs/qa/[Q&A] for more information on why Hop was created and what the project is all about.
+
+== Concepts
+
+A couple of things have been renamed to align Project Hop with modern data processing platforms.
+
+**_A lot_** has changed behind the scenes, but don't worry, if you're familiar with Kettle/PDI, you'll feel right at home immediately.
+
+[width="85%", cols="20%, 20%, 60%", options="header"]
+|===
+|Kettle|Hop|Difference
+|Spoon|Hop Gui|Spoon has been abandoned. Hop Gui was written from scratch. Check the https://www.project-hop.org/manual/latest/getting-started.html[Getting Started guide] or the https://www.project-hop.org/manual/latest/hop-gui/index.html[Hop Gui docs] to find out more.
+|Transformation|Pipeline|No conceptual changes. You'll develop pipelines just like you would develop a transformation, but a pipeline in Hop can run on different runtimes
+|Workflow|Job|No conceptual changes. You'll develop a workflow just like you would develop a job, but a workflow in Hop can run on different runtimes
+|Step|Transform|No conceptual changes. The underlying code has changed and the dialogs have been updated, but you'll feel right at home.
+|Job Entry|Action|No conceptual changes. The underlying code has changed and the dialogs have been updated, but you'll feel right at home.
+|Metastore|Metadata|All metadata objects in Hop are stored as metadata. This happens behind the scenes. Except for increased usability, as a Hop developer, you'll hardly notice.
+|Carte|Hop Server|Again, smooth sailing. A lot has changed behind the scenes, but you'll hardly notice. Check the https://www.project-hop.org/manual/latest/hop-server/index.html[docs]
+|Pan/Kitchen/(Maitre)|Hop Run|Kitchen and Pan depended on the Spoon GUI code. With the rewrite of Spoon to Hop Gui, we've recreated the command line tools. We believe this now is more consistent while providing more options and being easier to use at the same time. Check the https://www.project-hop.org/manual/latest/hop-run/index.html[docs]
+|JNDI|gone|jndi in Kettle/PDI is based on an open source project that hasn't been updated in about a decade. As there was no reason to keep this functionality in Hop, it was abandoned.
+|Repositories|gone|Code repositories belong in a VCS these days. We've abandoned the file and database (and PDI EE repositories) repositories, but implemented Git integration instead.
+|-|Projects, Environments, Run Config|The https://github.com/mattcasters/kettle-environment[Kettle Environments Plugin] has been integrated and significantly extended. Hop now has integrated functionality to support your projects, environments and run configurations. Check the https://www.project-hop.org/manual/latest/hop-gui/environments/environments.html[docs].
+|-|Hop Config|This is a new command line tool to configure your projects, environments and run configurations.
+|===
+
+== Apache Beam
+
+https://beam.apache.org[Apache Beam] has been deeply integrated in Hop. Beam allows us to run pipelines directly on
+
+* https://spark.apache.org[Apache Spark]
+* https://flink.apache.org[Apache Flink]
+* https://cloud.google.com/dataflow[Google Dataflow]
diff --git a/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/index.adoc b/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/index.adoc
new file mode 100644
index 0000000..26e8901
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/hop-vs-kettle/index.adoc
@@ -0,0 +1,4 @@
+[[HopAndKettle]]
+:imagesdir: ../assets/images
+
+= Hop vs Kettle
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/image-testpage.adoc b/hop-user-manual/modules/ROOT/pages/image-testpage.adoc
new file mode 100644
index 0000000..657e3e7
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/image-testpage.adoc
@@ -0,0 +1,15 @@
+[[ImageTestpage]]
+:imagesdir: ../assets/images
+:page-alternativeEditUrl: http://www.google.com
+:page-test: test
+:page-hello: http://www.google.com
+
+
+= Image testpage
+
+This page is used to test if images work in both the documentation and the book
+
+image::test_image.jpg[The alt text of the image]
+
+more text
+
diff --git a/hop-user-manual/modules/ROOT/pages/index.adoc b/hop-user-manual/modules/ROOT/pages/index.adoc
new file mode 100644
index 0000000..fe06312
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/index.adoc
@@ -0,0 +1,4 @@
+[[Index]]
+= Index Page
+
+Welcome to the Project Hop documentation
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions.adoc
new file mode 100644
index 0000000..3807418
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions.adoc
@@ -0,0 +1,8 @@
+[[actions-plugins]]
+= Action Plugins
+
+Actions are used to create a workflow, they are logical operators that do not manipulate your data but create actions that have to be performed around your pipelines.
+
+// tag::website-links[]
+
+// end::website-links[]
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/abort.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/abort.adoc
new file mode 100644
index 0000000..4b2e1f8
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/abort.adoc
@@ -0,0 +1,17 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/abort/src/main/doc/abort.adoc
+= Abort
+
+== Description
+
+Use this action if you want to abort a workflow.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Name of the action|The name of the workflow action. This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Message|Message to add in log when aborting 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/addresultfilenames.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/addresultfilenames.adoc
new file mode 100644
index 0000000..c365f45
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/addresultfilenames.adoc
@@ -0,0 +1,20 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl:  https://github.com/project-hop/hop/edit/master/plugins/actions/addresultfilenames/src/main/doc/addresultfilenames.adoc
+= Add filenames to result
+
+== Description
+
+This workflow action allows you to add a set of files or folders to the result list of the workflow action. That list of filenames can then be used in the various workflow actions all around.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Include subfolders|Include subfolders of the selected folders 
+Copy previous results to?|Passes the results of the previous action to the arguments of this action. 
+|Clear result filenames?|This option clears the list of result files (from previous workflow actions) before creating a new list.
+|File/Folder|Specify the list of files or folders with wildcards (regular expressions) in this grid. You can add a different source/destination on each line.
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/checkdbconnection.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/checkdbconnection.adoc
new file mode 100644
index 0000000..d90b20f
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/checkdbconnection.adoc
@@ -0,0 +1,20 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/checkdbconnection/src/main/doc/checkdbconnection.adoc
+= Check Db connections
+
+== Description
+
+This workflow action allows you to verify connectivity with one or several databases.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Connection|List of connections.
+|Wait|After the connection was opened, wait x (s, min, hrs).
+|Units of Time|Specify the unit of measurement for the length of time to remain connected.
+|Get connections|Get available connects. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/checkfilelocked.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/checkfilelocked.adoc
new file mode 100644
index 0000000..57805ec
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/checkfilelocked.adoc
@@ -0,0 +1,23 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/checkfilelocked/src/main/doc/checkfilelocked.adoc
+= Check Files Locked
+
+== Description
+
+This workflow action goes over a list of files to see that if they are locked by another process.
+The way that it verified is by renaming a file to the same name as before.
+On certain operating systems (MS Windows systems in particular) this operation will fail if the file is locked.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Settings: Include subfolders|Enable this option to also check files in subfolders of specified folders
+|Settings: Copy previous results to args? |Pass the result rows of a previous workflow action execution to the files list of this action.
+|Files/Folders |Here you can list a series of files or folders with wildcards.  |The wildcards are Java Regular expressions. For instance .*\.txt would check any file with a .txt extension.
+|Please note that you can use the Delete/Edit buttons to edit the list.
+You can also use the File/Folder and Wildcard actions right above the list to add new actions, browse for files and so on
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/columnsexist.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/columnsexist.adoc
new file mode 100644
index 0000000..04d3696
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/columnsexist.adoc
@@ -0,0 +1,20 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/columnsexist/src/main/doc/columnsexist.adoc
+= Columns exist in a table
+
+== Description
+
+This workflow action verifies that one or more columns exist in a database table.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Connection|The database connection to use
+|Schema name|The schema of the table to use
+|Table name|The name of the table to use
+|Columns|The list of column names to verify (one or more)
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/copyfiles.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/copyfiles.adoc
new file mode 100644
index 0000000..b85116e
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/copyfiles.adoc
@@ -0,0 +1,54 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/copyfiles/src/main/doc/copyfiles.adoc
+= Copy Files
+
+== Description
+
+This workflow action copies one of more files or folders.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow Action Name|Indicates the name of the action.
+|Source Environment a|Indicates the file system or specific cluster on which the item you want to input can be found.  Options are Local and <Static>.
+
+* Local: Specifies that the item specified in the File/Folder field is in a file system that is local to Hop.
+* <Static>: Specifies that the item specified in the File/Folder field should use the path name in that field, exactly.  Use this if you already know a file path and you simply want to copy and paste it into the window.
+
+|Source File/Folder* *|The file or directory to copy from.  If you choose an option other than <Static> in the Source Environment field, click the button in the field to view the Open File window.
+|Wildcard|Defines the files that are copied in regular expression terms (instead of static file names), for instance: .*\.txt would be any file with a .txt extension.
+|Destination Environment a|Indicates the file system or specific cluster where you want the file to be placed.  Options are Local and <Static>.
+
+* Local: Specifies that the item specified in the File/Folder field is in a file system that is local to Hop.
+* <Static>: Specifies that the item specified in the File/Folder field should use the path name in that field, exactly.  Use this if you already know a file path and you simply want to copy and paste it into the window.
+|Destination File|Indicates the name of the destination environment. If you choose an option other than <Static> in the Destination Environment field, click the button in the field to view the Open File window. 
+|===
+
+== Settings
+
+|===
+|Option|Description
+|Include Subfolders|If selected, all subdirectories within the chosen directory will be copied as well
+|Destination is a file|Determines whether the destination is a file or a directory
+|Copy empty folders|If selected, will copy all directories, even if they are empty the Include Subfolders option must be selected for this option to be valid. (Wildcard MUST be blank for this to work)
+|Create destination folder|If selected, will create the specified destination directory if it does not currently exist
+|Replace existing files|If selected, duplicate files in the destination directory will be overwritten
+|Remove source files|If selected, removes the source files after copy (a move procedure)
+|Copy previous results to arguments|Copies the previous results to arguments.
+|Add files to result files name|Any files that are copied will appear as a result from this action; shows a list of files that were copied in this action
+|===
+
+== Open File
+
+|===
+|Option|Description
+|Open from Folder|Indicates the path and name of the directory you want to browse.  This directory becomes the active directory.
+|Up One Level|Displays the parent directory of the active directory shown in the Open from Folder field.
+|Delete|Deletes a folder from the active directory.
+|Create Folder|Creates a new folder in the active directory.
+|Name|Displays the active directory, which is the one that is listed in the Open from Folder field.
+|Filter|Applies a filter to the results displayed in the active directory contents. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/copymoveresultfilenames.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/copymoveresultfilenames.adoc
new file mode 100644
index 0000000..e09af6f
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/copymoveresultfilenames.adoc
@@ -0,0 +1,33 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/copymoveresultfilenames/src/main/doc/copymoveresultfilenames.adoc
+= Copy Or Move Files from result
+
+== Description
+
+This workflow action allows you to copy, move or delete a number of files and/or folders to alternate locations on your file system.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Action|Choose Copy, Move or Delete
+|Destination folder|Define the target folder
+|Create destination folder|use this option to create the destination folder when it does not exist
+|Replace existing file|use this option to overwrite existing files
+|Remove source filenames from result|use this option to remove the processed filenames from the list of result filenames
+|Add destination filenames to result|use this option to add the the processed target filenames to the list of result filenames
+|Add date to filename|add the date to the target filename, e.g. yyyyMMdd
+|Add time to filename|add the time to the target filename, e.g. HHmmss
+|Specify date time format|allows you to specify your own date-time format, e.g. yyyyMMdd_HHmmss
+|Add date before extension|when this option is not checked, the date/time is appended after the file extension
+|Limit action to|Define include and exclude wildcards
+|Success on a|Success condition : select one of these option:
+
+* Success when all works fine
+* Success when at least x files moved (specify x in the limit field below)
+* Success when number of errors lesser than  (specify the max number of errors in the limit field below)
+
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/createfile.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/createfile.adoc
new file mode 100644
index 0000000..e7acfef
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/createfile.adoc
@@ -0,0 +1,18 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/createfile/src/main/doc/createfile.adoc
+= Create File
+
+== Description
+
+You can use the Create a file action to create an empty file. This is useful for creating "trigger" files from within workflows.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|File name|The name and path of the file to create an empty file.
+|Fail if file exists|The workflow action will follow the failure outgoing hop when the file to be created already exists (empty or not) and this option is switched on. The default is on. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/createfolder.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/createfolder.adoc
new file mode 100644
index 0000000..f759dd7
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/createfolder.adoc
@@ -0,0 +1,18 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/createfolder/src/main/doc/createfolder.adoc
+= Create Folder
+
+== Description
+
+This workflow action simply creates a folder at the specified location.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Folder name|The name of the folder to create (can be a full path)
+|Fail if folder exists|If you enable this option, this workflow action will fail if the specified folder already exists. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/delay.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/delay.adoc
new file mode 100644
index 0000000..c03e2bf
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/delay.adoc
@@ -0,0 +1,18 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/delay/src/main/doc/delay.adoc
+= Delay
+
+== Description
+
+This workflow action creates a delay between workflows.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Wait for|The delay to wait
+|Unit time|Specify the unit time (second, minute and hour) 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefile.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefile.adoc
new file mode 100644
index 0000000..f5c1a7d
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefile.adoc
@@ -0,0 +1,18 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/deletefile/src/main/doc/deletefile.adoc
+= Delete File
+
+== Description
+
+This workflow action deletes a file (empty or not).
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|File name|The name and path of the file to delete.
+|Fail if file doesn't exist|The workflow action will follow the failure outgoing hop when the file to be deleted does not exist anymore and this option is switched on. The default is off. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefiles.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefiles.adoc
new file mode 100644
index 0000000..ef0e6c8
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefiles.adoc
@@ -0,0 +1,21 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/deletefiles/src/main/doc/deletefiles.adoc
+= Delete Files
+
+== Description
+
+This workflow action deletes a set of files.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Include Subfolders|Also delete the subfolders in the folder selection
+|Copy previous results to args?|Enable this if the set of files comes from a previous workflow action (as part of the result files)
+|File/Folder|The file or folder to delete
+|Wildcard|The regular expression matching files to delete if the previous option is a folder.  For example to delete all files ending in .dat, the regular expression would be ".*\.dat$".  
+|Files/Folders|The complete list of files/folders to delete 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefolders.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefolders.adoc
new file mode 100644
index 0000000..7a0661a
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/deletefolders.adoc
@@ -0,0 +1,27 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/deletefolders/src/main/doc/deletefolders.adoc
+= Delete Folders
+
+== Description
+
+This workflow action deletes a set of folders and their content.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Settings|Copy previous results to args: Enable this option if the folders you want to delete come from the result files of the previous action in the workflow.
+|Success on a|Success condition : select one of :
+* When no error reported : everything deleted just fine
+* When at least x folders processed : specify x in the Limit field below
+* When the number of errors less than : specify the max nr of errors in the limit field below
+|Folders a|This is the list of all the folders to delete.  You can use the Folder field and these buttons to maintain the list:
+
+* Add : add Folder field to the list of folders
+* Folder ... : select a folder
+* Delete : remove the selected folders from the list
+* Edit : move the selected folder to the Folder field for editing
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/deleteresultfilenames.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/deleteresultfilenames.adoc
new file mode 100644
index 0000000..ac01482
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/deleteresultfilenames.adoc
@@ -0,0 +1,19 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/deleteresultfilenames/src/main/doc/deleteresultfilenames.adoc
+= Delete filenames from result
+
+== Description
+
+Use this action to delete all the filenames that are in the result files list of the last workflow entry.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Limit action to| Enable this feature if you want to limit the deletion to certain filenames in the result file list.
+|Wildcard|The regular expression to limit the files to delete
+|Exclude wildcar|The regular expression to exclude certain files from being deleted.
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/dostounix.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/dostounix.adoc
new file mode 100644
index 0000000..e72a3f5
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/dostounix.adoc
@@ -0,0 +1,40 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/dostounix/src/main/doc/dostounix.adoc
+= Dos To Unix
+
+== Description
+
+Convert files from Windows (DOS) Format (lines end with CR/LF) to Linux/Unix Format (lines end with LF) and vice versa. When the format is unknown, it has also a guess function and converts to the other format.
+
+== Options
+
+=== General
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Settings a|
+* Include Subfolders: also process sub-folders
+* Copy previous results to args : use the list of result files from the previous workflow action (actions) in stead of the static file list below.
+|Files / Folders a| 
+You can specify the list of files or folders with wildcards in this grid.
+You can add a different source/destination on each line.
+|Conversion a|
+This can be:
+
+* Windows to Unix: Convert files from Windows (DOS) Format (lines end with CR/LF) to Linux/Unix Format (lines end with LF)
+* Unix to Windows: Convert files from Linux/Unix Format (lines end with LF) to Windows (DOS) Format (lines end with CR/LF)
+* Guess: When the format is unknown, it converts to the other format.
+|===
+
+=== Advanced
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Success Condition|This action will follow the success path if the selected condition is true. Current options are: "Success if all files are processed", "Success if at least x files are processed", "Success when number of error files lesser than".
+|Nr Files|specifies the number of files that have to meet the selected condition from above
+|Add Filenames|Adds the filenames that meet the selected condition to the workflow output stream. Conditions are: "Do not add filenames", "Add all filenames", "Add only processed filenames" or "Add only error filenames" 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/dtdvalidator.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/dtdvalidator.adoc
new file mode 100644
index 0000000..51cba8c
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/dtdvalidator.adoc
@@ -0,0 +1,19 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/xml/src/main/doc/dtdvalidator.adoc
+= DTD Validator
+
+== Description
+
+The DTD Validator action allows you to verify if an XML file corresponds to a certain structure or format according to a Document Type Definition or link:http://en.wikipedia.org/wiki/Document_Type_Definition[DTD].
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|XML File name|The name of the XML file to validate
+|DTD Intern|Check this if the DTD is contained in the XML file
+|DTD File name|If the DTD is not internal, specify the DTD file to validate with.
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/eval.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/eval.adoc
new file mode 100644
index 0000000..c090087
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/eval.adoc
@@ -0,0 +1,137 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/eval/src/main/doc/eval.adoc
+= JavaScript
+
+== Description
+
+Use the JavaScript action to calculate a boolean expression. The result can be used to determine which action will be executed next. You can use functions, procedure calls, ANDs, ampersands, ORs, EQUALs, etc. The Javascript workflow action evaluates and returns a true or false.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|JavaScript|The JavaScript field.
+|===
+
+== Evaluation
+
+The result of a JavaScript action is either true or false. In other words, it needs to end with a boolean expression.
+
+Here are a few possible evaluations to end your script with:
+
+[source,javascript]
+----
+lines_input > 100
+----
+
+or
+
+[source,javascript]
+----
+true
+----
+
+or
+
+[source,javascript]
+----
+parent_workflow.getVariable("INPUT_DIRECTORY").equals("/tmp");
+----
+
+The following variables are available for the expression:
+
+[width="90%", options="header"]
+|===
+|Variable|Description
+|errors|Number of errors in the previous workflow action (long).
+|lines_input|Number of rows read from database or file (long).
+|lines_output|Number of rows written to database or file (long).
+|lines_updated|Number of rows updated in a database table (long).
+|lines_read|number of rows read from a previous pipeline transform (long).
+|lines_written|Number of rows written to a next pipeline transform (long).
+|files_retrieved|Number of files retrieved from an FTP server (long).
+|exit_status|The exit status of a shell script (integer).
+|nr (integer)|The workflow action number of the previous workflow action (long); increments at every next workflow action.
+|is_windows|use if Hop runs on Windows (boolean).
+|parent_workflow|The parent workflow of the current workflow action.
+|_action_|The current workflow action.
+|===
+
+== Variables
+
+Here is how you can evaluate the content of a variable string:
+
+[source,javascript]
+----
+parent_workflow.getVariable("NR_OF_ROWS") == 1000000;
+----
+
+Since we have access to the parent_workflow object, we can also set variables in the parent workflow this way:
+
+[source,javascript]
+----
+parent_workflow.setVariable("NR_OF_ROWS", "1000000");
+----
+
+For example you can do something like the following to manipulate variables within this workflow action:
+
+[source,javascript]
+----
+useDate = parent_workflow.getVariable("use_date").equals("1");
+if (useDate == 0) { //We get to use native java classes as this is using Rhino mocks???
+date = new java.util.Date();
+date.setDate(date.getDate()-1); //Go back 1 full day
+dateFormat = new java.text.SimpleDateFormat("yyyyMMdd");
+newDateStr = dateFormat.format(date);
+parent_workflow.setVariable("start_date", newDateStr);
+}
+true;
+----
+
+== Previous result
+
+When a workflow action finishes, the result of the execution will be a Result object exposed as "previous_result" to the JavaScript engine: 
+
+[width="90%", options="header"]
+|===
+|Expression|Alternative|Data type|Meaning
+|previous_result.getResult()||boolean|true if the previous workflow action was executed successfully, false if there was some error.
+|previous_result.getExitStatus()|exit_status|int|exit status of previous shell script workflow action
+|previous_result.getActionNr()|nr|int|The action number is increased every time a workflow action is executed.
+|previous_result.getNrErrors()|errors|long|the number of errors, also available as variable "errors".
+|previous_result.getNrLinesInput()|lines_input|long|The number of rows read from a file or database.
+|previous_result.getNrLinesOutput()|lines_output|long|The number of rows written to a file or database.
+|previous_result.getNrLinesRead()|lines_read|long|The number of rows read from previous transforms.
+|previous_result.getNrLinesUpdated()|lines_updated|long|The number of rows updated in a file or database.
+|previous_result.getNrLinesWritten()|lines_written|long|The number of rows written to next transform.
+|previous_result.getNrLinesDeleted()|lines_deleted|long|The number of deleted rows.
+|previous_result.getNrLinesRejected()|lines_rejected|long|The number of rows rejected and passed to another transform via error handling.
+|previous_result.getRows()||List<RowMetaAndData>|The result rows, see also below.
+|previous_result.isStopped()||boolean|Flag to signal if the previous previous workflow action stopped or not.
+|previous_result.getResultFilesList()||List<ResultFile>|The list of all the files used in the previous workflow action (or actions).
+|previous_result.getNrFilesRetrieved()|files_retrieved|int|The number of files retrieved from FTP, SFTP, etc.
+|previous_result.getLogText()||String|The log text of the execution of the previous workflow action and its children.
+|previous_result.getLogChannelId()||String|The ID of the log channel of the previous workflow action. You can use this to look up information on the execution lineage in the log channel log table.
+||is_windows|Boolean|True if the workflow runs on Windows variants, false if this is not the case. 
+|===
+
+=== Platform
+
+We also expose a variable called "is_windows" to help you make platform specific choices.
+
+=== Rows
+
+The "rows" variable we expose to JavaScript helps you evaluate the result rows you passed to the next workflow action using the "Copy rows to result" transform.
+Here is an example script on how to use this array:
+
+[source,javascript]
+----
+var firstRow = rows[0];
+ 
+firstRow.getString("name", "").equals("Foo")
+----
+
+ This script will follow the green workflow hop is the expression evaluates to true.  This happens if field "name" contains String "Foo". 
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/evalfilesmetrics.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/evalfilesmetrics.adoc
new file mode 100644
index 0000000..7f4c8c1
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/evalfilesmetrics.adoc
@@ -0,0 +1,66 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/evalfilesmetrics/src/main/doc/evalfilesmetrics.adoc
+= Evaluate File Metrics
+
+== Description
+
+The Evaluate File Metrics action can be used to evaluate the size or count of files.
+
+== Options
+
+=== General
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Source files a|The source type.
+
+* Files/Folders
+* Filenames result
+* Previous result row
+
+|Wildcard|A regex wildcard.
+|File Result field|
+|Wildcard result field|
+|Include subfolders result field|
+|Evaluate a|Type of evaluation
+
+* Total files size
+* Total file count
+
+|File/Folder source|The file or folder path.
+|Wildcard|A regex wildcard.
+|Add|Add the source to the Files/Folders list.
+|File...|Browse the filesystem for a file.
+|Folder...|Browse the filesystem for a folder.
+|Files/Folders|A list of files and/or folders.
+|Delete|Delete a source from the list.
+|Edit|Edit a source.
+|===
+
+=== Advanced
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Scale a|
+* Bytes
+* KBytes
+* MBytes
+* GBytes
+
+|Success when a|
+* If value is equal to
+* If value is equal to
+* If value is small than
+* If value is smaller or equal
+* If value is greater than
+* If value is greater or equal
+* If value is between
+* If value in list
+* If value not in list
+
+|Value|The value to compare.
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/evaluatetablecontent.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/evaluatetablecontent.adoc
new file mode 100644
index 0000000..d7dc39e
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/evaluatetablecontent.adoc
@@ -0,0 +1,30 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/evaluatetablecontent/src/main/doc/evaluatetablecontent.adoc
+= Evaluate rows number in a table
+
+== Description
+
+With this workflow action you can define the success condition that can be evaluated and branch the workflow process by the result.
+
+You can either just test the number of rows in a target table, or write a custom SQL statement.
+
+For the success condition you can check the number of rows if they are:
+
+* Equal to
+* Different from
+* Smaller than
+* Smaller or equal to
+* Greater than
+* Greater or equal to 
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Property|Description
+|Custom SQL|Check this option when you want to specify a custom SQL statement in the below field
+|Use variable substitution|Variables in the SQL statements will be substituted.
+|Clear list of result rows|Clears the internal list of result rows before executing.
+|Add rows to result|Adds all rows returned from the SQL statement within the internal list of result rows. This list of result rows can then be used in subsequent workflow actions to loop over or e.g. within a pipeline by the Get rows from result transform.
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/filecompare.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/filecompare.adoc
new file mode 100644
index 0000000..de1b2cc
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/filecompare.adoc
@@ -0,0 +1,18 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/filecompare/src/main/doc/filecompare.adoc
+= File compare
+
+== Description
+
+You can use the File compare workflow action to compare the contents of 2 files and control the flow of the workflow by it. When the contents of the files are the same the success outgoing hop will be followed, else the failure hop will be followed.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|File name 1|The name and path of the file of the first file to compare.
+|File name 2|The name and path of the file of the second file to compare. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/fileexists.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/fileexists.adoc
new file mode 100644
index 0000000..65e6f93
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/fileexists.adoc
@@ -0,0 +1,23 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/fileexists/src/main/doc/fileexists.adoc
+= File Exists
+
+== Description
+
+Use the File exists action to verify that a specified file exists on the server on which Hop is running. You must provide the file name. Hop returns a True or False value depending on whether or not the file exists.
+The File Exists workflow action can be an easy integration point with other systems. For example, suppose you have a three-part data warehouse load process. The first part runs in PERL. You have batch scripts that accesses data from a remote location, performs first-level row processing, and outputs the data to a specified directory. You do not want to start the workflow until this is done, so you put the workflow on a scheduler. As soon as the task is complete, the file is placed in a w [...]
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|Filename field|Specify the filename and path of the file to verify. Click Browse to navigate to the source file or folder through the VFS browser.
+|Result fieldname|The field containing the result.
+|Add filename to result|Adds the filename to the result.
+|Include file type|Adds the type of file.
+|File type field|The field containing the type of file.
+|===
+
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/filesexist.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/filesexist.adoc
new file mode 100644
index 0000000..a143f4a
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/filesexist.adoc
@@ -0,0 +1,24 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/filesexist/src/main/doc/filesexist.adoc
+= Checks if files exists
+
+== Description
+
+Use the Checks if files exists action to verify that specified files exist.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|File/folder name|The file or folder.
+|Add|Adds the file or folder to the Files/Folders table.
+|File...|Browse the filesystem for a file.
+|Folder...|Browse the filesystem for a folder.
+|Files/Folders|The table containing the files or folders to check.
+|Delete|Deletes the selected file or folder from the table.
+|Edit|Moves the file or folder from the table to the File/folder to the File/folder name edit field.
+|===
+
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/folderisempty.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/folderisempty.adoc
new file mode 100644
index 0000000..6543e07
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/folderisempty.adoc
@@ -0,0 +1,20 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/folderisempty/src/main/doc/folderisempty.adoc
+= Folder is Empty
+
+== Description
+
+The Folder is empty action verifies if a folder is empty, that there are no regular files or sub-folders in the folder.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|Folder name|The name of the folder to verify for emptiness.
+|Limit search to|Limits the search for files to those with a certain wildcard (regular expression)
+|Wildcard|The wildcard (regular expression) to limit the files to look for with, for example: .*\.txt$ 
+|===
+
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/folderscompare.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/folderscompare.adoc
new file mode 100644
index 0000000..fd38f70
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/folderscompare.adoc
@@ -0,0 +1,24 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/folderscompare/src/main/doc/folderscompare.adoc
+= Folders Compare
+
+== Description
+
+The Folders Compare action compares two folders to determine if the content is identical; the result will either be true or false.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|Include Subfolders|Also compare the content of sub-folders.
+|Compare|Specify what to compare: All, Only files, Only folders, or Let me specify...
+|Wildcard|If you chose Let me specify in the previous option, you can specify the regular expression of files to compare.
+|Compare file size|Check this to compare file size, in opposed to just comparing folder names.
+|Compare file content|Checks if files have the same content. Note: this may cause slower processing speeds.
+|File/Folder name 1|This is the first file or folder to compare
+|File/Folder name 2|This is the second file or folder to compare 
+|===
+
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/ftp.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftp.adoc
new file mode 100644
index 0000000..ff6bd1a
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftp.adoc
@@ -0,0 +1,72 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/ftp/src/main/doc/ftp.adoc
+= Get a file with FTP
+
+== Description
+
+Use the Get a File with FTP workflow action to retrieve one or more files from an FTP server. This workflow action does not "crawl" systems. It will not, for example, access a remote directory and go to other directories to find files that match a wildcard. This workflow retrieves files from one directory exclusively.
+
+== Options
+
+=== General
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|FTP server name/IP address|The name of the server or the IP address.
+|Server Port|Port number of the FTP server.
+|Username|The user name associated with FTP server account.
+|Password|The password associated the FTP server account.
+|Proxy host|Proxy server host name.
+|Proxy port|Proxy server port number.
+|Proxy username|Proxy server account user name.
+|Proxy password|Proxy server account password.
+|Binary mode|Enable if files must be transferred in binary mode.
+|Timeout|The FTP server timeout in seconds.
+|Use Active FTP connection|Enable if you are connecting to the FTP server using Active mode; you must set your firewall to accept connections to the port that your FTP client will open. The default is Passive mode.
+|Control Encoding|Encoding matters when retrieving file names that contain special characters. For Western Europe and the USA, ISO-8859-1 usually suffices. Select encoding that is valid for your server. 
+|===
+
+
+=== Files
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Remote directory|The remote directory on FTP server from which files are taken.
+|Wildcard (regular expression)|Regular expression when you want to select multiple files. For example: .txt$ : get all text files A.ENG:0-9.txt : files starting with A, ending with a number and .txt
+|Remove files after retrieval|Remove the files on the FTP server, but only after all selected files have been successfully transferred.
+|Move to Folder|Moves files to specified folder.
+|Create Folder|Creates folder that will contain files.
+|Target Directory|The directory where you want to place the retrieved files.
+|Include date in filename|Adds the system date to the filename (_20101231).
+|Include time in filename|Adds the system time to the filename (_235959).
+|Specify date time format|Enable to provide your own date/time format; the default is yyyyMMdd'_'HHmmss
+|Date time format|Select date time format.
+|Add date before extension|Adds date to the file name before the extension.
+|Don't overwrite files|Enable to skip, rename, or fail if a file with an identical name already exists in the target directory.
+|If file exists|Action to take if a file with an identical name already exists in the target directory.
+|Add filenames to result|Enable to add the file name(s) read to the result of this workflow.
+|===
+
+=== Advanced
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Success on|Sets conditions of success.
+|Limit files|Sets number of files associated with a condition of success.
+|===
+
+=== Socks Proxy
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Host|Socks Proxy host name.
+|Port|Socks Proxy port number.
+|Username|User name associated with the Socks Proxy account.
+|Password|Password associated with the Socks Proxy account.
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpdelete.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpdelete.adoc
new file mode 100644
index 0000000..db54aba
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpdelete.adoc
@@ -0,0 +1,81 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/ftpdelete/src/main/doc/ftpdelete.adoc
+= FTP delete
+
+== Description
+
+Use the FTP delete action to delete files on an FTP server.
+
+== Options
+
+=== General
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|Protocol a|
+
+* FTP
+* FTPS
+* SFTP
+* SSH
+
+|FTP server name/IP address|The name of the server or the IP address.
+|Server Port|Port number of the FTP server.
+|Username|The user name associated with FTP server account.
+|Password|The password associated the FTP server account.
+
+|Connection type a| FTPS connection type.
+
+* FTP
+* Implicit SSL
+* Authentication SSL
+* Implicit SSL with crypted FTP connection
+* Authentication TLS
+* Implicit TLS
+* Implicit TLS with crypted FTP connection
+
+|Use proxy|Whether or not to use a proxy.
+|Proxy host|Proxy server host name.
+|Proxy port|Proxy server port number.
+|Proxy username|Proxy server account user name.
+|Proxy password|Proxy server account password.
+|Use Public Key|Whether or not to use a public key with an SSH connection.
+|Key file|The public key file.
+|Browse...|Browse the filesystem for a public key file.
+|Key passphrase|The public key passphrase.
+|Test connection|Tests the configured connection.
+|===
+
+=== Files
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Timeout|The timeout period.
+|Use active FTP connection|Enable if you are connecting to the FTP server using Active mode; you must set your firewall to accept connections to the port that your FTP client will open. The default is Passive mode.
+|Copy previous results to args?
+|Remote directory|The directory on the remote FTP server.
+|Check folder|Checks if the directory exists.
+|Wildcard (regular expression)
+|Success on a| The success condition
+
+* All works fine
+* At least we delete x files
+* Nr errors less than
+
+|Limit files|Sets a limit to the number of deleted files (default 10).
+|===
+
+=== Socks Proxy
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Host|Socks Proxy host name.
+|Port|Socks Proxy port number.
+|Username|User name associated with the Socks Proxy account.
+|Password|Password associated with the Socks Proxy account.
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpput.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpput.adoc
new file mode 100644
index 0000000..745b208
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpput.adoc
@@ -0,0 +1,55 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/ftpput/src/main/doc/ftpput.adoc
+= Put a file with FTP
+
+== Description
+
+Use the Put a file with FTP action to upload a file to an FTP server.
+
+== Options
+
+=== General
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|FTP server name/IP address|The name of the server or the IP address.
+|Port|Port number of the FTP server.
+|Username|The user name associated with FTP server account.
+|Password|The password associated the FTP server account.
+|Proxy host|Proxy server host name.
+|Proxy port|Proxy server port number.
+|Proxy username|Proxy server account user name.
+|Proxy password|Proxy server account password.
+|Binary mode|Enable if files must be transferred in binary mode.
+|Timeout|The FTP server timeout in seconds.
+|Use Active FTP connection|Enable if you are connecting to the FTP server using Active mode; you must set your firewall to accept connections to the port that your FTP client will open. The default is Passive mode.
+|Control Encoding|Encoding matters when retrieving file names that contain special characters. For Western Europe and the USA, ISO-8859-1 usually suffices. Select encoding that is valid for your server. 
+|===
+
+=== Files
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Local directory|The local directory from which to upload.
+|Browse...|Browse the filesystem for a local directory.
+|Wildcard (regular expression)|
+|Remove files after transferal|Whether or not to remove files after they've been uploaded.
+|Don't overwrite files|Skip already existing files.
+|Remote directory|The remote directory.
+|Test folder|Test if the remote directory exists.
+|===
+
+=== Socks Proxy
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Host|Socks Proxy host name.
+|Port|Socks Proxy port number.
+|Username|User name associated with the Socks Proxy account.
+|Password|Password associated with the Socks Proxy account.
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpsget.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpsget.adoc
new file mode 100644
index 0000000..a649536
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpsget.adoc
@@ -0,0 +1,67 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/ftpsget/src/main/doc/ftpsget.adoc
+= Get a file with FTPS
+
+
+== Description
+
+The Get a file with FTPS action can get files with FTPS.
+
+== Options
+
+=== General Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|FTP server name / IP address|The FTP host.
+|Port|The FTP port.
+|Username|The FTP username.
+|Password|The FTP password.
+|Proxy host|The FTP proxy host.
+|Proxy username|The FTP proxy username.
+|Proxy password|The FTP proxy password.
+|Connection type a|The type of connection to establish.
+
+* FTP
+* Implicit SSL
+* Authentication SSL
+* Implicit SSL with crypted FTP connection
+* Authentication TLS
+* Implicit TLS
+* Implicit TLS with crypted FTP connection
+
+|Test connection|Test the connection.
+|Binary mode|Whether or not to use binary mode.
+|Timeout|The timeout period.
+|Use active FTPS connection|Whether or not to use an active FTPS connection.
+|===
+
+=== Files Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Remote directory|The directory at the remote server.
+|Check folder|Check if folder exists.
+|Remove files after retrieval|Remove files at remote after download.
+|Move files after retrieval|Move files at remote after download
+|Move to folder|The folder in which moved files will be put.
+|Create folder|Whether or not to create the folder.
+|Target directory|The target directory.
+|Browse...|Browse the filesystem to a target directory.
+|Include date in filename| Whether or not to include the date in the file name.
+|Include time in filename|Whether or not to include the time in the filename.
+|Specify Date time format|
+|Date time format|The date time format.
+|Add date before extension|Add date before or after extension.
+|Don't overwrite files|Whether or not to overwrite existing files.
+|If files exists a|What to do if files already exist.
+
+* Skip
+* Give unique name to local file
+* Fail
+|Add filenames to result
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpsput.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpsput.adoc
new file mode 100644
index 0000000..2e5bfd1
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/ftpsput.adoc
@@ -0,0 +1,53 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/ftpsput/src/main/doc/ftpsput.adoc
+= Upload files to FTPS
+
+
+== Description
+
+The Upload files to FTPS action can upload files to FTPS.
+
+== Options
+
+=== General Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. This name has to be unique in a single workflow.
+|FTP server name / IP address|The FTP host.
+|Port|The FTP port.
+|Username|The FTP username.
+|Password|The FTP password.
+|Proxy host|The FTP proxy host.
+|Proxy username|The FTP proxy username.
+|Proxy password|The FTP proxy password.
+|Connection type a|The type of connection to establish.
+
+* FTP
+* Implicit SSL
+* Authentication SSL
+* Implicit SSL with crypted FTP connection
+* Authentication TLS
+* Implicit TLS
+* Implicit TLS with crypted FTP connection
+
+|Test connection|Test the connection.
+|Binary mode|Whether or not to use binary mode.
+|Timeout|The timeout period.
+|Use active FTP connection|Whether or not to use an active FTP connection.
+|===
+
+=== Files Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Local directory|The directory of the source files.
+|Wildcard (regular expression)|A regex wildcard.
+|Remove files after transferal|Whether or not to remove the files after uploading.
+|Don't overwrite files|Skip existing files.
+|Remote directory|The directory in which to upload the files.
+|Test folder|Test if folder exists
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/getpop.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/getpop.adoc
new file mode 100644
index 0000000..5392a0b
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/getpop.adoc
@@ -0,0 +1,27 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/getpop/src/main/doc/getpop.adoc
+= Get Mail from POP
+
+== Description
+
+The Get Mail from POP action allows you to retrieve mails from a POP server and store them into one or more files.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Source Host|The host name or IP-address of the pop server.
+|Username|The username to log in with.
+|Password|The password to log in with.
+|Use POP with SSL|Check this if the POP server uses SSL (Secure Socket Layer, Encrypted).
+|Port|The port to run the SSL POP connection over.
+|Target directory|The directory in which you want to put the mail files.
+|Target filename pattern|The filename pattern (start of filename).
+|Retrieve|Select the e-mails to retrieve: all, unread or a selection of the first e-mails.
+|Retrieve the .. first emails|Allows you to specify the number of emails to retrieve if "first ... emails" is selected.
+|Delete emails after retrieval|Check this if you want to delete the mails on the pop server after retrieval. 
+|===
+
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/http.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/http.adoc
new file mode 100644
index 0000000..88d4f4a
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/http.adoc
@@ -0,0 +1,46 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/http/src/main/doc/http.adoc
+= Http Get
+
+== Description
+
+Use the HTTP action to retrieve a file from a Web server using the HTTP protocol. This workflow action could be used to access data on partner Web sites. For example, the daily data export or daily list of customers is located at a specified Web site. Also, SaaS providers may give you a URL to locate a report. You can call that URL to retrieve an Excel file or zip file that contains the data. Salesforce requires that you use SOAP APIs to retrieve data.
+
+If HTTP traffic is too heavy in your corporate environment, you may choose to use a proxy server with HTTP authentication.
+
+== Options
+
+=== General Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|URL|The HTTP URL of the file to retrieve, or the directory name to store an uploaded file to.
+|Run for every result row?|Check this if you want to run this action for every row that was generated by a previous pipeline. Use the "Copy rows to result". If selected, an HTTP request will be made for each result. Otherwise, the file is only retrieved once
+|Input field which contains URL|If the "Run for every result row?" option is selected, the field specified here will determine the file URL for each row
+|Input field which contains upload file name|If the "Run for every result row?" option is selected, the field specified here will determine the local file that will be uploaded to the URL associated with the "Input field which contains URL" field.
+|Input field which contains destination file name|If the "Run for every result row?" option is selected, the field specified here will determine the local file where the result downloaded from the URL associated with the "Input field which contains URL" field.
+|Username|If the site requires authentication, use this username to log in
+|Password|If a username is defined, this is the password for it
+|Proxy server for upload|The URL of a proxy server that you want to connect to the HTTP URL through
+|Proxy port|If a proxy server is defined, this is the port number it listens on
+|Ignore proxy for hosts|A regular expression list of exceptions for proxy redirection. This may be useful when working on an intranet or VPN
+|Upload file|If you are uploading a file, this will be its name on the remote server
+|Target file|If you are downloading a file, this its name on your local filesystem
+|Append to specified target file?|If selected, and if the target file already exists, Hop will append all new data to the end of the file
+|Add date and time to file name?|If selected, the date and time of the HTTP request (in yyyMMdd_HHmmss format) will be added to the target filename
+|Target file extension|If the previous option is selected, this field specifies the extension (letters after the dot) of the target filename
+|Add filename to result filename|Any files that are copied will appear as a result from this action; shows a list of files that were copied in this action. 
+|===
+
+=== Headers Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|#|Order that the header should be processed
+|Name|The name of this HTTP header
+|Value|The actual header value to pass 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/mail.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/mail.adoc
new file mode 100644
index 0000000..1719d99
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/mail.adoc
@@ -0,0 +1,104 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/mail/src/main/doc/mail.adoc
+= Mail
+
+== Description
+
+Use the Mail action to send a text or HTML email with optional file attachments. This workflow action is used at the end of a workflow run in most instances. It can be used to announce both a workflow failure or success. For example, it is not uncommon at the end of a successful load, to send an email to a distribution list announcing that the load was successful and include a log file. If there are errors, an email can be sent to alert individuals on a distribution list.
+
+The Mail action requires an SMTP server. You can use authentication and security as part of the connection but you must have the SMTP credentials.
+
+You can attach files to your email messages such as error logs and regular logs. In addition, logs can be zipped into a single archive for convenience.
+
+== Options
+
+=== Addresses Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Destination Address|The destination for the email; you can specify multiple addresses if you separate them with a space.
+|Cc|An identical copy of the message is also sent to all the addresses listed in the Cc: field. To enter more than one address in the Cc: field, separate them with a space.
+|BCc|Send to a recipient whose email address does not appear in the message
+|Sender name|Name of the person sending the email
+|Sender address|Email address of the person sending the email
+|Reply to|Email address of the person to which to send a reply
+|Contact person|The name of the contact person to be placed in the email
+|Contact phone|The contact telephone number to be placed in the email 
+|===
+
+=== Server Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|SMTP Server|The SMTP server address
+|Port|The port on which the SMTP Server is running
+|Use Authentication|Enable to use authentication to the SMTP Server
+|Authentication user|SMTP user account name
+|Authentication password|SMTP user account password
+|Use Secure Authentication?|Enable to use secure authentication
+|Secure Connection Type|Select authentication type (SSL, TSL) 
+|===
+
+=== Email Message Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Include date in message?|Enable to include date in message
+|Only send comment in mail body?|If not enabled the email will contain information about the workflow and its execution in addition to the comment
+|Use HTML in mail body|The message is sent in HTML format
+|Encoding|Select encoding type
+|Manage Priority a|Enable to manage priority. Note: The support of this flag is depending on the mail server.
+
+* Priority
+* Importance
+* Sensitivity
+
+|Subject|Enter the subject of the mail into this field.
+|Comment| Enter the comment within the body of the mail into this field. 
+|===
+
+=== Attached Files Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Attach files to message?|Enable to attach a file to your email message
+|Select file type a|The files to send are defined within the internal files result set. Every file in this list is marked with a file type and you can select what type of file you want to send (see also the tips at the end of this document):
+
+* General
+* Log
+* Error line
+* Error
+* Warning
+
+|Zip files to single archive?|Enable to have attachments achived in a zip file
+|Name of the zip archive|Define the filename of your zip archive
+|Filename|Name of a single image file to add. Note: This works only when Use HTML format is defined in the EMail Message tab.
+|Content ID|Automatically entered
+|Image|The full path to image (used when embedding multiple images) Click Edit to edit the path; click Delete to delete the path to the image
+|Content ID|The image content ID (used when embedding multiple images) Click Edit to edit the content ID; click Delete to delete the Content ID 
+|===
+
+== Tips
+
+**How to attach a particular file to the e-mail**
+
+You can attach "Result Files" of a particular type(s) to the e-mail, either individually or as a single ZIP archive by checking the option "Attach files to message" and selecting the types to attach under "Select the result files types to attach".
+What is a Result File and how to create one? Well, just about any file created during a pipeline may become a Result File, you only need to mark it as such. There are several ways to do that:
+
+1. When creating a file with a transform that supports it, allow it to mark the file as a Result File.
+    For example the "Text file output" transform has the check-box "Add filenames to result" on the File tab for that purpose. The file type will be General.
+2. Use the transform "Set files in result" from the workflow category to mark a file as a result file of a particular type. This transforms expects the file name to be in a field (you can use e.g. "Generate Rows" in combination with "Add constants" to produce a row containing the file name).
+
+**Attaching pipeline's log**
+
+You may easily attach a log file with log of a pipeline run by the workflow prior to sending the mail as follows (suppose we have the workflow Start -> Pipeline -> Mail):
+
+1. In the Pipeline workflow action's options, check "Specify logfile?" and enter a name and extension for the file. You can also specify the desired log level.
+2. In the Mail workflow action's options, check "Attach files to message" and select (at least) the file type "Log".
+3. The next time the mail is send, it will have the pipeline's log attached. 
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/mailvalidator.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/mailvalidator.adoc
new file mode 100644
index 0000000..210f5ba
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/mailvalidator.adoc
@@ -0,0 +1,30 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/mailvalidator/src/main/doc/mailvalidator.adoc
+= Mail Validator
+
+== Description
+
+The Mail Validator action checks if an email address is valid or not. The checking process returns one result field (Boolean or String depending on your settings) and one additionnal field (String) containing errors string when email address is not valid.
+
+This action must receive input stream and add result fields in this input stream.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|email fieldname|Specify the name of the field that contains the email addresses to check. This field must be defined in a previous action. Dropdown the combo to select fieldname.
+|SMTP check?|By default, Hop will only check email address structure (using regular expression). If you want to perform a SMTP check, please select this option and fill Email sender (see after). Hop will extract domain name from the supplied email address (to check) and will try to get all exchangers from the domain name. Each exchanger will be queryed.
+|Time out|In order to perform a SMTP check, Hop will open a socket on the target SMTP host. Specify here the socket time out (by default 0).
+|Email sender|If you select "SMTP check?" option, this field is mandatory. Hop will need sender email address to query SMTP host.
+|Default SMTP server|If you know which SMTP server to query, please specify it here, Hop will then query only this one.
+|dynamic default SMTP?|IF you want to pass default SMTP server in a dynamic way, check this option.
+|Default SMTP field|If you select the previous option, you must fill this field. This field must be defined in a previous action. Dropdown the combo to select fieldname.
+|Result fieldname|Hop will store the result of the process in this field. The result will be Boolean (TRUE = the email address is valid, FALSE = the email address is unvalid) if "Result is a string" option is unchecked (see after).
+|Result is a string|This option will turn the ouput field into a String and when the email address is valid the output will contains the "Email is valid" field (see after) otherwise it will contains the "Email is not valid" field (see after).
+|Email is valid|If you selected the previous option, you must fill this field
+|Email is not valid|If you selected the previous option, you must fill this field
+|Errors field|When an email is address is unvalid, Hop return the reason. If you want to add it in the input stream, please give the field a name, otherwhise leave this field blank. 
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/movefiles.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/movefiles.adoc
new file mode 100644
index 0000000..23404ef
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/movefiles.adoc
@@ -0,0 +1,91 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/movefiles/src/main/doc/movefiles.adoc
+= Move Files
+
+== Description
+
+The Move Files action allows you to move a number of files and/or folders to alternate locations on your file system.
+
+This works also on remote file systems (via VFS, e.g. with FTP.
+
+Example for a move (rename) of a file on a FTP server (username/password must be given for source and destination).
+
+* File source: \ftp://username:password@ftpserver/dir/testfile_partly.txt
+* File destination: \ftp://username:password@ftpserver/dir/testfile.txt
+* Check "Destination is a file" in the "Destination File" tab.
+
+== Options
+
+=== General Tab
+
+In this tab you can specify the files and/or folders to move.
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Settings a|
+* Include Subfolders: also move the content of sub-folders
+* Move empty folders : also move empty folders
+* Simulate : don't actually move anything, just see if it's possible at all.
+* Copy previous results to args : use the result files from the previous workflow action (actions) as files and/or folders to move.
+|Files / Folders |You can specify the list of files or folders with destinations and wildcards in this grid.
+You can add a different source/destination on each line.
+**NOTE**: You can use the "Add" button to add a line to the Files/Folders list 
+|===
+
+
+=== Destination File Tab
+
+In this tab you can specify the destination of the files and/or folders and their new filenames.
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Destination file a|
+	
+
+* Create destination folder : use this option to create the destination folder
+* Destination is a file
+* Do not keep folder structure : flatten the sub-folder structure if any sub-folders are used
+* Add date to destination filename (yyyyMMdd or 20091231)
+* Add time to destination filename (HHmmss or 235959)
+* Specify date time format : allows you to specify your own date-time format. The default is  yyyyMMdd'_'HHmmss
+* Add date before extension
+* If destination file exists: select one of these options:
+** Do nothing
+** Overwrite destination file
+** Create file with unique name
+** Delete source file
+** Move source file to folder : use the lower part of the dialog (next option in this grid)
+** Fail
+
+|Move to folder a|
+* Destination folder : the target folder to move to
+* Create folder
+* Add date
+* Add time
+* Specify format : allows you to specify your own date-time format. The default is  yyyyMMdd'_'HHmmss
+* If file exists in destination folder: select one of these options:
+** Do nothing
+** Overwrite file
+** Unique name
+** Fail
+|===
+
+
+=== Advanced Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Success on a|
+	
+
+* Success condition : select one of these option:
+** Success when all works fine
+** Success when at least x files moved (specify x in the limit field below)
+** Success when number of errors lesser than  (specify the max number of errors in the limit field below)
+|Result files name|Add files to result files name : add the target file names to the list of result files of this workflow action for use in the next workflow actions. 
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/msgboxinfo.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/msgboxinfo.adoc
new file mode 100644
index 0000000..cff3802
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/msgboxinfo.adoc
@@ -0,0 +1,25 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/msgboxinfo/src/main/doc/msgboxinfo.adoc
+= Display Msgbox info
+
+== Description
+
+The Display Msgbox info action allow you to display a message box in a workflow. You can easily see where you are in the process. This workflow action is only available using the Graphical User Interface to execute the workflow.
+
+The message box displays "OK" and "Cancel" buttons.
+
+    Clicking on "OK" exits on the green hop
+    Clicking on "Cancel" exits on the red hop
+
+When the question cannot be asked (no Graphical User Interface), the action always exits on the green hop.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Message title|The title of the message
+|Message body|The message to display 
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/mssqlbulkload.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/mssqlbulkload.adoc
new file mode 100644
index 0000000..dd87b5c
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/mssqlbulkload.adoc
@@ -0,0 +1,57 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/mssqlbulkload/src/main/doc/mssqlbulkload.adoc
+= MS SQL Server Bulk Loader
+
+== Description
+
+The MS SQL Server Bulk Loader action can bulk load data from a file into MSSQL.
+
+== Options
+
+=== General Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Connection|The database connection.
+|Edit...|Edit the database connection.
+|New...|Create a new database connection using the standard dialog.
+|Wizard...|Create a new database connection using the wizard dialog.
+|Target schema|The target schema.
+|Target table name|The target table.
+|Truncate table|Whether or not to truncate the table before starting the bulk load.
+|Source File name|The file to bulk load into MSSQL.
+|Browse...|Browse the filesystem to choose the source file.
+|Data file type|char, native, widechar, widenative
+|Fields terminated by|The field separation character.
+|Rows terminated by|The row termination character.
+|===
+
+=== Advanced Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Codepage|OEM, ACP, RAW, specific
+|Specific codepage|Code page to use when specific is selected.
+|Format file|Path to format file.
+|Browse|Browse the filesystem to choose a format file.
+|Fire triggers|
+|Check constraints|
+|Keep nulls|
+|Keep identity|
+|Tablock|
+|Start at line|At which line to start.
+|End at line|At which line to end.
+|Order by|Which field to order with.
+|Direction|Ordering ascending (asc) or descending (desc).
+|Error file|Path to the error file.
+|Browse...|Browse the filesystem to a error file location.
+|Add date time|Whether or not to add the date and time.
+|Max errors|
+|Batch size|
+|Rows per batch|
+|Add file to result filenames|
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/mysqlbulkfile.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/mysqlbulkfile.adoc
new file mode 100644
index 0000000..4e7c359
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/mysqlbulkfile.adoc
@@ -0,0 +1,32 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/mysqlbulkfile/src/main/doc/mysqlbulkfile.adoc
+= MySQL Bulk File
+
+== Description
+
+The MySQL Bulk File action can bulk load data from MySQL into a file.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Connection|The database connection.
+|Edit...|Edit the database connection.
+|New...|Create a new database connection using the standard dialog.
+|Wizard...|Create a new database connection using the wizard dialog.
+|Target schema|The target schema.
+|Target File name|The target file.
+|High Priority|The priority to load the file with.
+|Type|OUTFILE, DUMPFILE
+|Field separator|The field separator to use.
+|Fields enclosed by|The field enclosure to use.
+|Optionally enclosed|
+|Lines terminated by|The line termination string to use.
+|Names of columns|
+|Limit to the...first lines|
+|If file exists|Create new with unique name, Do Nothing, Fail
+|Add file to result filenames|
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/mysqlbulkload.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/mysqlbulkload.adoc
new file mode 100644
index 0000000..4944743
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/mysqlbulkload.adoc
@@ -0,0 +1,31 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/mysqlbulkload/src/main/doc/mysqlbulkload.adoc
+= MySQL Bulk Loader
+
+== Description
+
+The MySQL Bulk Loader action loads data from a text file into a MySQL table.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Connection|The connection to the MySQL database to use.
+|Target schema|The schema of the table to load.
+|Target table name|The name of the table to load into.
+|Source file name|The name of the file to load.
+|Local|Check this if the file is local.
+|Priority|The priority to load the file with.
+|Fields terminated by|The field terminator to use.
+|Fields enclosed by|The field enclosure to use.
+|Fields escaped by|The escape character to use.
+|Lines started by|The line start string to use.
+|Lines terminated by|The line termination string to use.
+|Fields|The fields to load, separated by comma (,).
+|Replace data|Check this option if you want to replace the data in the target data.
+|Ignore the first ... lines|Ignores the first ... lines in the text file.
+|Add files to result|Check this option if you want to re-use the filename of the text file in a next workflow action. 
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpdecryptfiles.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpdecryptfiles.adoc
new file mode 100644
index 0000000..7491889
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpdecryptfiles.adoc
@@ -0,0 +1,79 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl:  https://github.com/project-hop/hop/edit/master/plugins/actions/pgpdecryptfiles/src/main/doc/pgpdecryptfiles.adoc
+= Decrypt files with PGP
+
+== Description
+
+This workflow action can be used to decrypt files.
+
+== Options
+
+=== General Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|GPG location|The signature file path.
+|Include subfolders|Whether or not to include subfolders.
+|Copy previous results to args|
+|File/Folder source|The file to decrypt, can be added to the Files/Folders list using Add.
+|File/Folder destination|The destination of the decrypted files.
+|Wildcard|A regex wildcard.
+|User ID|
+|Files/Folders|The files to decrypt.
+|===
+
+=== Destination File Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Create destination folder|Whether or not to create the destination folder.
+|Destination is a file|Whether or not the destination is a file.
+|Do not keep folder structure|Whether or not to keep the folder structure.
+|Add date to filename|Adds the date to the file name.
+|Add time to filename|Adds the time to the file name.
+|Specify Date time format|Whether or not to specify the date time format.
+|Date time format|The format of the date time.
+|Add date before extension|Before or after extension.
+|If destination file exists a|
+
+* Do nothing
+* Overwrite the destination file
+* Create file with unique name
+* Delete source file
+* Move source file to folder
+* Fail
+
+|Destination folder|The destination folder.
+|Create folder|Whether or not to create the folder.
+|Add date|Adds the date.
+|Add time|Adds the time.
+|Specify format|Whether or not to specify the date time format.
+|Add date before extension|The format of the date time.
+|If file exists in destination folder a|
+
+* Do nothing
+* Overwrite the destination file
+* Create file with unique name
+* Delete source file
+* Move source file to folder
+* Fail
+|===
+
+
+=== Destination File Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Success condition a|Which condition to validate for a successful run
+
+* Success when all works
+* Success when at least x files decrypted
+* Success when number of errors lesser than
+|Nr error lesser than|Success if errors lesser than.
+|Add files to result files name|
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpencryptfiles.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpencryptfiles.adoc
new file mode 100644
index 0000000..7ec69b2
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpencryptfiles.adoc
@@ -0,0 +1,81 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl:  https://github.com/project-hop/hop/edit/master/plugins/actions/pgpencryptfiles/src/main/doc/pgpencryptfiles.adoc
+= Encrypt files with PGP
+
+== Description
+
+This workflow action can be used to encrypt and sign files.
+
+== Options
+
+=== General Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|GPG location|The signature file path.
+|Use ASCII mode|Whether or not to use ASCII mode when encrypting.
+|Include subfolders|Whether or not to include subfolders.
+|Copy previous results to args|
+|Action|Encrypt, Sign, Sign and Encrypt
+|File/Folder source|The file to encrypt, can be added to the Files/Folders list using Add.
+|File/Folder destination|The destination of the encrypted files.
+|Wildcard|A regex wildcard.
+|User ID|
+|Files/Folders|The files to encrypt.
+|===
+
+=== Destination File Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Create destination folder|Whether or not to create the destination folder.
+|Destination is a file|Whether or not the destination is a file.
+|Do not keep folder structure|Whether or not to keep the folder structure.
+|Add date to filename|Adds the date to the file name.
+|Add time to filename|Adds the time to the file name.
+|Specify Date time format|Whether or not to specify the date time format.
+|Date time format|The format of the date time.
+|Add date before extension|Before or after extension.
+|If destination file exists a|
+
+* Do nothing
+* Overwrite the destination file
+* Create file with unique name
+* Delete source file
+* Move source file to folder
+* Fail
+
+|Destination folder|The destination folder.
+|Create folder|Whether or not to create the folder.
+|Add date|Adds the date.
+|Add time|Adds the time.
+|Specify format|Whether or not to specify the date time format.
+|Add date before extension|The format of the date time.
+|If file exists in destination folder a|
+
+* Do nothing
+* Overwrite the destination file
+* Create file with unique name
+* Delete source file
+* Move source file to folder
+* Fail
+|===
+
+
+=== Destination File Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Success condition a|Which condition to validate for a successful run
+
+* Success when all works
+* Success when at least x files decrypted
+* Success when number of errors lesser than
+|Nr error lesser than|Success if errors lesser than.
+|Add files to result files name|
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpfiles.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpfiles.adoc
new file mode 100644
index 0000000..81e0396
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpfiles.adoc
@@ -0,0 +1,4 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/pgpfiles/src/main/doc/pgpfiles.adoc
+= PGP Files
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpverify.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpverify.adoc
new file mode 100644
index 0000000..cfa8099
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/pgpverify.adoc
@@ -0,0 +1,20 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl:  https://github.com/project-hop/hop/edit/master/plugins/actions/pgpverify/src/main/doc/pgpverify.adoc
+= Verify file signature with PGP
+
+== Description
+
+This workflow action can be used to verify a file link:https://www.gnupg.org/gph/en/manual/x135.html[signature to ensure its authenticity].
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action. *Note*: This name has to be unique in a single workflow. A workflow action can be placed several times on the canvas, however it will be the same workflow action.
+|GPG location|The signature file path.
+|Filename|The signed file path.
+|Use detached signature|Whether or not to use a detached signature.
+|Detached signature|
+|===
\ No newline at end of file
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/ping.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/ping.adoc
new file mode 100644
index 0000000..2eb6cf8
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/ping.adoc
@@ -0,0 +1,22 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/ping/src/main/doc/ping.adoc
+= Ping
+
+== Description
+
+The Ping action can be used to ping a host using the ICMP protocol. The result it true when the host is reachable, otherwise false.
+
+== Options
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Workflow action name|The name of the workflow action.
+|Host name/IP|The name or the IP address of the host to ping
+|Ping type|Classic ping: This calls the ping as a command line of the operating system. The result is true when no packets (defined in the "Nr. packets to send" option) are lost.
+System ping: This option uses the Java implemented methods. The result is true when the host name can be resolved and the host is reachable within the given timeout period.
+System ping then classic ping: try both options (first the system ping and when that fails, try the classic ping)
+|Timeout (ms)|The timeout in ms when the system ping option is used.
+|Nr. packets to send|The number of packets to send (by default 2, only used by the Classic ping option).
+|===
diff --git a/hop-user-manual/modules/ROOT/pages/plugins/actions/pipeline.adoc b/hop-user-manual/modules/ROOT/pages/plugins/actions/pipeline.adoc
new file mode 100644
index 0000000..42252d9
--- /dev/null
+++ b/hop-user-manual/modules/ROOT/pages/plugins/actions/pipeline.adoc
@@ -0,0 +1,84 @@
+:documentationPath: /plugins/actions/
+:language: en_US
+:page-alternativeEditUrl: https://github.com/project-hop/hop/edit/master/plugins/actions/pipeline/src/main/doc/pipeline.adoc
+= Pipeline
+
+== Description
+
+The Pipeline action runs a previously-defined pipeline within a workflow. This action is the access point from your workflow to your ETL activity (pipeline).
+
+An example of a common workflow includes getting FTP files, checking existence of a necessary target database table, running a pipeline that populates that table, and e-mailing an error log if a pipeline fails. For this example, the Pipeline action defines which pipeline to run to populate the table.
+
+== Options
+
+=== General
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Action name|Name of the action.
+|Pipeline|Specify your pipeline by entering in its path or clicking Browse.
+
+If you select a pipeline that has the same root path as the current pipeline, the variable ${Internal.Action.Current.Directory} will automatically be inserted in place of the common root path. For example, if the current pipeline's path is /home/admin/pipeline.hpl and you select a pipeline in the folder /home/admin/path/sub.hpl than the path will automatically be converted to ${Internal.Action.Current.Directory}/path/sub.hpl.
+
+Pipelines previously specified by reference are automatically converted to be specified by name.
+|===
+
+=== Options Tab
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Run Configuration|The pipeline can run in different types of environment configurations. Specify a run configuration to control how the pipeline is executed.
+|Execute every input row|Runs the pipeline once for every input row (looping).
+|Clear results rows before execution|Makes sure the results rows are cleared before the pipeline starts. 
+|Clear results files before execution|Makes sure the results files are cleared before the pipeline starts. 
+|Wait for remote pipeline to finish|If you selected Server as your environment type, choose this option to block the workflow until the pipeline runs on the server.
+|Follow local abort to remote pipeline|If you selected Server as your environment type, choose this option to send the local abort signal remotely.
+|===
+
+=== Logging Tab
+
+By default, if you do not set logging, Hop will take generated log entries and create a log record inside the workflow. For example, suppose a workflow has three pipelines to run and you have not set logging. The pipelines will not log information to other files, locations, or special configurations. In this instance, the workflow runs and logs information into its master workflow log.
+
+In most instances, it is acceptable for logging information to be available in the workflow log. For example, if you have load dimensions, you want logs for your load dimension runs to display in the workflow logs. If there are errors in the pipelines, they will be displayed in the workflow logs. However, you want all your log information kept in one place, you must then set up logging.
+
+[width="90%", options="header"]
+|===
+|Option|Description
+|Specify logfile|Specifies a separate logging file for running this pipeline.
+|Name|Specifies the directory and base name of the log file (C:\logs for example).
+|Extension|Specifies the file name extension (.log or .txt for example).
+|Log level|Specifies the logging level for running the pipeline. See Logging for more details.
+|Append logfile|Appends the logfile as opposed to creating a new one.
+|Create parent folder|Creates a parent folder for the log file if it does not exist.
... 9888 lines suppressed ...


[incubator-hop-docs] 07/18: fix folders

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 4e5560fe3ad57cf7a6c39a6d33d8035557c97fd9
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:12:17 2020 +0100

    fix folders
---
 Jenkinsfile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index eed3294..1b6ae0a 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -68,8 +68,7 @@ pipeline {
             }
             steps {
                     sh 'mkdir ./tmp'
-                    sh 'cd hop'
-                    sh "find ./ -name '*.adoc' -exec cp -prv --parents '{}' '../tmp/' ';'"
+                    sh "find ./hop -name '*.adoc' -exec cp -prv --parents '{}' './tmp/' ';'"
             }
         }
         stage('Process Docs') {


[incubator-hop-docs] 18/18: Merge pull request #4 from mattcasters/master

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit abdf0170ef930c18f82b9c2b3673e03005f50b36
Merge: be4ddce 395586c
Author: Matt Casters <ma...@gmail.com>
AuthorDate: Thu Nov 12 20:43:35 2020 +0100

    Merge pull request #4 from mattcasters/master
    
    Basic metadata plugins documentation

 .../modules/ROOT/pages/metadata-plugins.adoc       | 45 ++++++++++++++++++++++
 1 file changed, 45 insertions(+)


[incubator-hop-docs] 13/18: add github token

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 76802919b006051df67ba81f9e19657cd8ff1c53
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 16:04:25 2020 +0100

    add github token
---
 Jenkinsfile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index a27a95d..bdff542 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -18,6 +18,7 @@
  */
 
 def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
+def githubToken = "5f95d117-af3b-452a-9e5c-4bddb22a67f4"
 
 pipeline {
 
@@ -67,6 +68,7 @@ pipeline {
                 not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
+                withCredentials([usernamePassword(credentialsId: githubToken, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
                 echo 'Adding new Files from Hop'
                 sh '''
                     cd ./tmp;
@@ -85,9 +87,11 @@ pipeline {
                 '''
                 echo 'Generate new Navigation'
                 sh './generate_navigation.sh'
+                sh 'git config --local credential.helper "!f() { echo username=\\$GIT_USERNAME; echo password=\\$GIT_PASSWORD; }; f";'
                 sh 'git add .'
                 sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
                 sh 'git push --force origin HEAD:master'
+                }
             }
         }
         stage('Website update') {


[incubator-hop-docs] 12/18: remove unneeded pull

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit dff04935df398a1602657af65f3852b5fe9a7802
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:58:02 2020 +0100

    remove unneeded pull
---
 Jenkinsfile | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index ef72dd7..a27a95d 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -39,18 +39,6 @@ pipeline {
                   echo 'Using PATH = ' + env.PATH
               }
          }
-         stage('Cleanup') {
-              steps {
-                  echo 'Cleaning up the workspace'
-                  deleteDir()
-              }
-         }
-        stage('Checkout') {
-            steps {
-                echo 'Checking out branch ' + env.BRANCH_NAME
-                checkout scm
-            }
-        }
         stage('checkout Hop Code') {
             when {
                 branch 'master'


[incubator-hop-docs] 10/18: update repo and trigger website build, exclude asf-ci commits

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 02b9dec00c1135f8ba83daf07f36166009817da7
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:45:45 2020 +0100

    update repo and trigger website build, exclude asf-ci commits
---
 Jenkinsfile | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 3723114..2f75bdf 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -54,6 +54,7 @@ pipeline {
         stage('checkout Hop Code') {
             when {
                 branch 'master'
+                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
                 dir('hop') {
@@ -65,6 +66,7 @@ pipeline {
         stage('Copy project docs') {
             when {
                 branch 'master'
+                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
                     sh 'mkdir ./tmp'
@@ -74,6 +76,7 @@ pipeline {
         stage('Process Docs') {
             when {
                 branch 'master'
+                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
             }
             steps {
                 echo 'Adding new Files from Hop'
@@ -96,10 +99,20 @@ pipeline {
                 sh './generate_navigation.sh'
                 sh 'git add .'
                 sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
-                //sh 'git push --force origin master'
+                sh 'git push --force origin master'
+            }
+        }
+        stage('Website update') {
+            when {
+                branch 'master'
+                not { triggeredBy cause: "UserIdCause", detail: "asf-ci" }
+            }
+            steps {
+                build job: 'Hop/Hop-website/master', wait: false
             }
         }
     }
+    
     post {
         always {
             cleanWs()


[incubator-hop-docs] 06/18: fix folder definition

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 307237a3c0983c8c6aeea5eebe41fecbaad3da6b
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:09:29 2020 +0100

    fix folder definition
---
 Jenkinsfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index af75117..eed3294 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -69,7 +69,7 @@ pipeline {
             steps {
                     sh 'mkdir ./tmp'
                     sh 'cd hop'
-                    sh "find . -name '*.adoc' -exec cp -prv --parents '{}' '../tmp/' ';'"
+                    sh "find ./ -name '*.adoc' -exec cp -prv --parents '{}' '../tmp/' ';'"
             }
         }
         stage('Process Docs') {


[incubator-hop-docs] 11/18: push to HEAD:master

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit ddd4fddfd37d8b84e90af7c30b9dd1d9117421cf
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:54:56 2020 +0100

    push to HEAD:master
---
 Jenkinsfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 2f75bdf..ef72dd7 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -99,7 +99,7 @@ pipeline {
                 sh './generate_navigation.sh'
                 sh 'git add .'
                 sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
-                sh 'git push --force origin master'
+                sh 'git push --force origin HEAD:master'
             }
         }
         stage('Website update') {
@@ -112,7 +112,7 @@ pipeline {
             }
         }
     }
-    
+
     post {
         always {
             cleanWs()


[incubator-hop-docs] 09/18: add navigation update

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 18d25dd1f685b24cb43b321668448fe23071e9a1
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:23:04 2020 +0100

    add navigation update
---
 Jenkinsfile | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 7fd5685..3723114 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -76,6 +76,7 @@ pipeline {
                 branch 'master'
             }
             steps {
+                echo 'Adding new Files from Hop'
                 sh '''
                     cd ./tmp;
                     for f in $(find ./ -name '*.adoc')
@@ -91,8 +92,10 @@ pipeline {
                     rm -rf ./tmp
                     rm -rf ./hop
                 '''
+                echo 'Generate new Navigation'
+                sh './generate_navigation.sh'
                 sh 'git add .'
-                //sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
+                sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
                 //sh 'git push --force origin master'
             }
         }


[incubator-hop-docs] 04/18: fix wrong closure

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit d72b76e46a270dded437c38c6363cbdde38b7c1b
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:04:26 2020 +0100

    fix wrong closure
---
 Jenkinsfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 0d31f77..0658671 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -60,6 +60,7 @@ pipeline {
                     deleteDir()
                     sh 'git clone -b master https://github.com/apache/incubator-hop.git .'
                 }
+            }
         }
         stage('Copy project docs') {
             when {
@@ -92,7 +93,6 @@ pipeline {
                 //sh 'git add .'
                 //sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
                 //sh 'git push --force origin master'
-                }
             }
         }
     }


[incubator-hop-docs] 17/18: Metadata plugins: discovery logic explained

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 395586c756b5da4020b53b1535f972b6135f9062
Author: Matt Casters <ma...@gmail.com>
AuthorDate: Thu Nov 12 20:42:44 2020 +0100

    Metadata plugins: discovery logic explained
---
 hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc b/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc
index b79ab34..4964717 100644
--- a/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc
+++ b/hop-dev-manual/modules/ROOT/pages/metadata-plugins.adoc
@@ -14,6 +14,8 @@ Here are the attributes of the @HopMetadata annotation:
 * description : an extended description
 * iconImage : the path to an image which helps identify the metadata in the Hop GUI
 
+The class with this annotation will be found either because it lives in the ```plugins/``` folder of Hop or if it's an internal class and is described in the file ```engine/src/main/resources/hop-metadata-plugins.xml```
+
 Example: https://github.com/apache/incubator-hop/blob/f8f2ad2d0bc0cfd143ae90cc32e73b6c9e1cda78/engine/src/main/java/org/apache/hop/partition/PartitionSchema.java#L47[PartitionSchema.java]
 
 


[incubator-hop-docs] 05/18: cleaup path and add git add

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 405a6bbddee5d1e1b5f4cb5a1a19c383364a1277
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:07:49 2020 +0100

    cleaup path and add git add
---
 Jenkinsfile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 0658671..af75117 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -68,7 +68,8 @@ pipeline {
             }
             steps {
                     sh 'mkdir ./tmp'
-                    sh "find ./hop -name '*.adoc' -exec cp -prv --parents '{}' './tmp/' ';'"
+                    sh 'cd hop'
+                    sh "find . -name '*.adoc' -exec cp -prv --parents '{}' '../tmp/' ';'"
             }
         }
         stage('Process Docs') {
@@ -90,7 +91,7 @@ pipeline {
                     rm -rf ./tmp
                     rm -rf ./hop
                 '''
-                //sh 'git add .'
+                sh 'git add .'
                 //sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
                 //sh 'git push --force origin master'
             }


[incubator-hop-docs] 08/18: leave tmp dir for delete

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit 08e59b1bad32f64f56875c81676fa894cf7f26e1
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 15:15:24 2020 +0100

    leave tmp dir for delete
---
 Jenkinsfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index 1b6ae0a..7fd5685 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -87,6 +87,7 @@ pipeline {
                         mkdir -p ../hop-user-manual/modules/ROOT/pages$FILEPATH && cp $f ../hop-user-manual/modules/ROOT/pages$FILEPATH;
                     fi
                     done
+                    cd ..
                     rm -rf ./tmp
                     rm -rf ./hop
                 '''


[incubator-hop-docs] 03/18: Update Jenkinsfile

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit c29199506067b3a49b3d867b2165707362ebd1bb
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 14:58:50 2020 +0100

    Update Jenkinsfile
---
 Jenkinsfile | 138 ++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 79 insertions(+), 59 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 2e5ddb0..0d31f77 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,89 +1,109 @@
+/*
+ * 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.
+ */
+
+def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
+
 pipeline {
-    agent any
-    tools {
-        maven 'M3'
+
+    agent {
+        label AGENT_LABEL
     }
 
     options {
         buildDiscarder(
             logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
         )
-
-        timestamps()
+        disableConcurrentBuilds()
     }
+
     stages {
-        stage('create local branch'){
-            when {
-                branch 'master'
-            }
-            steps{
-                sh('git checkout -B master')
+        stage('Initialization') {
+              steps {
+                  echo 'Building Branch: ' + env.BRANCH_NAME
+                  echo 'Using PATH = ' + env.PATH
+              }
+         }
+         stage('Cleanup') {
+              steps {
+                  echo 'Cleaning up the workspace'
+                  deleteDir()
+              }
+         }
+        stage('Checkout') {
+            steps {
+                echo 'Checking out branch ' + env.BRANCH_NAME
+                checkout scm
             }
         }
-        stage('Generate navigation'){
+        stage('checkout Hop Code') {
             when {
                 branch 'master'
             }
-            steps{
-                sh('./generate_navigation.sh')
-            }
+            steps {
+                dir('hop') {
+                    deleteDir()
+                    sh 'git clone -b master https://github.com/apache/incubator-hop.git .'
+                }
         }
-        stage('Push') {
+        stage('Copy project docs') {
             when {
                 branch 'master'
             }
-            environment { 
-                GIT_AUTH = credentials('1f897a89-aed2-478f-9efc-29ae9b6aaa7c') 
-            }
             steps {
-                sh('''
-                    git config --local credential.helper "!f() { echo username=\\$GIT_AUTH_USR; echo password=\\$GIT_AUTH_PSW; }; f"
-                    ls
-                    git add .;
-                    git commit -m "Jenkins Update navigation" || echo;
-                    git push origin HEAD:master || echo;
-                ''')
+                    sh 'mkdir ./tmp'
+                    sh "find ./hop -name '*.adoc' -exec cp -prv --parents '{}' './tmp/' ';'"
             }
         }
-        stage('artifactory build') {
-            steps {
-                rtMavenResolver (
-                    id: 'hop-resolver',
-                    serverId: 'ART',
-                    releaseRepo: 'hop-releases',
-                    snapshotRepo: 'hop-snapshots'
-                )  
- 
-                rtMavenDeployer (
-                    id: 'hop-deployer',
-                    serverId: 'ART',
-                    releaseRepo: 'hop-releases-local',
-                    snapshotRepo: 'hop-snapshots-local',
-                    // By default, 3 threads are used to upload the artifacts to Artifactory. You can override this default by setting:
-                    threads: 6
-                )
-
-                rtMavenRun (
-                    // Tool name from Jenkins configuration.
-                    tool: 'M3',
-                    pom: 'pom.xml',
-                    goals: 'clean install',
-                    // Maven options.
-                    opts: '-Xms1024m -Xmx4096m',
-                    resolverId: 'hop-resolver',
-                    deployerId: 'hop-deployer'
-                )
-            }
-        }
-        stage('Start Website Build') {
+        stage('Process Docs') {
             when {
                 branch 'master'
             }
             steps {
-                script {
-                    build job: "hop-website/master", wait: false
+                sh '''
+                    cd ./tmp;
+                    for f in $(find ./ -name '*.adoc')
+                    do
+                    echo "Processing $f"
+                    FILEPATH=$(grep -nr "documentationPath" $f | awk -F  ":" '{print $4}' | sed -e 's/^[[:space:]]*//');
+                    if ! [ -z "$FILEPATH" ]
+                    then
+                        mkdir -p ../hop-user-manual/modules/ROOT/pages$FILEPATH && cp $f ../hop-user-manual/modules/ROOT/pages$FILEPATH;
+                    fi
+                    done
+                    rm -rf ./tmp
+                    rm -rf ./hop
+                '''
+                //sh 'git add .'
+                //sh 'git commit -m "Documentation updated to $GIT_COMMIT"'
+                //sh 'git push --force origin master'
                 }
             }
         }
     }
+    post {
+        always {
+            cleanWs()
+            emailext(
+                subject: '${DEFAULT_SUBJECT}',
+                body: '${DEFAULT_CONTENT}',
+                recipientProviders: [[$class: 'CulpritsRecipientProvider']]
+            )
+        }
+    }
 }


[incubator-hop-docs] 01/18: Initial commit

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop-docs.git

commit be7bd4ce54287c00b1faa79fa7a65c23291b0e85
Author: Hans Van Akelyen <ha...@gmail.com>
AuthorDate: Sun Nov 8 14:03:45 2020 +0100

    Initial commit
---
 README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e3f78a0
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+incubator-hop-docs