You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by gi...@apache.org on 2022/02/08 09:18:01 UTC

[hop-website] branch asf-site updated: Website updated to cd4410014

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

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hop-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new d172ca1  Website updated to cd4410014
d172ca1 is described below

commit d172ca1925ab161278f702418728c29babc6dc70
Author: jenkins <bu...@apache.org>
AuthorDate: Tue Feb 8 09:17:53 2022 +0000

    Website updated to cd4410014
---
 404.html                                           |    2 +-
 blog/2020/12/roundup-2020-12/index.html            |    2 +-
 blog/2021/01/roundup-2021-01/index.html            |    2 +-
 blog/2022/02/roundup-2022-02/index.html            |    2 +-
 .../latest/apache-release/checking-a-release.html  |    2 +-
 .../latest/apache-release/creating-a-release.html  |    2 +-
 dev-manual/latest/apache-release/index.html        |    2 +-
 .../latest/apache-release/promoting-a-release.html |    2 +-
 dev-manual/latest/getting-started.html             |    2 +-
 dev-manual/latest/hopweb/developer-guide.html      |    2 +-
 dev-manual/latest/hopweb/hopweb-antipatterns.html  |    2 +-
 dev-manual/latest/hopweb/index.html                |    2 +-
 dev-manual/latest/index.html                       |    2 +-
 dev-manual/latest/integration-testing.html         |    2 +-
 dev-manual/latest/internationalisation.html        |    2 +-
 dev-manual/latest/metadata-plugins.html            |    2 +-
 dev-manual/latest/plugin-development.html          |    2 +-
 dev-manual/latest/plugin-samples.html              |    2 +-
 dev-manual/latest/porting-kettle-plugins.html      |    2 +-
 dev-manual/latest/sdk/hop-sdk.html                 |    2 +-
 dev-manual/latest/sdk/index.html                   |    2 +-
 dev-manual/latest/setup-dev-environment.html       |    2 +-
 .../latest/snippets/hop-license-header-file.html   |    2 +-
 dev-manual/latest/start-your-own-plugin.html       |    2 +-
 dev-manual/latest/svg-files.html                   |    2 +-
 manual/0/best-practices/index.html                 |   19 -
 manual/0/concepts.html                             |   19 -
 manual/0/database/databases.html                   |   19 -
 manual/0/database/databases/as400.html             |   19 -
 manual/0/database/databases/cache.html             |   19 -
 manual/0/database/databases/clickhouse.html        |   19 -
 manual/0/database/databases/db2.html               |   19 -
 manual/0/database/databases/derby.html             |   19 -
 manual/0/database/databases/doris.html             |   19 -
 manual/0/database/databases/exasol.html            |   19 -
 manual/0/database/databases/firebird.html          |   19 -
 manual/0/database/databases/googlebigquery.html    |   19 -
 manual/0/database/databases/greenplum.html         |   19 -
 manual/0/database/databases/h2.html                |   19 -
 manual/0/database/databases/hypersonic.html        |   19 -
 manual/0/database/databases/infinidb.html          |   19 -
 manual/0/database/databases/infobright.html        |   19 -
 manual/0/database/databases/informix.html          |   19 -
 manual/0/database/databases/ingres.html            |   19 -
 manual/0/database/databases/interbase.html         |   19 -
 manual/0/database/databases/kingbasees.html        |   19 -
 manual/0/database/databases/mariadb.html           |   19 -
 manual/0/database/databases/monetdb.html           |   19 -
 manual/0/database/databases/mssql.html             |   19 -
 manual/0/database/databases/mssqlnative.html       |   19 -
 manual/0/database/databases/mysql.html             |   19 -
 manual/0/database/databases/netezza.html           |   19 -
 manual/0/database/databases/oracle.html            |   19 -
 manual/0/database/databases/oraclerdb.html         |   19 -
 manual/0/database/databases/postgresql.html        |   19 -
 manual/0/database/databases/redshift.html          |   19 -
 manual/0/database/databases/sapdb.html             |   19 -
 manual/0/database/databases/snowflake.html         |   19 -
 manual/0/database/databases/sqlbase.html           |   19 -
 manual/0/database/databases/sqlite.html            |   19 -
 manual/0/database/databases/sybase.html            |   19 -
 manual/0/database/databases/sybaseiq.html          |   19 -
 manual/0/database/databases/teradata.html          |   19 -
 manual/0/database/databases/universe.html          |   19 -
 manual/0/database/databases/vectorwise.html        |   19 -
 manual/0/database/databases/vertica.html           |   19 -
 manual/0/faq/faq.html                              |   19 -
 manual/0/getting-started/hop-concepts.html         |   19 -
 manual/0/getting-started/hop-download-install.html |   19 -
 manual/0/getting-started/hop-gui-pipelines.html    |   19 -
 manual/0/getting-started/hop-gui-workflows.html    |   19 -
 manual/0/getting-started/hop-gui.html              |   19 -
 manual/0/getting-started/hop-next-steps.html       |   19 -
 manual/0/getting-started/hop-tools.html            |   19 -
 manual/0/getting-started/hop-what-is-hop.html      |   19 -
 manual/0/getting-started/index.html                |   19 -
 manual/0/hop-gui/file-dialog.html                  |   19 -
 manual/0/hop-gui/hop-gui-git.html                  |   19 -
 manual/0/hop-gui/hop-gui-popup-dialog.html         |   19 -
 manual/0/hop-gui/hop-web.html                      |   23 -
 manual/0/hop-gui/index.html                        |   19 -
 .../0/hop-gui/perspective-data-orchestration.html  |   19 -
 manual/0/hop-gui/perspective-file-explorer.html    |   19 -
 manual/0/hop-gui/perspective-metadata.html         |   19 -
 manual/0/hop-gui/perspective-neo4j.html            |   19 -
 manual/0/hop-gui/perspective-plugin.html           |   19 -
 manual/0/hop-gui/perspective-search.html           |   19 -
 manual/0/hop-gui/perspectives.html                 |   19 -
 manual/0/hop-gui/shortcuts.html                    |   19 -
 manual/0/hop-run/index.html                        |   38 -
 manual/0/hop-search/index.html                     |   19 -
 manual/0/hop-server/async-web-service.html         |   29 -
 manual/0/hop-server/index.html                     |  192 -
 manual/0/hop-server/rest-api.html                  |  314 --
 manual/0/hop-server/web-service.html               |   27 -
 .../hop-tools/hop-conf/hop-conf-cloud-aws-s3.html  |   19 -
 .../hop-conf-cloud-azure-blob-storage.html         |   25 -
 .../hop-conf-cloud-google-cloud-storage.html       |   20 -
 .../hop-conf/hop-conf-cloud-google-drive.html      |   23 -
 manual/0/hop-tools/hop-conf/hop-conf-projects.html |   52 -
 .../0/hop-tools/hop-conf/hop-conf-run-hpl-hwf.html |   46 -
 manual/0/hop-tools/hop-conf/hop-conf.html          |  224 -
 manual/0/hop-tools/hop-encrypt.html                |   28 -
 manual/0/hop-tools/hop-import.html                 |   72 -
 manual/0/hop-tools/hop-search.html                 |   45 -
 manual/0/hop-tools/index.html                      |   19 -
 manual/0/hop-usps.html                             |   19 -
 .../apache-hop-web-services-docker.html            |   34 -
 manual/0/how-to-guides/index.html                  |   19 -
 manual/0/image-testpage.html                       |   19 -
 manual/0/index.html                                |   19 -
 manual/0/logging/logging-basics.html               |   19 -
 manual/0/logging/logging-reflection.html           |   19 -
 manual/0/metadata-types/beam-file-definition.html  |   19 -
 .../cassandra/cassandra-connection.html            |   19 -
 manual/0/metadata-types/data-set.html              |   19 -
 manual/0/metadata-types/hop-server.html            |   19 -
 manual/0/metadata-types/index.html                 |   19 -
 manual/0/metadata-types/mongodb-connection.html    |   19 -
 .../0/metadata-types/neo4j/neo4j-connection.html   |   19 -
 .../0/metadata-types/neo4j/neo4j-graphmodel.html   |   19 -
 manual/0/metadata-types/partition-schema.html      |   19 -
 manual/0/metadata-types/pipeline-log.html          |   19 -
 manual/0/metadata-types/pipeline-probe.html        |   19 -
 manual/0/metadata-types/pipeline-run-config.html   |   19 -
 manual/0/metadata-types/pipeline-unit-test.html    |   19 -
 manual/0/metadata-types/rdbms-connection.html      |   19 -
 manual/0/metadata-types/splunk-connection.html     |   19 -
 manual/0/metadata-types/workflow-log.html          |   19 -
 manual/0/metadata-types/workflow-run-config.html   |   19 -
 manual/0/password/passwords.html                   |   37 -
 manual/0/password/passwords/aespasswords.html      |   26 -
 .../0/pipeline/beam/getting-started-with-beam.html |   19 -
 manual/0/pipeline/create-pipeline.html             |   19 -
 manual/0/pipeline/errorhandling.html               |   19 -
 manual/0/pipeline/hop-pipeline-editor.html         |   19 -
 manual/0/pipeline/metadata-injection.html          |   19 -
 manual/0/pipeline/partitioning.html                |   19 -
 .../beam-dataflow-pipeline-engine.html             |   19 -
 .../beam-direct-pipeline-engine.html               |   19 -
 .../beam-flink-pipeline-engine.html                |   26 -
 .../beam-spark-pipeline-engine.html                |   26 -
 .../native-local-pipeline-engine.html              |   19 -
 .../native-remote-pipeline-engine.html             |   19 -
 .../pipeline-run-configurations.html               |   19 -
 manual/0/pipeline/pipeline-unit-testing.html       |   34 -
 manual/0/pipeline/pipelines.html                   |   19 -
 manual/0/pipeline/run-preview-debug-pipeline.html  |   19 -
 manual/0/pipeline/transforms.html                  |   19 -
 manual/0/pipeline/transforms/abort.html            |   19 -
 manual/0/pipeline/transforms/addchecksum.html      |   19 -
 manual/0/pipeline/transforms/addconstant.html      |   19 -
 .../transforms/addfieldschangesequence.html        |   19 -
 manual/0/pipeline/transforms/addsequence.html      |   19 -
 manual/0/pipeline/transforms/addxml.html           |   19 -
 manual/0/pipeline/transforms/analyticquery.html    |   42 -
 manual/0/pipeline/transforms/apache-tika.html      |   19 -
 manual/0/pipeline/transforms/append.html           |   19 -
 manual/0/pipeline/transforms/avro-decode.html      |   19 -
 manual/0/pipeline/transforms/avro-file-input.html  |   19 -
 .../transforms/azure-event-hubs-listener.html      |   19 -
 .../transforms/azure-event-hubs-writer.html        |   19 -
 .../0/pipeline/transforms/beambigqueryinput.html   |   19 -
 .../0/pipeline/transforms/beambigqueryoutput.html  |   19 -
 .../0/pipeline/transforms/beambigtableinput.html   |   19 -
 .../0/pipeline/transforms/beambigtableoutput.html  |   19 -
 manual/0/pipeline/transforms/beamgcppublisher.html |   19 -
 .../0/pipeline/transforms/beamgcpsubscriber.html   |   19 -
 manual/0/pipeline/transforms/beaminput.html        |   19 -
 manual/0/pipeline/transforms/beamkafkaconsume.html |   19 -
 manual/0/pipeline/transforms/beamkafkaproduce.html |   19 -
 manual/0/pipeline/transforms/beamoutput.html       |   19 -
 manual/0/pipeline/transforms/beamtimestamp.html    |   19 -
 manual/0/pipeline/transforms/beamwindow.html       |   19 -
 .../0/pipeline/transforms/blockingtransform.html   |   19 -
 .../transforms/blockuntiltransformsfinish.html     |   19 -
 manual/0/pipeline/transforms/calculator.html       |   19 -
 manual/0/pipeline/transforms/calldbproc.html       |   19 -
 manual/0/pipeline/transforms/cassandra-input.html  |   19 -
 manual/0/pipeline/transforms/cassandra-output.html |   19 -
 .../0/pipeline/transforms/changefileencoding.html  |   19 -
 manual/0/pipeline/transforms/checkfilelocked.html  |   19 -
 .../transforms/checkwebserviceavailable.html       |   19 -
 manual/0/pipeline/transforms/clonerow.html         |   19 -
 manual/0/pipeline/transforms/closure.html          |   19 -
 manual/0/pipeline/transforms/coalesce.html         |   19 -
 manual/0/pipeline/transforms/columnexists.html     |   19 -
 .../0/pipeline/transforms/combinationlookup.html   |   19 -
 manual/0/pipeline/transforms/concatfields.html     |   19 -
 manual/0/pipeline/transforms/copyrowstoresult.html |   19 -
 .../0/pipeline/transforms/creditcardvalidator.html |   19 -
 manual/0/pipeline/transforms/csvinput.html         |   19 -
 manual/0/pipeline/transforms/databasejoin.html     |   23 -
 manual/0/pipeline/transforms/databaselookup.html   |   19 -
 manual/0/pipeline/transforms/datagrid.html         |   19 -
 manual/0/pipeline/transforms/delay.html            |   19 -
 manual/0/pipeline/transforms/delete.html           |   19 -
 .../0/pipeline/transforms/detectemptystream.html   |   19 -
 manual/0/pipeline/transforms/dimensionlookup.html  |   19 -
 manual/0/pipeline/transforms/dummy.html            |   19 -
 manual/0/pipeline/transforms/dynamicsqlrow.html    |   19 -
 manual/0/pipeline/transforms/edi2xml.html          |   28 -
 manual/0/pipeline/transforms/emailinput.html       |   19 -
 .../0/pipeline/transforms/enhancedjsonoutput.html  |   63 -
 manual/0/pipeline/transforms/excelinput.html       |   19 -
 manual/0/pipeline/transforms/excelwriter.html      |   19 -
 manual/0/pipeline/transforms/execprocess.html      |   19 -
 manual/0/pipeline/transforms/execsql.html          |   19 -
 manual/0/pipeline/transforms/execsqlrow.html       |   19 -
 manual/0/pipeline/transforms/exectests.html        |   19 -
 manual/0/pipeline/transforms/fake.html             |   19 -
 manual/0/pipeline/transforms/fileexists.html       |   19 -
 manual/0/pipeline/transforms/filemetadata.html     |   19 -
 manual/0/pipeline/transforms/filesfromresult.html  |   19 -
 manual/0/pipeline/transforms/filestoresult.html    |   19 -
 manual/0/pipeline/transforms/filterrows.html       |   23 -
 manual/0/pipeline/transforms/fuzzymatch.html       |   19 -
 .../0/pipeline/transforms/generaterandomvalue.html |   19 -
 manual/0/pipeline/transforms/getdatafromxml.html   |   19 -
 manual/0/pipeline/transforms/getfilenames.html     |   19 -
 manual/0/pipeline/transforms/getfilesrowcount.html |   19 -
 .../pipeline/transforms/getrecordsfromstream.html  |   19 -
 .../0/pipeline/transforms/getrowsfromresult.html   |   19 -
 .../0/pipeline/transforms/getserversequence.html   |   60 -
 manual/0/pipeline/transforms/getsubfolders.html    |   19 -
 manual/0/pipeline/transforms/getsystemdata.html    |   19 -
 manual/0/pipeline/transforms/gettablenames.html    |   19 -
 manual/0/pipeline/transforms/getvariable.html      |   19 -
 manual/0/pipeline/transforms/groupby.html          |   19 -
 manual/0/pipeline/transforms/http.html             |   19 -
 manual/0/pipeline/transforms/httppost.html         |   19 -
 manual/0/pipeline/transforms/identifylastrow.html  |   19 -
 manual/0/pipeline/transforms/ifnull.html           |   19 -
 manual/0/pipeline/transforms/injector.html         |   19 -
 manual/0/pipeline/transforms/insertupdate.html     |   19 -
 manual/0/pipeline/transforms/javafilter.html       |   22 -
 manual/0/pipeline/transforms/javascript.html       |   40 -
 manual/0/pipeline/transforms/joinrows.html         |   19 -
 manual/0/pipeline/transforms/jsoninput.html        |   19 -
 manual/0/pipeline/transforms/jsonoutput.html       |   82 -
 manual/0/pipeline/transforms/kafkaconsumer.html    |   19 -
 manual/0/pipeline/transforms/kafkaproducer.html    |   19 -
 manual/0/pipeline/transforms/ldapinput.html        |   19 -
 manual/0/pipeline/transforms/ldapoutput.html       |   19 -
 manual/0/pipeline/transforms/loadfileinput.html    |   19 -
 manual/0/pipeline/transforms/mail.html             |   19 -
 manual/0/pipeline/transforms/mailvalidator.html    |   19 -
 manual/0/pipeline/transforms/mapping-input.html    |   19 -
 manual/0/pipeline/transforms/mapping-output.html   |   19 -
 manual/0/pipeline/transforms/memgroupby.html       |   19 -
 manual/0/pipeline/transforms/mergejoin.html        |   19 -
 manual/0/pipeline/transforms/mergerows.html        |   19 -
 manual/0/pipeline/transforms/metadata-input.html   |   19 -
 manual/0/pipeline/transforms/metainject.html       |   19 -
 manual/0/pipeline/transforms/metastructure.html    |   19 -
 .../0/pipeline/transforms/monetdbbulkloader.html   |   19 -
 manual/0/pipeline/transforms/mongodbinput.html     |   19 -
 manual/0/pipeline/transforms/mongodboutput.html    |   29 -
 manual/0/pipeline/transforms/multimerge.html       |   19 -
 manual/0/pipeline/transforms/neo4j-cypher.html     |   19 -
 manual/0/pipeline/transforms/neo4j-gencsv.html     |   19 -
 manual/0/pipeline/transforms/neo4j-getloginfo.html |   19 -
 .../0/pipeline/transforms/neo4j-graphoutput.html   |   19 -
 manual/0/pipeline/transforms/neo4j-import.html     |   19 -
 manual/0/pipeline/transforms/neo4j-output.html     |   19 -
 .../0/pipeline/transforms/neo4j-split-graph.html   |   19 -
 manual/0/pipeline/transforms/nullif.html           |   19 -
 manual/0/pipeline/transforms/numberrange.html      |   19 -
 .../0/pipeline/transforms/parquet-file-input.html  |   19 -
 .../0/pipeline/transforms/parquet-file-output.html |   19 -
 manual/0/pipeline/transforms/pgpdecryptstream.html |   19 -
 manual/0/pipeline/transforms/pgpencryptstream.html |   19 -
 manual/0/pipeline/transforms/pipelineexecutor.html |   19 -
 .../0/pipeline/transforms/postgresbulkloader.html  |   19 -
 manual/0/pipeline/transforms/processfiles.html     |   19 -
 manual/0/pipeline/transforms/propertyinput.html    |   19 -
 manual/0/pipeline/transforms/propertyoutput.html   |   19 -
 manual/0/pipeline/transforms/regexeval.html        |   19 -
 manual/0/pipeline/transforms/replacestring.html    |   19 -
 .../0/pipeline/transforms/reservoirsampling.html   |   19 -
 manual/0/pipeline/transforms/rest.html             |   19 -
 manual/0/pipeline/transforms/rowdenormaliser.html  |   19 -
 manual/0/pipeline/transforms/rowflattener.html     |   19 -
 manual/0/pipeline/transforms/rowgenerator.html     |   19 -
 manual/0/pipeline/transforms/rownormaliser.html    |   19 -
 manual/0/pipeline/transforms/runssh.html           |   19 -
 .../pipeline/transforms/salesforce-connection.html |   19 -
 .../0/pipeline/transforms/salesforce-fields.html   |   19 -
 .../0/pipeline/transforms/salesforce-settings.html |   19 -
 manual/0/pipeline/transforms/salesforcedelete.html |   19 -
 manual/0/pipeline/transforms/salesforceinput.html  |   19 -
 manual/0/pipeline/transforms/salesforceinsert.html |   19 -
 manual/0/pipeline/transforms/salesforceupdate.html |   19 -
 manual/0/pipeline/transforms/salesforceupsert.html |   19 -
 manual/0/pipeline/transforms/samplerows.html       |   19 -
 manual/0/pipeline/transforms/sasinput.html         |   19 -
 manual/0/pipeline/transforms/selectvalues.html     |   19 -
 .../transforms/serialize-de-from-file.html         |   19 -
 .../0/pipeline/transforms/serialize-to-file.html   |   19 -
 manual/0/pipeline/transforms/serverstatus.html     |   19 -
 manual/0/pipeline/transforms/setvalueconstant.html |   19 -
 manual/0/pipeline/transforms/setvaluefield.html    |   19 -
 manual/0/pipeline/transforms/setvariable.html      |   19 -
 manual/0/pipeline/transforms/simple-mapping.html   |   19 -
 manual/0/pipeline/transforms/sort.html             |   19 -
 manual/0/pipeline/transforms/sortedmerge.html      |   19 -
 manual/0/pipeline/transforms/splitfields.html      |   19 -
 manual/0/pipeline/transforms/splitfieldtorows.html |   19 -
 manual/0/pipeline/transforms/splunkinput.html      |   19 -
 manual/0/pipeline/transforms/sqlfileoutput.html    |   19 -
 manual/0/pipeline/transforms/sstable-output.html   |   19 -
 .../transforms/standardizephonenumber.html         |   19 -
 manual/0/pipeline/transforms/streamlookup.html     |   19 -
 .../0/pipeline/transforms/streamschemamerge.html   |   19 -
 manual/0/pipeline/transforms/stringcut.html        |   19 -
 manual/0/pipeline/transforms/stringoperations.html |   19 -
 manual/0/pipeline/transforms/switchcase.html       |   19 -
 .../pipeline/transforms/synchronizeaftermerge.html |   19 -
 manual/0/pipeline/transforms/tablecompare.html     |   19 -
 manual/0/pipeline/transforms/tableexists.html      |   19 -
 manual/0/pipeline/transforms/tableinput.html       |   19 -
 manual/0/pipeline/transforms/tableoutput.html      |   27 -
 manual/0/pipeline/transforms/terafast.html         |   19 -
 manual/0/pipeline/transforms/textfileinput.html    |   19 -
 manual/0/pipeline/transforms/textfileoutput.html   |   19 -
 manual/0/pipeline/transforms/tokenreplacement.html |   19 -
 manual/0/pipeline/transforms/uniquerows.html       |   19 -
 .../0/pipeline/transforms/uniquerowsbyhashset.html |   19 -
 manual/0/pipeline/transforms/update.html           |   19 -
 .../pipeline/transforms/userdefinedjavaclass.html  |   96 -
 .../transforms/userdefinedjavaexpression.html      |   20 -
 manual/0/pipeline/transforms/valuemapper.html      |   21 -
 manual/0/pipeline/transforms/webservices.html      |   19 -
 manual/0/pipeline/transforms/workflowexecutor.html |   19 -
 manual/0/pipeline/transforms/writetolog.html       |   34 -
 manual/0/pipeline/transforms/xmlinputstream.html   |   19 -
 manual/0/pipeline/transforms/xmljoin.html          |   19 -
 manual/0/pipeline/transforms/xmloutput.html        |   19 -
 manual/0/pipeline/transforms/xsdvalidator.html     |   19 -
 manual/0/pipeline/transforms/xslt.html             |   19 -
 manual/0/pipeline/transforms/yamlinput.html        |   19 -
 manual/0/pipeline/transforms/zipfile.html          |   19 -
 manual/0/plugins/external-plugins.html             |   19 -
 manual/0/plugins/import/kettle-import.html         |   19 -
 manual/0/plugins/plugins.html                      |   19 -
 manual/0/plugins/projects.html                     |   19 -
 manual/0/plugins/projects/projects.html            |  122 -
 manual/0/projects/advanced.html                    |   95 -
 manual/0/projects/index.html                       |   19 -
 manual/0/projects/metadata.html                    |   42 -
 manual/0/projects/projects-environments.html       |   19 -
 manual/0/protips/index.html                        |   19 -
 manual/0/samples/samples.html                      |   19 -
 manual/0/snippets/best-practices/governance.html   |   19 -
 manual/0/snippets/best-practices/logging.html      |   19 -
 manual/0/snippets/best-practices/loops.html        |   19 -
 manual/0/snippets/best-practices/mappings.html     |   19 -
 .../best-practices/metadata-injection.html         |   19 -
 .../best-practices/naming-conventions.html         |   19 -
 .../best-practices/performance-basics.html         |   19 -
 manual/0/snippets/best-practices/size-matters.html |   19 -
 manual/0/snippets/best-practices/variables.html    |   19 -
 manual/0/snippets/hop-concepts/action.html         |   19 -
 manual/0/snippets/hop-concepts/environment.html    |   19 -
 .../hop-concepts/hop-projects-environments.html    |   19 -
 manual/0/snippets/hop-concepts/hop.html            |   19 -
 manual/0/snippets/hop-concepts/item-types.html     |   19 -
 manual/0/snippets/hop-concepts/lazy-loading.html   |   19 -
 manual/0/snippets/hop-concepts/metadata.html       |   19 -
 manual/0/snippets/hop-concepts/pipeline.html       |   19 -
 manual/0/snippets/hop-concepts/project.html        |   19 -
 manual/0/snippets/hop-concepts/transform.html      |   19 -
 manual/0/snippets/hop-concepts/workflow.html       |   19 -
 manual/0/snippets/hop-tools/hop-conf.html          |   19 -
 manual/0/snippets/hop-tools/hop-encrypt.html       |   19 -
 manual/0/snippets/hop-tools/hop-gui.html           |   19 -
 manual/0/snippets/hop-tools/hop-run.html           |   19 -
 manual/0/snippets/hop-tools/hop-search.html        |   19 -
 manual/0/snippets/hop-tools/hop-server.html        |   19 -
 manual/0/snippets/hop-tools/hop-tools.html         |   19 -
 manual/0/snippets/hop-tools/hop-translator.html    |   19 -
 manual/0/technology/azure/index.html               |   19 -
 manual/0/technology/cassandra/index.html           |   19 -
 manual/0/technology/google/index.html              |   19 -
 manual/0/technology/neo4j/index.html               |   19 -
 .../technology/neo4j/working-with-neo4j-data.html  |   23 -
 manual/0/technology/technology.html                |   19 -
 manual/0/variables.html                            |   23 -
 manual/0/vfs.html                                  |   19 -
 manual/0/vfs/aws-s3-vfs.html                       |   21 -
 manual/0/vfs/azure-blob-storage-vfs.html           |   31 -
 manual/0/vfs/dropbox-vfs.html                      |   20 -
 manual/0/vfs/google-cloud-storage-vfs.html         |   24 -
 manual/0/vfs/google-drive-vfs.html                 |   29 -
 manual/0/workflow/actions.html                     |   19 -
 manual/0/workflow/actions/abort.html               |   19 -
 manual/0/workflow/actions/addresultfilenames.html  |   19 -
 manual/0/workflow/actions/as400command.html        |   19 -
 manual/0/workflow/actions/cassandra-exec-cql.html  |   21 -
 manual/0/workflow/actions/checkdbconnection.html   |   19 -
 manual/0/workflow/actions/checkfilelocked.html     |   19 -
 manual/0/workflow/actions/columnsexist.html        |   19 -
 manual/0/workflow/actions/copyfiles.html           |   19 -
 .../workflow/actions/copymoveresultfilenames.html  |   19 -
 manual/0/workflow/actions/createfile.html          |   19 -
 manual/0/workflow/actions/createfolder.html        |   19 -
 manual/0/workflow/actions/delay.html               |   19 -
 manual/0/workflow/actions/deletefile.html          |   19 -
 manual/0/workflow/actions/deletefiles.html         |   19 -
 manual/0/workflow/actions/deletefolders.html       |   19 -
 .../0/workflow/actions/deleteresultfilenames.html  |   19 -
 manual/0/workflow/actions/dostounix.html           |   19 -
 manual/0/workflow/actions/dtdvalidator.html        |   19 -
 manual/0/workflow/actions/dummy.html               |   19 -
 manual/0/workflow/actions/eval.html                |   29 -
 manual/0/workflow/actions/evalfilesmetrics.html    |   19 -
 .../0/workflow/actions/evaluatetablecontent.html   |   19 -
 manual/0/workflow/actions/filecompare.html         |   19 -
 manual/0/workflow/actions/fileexists.html          |   19 -
 manual/0/workflow/actions/filesexist.html          |   19 -
 manual/0/workflow/actions/folderisempty.html       |   19 -
 manual/0/workflow/actions/folderscompare.html      |   19 -
 manual/0/workflow/actions/ftp.html                 |   19 -
 manual/0/workflow/actions/ftpdelete.html           |   19 -
 manual/0/workflow/actions/ftpput.html              |   19 -
 manual/0/workflow/actions/getpop.html              |   19 -
 manual/0/workflow/actions/http.html                |   19 -
 manual/0/workflow/actions/mail.html                |   19 -
 manual/0/workflow/actions/mailvalidator.html       |   19 -
 manual/0/workflow/actions/movefiles.html           |   19 -
 manual/0/workflow/actions/msgboxinfo.html          |   20 -
 manual/0/workflow/actions/mssqlbulkload.html       |   19 -
 manual/0/workflow/actions/mysqlbulkfile.html       |   19 -
 manual/0/workflow/actions/mysqlbulkload.html       |   19 -
 .../0/workflow/actions/neo4j-checkconnections.html |   19 -
 manual/0/workflow/actions/neo4j-constraint.html    |   19 -
 manual/0/workflow/actions/neo4j-cypherscript.html  |   22 -
 manual/0/workflow/actions/neo4j-index.html         |   19 -
 manual/0/workflow/actions/pgpdecryptfiles.html     |   19 -
 manual/0/workflow/actions/pgpencryptfiles.html     |   19 -
 manual/0/workflow/actions/pgpverify.html           |   19 -
 manual/0/workflow/actions/ping.html                |   19 -
 manual/0/workflow/actions/pipeline.html            |   19 -
 manual/0/workflow/actions/repeat-end.html          |   19 -
 manual/0/workflow/actions/repeat.html              |   19 -
 manual/0/workflow/actions/runpipelinetests.html    |   19 -
 .../0/workflow/actions/sendnagiospassivecheck.html |   19 -
 manual/0/workflow/actions/setvariables.html        |   19 -
 manual/0/workflow/actions/sftp.html                |   21 -
 manual/0/workflow/actions/sftpput.html             |   20 -
 manual/0/workflow/actions/shell.html               |   19 -
 manual/0/workflow/actions/simpleeval.html          |   19 -
 manual/0/workflow/actions/snmptrap.html            |   19 -
 manual/0/workflow/actions/sql.html                 |   19 -
 manual/0/workflow/actions/start.html               |   19 -
 manual/0/workflow/actions/success.html             |   19 -
 manual/0/workflow/actions/tableexists.html         |   19 -
 manual/0/workflow/actions/telnet.html              |   19 -
 manual/0/workflow/actions/truncatetables.html      |   19 -
 manual/0/workflow/actions/unzip.html               |   19 -
 manual/0/workflow/actions/waitforfile.html         |   19 -
 manual/0/workflow/actions/waitforsql.html          |   19 -
 manual/0/workflow/actions/webserviceavailable.html |   19 -
 manual/0/workflow/actions/workflow.html            |   19 -
 manual/0/workflow/actions/writetofile.html         |   19 -
 manual/0/workflow/actions/writetolog.html          |   19 -
 manual/0/workflow/actions/xmlwellformed.html       |   19 -
 manual/0/workflow/actions/xsdvalidator.html        |   19 -
 manual/0/workflow/actions/xslt.html                |   19 -
 manual/0/workflow/actions/zipfile.html             |   19 -
 manual/0/workflow/create-workflow.html             |   19 -
 manual/0/workflow/run-debug-workflow.html          |   19 -
 .../native-local-workflow-engine.html              |   19 -
 .../native-remote-workflow-engine.html             |   19 -
 .../workflow-run-configurations.html               |   19 -
 manual/0/workflow/workflows.html                   |   19 -
 manual/1.0.0/best-practices/index.html             |    2 +-
 manual/1.0.0/concepts.html                         |    2 +-
 manual/1.0.0/database/databases.html               |    2 +-
 manual/1.0.0/database/databases/as400.html         |    2 +-
 manual/1.0.0/database/databases/cache.html         |    2 +-
 manual/1.0.0/database/databases/clickhouse.html    |    2 +-
 manual/1.0.0/database/databases/db2.html           |    2 +-
 manual/1.0.0/database/databases/derby.html         |    2 +-
 manual/1.0.0/database/databases/doris.html         |    2 +-
 manual/1.0.0/database/databases/exasol.html        |    2 +-
 manual/1.0.0/database/databases/firebird.html      |    2 +-
 .../1.0.0/database/databases/googlebigquery.html   |    2 +-
 manual/1.0.0/database/databases/greenplum.html     |    2 +-
 manual/1.0.0/database/databases/h2.html            |    2 +-
 manual/1.0.0/database/databases/hypersonic.html    |    2 +-
 manual/1.0.0/database/databases/infinidb.html      |    2 +-
 manual/1.0.0/database/databases/infobright.html    |    2 +-
 manual/1.0.0/database/databases/informix.html      |    2 +-
 manual/1.0.0/database/databases/ingres.html        |    2 +-
 manual/1.0.0/database/databases/interbase.html     |    2 +-
 manual/1.0.0/database/databases/kingbasees.html    |    2 +-
 manual/1.0.0/database/databases/mariadb.html       |    2 +-
 manual/1.0.0/database/databases/monetdb.html       |    2 +-
 manual/1.0.0/database/databases/mssql.html         |    2 +-
 manual/1.0.0/database/databases/mssqlnative.html   |    2 +-
 manual/1.0.0/database/databases/mysql.html         |    2 +-
 manual/1.0.0/database/databases/netezza.html       |    2 +-
 manual/1.0.0/database/databases/oracle.html        |    2 +-
 manual/1.0.0/database/databases/oraclerdb.html     |    2 +-
 manual/1.0.0/database/databases/postgresql.html    |    2 +-
 manual/1.0.0/database/databases/redshift.html      |    2 +-
 manual/1.0.0/database/databases/sapdb.html         |    2 +-
 manual/1.0.0/database/databases/snowflake.html     |    2 +-
 manual/1.0.0/database/databases/sqlbase.html       |    2 +-
 manual/1.0.0/database/databases/sqlite.html        |    2 +-
 manual/1.0.0/database/databases/sybase.html        |    2 +-
 manual/1.0.0/database/databases/sybaseiq.html      |    2 +-
 manual/1.0.0/database/databases/teradata.html      |    2 +-
 manual/1.0.0/database/databases/universe.html      |    2 +-
 manual/1.0.0/database/databases/vectorwise.html    |    2 +-
 manual/1.0.0/database/databases/vertica.html       |    2 +-
 manual/1.0.0/faq/faq.html                          |    2 +-
 manual/1.0.0/getting-started/hop-concepts.html     |    2 +-
 .../getting-started/hop-download-install.html      |    2 +-
 .../1.0.0/getting-started/hop-gui-pipelines.html   |    2 +-
 .../1.0.0/getting-started/hop-gui-workflows.html   |    2 +-
 manual/1.0.0/getting-started/hop-gui.html          |    2 +-
 manual/1.0.0/getting-started/hop-next-steps.html   |    2 +-
 manual/1.0.0/getting-started/hop-tools.html        |    2 +-
 manual/1.0.0/getting-started/hop-what-is-hop.html  |    2 +-
 manual/1.0.0/getting-started/index.html            |    2 +-
 manual/1.0.0/hop-gui/file-dialog.html              |    2 +-
 manual/1.0.0/hop-gui/hop-gui-git.html              |    2 +-
 manual/1.0.0/hop-gui/hop-web.html                  |    2 +-
 manual/1.0.0/hop-gui/index.html                    |    2 +-
 .../hop-gui/perspective-data-orchestration.html    |    2 +-
 .../1.0.0/hop-gui/perspective-file-explorer.html   |    2 +-
 manual/1.0.0/hop-gui/perspective-metadata.html     |    2 +-
 manual/1.0.0/hop-gui/perspective-neo4j.html        |    2 +-
 manual/1.0.0/hop-gui/perspective-plugin.html       |    2 +-
 manual/1.0.0/hop-gui/perspective-search.html       |    2 +-
 manual/1.0.0/hop-gui/perspectives.html             |    2 +-
 manual/1.0.0/hop-gui/shortcuts.html                |    2 +-
 manual/1.0.0/hop-run/index.html                    |    2 +-
 manual/1.0.0/hop-search/index.html                 |    2 +-
 manual/1.0.0/hop-server/index.html                 |    2 +-
 manual/1.0.0/hop-server/rest-api.html              |    2 +-
 manual/1.0.0/hop-server/web-service.html           |    2 +-
 .../hop-tools/hop-conf/hop-conf-cloud-aws-s3.html  |    2 +-
 .../hop-conf-cloud-azure-blob-storage.html         |    2 +-
 .../hop-conf-cloud-google-cloud-storage.html       |    2 +-
 .../hop-conf/hop-conf-cloud-google-drive.html      |    2 +-
 .../hop-tools/hop-conf/hop-conf-projects.html      |    2 +-
 .../hop-tools/hop-conf/hop-conf-run-hpl-hwf.html   |    2 +-
 manual/1.0.0/hop-tools/hop-conf/hop-conf.html      |    2 +-
 manual/1.0.0/hop-tools/hop-encrypt.html            |    2 +-
 manual/1.0.0/hop-tools/hop-import.html             |    2 +-
 manual/1.0.0/hop-tools/hop-search.html             |    2 +-
 manual/1.0.0/hop-tools/index.html                  |    2 +-
 manual/1.0.0/hop-usps.html                         |    2 +-
 manual/1.0.0/image-testpage.html                   |    2 +-
 manual/1.0.0/index.html                            |    2 +-
 manual/1.0.0/logging/logging-basics.html           |    2 +-
 manual/1.0.0/logging/logging-reflection.html       |    2 +-
 .../1.0.0/metadata-types/beam-file-definition.html |    2 +-
 .../cassandra/cassandra-connection.html            |    2 +-
 manual/1.0.0/metadata-types/data-set.html          |    2 +-
 manual/1.0.0/metadata-types/hop-server.html        |    2 +-
 manual/1.0.0/metadata-types/index.html             |    2 +-
 .../1.0.0/metadata-types/mongodb-connection.html   |    2 +-
 .../metadata-types/neo4j/neo4j-connection.html     |    2 +-
 .../metadata-types/neo4j/neo4j-graphmodel.html     |    2 +-
 manual/1.0.0/metadata-types/partition-schema.html  |    2 +-
 manual/1.0.0/metadata-types/pipeline-log.html      |    2 +-
 manual/1.0.0/metadata-types/pipeline-probe.html    |    2 +-
 .../1.0.0/metadata-types/pipeline-run-config.html  |    2 +-
 .../1.0.0/metadata-types/pipeline-unit-test.html   |    2 +-
 manual/1.0.0/metadata-types/rdbms-connection.html  |    2 +-
 manual/1.0.0/metadata-types/splunk-connection.html |    2 +-
 manual/1.0.0/metadata-types/web-service.html       |    2 +-
 manual/1.0.0/metadata-types/workflow-log.html      |    2 +-
 .../1.0.0/metadata-types/workflow-run-config.html  |    2 +-
 manual/1.0.0/password/passwords.html               |    2 +-
 manual/1.0.0/password/passwords/aespasswords.html  |    2 +-
 .../pipeline/beam/getting-started-with-beam.html   |    2 +-
 manual/1.0.0/pipeline/create-pipeline.html         |    2 +-
 manual/1.0.0/pipeline/errorhandling.html           |    2 +-
 manual/1.0.0/pipeline/hop-pipeline-editor.html     |    2 +-
 manual/1.0.0/pipeline/metadata-injection.html      |    2 +-
 manual/1.0.0/pipeline/partitioning.html            |    2 +-
 .../beam-dataflow-pipeline-engine.html             |    2 +-
 .../beam-direct-pipeline-engine.html               |    2 +-
 .../beam-flink-pipeline-engine.html                |    2 +-
 .../beam-spark-pipeline-engine.html                |    2 +-
 .../native-local-pipeline-engine.html              |    2 +-
 .../native-remote-pipeline-engine.html             |    2 +-
 .../pipeline-run-configurations.html               |    2 +-
 manual/1.0.0/pipeline/pipeline-unit-testing.html   |    2 +-
 manual/1.0.0/pipeline/pipelines.html               |    2 +-
 .../1.0.0/pipeline/run-preview-debug-pipeline.html |    2 +-
 manual/1.0.0/pipeline/transforms.html              |    2 +-
 manual/1.0.0/pipeline/transforms/abort.html        |    2 +-
 manual/1.0.0/pipeline/transforms/addchecksum.html  |    2 +-
 manual/1.0.0/pipeline/transforms/addconstant.html  |    2 +-
 .../transforms/addfieldschangesequence.html        |    2 +-
 manual/1.0.0/pipeline/transforms/addsequence.html  |    2 +-
 manual/1.0.0/pipeline/transforms/addxml.html       |    2 +-
 .../1.0.0/pipeline/transforms/analyticquery.html   |    2 +-
 manual/1.0.0/pipeline/transforms/append.html       |    2 +-
 manual/1.0.0/pipeline/transforms/avro-decode.html  |    2 +-
 .../1.0.0/pipeline/transforms/avro-file-input.html |    2 +-
 .../transforms/azure-event-hubs-listener.html      |    2 +-
 .../transforms/azure-event-hubs-writer.html        |    2 +-
 .../pipeline/transforms/beambigqueryinput.html     |    2 +-
 .../pipeline/transforms/beambigqueryoutput.html    |    2 +-
 .../pipeline/transforms/beambigtableinput.html     |    2 +-
 .../pipeline/transforms/beambigtableoutput.html    |    2 +-
 .../pipeline/transforms/beamgcppublisher.html      |    2 +-
 .../pipeline/transforms/beamgcpsubscriber.html     |    2 +-
 manual/1.0.0/pipeline/transforms/beaminput.html    |    2 +-
 .../pipeline/transforms/beamkafkaconsume.html      |    2 +-
 .../pipeline/transforms/beamkafkaproduce.html      |    2 +-
 manual/1.0.0/pipeline/transforms/beamoutput.html   |    2 +-
 .../1.0.0/pipeline/transforms/beamtimestamp.html   |    2 +-
 manual/1.0.0/pipeline/transforms/beamwindow.html   |    2 +-
 .../pipeline/transforms/blockingtransform.html     |    2 +-
 .../transforms/blockuntiltransformsfinish.html     |    2 +-
 manual/1.0.0/pipeline/transforms/calculator.html   |    2 +-
 manual/1.0.0/pipeline/transforms/calldbproc.html   |    2 +-
 .../1.0.0/pipeline/transforms/cassandra-input.html |    2 +-
 .../pipeline/transforms/cassandra-output.html      |    2 +-
 .../pipeline/transforms/changefileencoding.html    |    2 +-
 .../1.0.0/pipeline/transforms/checkfilelocked.html |    2 +-
 .../transforms/checkwebserviceavailable.html       |    2 +-
 manual/1.0.0/pipeline/transforms/clonerow.html     |    2 +-
 manual/1.0.0/pipeline/transforms/closure.html      |    2 +-
 manual/1.0.0/pipeline/transforms/coalesce.html     |    2 +-
 manual/1.0.0/pipeline/transforms/columnexists.html |    2 +-
 .../pipeline/transforms/combinationlookup.html     |    2 +-
 manual/1.0.0/pipeline/transforms/concatfields.html |    2 +-
 .../pipeline/transforms/copyrowstoresult.html      |    2 +-
 .../pipeline/transforms/creditcardvalidator.html   |    2 +-
 manual/1.0.0/pipeline/transforms/csvinput.html     |    2 +-
 manual/1.0.0/pipeline/transforms/cubeinput.html    |    2 +-
 manual/1.0.0/pipeline/transforms/cubeoutput.html   |    2 +-
 manual/1.0.0/pipeline/transforms/databasejoin.html |    2 +-
 .../1.0.0/pipeline/transforms/databaselookup.html  |    2 +-
 manual/1.0.0/pipeline/transforms/datagrid.html     |    2 +-
 manual/1.0.0/pipeline/transforms/delay.html        |    2 +-
 manual/1.0.0/pipeline/transforms/delete.html       |    2 +-
 .../pipeline/transforms/detectemptystream.html     |    2 +-
 .../1.0.0/pipeline/transforms/dimensionlookup.html |    2 +-
 manual/1.0.0/pipeline/transforms/dummy.html        |    2 +-
 .../1.0.0/pipeline/transforms/dynamicsqlrow.html   |    2 +-
 manual/1.0.0/pipeline/transforms/edi2xml.html      |    2 +-
 manual/1.0.0/pipeline/transforms/emailinput.html   |    2 +-
 .../pipeline/transforms/enhancedjsonoutput.html    |    2 +-
 manual/1.0.0/pipeline/transforms/excelinput.html   |    2 +-
 manual/1.0.0/pipeline/transforms/excelwriter.html  |    2 +-
 manual/1.0.0/pipeline/transforms/execprocess.html  |    2 +-
 manual/1.0.0/pipeline/transforms/execsql.html      |    2 +-
 manual/1.0.0/pipeline/transforms/execsqlrow.html   |    2 +-
 manual/1.0.0/pipeline/transforms/exectests.html    |    2 +-
 manual/1.0.0/pipeline/transforms/fake.html         |    2 +-
 manual/1.0.0/pipeline/transforms/fileexists.html   |    2 +-
 manual/1.0.0/pipeline/transforms/filemetadata.html |    2 +-
 .../1.0.0/pipeline/transforms/filesfromresult.html |    2 +-
 .../1.0.0/pipeline/transforms/filestoresult.html   |    2 +-
 manual/1.0.0/pipeline/transforms/filterrows.html   |    2 +-
 manual/1.0.0/pipeline/transforms/fuzzymatch.html   |    2 +-
 .../pipeline/transforms/generaterandomvalue.html   |    2 +-
 .../1.0.0/pipeline/transforms/getdatafromxml.html  |    2 +-
 manual/1.0.0/pipeline/transforms/getfilenames.html |    2 +-
 .../pipeline/transforms/getfilesrowcount.html      |    2 +-
 .../pipeline/transforms/getrecordsfromstream.html  |    2 +-
 .../pipeline/transforms/getrowsfromresult.html     |    2 +-
 .../pipeline/transforms/getserversequence.html     |    2 +-
 .../1.0.0/pipeline/transforms/getsubfolders.html   |    2 +-
 .../1.0.0/pipeline/transforms/getsystemdata.html   |    2 +-
 .../1.0.0/pipeline/transforms/gettablenames.html   |    2 +-
 manual/1.0.0/pipeline/transforms/getvariable.html  |    2 +-
 manual/1.0.0/pipeline/transforms/groupby.html      |    2 +-
 manual/1.0.0/pipeline/transforms/http.html         |    2 +-
 manual/1.0.0/pipeline/transforms/httppost.html     |    2 +-
 .../1.0.0/pipeline/transforms/identifylastrow.html |    2 +-
 manual/1.0.0/pipeline/transforms/ifnull.html       |    2 +-
 manual/1.0.0/pipeline/transforms/injector.html     |    2 +-
 manual/1.0.0/pipeline/transforms/insertupdate.html |    2 +-
 manual/1.0.0/pipeline/transforms/javafilter.html   |    2 +-
 manual/1.0.0/pipeline/transforms/javascript.html   |    2 +-
 manual/1.0.0/pipeline/transforms/joinrows.html     |    2 +-
 manual/1.0.0/pipeline/transforms/jsoninput.html    |    2 +-
 manual/1.0.0/pipeline/transforms/jsonoutput.html   |    2 +-
 .../1.0.0/pipeline/transforms/kafkaconsumer.html   |    2 +-
 .../1.0.0/pipeline/transforms/kafkaproducer.html   |    2 +-
 manual/1.0.0/pipeline/transforms/ldapinput.html    |    2 +-
 manual/1.0.0/pipeline/transforms/ldapoutput.html   |    2 +-
 .../1.0.0/pipeline/transforms/loadfileinput.html   |    2 +-
 manual/1.0.0/pipeline/transforms/mail.html         |    2 +-
 .../1.0.0/pipeline/transforms/mailvalidator.html   |    2 +-
 .../1.0.0/pipeline/transforms/mapping-input.html   |    2 +-
 .../1.0.0/pipeline/transforms/mapping-output.html  |    2 +-
 manual/1.0.0/pipeline/transforms/memgroupby.html   |    2 +-
 manual/1.0.0/pipeline/transforms/mergejoin.html    |    2 +-
 manual/1.0.0/pipeline/transforms/mergerows.html    |    2 +-
 manual/1.0.0/pipeline/transforms/metainject.html   |    2 +-
 .../1.0.0/pipeline/transforms/metastructure.html   |    2 +-
 .../pipeline/transforms/monetdbbulkloader.html     |    2 +-
 manual/1.0.0/pipeline/transforms/mongodbinput.html |    2 +-
 .../1.0.0/pipeline/transforms/mongodboutput.html   |    2 +-
 manual/1.0.0/pipeline/transforms/multimerge.html   |    2 +-
 manual/1.0.0/pipeline/transforms/neo4j-cypher.html |    2 +-
 manual/1.0.0/pipeline/transforms/neo4j-gencsv.html |    2 +-
 .../pipeline/transforms/neo4j-getloginfo.html      |    2 +-
 .../pipeline/transforms/neo4j-graphoutput.html     |    2 +-
 manual/1.0.0/pipeline/transforms/neo4j-import.html |    2 +-
 manual/1.0.0/pipeline/transforms/neo4j-output.html |    2 +-
 .../pipeline/transforms/neo4j-split-graph.html     |    2 +-
 manual/1.0.0/pipeline/transforms/nullif.html       |    2 +-
 manual/1.0.0/pipeline/transforms/numberrange.html  |    2 +-
 .../pipeline/transforms/parquet-file-input.html    |    2 +-
 .../pipeline/transforms/parquet-file-output.html   |    2 +-
 manual/1.0.0/pipeline/transforms/pgbulkloader.html |    2 +-
 .../pipeline/transforms/pgpdecryptstream.html      |    2 +-
 .../pipeline/transforms/pgpencryptstream.html      |    2 +-
 .../pipeline/transforms/pipelineexecutor.html      |    2 +-
 .../pipeline/transforms/postgresbulkloader.html    |    2 +-
 manual/1.0.0/pipeline/transforms/processfiles.html |    2 +-
 .../1.0.0/pipeline/transforms/propertyinput.html   |    2 +-
 .../1.0.0/pipeline/transforms/propertyoutput.html  |    2 +-
 manual/1.0.0/pipeline/transforms/regexeval.html    |    2 +-
 .../1.0.0/pipeline/transforms/replacestring.html   |    2 +-
 .../pipeline/transforms/reservoirsampling.html     |    2 +-
 manual/1.0.0/pipeline/transforms/rest.html         |    2 +-
 .../1.0.0/pipeline/transforms/rowdenormaliser.html |    2 +-
 manual/1.0.0/pipeline/transforms/rowflattener.html |    2 +-
 manual/1.0.0/pipeline/transforms/rowgenerator.html |    2 +-
 .../1.0.0/pipeline/transforms/rownormaliser.html   |    2 +-
 manual/1.0.0/pipeline/transforms/runssh.html       |    2 +-
 .../pipeline/transforms/salesforce-connection.html |    2 +-
 .../pipeline/transforms/salesforce-fields.html     |    2 +-
 .../pipeline/transforms/salesforce-settings.html   |    2 +-
 .../pipeline/transforms/salesforcedelete.html      |    2 +-
 .../1.0.0/pipeline/transforms/salesforceinput.html |    2 +-
 .../pipeline/transforms/salesforceinsert.html      |    2 +-
 .../pipeline/transforms/salesforceupdate.html      |    2 +-
 .../pipeline/transforms/salesforceupsert.html      |    2 +-
 manual/1.0.0/pipeline/transforms/samplerows.html   |    2 +-
 manual/1.0.0/pipeline/transforms/sasinput.html     |    2 +-
 manual/1.0.0/pipeline/transforms/selectvalues.html |    2 +-
 .../pipeline/transforms/setvalueconstant.html      |    2 +-
 .../1.0.0/pipeline/transforms/setvaluefield.html   |    2 +-
 manual/1.0.0/pipeline/transforms/setvariable.html  |    2 +-
 .../1.0.0/pipeline/transforms/simple-mapping.html  |    2 +-
 manual/1.0.0/pipeline/transforms/sort.html         |    2 +-
 manual/1.0.0/pipeline/transforms/sortedmerge.html  |    2 +-
 manual/1.0.0/pipeline/transforms/splitfields.html  |    2 +-
 .../pipeline/transforms/splitfieldtorows.html      |    2 +-
 manual/1.0.0/pipeline/transforms/splunkinput.html  |    2 +-
 .../1.0.0/pipeline/transforms/sqlfileoutput.html   |    2 +-
 .../1.0.0/pipeline/transforms/sstable-output.html  |    2 +-
 manual/1.0.0/pipeline/transforms/streamlookup.html |    2 +-
 .../pipeline/transforms/streamschemamerge.html     |    2 +-
 manual/1.0.0/pipeline/transforms/stringcut.html    |    2 +-
 .../pipeline/transforms/stringoperations.html      |    2 +-
 manual/1.0.0/pipeline/transforms/switchcase.html   |    2 +-
 .../pipeline/transforms/synchronizeaftermerge.html |    2 +-
 manual/1.0.0/pipeline/transforms/tablecompare.html |    2 +-
 manual/1.0.0/pipeline/transforms/tableexists.html  |    2 +-
 manual/1.0.0/pipeline/transforms/tableinput.html   |    2 +-
 manual/1.0.0/pipeline/transforms/tableoutput.html  |    2 +-
 manual/1.0.0/pipeline/transforms/terafast.html     |    2 +-
 .../1.0.0/pipeline/transforms/textfileinput.html   |    2 +-
 .../1.0.0/pipeline/transforms/textfileoutput.html  |    2 +-
 .../pipeline/transforms/tokenreplacement.html      |    2 +-
 manual/1.0.0/pipeline/transforms/uniquerows.html   |    2 +-
 .../pipeline/transforms/uniquerowsbyhashset.html   |    2 +-
 manual/1.0.0/pipeline/transforms/update.html       |    2 +-
 .../pipeline/transforms/userdefinedjavaclass.html  |    2 +-
 .../transforms/userdefinedjavaexpression.html      |    2 +-
 manual/1.0.0/pipeline/transforms/valuemapper.html  |    2 +-
 manual/1.0.0/pipeline/transforms/webservices.html  |    2 +-
 .../pipeline/transforms/workflowexecutor.html      |    2 +-
 manual/1.0.0/pipeline/transforms/writetolog.html   |    2 +-
 .../1.0.0/pipeline/transforms/xmlinputstream.html  |    2 +-
 manual/1.0.0/pipeline/transforms/xmljoin.html      |    2 +-
 manual/1.0.0/pipeline/transforms/xmloutput.html    |    2 +-
 manual/1.0.0/pipeline/transforms/xsdvalidator.html |    2 +-
 manual/1.0.0/pipeline/transforms/xslt.html         |    2 +-
 manual/1.0.0/pipeline/transforms/yamlinput.html    |    2 +-
 manual/1.0.0/pipeline/transforms/zipfile.html      |    2 +-
 manual/1.0.0/plugins/external-plugins.html         |    2 +-
 manual/1.0.0/plugins/import/kettle-import.html     |    2 +-
 manual/1.0.0/plugins/plugins.html                  |    2 +-
 manual/1.0.0/plugins/projects.html                 |    2 +-
 manual/1.0.0/plugins/projects/projects.html        |    2 +-
 manual/1.0.0/projects/advanced.html                |    2 +-
 manual/1.0.0/projects/index.html                   |    2 +-
 manual/1.0.0/projects/metadata.html                |    2 +-
 manual/1.0.0/projects/projects-environments.html   |    2 +-
 manual/1.0.0/protips/index.html                    |    2 +-
 manual/1.0.0/samples/samples.html                  |    2 +-
 .../1.0.0/snippets/best-practices/governance.html  |    2 +-
 manual/1.0.0/snippets/best-practices/logging.html  |    2 +-
 manual/1.0.0/snippets/best-practices/loops.html    |    2 +-
 manual/1.0.0/snippets/best-practices/mappings.html |    2 +-
 .../best-practices/metadata-injection.html         |    2 +-
 .../best-practices/naming-conventions.html         |    2 +-
 .../best-practices/performance-basics.html         |    2 +-
 .../snippets/best-practices/size-matters.html      |    2 +-
 .../1.0.0/snippets/best-practices/variables.html   |    2 +-
 manual/1.0.0/snippets/hop-concepts/action.html     |    2 +-
 .../1.0.0/snippets/hop-concepts/environment.html   |    2 +-
 .../hop-concepts/hop-projects-environments.html    |    2 +-
 manual/1.0.0/snippets/hop-concepts/hop.html        |    2 +-
 manual/1.0.0/snippets/hop-concepts/item-types.html |    2 +-
 .../1.0.0/snippets/hop-concepts/lazy-loading.html  |    2 +-
 manual/1.0.0/snippets/hop-concepts/metadata.html   |    2 +-
 manual/1.0.0/snippets/hop-concepts/pipeline.html   |    2 +-
 manual/1.0.0/snippets/hop-concepts/project.html    |    2 +-
 manual/1.0.0/snippets/hop-concepts/transform.html  |    2 +-
 manual/1.0.0/snippets/hop-concepts/workflow.html   |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-conf.html      |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-encrypt.html   |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-gui.html       |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-run.html       |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-search.html    |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-server.html    |    2 +-
 manual/1.0.0/snippets/hop-tools/hop-tools.html     |    2 +-
 .../1.0.0/snippets/hop-tools/hop-translator.html   |    2 +-
 manual/1.0.0/technology/azure/index.html           |    2 +-
 manual/1.0.0/technology/cassandra/index.html       |    2 +-
 manual/1.0.0/technology/google/index.html          |    2 +-
 manual/1.0.0/technology/neo4j/index.html           |    2 +-
 .../technology/neo4j/working-with-neo4j-data.html  |    2 +-
 manual/1.0.0/technology/technology.html            |    2 +-
 manual/1.0.0/variables.html                        |    2 +-
 manual/1.0.0/vfs.html                              |    2 +-
 manual/1.0.0/vfs/aws-s3-vfs.html                   |    2 +-
 manual/1.0.0/vfs/azure-blob-storage-vfs.html       |    2 +-
 manual/1.0.0/vfs/dropbox-vfs.html                  |    2 +-
 manual/1.0.0/vfs/google-cloud-storage-vfs.html     |    2 +-
 manual/1.0.0/vfs/google-drive-vfs.html             |    2 +-
 manual/1.0.0/workflow/actions.html                 |    2 +-
 manual/1.0.0/workflow/actions/abort.html           |    2 +-
 .../1.0.0/workflow/actions/addresultfilenames.html |    2 +-
 manual/1.0.0/workflow/actions/as400command.html    |    2 +-
 .../1.0.0/workflow/actions/cassandra-exec-cql.html |    2 +-
 .../1.0.0/workflow/actions/checkdbconnection.html  |    2 +-
 manual/1.0.0/workflow/actions/checkfilelocked.html |    2 +-
 manual/1.0.0/workflow/actions/columnsexist.html    |    2 +-
 manual/1.0.0/workflow/actions/copyfiles.html       |    2 +-
 .../workflow/actions/copymoveresultfilenames.html  |    2 +-
 manual/1.0.0/workflow/actions/createfile.html      |    2 +-
 manual/1.0.0/workflow/actions/createfolder.html    |    2 +-
 manual/1.0.0/workflow/actions/delay.html           |    2 +-
 manual/1.0.0/workflow/actions/deletefile.html      |    2 +-
 manual/1.0.0/workflow/actions/deletefiles.html     |    2 +-
 manual/1.0.0/workflow/actions/deletefolders.html   |    2 +-
 .../workflow/actions/deleteresultfilenames.html    |    2 +-
 manual/1.0.0/workflow/actions/dostounix.html       |    2 +-
 manual/1.0.0/workflow/actions/dtdvalidator.html    |    2 +-
 manual/1.0.0/workflow/actions/dummy.html           |    2 +-
 manual/1.0.0/workflow/actions/eval.html            |    2 +-
 .../1.0.0/workflow/actions/evalfilesmetrics.html   |    2 +-
 .../workflow/actions/evaluatetablecontent.html     |    2 +-
 manual/1.0.0/workflow/actions/filecompare.html     |    2 +-
 manual/1.0.0/workflow/actions/fileexists.html      |    2 +-
 manual/1.0.0/workflow/actions/filesexist.html      |    2 +-
 manual/1.0.0/workflow/actions/folderisempty.html   |    2 +-
 manual/1.0.0/workflow/actions/folderscompare.html  |    2 +-
 manual/1.0.0/workflow/actions/ftp.html             |    2 +-
 manual/1.0.0/workflow/actions/ftpdelete.html       |    2 +-
 manual/1.0.0/workflow/actions/ftpput.html          |    2 +-
 manual/1.0.0/workflow/actions/getpop.html          |    2 +-
 manual/1.0.0/workflow/actions/http.html            |    2 +-
 manual/1.0.0/workflow/actions/mail.html            |    2 +-
 manual/1.0.0/workflow/actions/mailvalidator.html   |    2 +-
 manual/1.0.0/workflow/actions/movefiles.html       |    2 +-
 manual/1.0.0/workflow/actions/msgboxinfo.html      |    2 +-
 manual/1.0.0/workflow/actions/mssqlbulkload.html   |    2 +-
 manual/1.0.0/workflow/actions/mysqlbulkfile.html   |    2 +-
 manual/1.0.0/workflow/actions/mysqlbulkload.html   |    2 +-
 .../workflow/actions/neo4j-checkconnections.html   |    2 +-
 .../1.0.0/workflow/actions/neo4j-constraint.html   |    2 +-
 .../1.0.0/workflow/actions/neo4j-cypherscript.html |    2 +-
 manual/1.0.0/workflow/actions/neo4j-index.html     |    2 +-
 manual/1.0.0/workflow/actions/pgpdecryptfiles.html |    2 +-
 manual/1.0.0/workflow/actions/pgpencryptfiles.html |    2 +-
 manual/1.0.0/workflow/actions/pgpfiles.html        |    2 +-
 manual/1.0.0/workflow/actions/pgpverify.html       |    2 +-
 manual/1.0.0/workflow/actions/ping.html            |    2 +-
 manual/1.0.0/workflow/actions/pipeline.html        |    2 +-
 manual/1.0.0/workflow/actions/repeat-end.html      |    2 +-
 manual/1.0.0/workflow/actions/repeat.html          |    2 +-
 .../1.0.0/workflow/actions/runpipelinetests.html   |    2 +-
 .../workflow/actions/sendnagiospassivecheck.html   |    2 +-
 manual/1.0.0/workflow/actions/setvariables.html    |    2 +-
 manual/1.0.0/workflow/actions/sftp.html            |    2 +-
 manual/1.0.0/workflow/actions/sftpput.html         |    2 +-
 manual/1.0.0/workflow/actions/shell.html           |    2 +-
 manual/1.0.0/workflow/actions/simpleeval.html      |    2 +-
 manual/1.0.0/workflow/actions/snmptrap.html        |    2 +-
 manual/1.0.0/workflow/actions/sql.html             |    2 +-
 manual/1.0.0/workflow/actions/start.html           |    2 +-
 manual/1.0.0/workflow/actions/success.html         |    2 +-
 manual/1.0.0/workflow/actions/tableexists.html     |    2 +-
 manual/1.0.0/workflow/actions/telnet.html          |    2 +-
 manual/1.0.0/workflow/actions/truncatetables.html  |    2 +-
 manual/1.0.0/workflow/actions/unzip.html           |    2 +-
 manual/1.0.0/workflow/actions/waitforfile.html     |    2 +-
 manual/1.0.0/workflow/actions/waitforsql.html      |    2 +-
 .../workflow/actions/webserviceavailable.html      |    2 +-
 manual/1.0.0/workflow/actions/workflow.html        |    2 +-
 manual/1.0.0/workflow/actions/writetofile.html     |    2 +-
 manual/1.0.0/workflow/actions/writetolog.html      |    2 +-
 manual/1.0.0/workflow/actions/xmlwellformed.html   |    2 +-
 manual/1.0.0/workflow/actions/xsdvalidator.html    |    2 +-
 manual/1.0.0/workflow/actions/xslt.html            |    2 +-
 manual/1.0.0/workflow/actions/zipfile.html         |    2 +-
 manual/1.0.0/workflow/create-workflow.html         |    2 +-
 manual/1.0.0/workflow/run-debug-workflow.html      |    2 +-
 .../native-local-workflow-engine.html              |    2 +-
 .../native-remote-workflow-engine.html             |    2 +-
 .../workflow-run-configurations.html               |    2 +-
 manual/1.0.0/workflow/workflows.html               |    2 +-
 manual/latest/best-practices/index.html            |    2 +-
 manual/latest/concepts.html                        |    2 +-
 manual/latest/database/databases.html              |    2 +-
 manual/latest/database/databases/as400.html        |    2 +-
 manual/latest/database/databases/cache.html        |    2 +-
 manual/latest/database/databases/clickhouse.html   |    2 +-
 manual/latest/database/databases/db2.html          |    2 +-
 manual/latest/database/databases/derby.html        |    2 +-
 manual/latest/database/databases/doris.html        |    2 +-
 manual/latest/database/databases/exasol.html       |    2 +-
 manual/latest/database/databases/firebird.html     |    2 +-
 .../latest/database/databases/googlebigquery.html  |    2 +-
 manual/latest/database/databases/greenplum.html    |    2 +-
 manual/latest/database/databases/h2.html           |    2 +-
 manual/latest/database/databases/hypersonic.html   |    2 +-
 manual/latest/database/databases/infinidb.html     |    2 +-
 manual/latest/database/databases/infobright.html   |    2 +-
 manual/latest/database/databases/informix.html     |    2 +-
 manual/latest/database/databases/ingres.html       |    2 +-
 manual/latest/database/databases/interbase.html    |    2 +-
 manual/latest/database/databases/kingbasees.html   |    2 +-
 manual/latest/database/databases/mariadb.html      |    2 +-
 manual/latest/database/databases/monetdb.html      |    2 +-
 manual/latest/database/databases/mssql.html        |    2 +-
 manual/latest/database/databases/mssqlnative.html  |    2 +-
 manual/latest/database/databases/mysql.html        |    2 +-
 manual/latest/database/databases/netezza.html      |    2 +-
 manual/latest/database/databases/oracle.html       |    2 +-
 manual/latest/database/databases/oraclerdb.html    |    2 +-
 manual/latest/database/databases/postgresql.html   |    2 +-
 manual/latest/database/databases/redshift.html     |    2 +-
 manual/latest/database/databases/sapdb.html        |    2 +-
 manual/latest/database/databases/snowflake.html    |    2 +-
 manual/latest/database/databases/sqlbase.html      |    2 +-
 manual/latest/database/databases/sqlite.html       |    2 +-
 manual/latest/database/databases/sybase.html       |    2 +-
 manual/latest/database/databases/sybaseiq.html     |    2 +-
 manual/latest/database/databases/teradata.html     |    2 +-
 manual/latest/database/databases/universe.html     |    2 +-
 manual/latest/database/databases/vectorwise.html   |    2 +-
 manual/latest/database/databases/vertica.html      |    2 +-
 manual/latest/faq/faq.html                         |    2 +-
 manual/latest/getting-started/hop-concepts.html    |    2 +-
 .../getting-started/hop-download-install.html      |    2 +-
 .../latest/getting-started/hop-gui-pipelines.html  |    2 +-
 .../latest/getting-started/hop-gui-workflows.html  |    2 +-
 manual/latest/getting-started/hop-gui.html         |    2 +-
 manual/latest/getting-started/hop-next-steps.html  |    2 +-
 manual/latest/getting-started/hop-tools.html       |    2 +-
 manual/latest/getting-started/hop-what-is-hop.html |    2 +-
 manual/latest/getting-started/index.html           |    2 +-
 manual/latest/hop-gui/file-dialog.html             |    2 +-
 manual/latest/hop-gui/hop-gui-git.html             |    2 +-
 manual/latest/hop-gui/hop-gui-popup-dialog.html    |    2 +-
 manual/latest/hop-gui/hop-web.html                 |    2 +-
 manual/latest/hop-gui/index.html                   |    2 +-
 .../hop-gui/perspective-data-orchestration.html    |    2 +-
 .../latest/hop-gui/perspective-file-explorer.html  |    2 +-
 manual/latest/hop-gui/perspective-metadata.html    |    2 +-
 manual/latest/hop-gui/perspective-neo4j.html       |    2 +-
 manual/latest/hop-gui/perspective-plugin.html      |    2 +-
 manual/latest/hop-gui/perspective-search.html      |    2 +-
 manual/latest/hop-gui/perspectives.html            |    2 +-
 manual/latest/hop-gui/shortcuts.html               |    2 +-
 manual/latest/hop-run/index.html                   |    2 +-
 manual/latest/hop-search/index.html                |    2 +-
 manual/latest/hop-server/async-web-service.html    |    2 +-
 manual/latest/hop-server/index.html                |    2 +-
 manual/latest/hop-server/rest-api.html             |    2 +-
 manual/latest/hop-server/web-service.html          |    2 +-
 .../hop-tools/hop-conf/hop-conf-cloud-aws-s3.html  |    2 +-
 .../hop-conf-cloud-azure-blob-storage.html         |    2 +-
 .../hop-conf-cloud-google-cloud-storage.html       |    2 +-
 .../hop-conf/hop-conf-cloud-google-drive.html      |    2 +-
 .../hop-tools/hop-conf/hop-conf-projects.html      |    2 +-
 .../hop-tools/hop-conf/hop-conf-run-hpl-hwf.html   |    2 +-
 manual/latest/hop-tools/hop-conf/hop-conf.html     |    2 +-
 manual/latest/hop-tools/hop-encrypt.html           |    2 +-
 manual/latest/hop-tools/hop-import.html            |    2 +-
 manual/latest/hop-tools/hop-search.html            |    2 +-
 manual/latest/hop-tools/index.html                 |    2 +-
 manual/latest/hop-usps.html                        |    2 +-
 manual/latest/image-testpage.html                  |    2 +-
 manual/latest/index.html                           |    2 +-
 manual/latest/logging/logging-basics.html          |    2 +-
 manual/latest/logging/logging-reflection.html      |    2 +-
 .../metadata-types/beam-file-definition.html       |    2 +-
 .../cassandra/cassandra-connection.html            |    2 +-
 manual/latest/metadata-types/data-set.html         |    2 +-
 manual/latest/metadata-types/hop-server.html       |    2 +-
 manual/latest/metadata-types/index.html            |    2 +-
 .../latest/metadata-types/mongodb-connection.html  |    2 +-
 .../metadata-types/neo4j/neo4j-connection.html     |    2 +-
 .../metadata-types/neo4j/neo4j-graphmodel.html     |    2 +-
 manual/latest/metadata-types/partition-schema.html |    2 +-
 manual/latest/metadata-types/pipeline-log.html     |    2 +-
 manual/latest/metadata-types/pipeline-probe.html   |    2 +-
 .../latest/metadata-types/pipeline-run-config.html |    2 +-
 .../latest/metadata-types/pipeline-unit-test.html  |    2 +-
 manual/latest/metadata-types/rdbms-connection.html |    2 +-
 .../latest/metadata-types/splunk-connection.html   |    2 +-
 manual/latest/metadata-types/workflow-log.html     |    2 +-
 .../latest/metadata-types/workflow-run-config.html |    2 +-
 manual/latest/password/passwords.html              |    2 +-
 manual/latest/password/passwords/aespasswords.html |    2 +-
 .../pipeline/beam/getting-started-with-beam.html   |    2 +-
 manual/latest/pipeline/create-pipeline.html        |    2 +-
 manual/latest/pipeline/errorhandling.html          |    2 +-
 manual/latest/pipeline/hop-pipeline-editor.html    |    2 +-
 manual/latest/pipeline/metadata-injection.html     |    2 +-
 manual/latest/pipeline/partitioning.html           |    2 +-
 .../beam-dataflow-pipeline-engine.html             |    2 +-
 .../beam-direct-pipeline-engine.html               |    2 +-
 .../beam-flink-pipeline-engine.html                |    2 +-
 .../beam-spark-pipeline-engine.html                |    2 +-
 .../native-local-pipeline-engine.html              |    2 +-
 .../native-remote-pipeline-engine.html             |    2 +-
 .../pipeline-run-configurations.html               |    2 +-
 manual/latest/pipeline/pipeline-unit-testing.html  |    2 +-
 manual/latest/pipeline/pipelines.html              |    2 +-
 .../pipeline/run-preview-debug-pipeline.html       |    2 +-
 manual/latest/pipeline/transforms.html             |    2 +-
 manual/latest/pipeline/transforms/abort.html       |    2 +-
 manual/latest/pipeline/transforms/addchecksum.html |    2 +-
 manual/latest/pipeline/transforms/addconstant.html |    2 +-
 .../transforms/addfieldschangesequence.html        |    2 +-
 manual/latest/pipeline/transforms/addsequence.html |    2 +-
 manual/latest/pipeline/transforms/addxml.html      |    2 +-
 .../latest/pipeline/transforms/analyticquery.html  |    2 +-
 manual/latest/pipeline/transforms/apache-tika.html |    2 +-
 manual/latest/pipeline/transforms/append.html      |    2 +-
 manual/latest/pipeline/transforms/avro-decode.html |    2 +-
 .../pipeline/transforms/avro-file-input.html       |    2 +-
 .../transforms/azure-event-hubs-listener.html      |    2 +-
 .../transforms/azure-event-hubs-writer.html        |    2 +-
 .../pipeline/transforms/beambigqueryinput.html     |    2 +-
 .../pipeline/transforms/beambigqueryoutput.html    |    2 +-
 .../pipeline/transforms/beambigtableinput.html     |    2 +-
 .../pipeline/transforms/beambigtableoutput.html    |    2 +-
 .../pipeline/transforms/beamgcppublisher.html      |    2 +-
 .../pipeline/transforms/beamgcpsubscriber.html     |    2 +-
 manual/latest/pipeline/transforms/beaminput.html   |    2 +-
 .../pipeline/transforms/beamkafkaconsume.html      |    2 +-
 .../pipeline/transforms/beamkafkaproduce.html      |    2 +-
 manual/latest/pipeline/transforms/beamoutput.html  |    2 +-
 .../latest/pipeline/transforms/beamtimestamp.html  |    2 +-
 manual/latest/pipeline/transforms/beamwindow.html  |    2 +-
 .../pipeline/transforms/blockingtransform.html     |    2 +-
 .../transforms/blockuntiltransformsfinish.html     |    2 +-
 manual/latest/pipeline/transforms/calculator.html  |    2 +-
 manual/latest/pipeline/transforms/calldbproc.html  |    2 +-
 .../pipeline/transforms/cassandra-input.html       |    2 +-
 .../pipeline/transforms/cassandra-output.html      |    2 +-
 .../pipeline/transforms/changefileencoding.html    |    2 +-
 .../pipeline/transforms/checkfilelocked.html       |    2 +-
 .../transforms/checkwebserviceavailable.html       |    2 +-
 manual/latest/pipeline/transforms/clonerow.html    |    2 +-
 manual/latest/pipeline/transforms/closure.html     |    2 +-
 manual/latest/pipeline/transforms/coalesce.html    |    2 +-
 .../latest/pipeline/transforms/columnexists.html   |    2 +-
 .../pipeline/transforms/combinationlookup.html     |    2 +-
 .../latest/pipeline/transforms/concatfields.html   |    2 +-
 .../pipeline/transforms/copyrowstoresult.html      |    2 +-
 .../pipeline/transforms/creditcardvalidator.html   |    2 +-
 manual/latest/pipeline/transforms/csvinput.html    |    2 +-
 .../latest/pipeline/transforms/databasejoin.html   |    2 +-
 .../latest/pipeline/transforms/databaselookup.html |    2 +-
 manual/latest/pipeline/transforms/datagrid.html    |    2 +-
 manual/latest/pipeline/transforms/delay.html       |    2 +-
 manual/latest/pipeline/transforms/delete.html      |    2 +-
 .../pipeline/transforms/detectemptystream.html     |    2 +-
 .../pipeline/transforms/dimensionlookup.html       |    2 +-
 manual/latest/pipeline/transforms/dummy.html       |    2 +-
 .../latest/pipeline/transforms/dynamicsqlrow.html  |    2 +-
 manual/latest/pipeline/transforms/edi2xml.html     |    2 +-
 manual/latest/pipeline/transforms/emailinput.html  |    2 +-
 .../pipeline/transforms/enhancedjsonoutput.html    |    2 +-
 manual/latest/pipeline/transforms/excelinput.html  |    2 +-
 manual/latest/pipeline/transforms/excelwriter.html |    2 +-
 manual/latest/pipeline/transforms/execprocess.html |    2 +-
 manual/latest/pipeline/transforms/execsql.html     |    2 +-
 manual/latest/pipeline/transforms/execsqlrow.html  |    2 +-
 manual/latest/pipeline/transforms/exectests.html   |    2 +-
 manual/latest/pipeline/transforms/fake.html        |    2 +-
 manual/latest/pipeline/transforms/fileexists.html  |    2 +-
 .../latest/pipeline/transforms/filemetadata.html   |    2 +-
 .../pipeline/transforms/filesfromresult.html       |    2 +-
 .../latest/pipeline/transforms/filestoresult.html  |    2 +-
 manual/latest/pipeline/transforms/filterrows.html  |    2 +-
 manual/latest/pipeline/transforms/fuzzymatch.html  |    2 +-
 .../pipeline/transforms/generaterandomvalue.html   |    2 +-
 .../latest/pipeline/transforms/getdatafromxml.html |    2 +-
 .../latest/pipeline/transforms/getfilenames.html   |    2 +-
 .../pipeline/transforms/getfilesrowcount.html      |    2 +-
 .../pipeline/transforms/getrecordsfromstream.html  |    2 +-
 .../pipeline/transforms/getrowsfromresult.html     |    2 +-
 .../pipeline/transforms/getserversequence.html     |    2 +-
 .../latest/pipeline/transforms/getsubfolders.html  |    2 +-
 .../latest/pipeline/transforms/getsystemdata.html  |    2 +-
 .../latest/pipeline/transforms/gettablenames.html  |    2 +-
 manual/latest/pipeline/transforms/getvariable.html |    2 +-
 manual/latest/pipeline/transforms/groupby.html     |    2 +-
 manual/latest/pipeline/transforms/http.html        |    2 +-
 manual/latest/pipeline/transforms/httppost.html    |    2 +-
 .../pipeline/transforms/identifylastrow.html       |    2 +-
 manual/latest/pipeline/transforms/ifnull.html      |    2 +-
 manual/latest/pipeline/transforms/injector.html    |    2 +-
 .../latest/pipeline/transforms/insertupdate.html   |    2 +-
 manual/latest/pipeline/transforms/javafilter.html  |    2 +-
 manual/latest/pipeline/transforms/javascript.html  |    2 +-
 manual/latest/pipeline/transforms/joinrows.html    |    2 +-
 manual/latest/pipeline/transforms/jsoninput.html   |    2 +-
 manual/latest/pipeline/transforms/jsonoutput.html  |    2 +-
 .../latest/pipeline/transforms/kafkaconsumer.html  |    2 +-
 .../latest/pipeline/transforms/kafkaproducer.html  |    2 +-
 manual/latest/pipeline/transforms/ldapinput.html   |    2 +-
 manual/latest/pipeline/transforms/ldapoutput.html  |    2 +-
 .../latest/pipeline/transforms/loadfileinput.html  |    2 +-
 manual/latest/pipeline/transforms/mail.html        |    2 +-
 .../latest/pipeline/transforms/mailvalidator.html  |    2 +-
 .../latest/pipeline/transforms/mapping-input.html  |    2 +-
 .../latest/pipeline/transforms/mapping-output.html |    2 +-
 manual/latest/pipeline/transforms/memgroupby.html  |    2 +-
 manual/latest/pipeline/transforms/mergejoin.html   |    2 +-
 manual/latest/pipeline/transforms/mergerows.html   |    2 +-
 .../latest/pipeline/transforms/metadata-input.html |    2 +-
 manual/latest/pipeline/transforms/metainject.html  |    2 +-
 .../latest/pipeline/transforms/metastructure.html  |    2 +-
 .../pipeline/transforms/monetdbbulkloader.html     |    2 +-
 .../latest/pipeline/transforms/mongodbinput.html   |    2 +-
 .../latest/pipeline/transforms/mongodboutput.html  |    2 +-
 manual/latest/pipeline/transforms/multimerge.html  |    2 +-
 .../latest/pipeline/transforms/neo4j-cypher.html   |    2 +-
 .../latest/pipeline/transforms/neo4j-gencsv.html   |    2 +-
 .../pipeline/transforms/neo4j-getloginfo.html      |    2 +-
 .../pipeline/transforms/neo4j-graphoutput.html     |    2 +-
 .../latest/pipeline/transforms/neo4j-import.html   |    2 +-
 .../latest/pipeline/transforms/neo4j-output.html   |    2 +-
 .../pipeline/transforms/neo4j-split-graph.html     |    2 +-
 manual/latest/pipeline/transforms/nullif.html      |    2 +-
 manual/latest/pipeline/transforms/numberrange.html |    2 +-
 .../pipeline/transforms/parquet-file-input.html    |    2 +-
 .../pipeline/transforms/parquet-file-output.html   |    2 +-
 .../pipeline/transforms/pgpdecryptstream.html      |    2 +-
 .../pipeline/transforms/pgpencryptstream.html      |    2 +-
 .../pipeline/transforms/pipelineexecutor.html      |    2 +-
 .../pipeline/transforms/postgresbulkloader.html    |    2 +-
 .../latest/pipeline/transforms/processfiles.html   |    2 +-
 .../latest/pipeline/transforms/propertyinput.html  |    2 +-
 .../latest/pipeline/transforms/propertyoutput.html |    2 +-
 manual/latest/pipeline/transforms/regexeval.html   |    2 +-
 .../latest/pipeline/transforms/replacestring.html  |    2 +-
 .../pipeline/transforms/reservoirsampling.html     |    2 +-
 manual/latest/pipeline/transforms/rest.html        |    2 +-
 .../pipeline/transforms/rowdenormaliser.html       |    2 +-
 .../latest/pipeline/transforms/rowflattener.html   |    2 +-
 .../latest/pipeline/transforms/rowgenerator.html   |    2 +-
 .../latest/pipeline/transforms/rownormaliser.html  |    2 +-
 manual/latest/pipeline/transforms/runssh.html      |    2 +-
 .../pipeline/transforms/salesforce-connection.html |    2 +-
 .../pipeline/transforms/salesforce-fields.html     |    2 +-
 .../pipeline/transforms/salesforce-settings.html   |    2 +-
 .../pipeline/transforms/salesforcedelete.html      |    2 +-
 .../pipeline/transforms/salesforceinput.html       |    2 +-
 .../pipeline/transforms/salesforceinsert.html      |    2 +-
 .../pipeline/transforms/salesforceupdate.html      |    2 +-
 .../pipeline/transforms/salesforceupsert.html      |    2 +-
 manual/latest/pipeline/transforms/samplerows.html  |    2 +-
 manual/latest/pipeline/transforms/sasinput.html    |    2 +-
 .../latest/pipeline/transforms/selectvalues.html   |    2 +-
 .../transforms/serialize-de-from-file.html         |    2 +-
 .../pipeline/transforms/serialize-to-file.html     |    2 +-
 .../latest/pipeline/transforms/serverstatus.html   |    2 +-
 .../pipeline/transforms/setvalueconstant.html      |    2 +-
 .../latest/pipeline/transforms/setvaluefield.html  |    2 +-
 manual/latest/pipeline/transforms/setvariable.html |    2 +-
 .../latest/pipeline/transforms/simple-mapping.html |    2 +-
 manual/latest/pipeline/transforms/sort.html        |    2 +-
 manual/latest/pipeline/transforms/sortedmerge.html |    2 +-
 manual/latest/pipeline/transforms/splitfields.html |    2 +-
 .../pipeline/transforms/splitfieldtorows.html      |    2 +-
 manual/latest/pipeline/transforms/splunkinput.html |    2 +-
 .../latest/pipeline/transforms/sqlfileoutput.html  |    2 +-
 .../latest/pipeline/transforms/sstable-output.html |    2 +-
 .../transforms/standardizephonenumber.html         |    2 +-
 .../latest/pipeline/transforms/streamlookup.html   |    2 +-
 .../pipeline/transforms/streamschemamerge.html     |    2 +-
 manual/latest/pipeline/transforms/stringcut.html   |    2 +-
 .../pipeline/transforms/stringoperations.html      |    2 +-
 manual/latest/pipeline/transforms/switchcase.html  |    2 +-
 .../pipeline/transforms/synchronizeaftermerge.html |    2 +-
 .../latest/pipeline/transforms/tablecompare.html   |    2 +-
 manual/latest/pipeline/transforms/tableexists.html |    2 +-
 manual/latest/pipeline/transforms/tableinput.html  |    2 +-
 manual/latest/pipeline/transforms/tableoutput.html |    2 +-
 manual/latest/pipeline/transforms/terafast.html    |    2 +-
 .../latest/pipeline/transforms/textfileinput.html  |    2 +-
 .../latest/pipeline/transforms/textfileoutput.html |    2 +-
 .../pipeline/transforms/tokenreplacement.html      |    2 +-
 manual/latest/pipeline/transforms/uniquerows.html  |    2 +-
 .../pipeline/transforms/uniquerowsbyhashset.html   |    2 +-
 manual/latest/pipeline/transforms/update.html      |    2 +-
 .../pipeline/transforms/userdefinedjavaclass.html  |    2 +-
 .../transforms/userdefinedjavaexpression.html      |    2 +-
 manual/latest/pipeline/transforms/valuemapper.html |    2 +-
 manual/latest/pipeline/transforms/webservices.html |    2 +-
 .../pipeline/transforms/workflowexecutor.html      |    2 +-
 manual/latest/pipeline/transforms/writetolog.html  |    2 +-
 .../latest/pipeline/transforms/xmlinputstream.html |    2 +-
 manual/latest/pipeline/transforms/xmljoin.html     |    2 +-
 manual/latest/pipeline/transforms/xmloutput.html   |    2 +-
 .../latest/pipeline/transforms/xsdvalidator.html   |    2 +-
 manual/latest/pipeline/transforms/xslt.html        |    2 +-
 manual/latest/pipeline/transforms/yamlinput.html   |    2 +-
 manual/latest/pipeline/transforms/zipfile.html     |    2 +-
 manual/latest/plugins/external-plugins.html        |    2 +-
 manual/latest/plugins/import/kettle-import.html    |    2 +-
 manual/latest/plugins/plugins.html                 |    2 +-
 manual/latest/plugins/projects.html                |    2 +-
 manual/latest/plugins/projects/projects.html       |    2 +-
 manual/latest/projects/advanced.html               |    2 +-
 manual/latest/projects/index.html                  |    2 +-
 manual/latest/projects/metadata.html               |    2 +-
 manual/latest/projects/projects-environments.html  |    2 +-
 manual/latest/protips/index.html                   |    2 +-
 manual/latest/samples/samples.html                 |    2 +-
 .../latest/snippets/best-practices/governance.html |    2 +-
 manual/latest/snippets/best-practices/logging.html |    2 +-
 manual/latest/snippets/best-practices/loops.html   |    2 +-
 .../latest/snippets/best-practices/mappings.html   |    2 +-
 .../best-practices/metadata-injection.html         |    2 +-
 .../best-practices/naming-conventions.html         |    2 +-
 .../best-practices/performance-basics.html         |    2 +-
 .../snippets/best-practices/size-matters.html      |    2 +-
 .../latest/snippets/best-practices/variables.html  |    2 +-
 manual/latest/snippets/hop-concepts/action.html    |    2 +-
 .../latest/snippets/hop-concepts/environment.html  |    2 +-
 .../hop-concepts/hop-projects-environments.html    |    2 +-
 manual/latest/snippets/hop-concepts/hop.html       |    2 +-
 .../latest/snippets/hop-concepts/item-types.html   |    2 +-
 .../latest/snippets/hop-concepts/lazy-loading.html |    2 +-
 manual/latest/snippets/hop-concepts/metadata.html  |    2 +-
 manual/latest/snippets/hop-concepts/pipeline.html  |    2 +-
 manual/latest/snippets/hop-concepts/project.html   |    2 +-
 manual/latest/snippets/hop-concepts/transform.html |    2 +-
 manual/latest/snippets/hop-concepts/workflow.html  |    2 +-
 manual/latest/snippets/hop-tools/hop-conf.html     |    2 +-
 manual/latest/snippets/hop-tools/hop-encrypt.html  |    2 +-
 manual/latest/snippets/hop-tools/hop-gui.html      |    2 +-
 manual/latest/snippets/hop-tools/hop-run.html      |    2 +-
 manual/latest/snippets/hop-tools/hop-search.html   |    2 +-
 manual/latest/snippets/hop-tools/hop-server.html   |    2 +-
 manual/latest/snippets/hop-tools/hop-tools.html    |    2 +-
 .../latest/snippets/hop-tools/hop-translator.html  |    2 +-
 manual/latest/technology/azure/index.html          |    2 +-
 manual/latest/technology/cassandra/index.html      |    2 +-
 manual/latest/technology/google/index.html         |    2 +-
 manual/latest/technology/neo4j/index.html          |    2 +-
 .../technology/neo4j/working-with-neo4j-data.html  |    2 +-
 manual/latest/technology/technology.html           |    2 +-
 manual/latest/variables.html                       |    2 +-
 manual/latest/vfs.html                             |    2 +-
 manual/latest/vfs/aws-s3-vfs.html                  |    2 +-
 manual/latest/vfs/azure-blob-storage-vfs.html      |    2 +-
 manual/latest/vfs/dropbox-vfs.html                 |    2 +-
 manual/latest/vfs/google-cloud-storage-vfs.html    |    2 +-
 manual/latest/vfs/google-drive-vfs.html            |    2 +-
 manual/latest/workflow/actions.html                |    2 +-
 manual/latest/workflow/actions/abort.html          |    2 +-
 .../workflow/actions/addresultfilenames.html       |    2 +-
 manual/latest/workflow/actions/as400command.html   |    2 +-
 .../workflow/actions/cassandra-exec-cql.html       |    2 +-
 .../latest/workflow/actions/checkdbconnection.html |    2 +-
 .../latest/workflow/actions/checkfilelocked.html   |    2 +-
 manual/latest/workflow/actions/columnsexist.html   |    2 +-
 manual/latest/workflow/actions/copyfiles.html      |    2 +-
 .../workflow/actions/copymoveresultfilenames.html  |    2 +-
 manual/latest/workflow/actions/createfile.html     |    2 +-
 manual/latest/workflow/actions/createfolder.html   |    2 +-
 manual/latest/workflow/actions/delay.html          |    2 +-
 manual/latest/workflow/actions/deletefile.html     |    2 +-
 manual/latest/workflow/actions/deletefiles.html    |    2 +-
 manual/latest/workflow/actions/deletefolders.html  |    2 +-
 .../workflow/actions/deleteresultfilenames.html    |    2 +-
 manual/latest/workflow/actions/dostounix.html      |    2 +-
 manual/latest/workflow/actions/dtdvalidator.html   |    2 +-
 manual/latest/workflow/actions/dummy.html          |    2 +-
 manual/latest/workflow/actions/eval.html           |    2 +-
 .../latest/workflow/actions/evalfilesmetrics.html  |    2 +-
 .../workflow/actions/evaluatetablecontent.html     |    2 +-
 manual/latest/workflow/actions/filecompare.html    |    2 +-
 manual/latest/workflow/actions/fileexists.html     |    2 +-
 manual/latest/workflow/actions/filesexist.html     |    2 +-
 manual/latest/workflow/actions/folderisempty.html  |    2 +-
 manual/latest/workflow/actions/folderscompare.html |    2 +-
 manual/latest/workflow/actions/ftp.html            |    2 +-
 manual/latest/workflow/actions/ftpdelete.html      |    2 +-
 manual/latest/workflow/actions/ftpput.html         |    2 +-
 manual/latest/workflow/actions/getpop.html         |    2 +-
 manual/latest/workflow/actions/http.html           |    2 +-
 manual/latest/workflow/actions/mail.html           |    2 +-
 manual/latest/workflow/actions/mailvalidator.html  |    2 +-
 manual/latest/workflow/actions/movefiles.html      |    2 +-
 manual/latest/workflow/actions/msgboxinfo.html     |    2 +-
 manual/latest/workflow/actions/mssqlbulkload.html  |    2 +-
 manual/latest/workflow/actions/mysqlbulkfile.html  |    2 +-
 manual/latest/workflow/actions/mysqlbulkload.html  |    2 +-
 .../workflow/actions/neo4j-checkconnections.html   |    2 +-
 .../latest/workflow/actions/neo4j-constraint.html  |    2 +-
 .../workflow/actions/neo4j-cypherscript.html       |    2 +-
 manual/latest/workflow/actions/neo4j-index.html    |    2 +-
 .../latest/workflow/actions/pgpdecryptfiles.html   |    2 +-
 .../latest/workflow/actions/pgpencryptfiles.html   |    2 +-
 manual/latest/workflow/actions/pgpverify.html      |    2 +-
 manual/latest/workflow/actions/ping.html           |    2 +-
 manual/latest/workflow/actions/pipeline.html       |    2 +-
 manual/latest/workflow/actions/repeat-end.html     |    2 +-
 manual/latest/workflow/actions/repeat.html         |    2 +-
 .../latest/workflow/actions/runpipelinetests.html  |    2 +-
 .../workflow/actions/sendnagiospassivecheck.html   |    2 +-
 manual/latest/workflow/actions/setvariables.html   |    2 +-
 manual/latest/workflow/actions/sftp.html           |    2 +-
 manual/latest/workflow/actions/sftpput.html        |    2 +-
 manual/latest/workflow/actions/shell.html          |    2 +-
 manual/latest/workflow/actions/simpleeval.html     |    2 +-
 manual/latest/workflow/actions/snmptrap.html       |    2 +-
 manual/latest/workflow/actions/sql.html            |    2 +-
 manual/latest/workflow/actions/start.html          |    2 +-
 manual/latest/workflow/actions/success.html        |    2 +-
 manual/latest/workflow/actions/tableexists.html    |    2 +-
 manual/latest/workflow/actions/telnet.html         |    2 +-
 manual/latest/workflow/actions/truncatetables.html |    2 +-
 manual/latest/workflow/actions/unzip.html          |    2 +-
 manual/latest/workflow/actions/waitforfile.html    |    2 +-
 manual/latest/workflow/actions/waitforsql.html     |    2 +-
 .../workflow/actions/webserviceavailable.html      |    2 +-
 manual/latest/workflow/actions/workflow.html       |    2 +-
 manual/latest/workflow/actions/writetofile.html    |    2 +-
 manual/latest/workflow/actions/writetolog.html     |    2 +-
 manual/latest/workflow/actions/xmlwellformed.html  |    2 +-
 manual/latest/workflow/actions/xsdvalidator.html   |    2 +-
 manual/latest/workflow/actions/xslt.html           |    2 +-
 manual/latest/workflow/actions/zipfile.html        |    2 +-
 manual/latest/workflow/create-workflow.html        |    2 +-
 manual/latest/workflow/run-debug-workflow.html     |    2 +-
 .../native-local-workflow-engine.html              |    2 +-
 .../native-remote-workflow-engine.html             |    2 +-
 .../workflow-run-configurations.html               |    2 +-
 manual/latest/workflow/workflows.html              |    2 +-
 .../beam-getting-started-beam-file-definition.png  |  Bin
 .../beam-getting-started-flushes-metric.png        |  Bin
 ...etting-started-input-transforms-on-dataflow.png |  Bin
 .../{0 => next}/_images/best-practices-naming.png  |  Bin
 .../{0 => next}/_images/concepts/environments.png  |  Bin
 manual/{0 => next}/_images/concepts/pipeline.png   |  Bin
 manual/{0 => next}/_images/concepts/workflow.png   |  Bin
 .../_images/copy-as-pipeline-action.png            |  Bin
 .../_images/error-handling-context-dialog.png      |  Bin
 .../{0 => next}/_images/error-handling-dialog.png  |  Bin
 .../_images/error-handling-hop-option.png          |  Bin
 manual/{0 => next}/_images/error-handling-hop.png  |  Bin
 .../{0 => next}/_images/error-handling-output.png  |  Bin
 manual/{0 => next}/_images/generic_connection.png  |  Bin
 ...getting-started-input-process-output-sample.png |  Bin
 .../getting-started-add-transform.png              |  Bin
 .../getting-started-add-two-transforms.png         |  Bin
 .../getting-started-click-anywhere.png             |  Bin
 .../getting-started/getting-started-create-hop.png |  Bin
 .../getting-started-new-workflow-abort.png         |  Bin
 .../getting-started-new-workflow-actions.png       |  Bin
 ...etting-started-new-workflow-pipeline-action.png |  Bin
 .../getting-started-new-workflow.png               |  Bin
 .../getting-started-pipeline-toolbar.png           |  Bin
 .../getting-started-run-workflow-config-dialog.png |  Bin
 .../getting-started-run-workflow-dialog.png        |  Bin
 .../getting-started-run-workflow-with-config.png   |  Bin
 .../gs-hop-gui-create-pipeline-1.png               |  Bin
 .../gs-hop-gui-create-pipeline-2.png               |  Bin
 .../gs-hop-gui-create-pipeline-3.png               |  Bin
 .../gs-hop-gui-create-pipeline-4.png               |  Bin
 .../gs-hop-gui-create-pipeline-5.png               |  Bin
 .../gs-hop-gui-create-pipeline-6.png               |  Bin
 .../gs-hop-gui-create-pipeline-7.png               |  Bin
 .../gs-hop-gui-create-pipeline-8.png               |  Bin
 .../gs-hop-gui-create-pipeline-9.png               |  Bin
 ...-hop-gui-create-pipeline-add-two-transforms.png |  Bin
 .../gs-hop-gui-create-pipeline-create-hop.png      |  Bin
 .../gs-hop-gui-create-workflow-1.png               |  Bin
 .../gs-hop-gui-create-workflow-2.png               |  Bin
 .../gs-hop-gui-create-workflow-3.png               |  Bin
 .../gs-hop-gui-create-workflow-4.png               |  Bin
 .../gs-hop-gui-create-workflow-5.png               |  Bin
 .../gs-hop-gui-create-workflow-6.png               |  Bin
 .../gs-hop-gui-create-workflow-7.png               |  Bin
 ...hop-gui-create-workflow-add-pipeline-action.png |  Bin
 .../gs-hop-gui-create-workflow-run.png             |  Bin
 .../gs-hop-gui-create-workflow-save.png            |  Bin
 .../getting-started/gs-hop-gui-overview-1.png      |  Bin
 .../getting-started/gs-hop-gui-overview-2.png      |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-1.png  |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-2.png  |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-3.png  |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-4.png  |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-5.png  |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-6.png  |  Bin
 .../getting-started/gs-hop-gui-run-pipeline-7.png  |  Bin
 .../getting-started/icons/Antu_edit-redo.svg       |    0
 .../getting-started/icons/Antu_edit-undo.svg       |    0
 .../_images/getting-started/icons/HOP.svg          |    0
 .../_images/getting-started/icons/align-bottom.svg |    0
 .../_images/getting-started/icons/align-left.svg   |    0
 .../_images/getting-started/icons/align-right.svg  |    0
 .../_images/getting-started/icons/align-top.svg    |    0
 .../_images/getting-started/icons/back.svg         |    0
 .../_images/getting-started/icons/cleanup.svg      |    0
 .../_images/getting-started/icons/close.svg        |    0
 .../_images/getting-started/icons/debug.svg        |    0
 .../icons/distribute-horizontally.svg              |    0
 .../icons/distribute-vertically.svg                |    0
 .../_images/getting-started/icons/job.svg          |    0
 .../_images/getting-started/icons/pause.svg        |    0
 .../_images/getting-started/icons/print.png        |  Bin
 .../_images/getting-started/icons/run.svg          |    0
 .../_images/getting-started/icons/run_option.svg   |    0
 .../_images/getting-started/icons/show-all.svg     |    0
 .../getting-started/icons/show-selected.svg        |    0
 .../_images/getting-started/icons/snap-to-grid.svg |    0
 .../_images/getting-started/icons/stop.svg         |    0
 .../_images/getting-started/icons/trans.svg        |    0
 .../_images/getting-started/icons/view-as-xml.svg  |    0
 .../_images/getting-started/icons/view.svg         |    0
 .../environment/create-environment-dialogue.png    |  Bin
 .../hop-gui/environment/create-project-dialog.png  |  Bin
 .../hop-gui/environment/edit-environment-menu.png  |  Bin
 .../hop-gui/environment/environment-add.svg        |    0
 .../hop-gui/environment/environment-delete.svg     |    0
 .../hop-gui/environment/environment-edit.svg       |    0
 .../hop-gui/environment/environment-files.png      |  Bin
 .../hop-gui/environment/environment-variables.png  |  Bin
 .../hop-gui/environment/new-environment-dialog.png |  Bin
 .../hop-gui/environment/new-environment.png        |  Bin
 .../_images/hop-gui/environment/project-add.svg    |    0
 .../_images/hop-gui/environment/project-delete.svg |    0
 .../_images/hop-gui/environment/project-edit.svg   |    0
 .../environment/switch-environment-list.png        |  Bin
 .../hop-gui/environment/switch-environment.png     |  Bin
 .../hop-gui/environment/switch-project-list.png    |  Bin
 manual/{0 => next}/_images/hop-gui/file-dialog.png |  Bin
 .../_images/hop-gui/git-visual-diff.png            |  Bin
 .../_images/hop-gui/hop-gui-git-toolbar.png        |  Bin
 .../{0 => next}/_images/hop-gui/hop-gui-no-git.png |  Bin
 .../{0 => next}/_images/hop-gui/new-work-item.png  |  Bin
 manual/{0 => next}/_images/hop-gui/new.svg         |    0
 .../_images/hop-gui/pipeline/basic-pipeline.png    |  Bin
 .../_images/hop-gui/pipeline/debug-pipeline.png    |  Bin
 .../_images/hop-gui/pipeline/executed-pipeline.png |  Bin
 .../_images/hop-gui/pipeline/failed-pipeline.png   |  Bin
 .../_images/hop-gui/pipeline/hop-type.png          |  Bin
 .../_images/hop-gui/pipeline/logging-pipeline.png  |  Bin
 .../hop-gui/pipeline/monitoring-pipeline.png       |  Bin
 .../_images/hop-gui/pipeline/new-pipeline.png      |  Bin
 .../hop-gui/pipeline/parameters-pipeline.png       |  Bin
 .../hop-gui/pipeline/partitionining-buffers.png    |  Bin
 .../pipeline/partitionining-partition-schema.png   |  Bin
 .../pipeline/partitionining-partitioned.png        |  Bin
 .../hop-gui/pipeline/partitionining-preview-2.png  |  Bin
 .../pipeline/partitionining-preview-table.png      |  Bin
 .../hop-gui/pipeline/partitionining-preview.png    |  Bin
 .../pipeline/partitionining-swimlanes-1.png        |  Bin
 .../pipeline/partitionining-swimlanes-2.png        |  Bin
 .../hop-gui/pipeline/partitionining-table.png      |  Bin
 .../hop-gui/pipeline/preview-menu-pipeline.PNG     |  Bin
 .../_images/hop-gui/pipeline/preview-pipeline.png  |  Bin
 .../hop-gui/pipeline/properties-pipeline.png       |  Bin
 .../pipeline/run-configuration-pipeline.png        |  Bin
 .../_images/hop-gui/pipeline/save-pipeline.png     |  Bin
 .../_images/hop-gui/pipeline/simple-pipeline.png   |  Bin
 .../pipeline/transform-metrics-pipeline.png        |  Bin
 .../_images/hop-gui/pipeline/transforms.png        |  Bin
 .../{0 => next}/_images/hop-gui/popup-action.png   |  Bin
 .../_images/hop-gui/popup-collapsed.png            |  Bin
 .../_images/hop-gui/popup-create-item.png          |  Bin
 .../_images/hop-gui/popup-description.png          |  Bin
 .../_images/hop-gui/popup-hop-pipeline.png         |  Bin
 .../_images/hop-gui/popup-hop-workflow.png         |  Bin
 .../hop-gui/popup-no-categories-no-fixed-width.png |  Bin
 .../{0 => next}/_images/hop-gui/popup-pipeline.png |  Bin
 .../{0 => next}/_images/hop-gui/popup-toolbar.png  |  Bin
 .../_images/hop-gui/popup-transform.png            |  Bin
 .../{0 => next}/_images/hop-gui/popup-workflow.png |  Bin
 .../_images/hop-gui/workflow/basic-workflow.png    |  Bin
 .../hop-gui/workflow/new-run-configuration.png     |  Bin
 .../hop-gui/workflow/parameters-properties.png     |  Bin
 .../hop-gui/workflow/settings-properties.png       |  Bin
 .../_images/hop-gui/workflow/simple-workflow.png   |  Bin
 .../_images/hop-gui/workflow/workflow-action.png   |  Bin
 .../hop-gui/workflow/workflow-properties.png       |  Bin
 .../workflow/workflow-run-configuration.png        |  Bin
 .../_images/hop-run/hop-run-options.png            |  Bin
 .../_images/hop-server/hop-server-options.png      |  Bin
 .../_images/hop-server/hop-server-status.png       |  Bin
 .../_images/hop-server/web-service-example.png     |  Bin
 .../hop-server/web-service-pipeline-example.png    |  Bin
 manual/{0 => next}/_images/hop-web.png             |  Bin
 .../web-services-in-docker/json-output.png         |  Bin
 .../web-services-in-docker/metadata.png            |  Bin
 .../web-services-in-docker/pipeline.png            |  Bin
 .../web-services-in-docker/result.png              |  Bin
 .../simplified-architecture.png                    |  Bin
 .../{0 => next}/_images/icons/Cassandra_logo.svg   |    0
 .../_images/icons/MongoDB_Leaf_FullColor_RGB.svg   |    0
 manual/{0 => next}/_images/icons/NEO4J.svg         |    0
 .../{0 => next}/_images/icons/Test_tube_icon.svg   |    0
 manual/{0 => next}/_images/icons/add.svg           |    0
 manual/{0 => next}/_images/icons/arrow-right.svg   |    0
 manual/{0 => next}/_images/icons/beam-logo.svg     |    0
 manual/{0 => next}/_images/icons/bookmark-add.svg  |    0
 manual/{0 => next}/_images/icons/bookmark.svg      |    0
 manual/{0 => next}/_images/icons/data_orch.svg     |    0
 manual/{0 => next}/_images/icons/database.svg      |    0
 manual/{0 => next}/_images/icons/dataset.svg       |    0
 manual/{0 => next}/_images/icons/delete.svg        |    0
 manual/{0 => next}/_images/icons/developer.svg     |    0
 manual/{0 => next}/_images/icons/folder-add.svg    |    0
 manual/{0 => next}/_images/icons/folder.svg        |    0
 manual/{0 => next}/_images/icons/git-add.svg       |    0
 manual/{0 => next}/_images/icons/git-commit.svg    |    0
 manual/{0 => next}/_images/icons/git-info.svg      |    0
 manual/{0 => next}/_images/icons/git-revert.svg    |    0
 manual/{0 => next}/_images/icons/home.svg          |    0
 manual/{0 => next}/_images/icons/info.svg          |    0
 manual/{0 => next}/_images/icons/logo_icon.svg     |    0
 manual/{0 => next}/_images/icons/metadata.svg      |    0
 manual/{0 => next}/_images/icons/navigate-back.svg |    0
 .../{0 => next}/_images/icons/navigate-forward.svg |    0
 manual/{0 => next}/_images/icons/navigate-up.svg   |    0
 manual/{0 => next}/_images/icons/neo4j_logo.svg    |    0
 .../{0 => next}/_images/icons/partition_schema.svg |    0
 manual/{0 => next}/_images/icons/pipeline-log.svg  |    0
 manual/{0 => next}/_images/icons/pipeline.svg      |    0
 .../_images/icons/pipeline_run_config.svg          |    0
 manual/{0 => next}/_images/icons/play.svg          |    0
 manual/{0 => next}/_images/icons/plugin.svg        |    0
 manual/{0 => next}/_images/icons/preview.svg       |    0
 manual/{0 => next}/_images/icons/probe.svg         |    0
 manual/{0 => next}/_images/icons/project.svg       |    0
 manual/{0 => next}/_images/icons/pull.svg          |    0
 manual/{0 => next}/_images/icons/push.svg          |    0
 manual/{0 => next}/_images/icons/refresh.svg       |    0
 manual/{0 => next}/_images/icons/rename.svg        |    0
 manual/{0 => next}/_images/icons/search.svg        |    0
 manual/{0 => next}/_images/icons/server.svg        |    0
 manual/{0 => next}/_images/icons/splunk.svg        |    0
 manual/{0 => next}/_images/icons/test.svg          |    0
 manual/{0 => next}/_images/icons/workflow-log.svg  |    0
 manual/{0 => next}/_images/icons/workflow.svg      |    0
 .../_images/icons/workflow_run_config.svg          |    0
 .../logging/custom-action-logging-level.png        |  Bin
 .../_images/logging/custom-logging-actions.png     |  Bin
 .../logging/custom-transform-logging-level.png     |  Bin
 .../mongodb-input-screenshot-connection-tab.png    |  Bin
 .../mongodb-input-screenshot-fields-tab.png        |  Bin
 .../_images/mongodb-input-screenshot-input-tab.png |  Bin
 .../_images/mongodb-input-screenshot-query-tab.png |  Bin
 .../mongodb-output-screenshot-connection-tab.png   |  Bin
 .../mongodb-output-screenshot-fields-tab.png       |  Bin
 .../mongodb-output-screenshot-indexes-tab.png      |  Bin
 .../mongodb-output-screenshot-output-tab.png       |  Bin
 .../pipeline-unit-testing-bypass-transform.png     |  Bin
 .../pipeline-unit-testing-create-data-set.png      |  Bin
 .../pipeline-unit-testing-create-unit-test.png     |  Bin
 .../pipeline-unit-testing-data-sets-enabled.png    |  Bin
 .../_images/pipeline-unit-testing-data-sets.png    |  Bin
 .../_images/pipeline-unit-testing-pipeline.png     |  Bin
 ...peline-unit-testing-run-unit-tests-pipeline.png |  Bin
 .../_images/pipeline-unit-testing-test-failed.png  |  Bin
 .../_images/pipeline-unit-testing-workflow.png     |  Bin
 .../run-configuration/configuration-selection.png  |  Bin
 .../{0 => next}/_images/system-properties-menu.png |  Bin
 .../tech/neo4j/beers-wikipedia-graph-workflow.png  |  Bin
 .../neo4j/cleanup-remove-everything-workflow.png   |  Bin
 .../neo4j/data-loading-graph-output-transform.png  |  Bin
 .../neo4j-cypher-complex-returns-pipeline.png      |  Bin
 ...neo4j-cypher-unwind-simple-collect-into-map.png |  Bin
 .../tech/neo4j/neo4j-cypher-unwind-simple.png      |  Bin
 .../neo4j/neo4j-output-parallel-load-pipeline.png  |  Bin
 .../neo4j/neo4j-output-parallel-load-transform.png |  Bin
 manual/{0 => next}/_images/test_image.jpg          |  Bin
 .../_images/transforms/javascript-dialog.png       |  Bin
 .../_images/transforms/javascript-functions.png    |  Bin
 .../transforms/javascript-script-right-click.png   |  Bin
 manual/{0 => next}/_images/variable-indicator.png  |  Bin
 manual/next/best-practices/index.html              |   19 +
 manual/next/concepts.html                          |   19 +
 manual/next/database/databases.html                |   19 +
 manual/next/database/databases/as400.html          |   19 +
 manual/next/database/databases/cache.html          |   19 +
 manual/next/database/databases/clickhouse.html     |   19 +
 manual/next/database/databases/db2.html            |   19 +
 manual/next/database/databases/derby.html          |   19 +
 manual/next/database/databases/doris.html          |   19 +
 manual/next/database/databases/exasol.html         |   19 +
 manual/next/database/databases/firebird.html       |   19 +
 manual/next/database/databases/googlebigquery.html |   19 +
 manual/next/database/databases/greenplum.html      |   19 +
 manual/next/database/databases/h2.html             |   19 +
 manual/next/database/databases/hypersonic.html     |   19 +
 manual/next/database/databases/infinidb.html       |   19 +
 manual/next/database/databases/infobright.html     |   19 +
 manual/next/database/databases/informix.html       |   19 +
 manual/next/database/databases/ingres.html         |   19 +
 manual/next/database/databases/interbase.html      |   19 +
 manual/next/database/databases/kingbasees.html     |   19 +
 manual/next/database/databases/mariadb.html        |   19 +
 manual/next/database/databases/monetdb.html        |   19 +
 manual/next/database/databases/mssql.html          |   19 +
 manual/next/database/databases/mssqlnative.html    |   19 +
 manual/next/database/databases/mysql.html          |   19 +
 manual/next/database/databases/netezza.html        |   19 +
 manual/next/database/databases/oracle.html         |   19 +
 manual/next/database/databases/oraclerdb.html      |   19 +
 manual/next/database/databases/postgresql.html     |   19 +
 manual/next/database/databases/redshift.html       |   19 +
 manual/next/database/databases/sapdb.html          |   19 +
 manual/next/database/databases/snowflake.html      |   19 +
 manual/next/database/databases/sqlbase.html        |   19 +
 manual/next/database/databases/sqlite.html         |   19 +
 manual/next/database/databases/sybase.html         |   19 +
 manual/next/database/databases/sybaseiq.html       |   19 +
 manual/next/database/databases/teradata.html       |   19 +
 manual/next/database/databases/universe.html       |   19 +
 manual/next/database/databases/vectorwise.html     |   19 +
 manual/next/database/databases/vertica.html        |   19 +
 manual/next/faq/faq.html                           |   19 +
 manual/next/getting-started/hop-concepts.html      |   19 +
 .../next/getting-started/hop-download-install.html |   19 +
 manual/next/getting-started/hop-gui-pipelines.html |   19 +
 manual/next/getting-started/hop-gui-workflows.html |   19 +
 manual/next/getting-started/hop-gui.html           |   19 +
 manual/next/getting-started/hop-next-steps.html    |   19 +
 manual/next/getting-started/hop-tools.html         |   19 +
 manual/next/getting-started/hop-what-is-hop.html   |   19 +
 manual/next/getting-started/index.html             |   19 +
 manual/next/hop-gui/file-dialog.html               |   19 +
 manual/next/hop-gui/hop-gui-git.html               |   19 +
 manual/next/hop-gui/hop-gui-popup-dialog.html      |   19 +
 manual/next/hop-gui/hop-web.html                   |   23 +
 manual/next/hop-gui/index.html                     |   19 +
 .../hop-gui/perspective-data-orchestration.html    |   19 +
 manual/next/hop-gui/perspective-file-explorer.html |   19 +
 manual/next/hop-gui/perspective-metadata.html      |   19 +
 manual/next/hop-gui/perspective-neo4j.html         |   19 +
 manual/next/hop-gui/perspective-plugin.html        |   19 +
 manual/next/hop-gui/perspective-search.html        |   19 +
 manual/next/hop-gui/perspectives.html              |   19 +
 manual/next/hop-gui/shortcuts.html                 |   19 +
 manual/next/hop-run/index.html                     |   38 +
 manual/next/hop-search/index.html                  |   19 +
 manual/next/hop-server/async-web-service.html      |   29 +
 manual/next/hop-server/index.html                  |  192 +
 manual/next/hop-server/rest-api.html               |  314 ++
 manual/next/hop-server/web-service.html            |   27 +
 .../hop-tools/hop-conf/hop-conf-cloud-aws-s3.html  |   19 +
 .../hop-conf-cloud-azure-blob-storage.html         |   25 +
 .../hop-conf-cloud-google-cloud-storage.html       |   20 +
 .../hop-conf/hop-conf-cloud-google-drive.html      |   23 +
 .../next/hop-tools/hop-conf/hop-conf-projects.html |   52 +
 .../hop-tools/hop-conf/hop-conf-run-hpl-hwf.html   |   46 +
 manual/next/hop-tools/hop-conf/hop-conf.html       |  224 +
 manual/next/hop-tools/hop-encrypt.html             |   28 +
 manual/next/hop-tools/hop-import.html              |   72 +
 manual/next/hop-tools/hop-search.html              |   45 +
 manual/next/hop-tools/index.html                   |   19 +
 manual/next/hop-usps.html                          |   19 +
 .../apache-hop-web-services-docker.html            |   34 +
 manual/next/how-to-guides/index.html               |   19 +
 manual/next/image-testpage.html                    |   19 +
 manual/next/index.html                             |   19 +
 manual/next/logging/logging-basics.html            |   19 +
 manual/next/logging/logging-reflection.html        |   19 +
 .../next/metadata-types/beam-file-definition.html  |   19 +
 .../cassandra/cassandra-connection.html            |   19 +
 manual/next/metadata-types/data-set.html           |   19 +
 manual/next/metadata-types/hop-server.html         |   19 +
 manual/next/metadata-types/index.html              |   19 +
 manual/next/metadata-types/mongodb-connection.html |   19 +
 .../metadata-types/neo4j/neo4j-connection.html     |   19 +
 .../metadata-types/neo4j/neo4j-graphmodel.html     |   19 +
 manual/next/metadata-types/partition-schema.html   |   19 +
 manual/next/metadata-types/pipeline-log.html       |   19 +
 manual/next/metadata-types/pipeline-probe.html     |   19 +
 .../next/metadata-types/pipeline-run-config.html   |   19 +
 manual/next/metadata-types/pipeline-unit-test.html |   19 +
 manual/next/metadata-types/rdbms-connection.html   |   19 +
 manual/next/metadata-types/splunk-connection.html  |   19 +
 manual/next/metadata-types/workflow-log.html       |   19 +
 .../next/metadata-types/workflow-run-config.html   |   19 +
 manual/next/password/passwords.html                |   37 +
 manual/next/password/passwords/aespasswords.html   |   26 +
 .../pipeline/beam/getting-started-with-beam.html   |   19 +
 manual/next/pipeline/create-pipeline.html          |   19 +
 manual/next/pipeline/errorhandling.html            |   19 +
 manual/next/pipeline/hop-pipeline-editor.html      |   19 +
 manual/next/pipeline/metadata-injection.html       |   19 +
 manual/next/pipeline/partitioning.html             |   19 +
 .../beam-dataflow-pipeline-engine.html             |   19 +
 .../beam-direct-pipeline-engine.html               |   19 +
 .../beam-flink-pipeline-engine.html                |   26 +
 .../beam-spark-pipeline-engine.html                |   26 +
 .../native-local-pipeline-engine.html              |   19 +
 .../native-remote-pipeline-engine.html             |   19 +
 .../pipeline-run-configurations.html               |   19 +
 manual/next/pipeline/pipeline-unit-testing.html    |   34 +
 manual/next/pipeline/pipelines.html                |   19 +
 .../next/pipeline/run-preview-debug-pipeline.html  |   19 +
 manual/next/pipeline/transforms.html               |   19 +
 manual/next/pipeline/transforms/abort.html         |   19 +
 manual/next/pipeline/transforms/addchecksum.html   |   19 +
 manual/next/pipeline/transforms/addconstant.html   |   19 +
 .../transforms/addfieldschangesequence.html        |   19 +
 manual/next/pipeline/transforms/addsequence.html   |   19 +
 manual/next/pipeline/transforms/addxml.html        |   19 +
 manual/next/pipeline/transforms/analyticquery.html |   42 +
 manual/next/pipeline/transforms/apache-tika.html   |   19 +
 manual/next/pipeline/transforms/append.html        |   19 +
 manual/next/pipeline/transforms/avro-decode.html   |   19 +
 .../next/pipeline/transforms/avro-file-input.html  |   19 +
 .../transforms/azure-event-hubs-listener.html      |   19 +
 .../transforms/azure-event-hubs-writer.html        |   19 +
 .../pipeline/transforms/beambigqueryinput.html     |   19 +
 .../pipeline/transforms/beambigqueryoutput.html    |   19 +
 .../pipeline/transforms/beambigtableinput.html     |   19 +
 .../pipeline/transforms/beambigtableoutput.html    |   19 +
 .../next/pipeline/transforms/beamgcppublisher.html |   19 +
 .../pipeline/transforms/beamgcpsubscriber.html     |   19 +
 manual/next/pipeline/transforms/beaminput.html     |   19 +
 .../next/pipeline/transforms/beamkafkaconsume.html |   19 +
 .../next/pipeline/transforms/beamkafkaproduce.html |   19 +
 manual/next/pipeline/transforms/beamoutput.html    |   19 +
 manual/next/pipeline/transforms/beamtimestamp.html |   19 +
 manual/next/pipeline/transforms/beamwindow.html    |   19 +
 .../pipeline/transforms/blockingtransform.html     |   19 +
 .../transforms/blockuntiltransformsfinish.html     |   19 +
 manual/next/pipeline/transforms/calculator.html    |   19 +
 manual/next/pipeline/transforms/calldbproc.html    |   19 +
 .../next/pipeline/transforms/cassandra-input.html  |   19 +
 .../next/pipeline/transforms/cassandra-output.html |   19 +
 .../pipeline/transforms/changefileencoding.html    |   19 +
 .../next/pipeline/transforms/checkfilelocked.html  |   19 +
 .../transforms/checkwebserviceavailable.html       |   19 +
 manual/next/pipeline/transforms/clonerow.html      |   19 +
 manual/next/pipeline/transforms/closure.html       |   19 +
 manual/next/pipeline/transforms/coalesce.html      |   19 +
 manual/next/pipeline/transforms/columnexists.html  |   19 +
 .../pipeline/transforms/combinationlookup.html     |   19 +
 manual/next/pipeline/transforms/concatfields.html  |   19 +
 .../next/pipeline/transforms/copyrowstoresult.html |   19 +
 .../pipeline/transforms/creditcardvalidator.html   |   19 +
 manual/next/pipeline/transforms/csvinput.html      |   19 +
 manual/next/pipeline/transforms/databasejoin.html  |   23 +
 .../next/pipeline/transforms/databaselookup.html   |   19 +
 manual/next/pipeline/transforms/datagrid.html      |   19 +
 manual/next/pipeline/transforms/delay.html         |   19 +
 manual/next/pipeline/transforms/delete.html        |   19 +
 .../pipeline/transforms/detectemptystream.html     |   19 +
 .../next/pipeline/transforms/dimensionlookup.html  |   19 +
 manual/next/pipeline/transforms/dummy.html         |   19 +
 manual/next/pipeline/transforms/dynamicsqlrow.html |   19 +
 manual/next/pipeline/transforms/edi2xml.html       |   28 +
 manual/next/pipeline/transforms/emailinput.html    |   19 +
 .../pipeline/transforms/enhancedjsonoutput.html    |   63 +
 manual/next/pipeline/transforms/excelinput.html    |   19 +
 manual/next/pipeline/transforms/excelwriter.html   |   19 +
 manual/next/pipeline/transforms/execprocess.html   |   19 +
 manual/next/pipeline/transforms/execsql.html       |   19 +
 manual/next/pipeline/transforms/execsqlrow.html    |   19 +
 manual/next/pipeline/transforms/exectests.html     |   19 +
 manual/next/pipeline/transforms/fake.html          |   19 +
 manual/next/pipeline/transforms/fileexists.html    |   19 +
 manual/next/pipeline/transforms/filemetadata.html  |   19 +
 .../next/pipeline/transforms/filesfromresult.html  |   19 +
 manual/next/pipeline/transforms/filestoresult.html |   19 +
 manual/next/pipeline/transforms/filterrows.html    |   23 +
 manual/next/pipeline/transforms/fuzzymatch.html    |   19 +
 .../pipeline/transforms/generaterandomvalue.html   |   19 +
 .../next/pipeline/transforms/getdatafromxml.html   |   19 +
 manual/next/pipeline/transforms/getfilenames.html  |   19 +
 .../next/pipeline/transforms/getfilesrowcount.html |   19 +
 .../pipeline/transforms/getrecordsfromstream.html  |   19 +
 .../pipeline/transforms/getrowsfromresult.html     |   19 +
 .../pipeline/transforms/getserversequence.html     |   60 +
 manual/next/pipeline/transforms/getsubfolders.html |   19 +
 manual/next/pipeline/transforms/getsystemdata.html |   19 +
 manual/next/pipeline/transforms/gettablenames.html |   19 +
 manual/next/pipeline/transforms/getvariable.html   |   19 +
 manual/next/pipeline/transforms/groupby.html       |   19 +
 manual/next/pipeline/transforms/http.html          |   19 +
 manual/next/pipeline/transforms/httppost.html      |   19 +
 .../next/pipeline/transforms/identifylastrow.html  |   19 +
 manual/next/pipeline/transforms/ifnull.html        |   19 +
 manual/next/pipeline/transforms/injector.html      |   19 +
 manual/next/pipeline/transforms/insertupdate.html  |   19 +
 manual/next/pipeline/transforms/javafilter.html    |   22 +
 manual/next/pipeline/transforms/javascript.html    |   40 +
 manual/next/pipeline/transforms/joinrows.html      |   19 +
 manual/next/pipeline/transforms/jsoninput.html     |   19 +
 manual/next/pipeline/transforms/jsonoutput.html    |   82 +
 manual/next/pipeline/transforms/kafkaconsumer.html |   19 +
 manual/next/pipeline/transforms/kafkaproducer.html |   19 +
 manual/next/pipeline/transforms/ldapinput.html     |   19 +
 manual/next/pipeline/transforms/ldapoutput.html    |   19 +
 manual/next/pipeline/transforms/loadfileinput.html |   19 +
 manual/next/pipeline/transforms/mail.html          |   19 +
 manual/next/pipeline/transforms/mailvalidator.html |   19 +
 manual/next/pipeline/transforms/mapping-input.html |   19 +
 .../next/pipeline/transforms/mapping-output.html   |   19 +
 manual/next/pipeline/transforms/memgroupby.html    |   19 +
 manual/next/pipeline/transforms/mergejoin.html     |   19 +
 manual/next/pipeline/transforms/mergerows.html     |   19 +
 .../next/pipeline/transforms/metadata-input.html   |   19 +
 manual/next/pipeline/transforms/metainject.html    |   19 +
 manual/next/pipeline/transforms/metastructure.html |   19 +
 .../pipeline/transforms/monetdbbulkloader.html     |   19 +
 manual/next/pipeline/transforms/mongodbinput.html  |   19 +
 manual/next/pipeline/transforms/mongodboutput.html |   29 +
 manual/next/pipeline/transforms/multimerge.html    |   19 +
 manual/next/pipeline/transforms/neo4j-cypher.html  |   19 +
 manual/next/pipeline/transforms/neo4j-gencsv.html  |   19 +
 .../next/pipeline/transforms/neo4j-getloginfo.html |   19 +
 .../pipeline/transforms/neo4j-graphoutput.html     |   19 +
 manual/next/pipeline/transforms/neo4j-import.html  |   19 +
 manual/next/pipeline/transforms/neo4j-output.html  |   19 +
 .../pipeline/transforms/neo4j-split-graph.html     |   19 +
 manual/next/pipeline/transforms/nullif.html        |   19 +
 manual/next/pipeline/transforms/numberrange.html   |   19 +
 .../pipeline/transforms/parquet-file-input.html    |   19 +
 .../pipeline/transforms/parquet-file-output.html   |   19 +
 .../next/pipeline/transforms/pgpdecryptstream.html |   19 +
 .../next/pipeline/transforms/pgpencryptstream.html |   19 +
 .../next/pipeline/transforms/pipelineexecutor.html |   19 +
 .../pipeline/transforms/postgresbulkloader.html    |   19 +
 manual/next/pipeline/transforms/processfiles.html  |   19 +
 manual/next/pipeline/transforms/propertyinput.html |   19 +
 .../next/pipeline/transforms/propertyoutput.html   |   19 +
 manual/next/pipeline/transforms/regexeval.html     |   19 +
 manual/next/pipeline/transforms/replacestring.html |   19 +
 .../pipeline/transforms/reservoirsampling.html     |   19 +
 manual/next/pipeline/transforms/rest.html          |   19 +
 .../next/pipeline/transforms/rowdenormaliser.html  |   19 +
 manual/next/pipeline/transforms/rowflattener.html  |   19 +
 manual/next/pipeline/transforms/rowgenerator.html  |   19 +
 manual/next/pipeline/transforms/rownormaliser.html |   19 +
 manual/next/pipeline/transforms/runssh.html        |   19 +
 .../pipeline/transforms/salesforce-connection.html |   19 +
 .../pipeline/transforms/salesforce-fields.html     |   19 +
 .../pipeline/transforms/salesforce-settings.html   |   19 +
 .../next/pipeline/transforms/salesforcedelete.html |   19 +
 .../next/pipeline/transforms/salesforceinput.html  |   19 +
 .../next/pipeline/transforms/salesforceinsert.html |   19 +
 .../next/pipeline/transforms/salesforceupdate.html |   19 +
 .../next/pipeline/transforms/salesforceupsert.html |   19 +
 manual/next/pipeline/transforms/samplerows.html    |   19 +
 manual/next/pipeline/transforms/sasinput.html      |   19 +
 manual/next/pipeline/transforms/selectvalues.html  |   19 +
 .../transforms/serialize-de-from-file.html         |   19 +
 .../pipeline/transforms/serialize-to-file.html     |   19 +
 manual/next/pipeline/transforms/serverstatus.html  |   19 +
 .../next/pipeline/transforms/setvalueconstant.html |   19 +
 manual/next/pipeline/transforms/setvaluefield.html |   19 +
 manual/next/pipeline/transforms/setvariable.html   |   19 +
 .../next/pipeline/transforms/simple-mapping.html   |   19 +
 manual/next/pipeline/transforms/sort.html          |   19 +
 manual/next/pipeline/transforms/sortedmerge.html   |   19 +
 manual/next/pipeline/transforms/splitfields.html   |   19 +
 .../next/pipeline/transforms/splitfieldtorows.html |   19 +
 manual/next/pipeline/transforms/splunkinput.html   |   19 +
 manual/next/pipeline/transforms/sqlfileoutput.html |   19 +
 .../next/pipeline/transforms/sstable-output.html   |   19 +
 .../transforms/standardizephonenumber.html         |   19 +
 manual/next/pipeline/transforms/streamlookup.html  |   19 +
 .../pipeline/transforms/streamschemamerge.html     |   19 +
 manual/next/pipeline/transforms/stringcut.html     |   19 +
 .../next/pipeline/transforms/stringoperations.html |   19 +
 manual/next/pipeline/transforms/switchcase.html    |   19 +
 .../pipeline/transforms/synchronizeaftermerge.html |   19 +
 manual/next/pipeline/transforms/tablecompare.html  |   19 +
 manual/next/pipeline/transforms/tableexists.html   |   19 +
 manual/next/pipeline/transforms/tableinput.html    |   19 +
 manual/next/pipeline/transforms/tableoutput.html   |   27 +
 manual/next/pipeline/transforms/terafast.html      |   19 +
 manual/next/pipeline/transforms/textfileinput.html |   19 +
 .../next/pipeline/transforms/textfileoutput.html   |   19 +
 .../next/pipeline/transforms/tokenreplacement.html |   19 +
 manual/next/pipeline/transforms/uniquerows.html    |   19 +
 .../pipeline/transforms/uniquerowsbyhashset.html   |   19 +
 manual/next/pipeline/transforms/update.html        |   19 +
 .../pipeline/transforms/userdefinedjavaclass.html  |   96 +
 .../transforms/userdefinedjavaexpression.html      |   20 +
 manual/next/pipeline/transforms/valuemapper.html   |   21 +
 manual/next/pipeline/transforms/webservices.html   |   19 +
 .../next/pipeline/transforms/workflowexecutor.html |   19 +
 manual/next/pipeline/transforms/writetolog.html    |   34 +
 .../next/pipeline/transforms/xmlinputstream.html   |   19 +
 manual/next/pipeline/transforms/xmljoin.html       |   19 +
 manual/next/pipeline/transforms/xmloutput.html     |   19 +
 manual/next/pipeline/transforms/xsdvalidator.html  |   19 +
 manual/next/pipeline/transforms/xslt.html          |   19 +
 manual/next/pipeline/transforms/yamlinput.html     |   19 +
 manual/next/pipeline/transforms/zipfile.html       |   19 +
 manual/next/plugins/external-plugins.html          |   19 +
 manual/next/plugins/import/kettle-import.html      |   19 +
 manual/next/plugins/plugins.html                   |   19 +
 manual/next/plugins/projects.html                  |   19 +
 manual/next/plugins/projects/projects.html         |  122 +
 manual/next/projects/advanced.html                 |   95 +
 manual/next/projects/index.html                    |   19 +
 manual/next/projects/metadata.html                 |   42 +
 manual/next/projects/projects-environments.html    |   19 +
 manual/next/protips/index.html                     |   19 +
 manual/next/samples/samples.html                   |   19 +
 .../next/snippets/best-practices/governance.html   |   19 +
 manual/next/snippets/best-practices/logging.html   |   19 +
 manual/next/snippets/best-practices/loops.html     |   19 +
 manual/next/snippets/best-practices/mappings.html  |   19 +
 .../best-practices/metadata-injection.html         |   19 +
 .../best-practices/naming-conventions.html         |   19 +
 .../best-practices/performance-basics.html         |   19 +
 .../next/snippets/best-practices/size-matters.html |   19 +
 manual/next/snippets/best-practices/variables.html |   19 +
 manual/next/snippets/hop-concepts/action.html      |   19 +
 manual/next/snippets/hop-concepts/environment.html |   19 +
 .../hop-concepts/hop-projects-environments.html    |   19 +
 manual/next/snippets/hop-concepts/hop.html         |   19 +
 manual/next/snippets/hop-concepts/item-types.html  |   19 +
 .../next/snippets/hop-concepts/lazy-loading.html   |   19 +
 manual/next/snippets/hop-concepts/metadata.html    |   19 +
 manual/next/snippets/hop-concepts/pipeline.html    |   19 +
 manual/next/snippets/hop-concepts/project.html     |   19 +
 manual/next/snippets/hop-concepts/transform.html   |   19 +
 manual/next/snippets/hop-concepts/workflow.html    |   19 +
 manual/next/snippets/hop-tools/hop-conf.html       |   19 +
 manual/next/snippets/hop-tools/hop-encrypt.html    |   19 +
 manual/next/snippets/hop-tools/hop-gui.html        |   19 +
 manual/next/snippets/hop-tools/hop-run.html        |   19 +
 manual/next/snippets/hop-tools/hop-search.html     |   19 +
 manual/next/snippets/hop-tools/hop-server.html     |   19 +
 manual/next/snippets/hop-tools/hop-tools.html      |   19 +
 manual/next/snippets/hop-tools/hop-translator.html |   19 +
 manual/next/technology/azure/index.html            |   19 +
 manual/next/technology/cassandra/index.html        |   19 +
 manual/next/technology/google/index.html           |   19 +
 manual/next/technology/neo4j/index.html            |   19 +
 .../technology/neo4j/working-with-neo4j-data.html  |   23 +
 manual/next/technology/technology.html             |   19 +
 manual/next/variables.html                         |   23 +
 manual/next/vfs.html                               |   19 +
 manual/next/vfs/aws-s3-vfs.html                    |   21 +
 manual/next/vfs/azure-blob-storage-vfs.html        |   31 +
 manual/next/vfs/dropbox-vfs.html                   |   20 +
 manual/next/vfs/google-cloud-storage-vfs.html      |   24 +
 manual/next/vfs/google-drive-vfs.html              |   29 +
 manual/next/workflow/actions.html                  |   19 +
 manual/next/workflow/actions/abort.html            |   19 +
 .../next/workflow/actions/addresultfilenames.html  |   19 +
 manual/next/workflow/actions/as400command.html     |   19 +
 .../next/workflow/actions/cassandra-exec-cql.html  |   21 +
 .../next/workflow/actions/checkdbconnection.html   |   19 +
 manual/next/workflow/actions/checkfilelocked.html  |   19 +
 manual/next/workflow/actions/columnsexist.html     |   19 +
 manual/next/workflow/actions/copyfiles.html        |   19 +
 .../workflow/actions/copymoveresultfilenames.html  |   19 +
 manual/next/workflow/actions/createfile.html       |   19 +
 manual/next/workflow/actions/createfolder.html     |   19 +
 manual/next/workflow/actions/delay.html            |   19 +
 manual/next/workflow/actions/deletefile.html       |   19 +
 manual/next/workflow/actions/deletefiles.html      |   19 +
 manual/next/workflow/actions/deletefolders.html    |   19 +
 .../workflow/actions/deleteresultfilenames.html    |   19 +
 manual/next/workflow/actions/dostounix.html        |   19 +
 manual/next/workflow/actions/dtdvalidator.html     |   19 +
 manual/next/workflow/actions/dummy.html            |   19 +
 manual/next/workflow/actions/eval.html             |   29 +
 manual/next/workflow/actions/evalfilesmetrics.html |   19 +
 .../workflow/actions/evaluatetablecontent.html     |   19 +
 manual/next/workflow/actions/filecompare.html      |   19 +
 manual/next/workflow/actions/fileexists.html       |   19 +
 manual/next/workflow/actions/filesexist.html       |   19 +
 manual/next/workflow/actions/folderisempty.html    |   19 +
 manual/next/workflow/actions/folderscompare.html   |   19 +
 manual/next/workflow/actions/ftp.html              |   19 +
 manual/next/workflow/actions/ftpdelete.html        |   19 +
 manual/next/workflow/actions/ftpput.html           |   19 +
 manual/next/workflow/actions/getpop.html           |   19 +
 manual/next/workflow/actions/http.html             |   19 +
 manual/next/workflow/actions/mail.html             |   19 +
 manual/next/workflow/actions/mailvalidator.html    |   19 +
 manual/next/workflow/actions/movefiles.html        |   19 +
 manual/next/workflow/actions/msgboxinfo.html       |   20 +
 manual/next/workflow/actions/mssqlbulkload.html    |   19 +
 manual/next/workflow/actions/mysqlbulkfile.html    |   19 +
 manual/next/workflow/actions/mysqlbulkload.html    |   19 +
 .../workflow/actions/neo4j-checkconnections.html   |   19 +
 manual/next/workflow/actions/neo4j-constraint.html |   19 +
 .../next/workflow/actions/neo4j-cypherscript.html  |   22 +
 manual/next/workflow/actions/neo4j-index.html      |   19 +
 manual/next/workflow/actions/pgpdecryptfiles.html  |   19 +
 manual/next/workflow/actions/pgpencryptfiles.html  |   19 +
 manual/next/workflow/actions/pgpverify.html        |   19 +
 manual/next/workflow/actions/ping.html             |   19 +
 manual/next/workflow/actions/pipeline.html         |   19 +
 manual/next/workflow/actions/repeat-end.html       |   19 +
 manual/next/workflow/actions/repeat.html           |   19 +
 manual/next/workflow/actions/runpipelinetests.html |   19 +
 .../workflow/actions/sendnagiospassivecheck.html   |   19 +
 manual/next/workflow/actions/setvariables.html     |   19 +
 manual/next/workflow/actions/sftp.html             |   21 +
 manual/next/workflow/actions/sftpput.html          |   20 +
 manual/next/workflow/actions/shell.html            |   19 +
 manual/next/workflow/actions/simpleeval.html       |   19 +
 manual/next/workflow/actions/snmptrap.html         |   19 +
 manual/next/workflow/actions/sql.html              |   19 +
 manual/next/workflow/actions/start.html            |   19 +
 manual/next/workflow/actions/success.html          |   19 +
 manual/next/workflow/actions/tableexists.html      |   19 +
 manual/next/workflow/actions/telnet.html           |   19 +
 manual/next/workflow/actions/truncatetables.html   |   19 +
 manual/next/workflow/actions/unzip.html            |   19 +
 manual/next/workflow/actions/waitforfile.html      |   19 +
 manual/next/workflow/actions/waitforsql.html       |   19 +
 .../next/workflow/actions/webserviceavailable.html |   19 +
 manual/next/workflow/actions/workflow.html         |   19 +
 manual/next/workflow/actions/writetofile.html      |   19 +
 manual/next/workflow/actions/writetolog.html       |   19 +
 manual/next/workflow/actions/xmlwellformed.html    |   19 +
 manual/next/workflow/actions/xsdvalidator.html     |   19 +
 manual/next/workflow/actions/xslt.html             |   19 +
 manual/next/workflow/actions/zipfile.html          |   19 +
 manual/next/workflow/create-workflow.html          |   19 +
 manual/next/workflow/run-debug-workflow.html       |   19 +
 .../native-local-workflow-engine.html              |   19 +
 .../native-remote-workflow-engine.html             |   19 +
 .../workflow-run-configurations.html               |   19 +
 manual/next/workflow/workflows.html                |   19 +
 sitemap-dev-manual.xml                             |   42 +-
 sitemap-manual.xml                                 | 5384 ++++++++++----------
 sitemap-tech-manual.xml                            |   22 +-
 tech-manual/latest/docker-container.html           |    2 +-
 tech-manual/latest/getting-started.html            |    2 +-
 tech-manual/latest/hop-logo-and-icons.html         |    2 +-
 .../latest/hop-vs-kettle/hop-vs-kettle.html        |    2 +-
 .../latest/hop-vs-kettle/if-you-know-kettle.html   |    2 +-
 .../hop-vs-kettle/import-kettle-projects.html      |    2 +-
 tech-manual/latest/hop-vs-kettle/index.html        |    2 +-
 tech-manual/latest/index.html                      |    2 +-
 .../latest/logging/logging-architecture.html       |    2 +-
 tech-manual/latest/logging/logging-plugins.html    |    2 +-
 tech-manual/latest/logging/udjc-logging.html       |    2 +-
 2079 files changed, 13750 insertions(+), 13750 deletions(-)

diff --git a/404.html b/404.html
index 1bf0d33..094308d 100644
--- a/404.html
+++ b/404.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Page Not Found :: Apache Hop</title> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="/_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Page Not Found :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestration Platform"> <meta property="og:type" content="article"> <meta property="og: [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Page Not Found :: Apache Hop</title> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="/_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Page Not Found :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestration Platform"> <meta property="og:type" content="article"> <meta property="og: [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/blog/2020/12/roundup-2020-12/index.html b/blog/2020/12/roundup-2020-12/index.html
index 541615d..0539ab3 100644
--- a/blog/2020/12/roundup-2020-12/index.html
+++ b/blog/2020/12/roundup-2020-12/index.html
@@ -1,6 +1,6 @@
 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta property="og:title" content="Roundup November 2020"> <meta property="og:description" content="With 2020 coming to a close, we’ve started preparing for 0.50, which will be our first Apache release. We’ll have more news on that soon!
  At the start of the final month of 2020, let’s have a closer look at what happened at Apache Hop in November.
-   Apache Hop Incubation - infrastructure Our migration to the Apache Software Foundation infrastructure is now done. All references to Project Hop have been changed to Apache Hop (Incubating)."> <meta property="og:type" content="article"> <meta property="og:url" content="https://hop.apache.org/blog/2020/12/roundup-2020-12/"><meta property="og:image" content="https://hop.apache.org/img/hop-logo.png"><meta property="article:section" content="blog"> <meta property="article:published_time"  [...]
+   Apache Hop Incubation - infrastructure Our migration to the Apache Software Foundation infrastructure is now done. All references to Project Hop have been changed to Apache Hop (Incubating)."> <meta property="og:type" content="article"> <meta property="og:url" content="https://hop.apache.org/blog/2020/12/roundup-2020-12/"><meta property="og:image" content="https://hop.apache.org/img/hop-logo.png"><meta property="article:section" content="blog"> <meta property="article:published_time"  [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/blog/2021/01/roundup-2021-01/index.html b/blog/2021/01/roundup-2021-01/index.html
index 61c8781..05c9419 100644
--- a/blog/2021/01/roundup-2021-01/index.html
+++ b/blog/2021/01/roundup-2021-01/index.html
@@ -2,7 +2,7 @@
  While the world has seen its share of problems in 2020, it’s been a roller coaster for Hop!
  Our community continued to work tirelessly in December, even through the holiday period.
  Let’s have a look at what happened in this last burst of productivity for 2020. With this pace of development, 2021 will be a great year for Hop!
- A special shout out to Nicolas Adment, who was on an absolute roll in December!"> <meta property="og:type" content="article"> <meta property="og:url" content="https://hop.apache.org/blog/2021/01/roundup-2021-01/"><meta property="og:image" content="https://hop.apache.org/img/hop-logo.png"><meta property="article:section" content="blog"> <meta property="article:published_time" content="2021-01-03T10:01:56&#43;02:00"> <meta property="article:modified_time" content="2021-01-03T10:01:56&#43; [...]
+ A special shout out to Nicolas Adment, who was on an absolute roll in December!"> <meta property="og:type" content="article"> <meta property="og:url" content="https://hop.apache.org/blog/2021/01/roundup-2021-01/"><meta property="og:image" content="https://hop.apache.org/img/hop-logo.png"><meta property="article:section" content="blog"> <meta property="article:published_time" content="2021-01-03T10:01:56&#43;02:00"> <meta property="article:modified_time" content="2021-01-03T10:01:56&#43; [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/blog/2022/02/roundup-2022-02/index.html b/blog/2022/02/roundup-2022-02/index.html
index 3eb418e..ddb2254 100644
--- a/blog/2022/02/roundup-2022-02/index.html
+++ b/blog/2022/02/roundup-2022-02/index.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta property="og:title" content="Roundup January 2022"> <meta property="og:description" content="The Apache Hop recap for January 2022: "> <meta property="og:type" content="article"> <meta property="og:url" content="https://hop.apache.org/blog/2022/02/roundup-2022-02/"><meta property="og:image" content="https://hop.apache.org/img/hop-logo.png"><meta propert [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta property="og:title" content="Roundup January 2022"> <meta property="og:description" content="The Apache Hop recap for January 2022: "> <meta property="og:type" content="article"> <meta property="og:url" content="https://hop.apache.org/blog/2022/02/roundup-2022-02/"><meta property="og:image" content="https://hop.apache.org/img/hop-logo.png"><meta propert [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/apache-release/checking-a-release.html b/dev-manual/latest/apache-release/checking-a-release.html
index e646842..fec8e98 100644
--- a/dev-manual/latest/apache-release/checking-a-release.html
+++ b/dev-manual/latest/apache-release/checking-a-release.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Checking a Release :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/apache-release/checking-a-release.html"> <meta name="description" content="After the release manager creates a release as described in xref:apache-release/creating-a-release.adoc[Creating a Release] the voting process starts. This guide will co [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Checking a Release :: Apache Hop</title> <meta name="description" content="After the release manager creates a release as described in xref:apache-release/creating-a-release.adoc[Creating a Release] the voting process starts. This guide will contain some steps you can take to validate a release candidate and base your vote on."> <meta name="generator"  [...]
 cd /tmp/release_check</code></pre> </div> </div> <div class="paragraph"> <p>First check would be to see if the keys and hashes are in order</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash"># check the sha512
 
 sha512sum -c apache-hop-X.XX-src.tar.gz.sha512
diff --git a/dev-manual/latest/apache-release/creating-a-release.html b/dev-manual/latest/apache-release/creating-a-release.html
index dab1dcf..43bd856 100644
--- a/dev-manual/latest/apache-release/creating-a-release.html
+++ b/dev-manual/latest/apache-release/creating-a-release.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Creating a release :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/apache-release/creating-a-release.html"> <meta name="description" content="This document includes the steps needed to be taken by the release manager to create a successful release candidate."> <meta name="generator" content="Antora 3.0.1"> <li [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Creating a release :: Apache Hop</title> <meta name="description" content="This document includes the steps needed to be taken by the release manager to create a successful release candidate."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Creating a r [...]
 git checkout releaseX.XX
 git push upstream releaseX.XX:releaseX.XX</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_update_the_version_of_the_poms"><a class="anchor" href="#_update_the_version_of_the_poms"></a>update the version of the poms</h2> <div class="sectionbody"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn versions:set -DnewVersion=X.XX -DgenerateBackupPoms=false</code></pre> </div> </div> < [...]
 git commit -m 'Create release version x.xx'
diff --git a/dev-manual/latest/apache-release/index.html b/dev-manual/latest/apache-release/index.html
index f675ff0..ca9b154 100644
--- a/dev-manual/latest/apache-release/index.html
+++ b/dev-manual/latest/apache-release/index.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Release process :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/apache-release/index.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Release process :: Apache Hop"> <meta property="og:description" content [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Release process :: Apache Hop</title> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Release process :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestration Platform"> <meta property="og:type" content="article"> <meta pro [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/apache-release/promoting-a-release.html b/dev-manual/latest/apache-release/promoting-a-release.html
index 513e245..603dd25 100644
--- a/dev-manual/latest/apache-release/promoting-a-release.html
+++ b/dev-manual/latest/apache-release/promoting-a-release.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Promoting a release :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/apache-release/promoting-a-release.html"> <meta name="description" content="After the voting process has ended and the vote passed, following steps need to be taken to promote and create all release artifacts."> <meta name="generator" content= [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Promoting a release :: Apache Hop</title> <meta name="description" content="After the voting process has ended and the vote passed, following steps need to be taken to promote and create all release artifacts."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" con [...]
 svn co https://dist.apache.org/repos/dist/dev/hop hop_release
 
 # Update
diff --git a/dev-manual/latest/getting-started.html b/dev-manual/latest/getting-started.html
index 1e7f412..8ac8b02 100644
--- a/dev-manual/latest/getting-started.html
+++ b/dev-manual/latest/getting-started.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Getting Started :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/getting-started.html"> <meta name="description" content="Welcome to the Hop project! The size of the codebase can perhaps appear to be a bit daunting at first so remember: *Don&#x27;t Panic*! When it comes down to it the codebase is fairly simple  [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Getting Started :: Apache Hop</title> <meta name="description" content="Welcome to the Hop project! The size of the codebase can perhaps appear to be a bit daunting at first so remember: *Don&#x27;t Panic*! When it comes down to it the codebase is fairly simple in structure. Let&#x27;s go over the main modules in the source code:"> <meta name="generato [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/hopweb/developer-guide.html b/dev-manual/latest/hopweb/developer-guide.html
index eec1000..8903dee 100644
--- a/dev-manual/latest/hopweb/developer-guide.html
+++ b/dev-manual/latest/hopweb/developer-guide.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Developer Guide :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/hopweb/developer-guide.html"> <meta name="description" content="RAP is multi user framework by its nature. Every user session is associated with a display. In RAP, Display#getDefault() will not create a new display when it&#x27;s called from non-U [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Developer Guide :: Apache Hop</title> <meta name="description" content="RAP is multi user framework by its nature. Every user session is associated with a display. In RAP, Display#getDefault() will not create a new display when it&#x27;s called from non-UI thread - read Display#getDefault JavaDoc. When you execute a code in a background thread, RAP nee [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/hopweb/hopweb-antipatterns.html b/dev-manual/latest/hopweb/hopweb-antipatterns.html
index 091fb69..0b07769 100644
--- a/dev-manual/latest/hopweb/hopweb-antipatterns.html
+++ b/dev-manual/latest/hopweb/hopweb-antipatterns.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Developer Antipatterns :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/hopweb/hopweb-antipatterns.html"> <meta name="description" content="Due to the differences between RWT and SWT, there are some anti-patterns that should be avoided when developing webSpoon and (webSpoon-) compatible plugins."> <meta name="g [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Developer Antipatterns :: Apache Hop</title> <meta name="description" content="Due to the differences between RWT and SWT, there are some anti-patterns that should be avoided when developing webSpoon and (webSpoon-) compatible plugins."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <me [...]
   private static GUIResource guiResource;
 
   // Making the constructor private prevents instantiation from outside
diff --git a/dev-manual/latest/hopweb/index.html b/dev-manual/latest/hopweb/index.html
index 5780078..c595491 100644
--- a/dev-manual/latest/hopweb/index.html
+++ b/dev-manual/latest/hopweb/index.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Web Development Guide :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/hopweb/index.html"> <meta name="description" content="Building and setting up your own Hop Web environment is straightforward. The steps to set up the default Docker image are included in a helper script docker/create_hop_web_container.s [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Web Development Guide :: Apache Hop</title> <meta name="description" content="Building and setting up your own Hop Web environment is straightforward. The steps to set up the default Docker image are included in a helper script docker/create_hop_web_container.sh in the Hop code base. This should get you started to make modifications or create your  [...]
 unzip assemblies/web/target/hop.war -d $CATALINA_HOME/webapp
 unzip assemblies/plugins/dist/target/hop-assemblies-*.zip -d $CATALINA_HOME/</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_modify_startup_script"><a class="anchor" href="#_modify_startup_script"></a>Modify startup script</h3> <div class="paragraph"> <p>Configure Tomcat to run Hop by adding the information below to <code>$CATALINA_HOME/bin/startup.sh</code>, anywhere before the last line (<code>exec "$PRGDIR"/"$EXECUTABLE" start "$@"</code>)</p> </div> <div class="listing [...]
 # specify where Hop should store audit information
diff --git a/dev-manual/latest/index.html b/dev-manual/latest/index.html
index 4ea1c6c..75bb56e 100644
--- a/dev-manual/latest/index.html
+++ b/dev-manual/latest/index.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Index Page :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/index.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Index Page :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestra [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Index Page :: Apache Hop</title> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Index Page :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestration Platform"> <meta property="og:type" content="article"> <meta property="og:url [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/integration-testing.html b/dev-manual/latest/integration-testing.html
index 808df20..7dc2ec1 100644
--- a/dev-manual/latest/integration-testing.html
+++ b/dev-manual/latest/integration-testing.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Integration Testing :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/integration-testing.html"> <meta name="description" content="The Apache Hop team has created an integration testing framework that is being used to test key components of the software."> <meta name="generator" content="Antora 3.0.1"> <link rel [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Integration Testing :: Apache Hop</title> <meta name="description" content="The Apache Hop team has created an integration testing framework that is being used to test key components of the software."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Integra [...]
 mvn clean install</pre> </div> </div> </li> <li> <p>Run the Docker Compose script</p> <div class="listingblock"> <div class="content"> <pre>cd integration-tests/scripts
 ./run-tests-docker.sh
 
diff --git a/dev-manual/latest/internationalisation.html b/dev-manual/latest/internationalisation.html
index 30d3708..5d2a3bb 100644
--- a/dev-manual/latest/internationalisation.html
+++ b/dev-manual/latest/internationalisation.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop internationalisation :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/internationalisation.html"> <meta name="description" content="Hop is already being used in many countries across the world where different languages are spoken. As such &quot;internationalisation&quot; represents the support for multiple  [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop internationalisation :: Apache Hop</title> <meta name="description" content="Hop is already being used in many countries across the world where different languages are spoken. As such &quot;internationalisation&quot; represents the support for multiple languages in our software. Since it is such a long word it is typically abbreviated to i18n."> <m [...]
       root = ID_MAIN_MENU,
       id = ID_MAIN_MENU_FILE,
       label = "i18n::HopGui.Menu.File",
diff --git a/dev-manual/latest/metadata-plugins.html b/dev-manual/latest/metadata-plugins.html
index 11095b7..cbcfef2 100644
--- a/dev-manual/latest/metadata-plugins.html
+++ b/dev-manual/latest/metadata-plugins.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata plugins :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/metadata-plugins.html"> <meta name="description" content="Writing metadata plugins is easy in Hop. Any Plain Old Java Object can be used as a starting point."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/cs [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata plugins :: Apache Hop</title> <meta name="description" content="Writing metadata plugins is easy in Hop. Any Plain Old Java Object can be used as a starting point."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Metadata plugins :: Apache Hop"> < [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/plugin-development.html b/dev-manual/latest/plugin-development.html
index ea6bf9f..edb06d8 100644
--- a/dev-manual/latest/plugin-development.html
+++ b/dev-manual/latest/plugin-development.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Plugin Development :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/plugin-development.html"> <meta name="description" content="This page explains how to develop new plugins with references to make development easy."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/si [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Plugin Development :: Apache Hop</title> <meta name="description" content="This page explains how to develop new plugins with references to make development easy."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Hop Plugin Development :: Apache Hop"> < [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/plugin-samples.html b/dev-manual/latest/plugin-samples.html
index 8910bf1..ea16690 100644
--- a/dev-manual/latest/plugin-samples.html
+++ b/dev-manual/latest/plugin-samples.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Plugin samples :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/plugin-samples.html"> <meta name="description" content="This document will explain how a developer can add samples to the plugins in the source code so that they will end up in the samples project in the Hop client distribution assembly."> <meta na [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Plugin samples :: Apache Hop</title> <meta name="description" content="This document will explain how a developer can add samples to the plugins in the source code so that they will end up in the samples project in the Hop client distribution assembly."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/porting-kettle-plugins.html b/dev-manual/latest/porting-kettle-plugins.html
index a683a09..f623dd3 100644
--- a/dev-manual/latest/porting-kettle-plugins.html
+++ b/dev-manual/latest/porting-kettle-plugins.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Porting Kettle Plugins :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/porting-kettle-plugins.html"> <meta name="description" content="porting Kettle/PDI plugins to Hop is straightforward. This page describes a couple of points developers need to take into account to make the porting process as smooth as possi [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Porting Kettle Plugins :: Apache Hop</title> <meta name="description" content="porting Kettle/PDI plugins to Hop is straightforward. This page describes a couple of points developers need to take into account to make the porting process as smooth as possible."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site [...]
     &lt;repository&gt;
       &lt;id&gt;Apache&lt;/id&gt;
       &lt;url&gt;https://repository.apache.org/snapshots/&lt;/url&gt;
diff --git a/dev-manual/latest/sdk/hop-sdk.html b/dev-manual/latest/sdk/hop-sdk.html
index 182a5f0..737667e 100644
--- a/dev-manual/latest/sdk/hop-sdk.html
+++ b/dev-manual/latest/sdk/hop-sdk.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>The Hop SDK :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/sdk/hop-sdk.html"> <meta name="description" content="First, we need to initialize the Hop API. This means we load configuration details, search for and load plugins and so on."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" hre [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>The Hop SDK :: Apache Hop</title> <meta name="description" content="First, we need to initialize the Hop API. This means we load configuration details, search for and load plugins and so on."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="The Hop SDK : [...]
   "path-to-your-filename.hpl",   // The filename
   metadataProvider,             // See above
   true,                        // set internal variables
diff --git a/dev-manual/latest/sdk/index.html b/dev-manual/latest/sdk/index.html
index 7bc59b8..cc4dad3 100644
--- a/dev-manual/latest/sdk/index.html
+++ b/dev-manual/latest/sdk/index.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Index Page :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/sdk/index.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Index Page :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Or [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Index Page :: Apache Hop</title> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Index Page :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestration Platform"> <meta property="og:type" content="article"> <meta property="og: [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/setup-dev-environment.html b/dev-manual/latest/setup-dev-environment.html
index d0ec2ff..7388230 100644
--- a/dev-manual/latest/setup-dev-environment.html
+++ b/dev-manual/latest/setup-dev-environment.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Setting up your development environment :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/setup-dev-environment.html"> <meta name="description" content="Thank you for wanting to help out with the development of Apache Hop. We really value your help. We assume you&#x27;re going to be using the IntelliJ IDEA integ [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Setting up your development environment :: Apache Hop</title> <meta name="description" content="Thank you for wanting to help out with the development of Apache Hop. We really value your help. We assume you&#x27;re going to be using the IntelliJ IDEA integrated development environment."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesh [...]
 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
diff --git a/dev-manual/latest/snippets/hop-license-header-file.html b/dev-manual/latest/snippets/hop-license-header-file.html
index 689b772..8bc0de0 100644
--- a/dev-manual/latest/snippets/hop-license-header-file.html
+++ b/dev-manual/latest/snippets/hop-license-header-file.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/snippets/hop-license-header-file.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content=" [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchestration Platform"> <meta property="og:type" content="article"> <meta property="og:url" [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/dev-manual/latest/start-your-own-plugin.html b/dev-manual/latest/start-your-own-plugin.html
index 21659fe..c189de3 100644
--- a/dev-manual/latest/start-your-own-plugin.html
+++ b/dev-manual/latest/start-your-own-plugin.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Creating a remote plugin :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/start-your-own-plugin.html"> <meta name="description" content="This guide is to help you set up and start development on a plugin that will not be included in the Hop repository. For more information on plugin types and how to add them to [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Creating a remote plugin :: Apache Hop</title> <meta name="description" content="This guide is to help you set up and start development on a plugin that will not be included in the Hop repository. For more information on plugin types and how to add them to the Hop repository check out the plugin development guide."> <meta name="generator" content="Anto [...]
             &lt;groupId&gt;org.apache.hop&lt;/groupId&gt;
             &lt;artifactId&gt;hop-core&lt;/artifactId&gt;
             &lt;version&gt;${hop.version}&lt;/version&gt;
diff --git a/dev-manual/latest/svg-files.html b/dev-manual/latest/svg-files.html
index c1634a9..7b018d2 100644
--- a/dev-manual/latest/svg-files.html
+++ b/dev-manual/latest/svg-files.html
@@ -1,4 +1,4 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>SVG Files :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/dev-manual/latest/svg-files.html"> <meta name="description" content="When adding or modifying SVG files in the Apache Hop project we kindly ask developers to keep the concerns below in mind."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href=".. [...]
+<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>SVG Files :: Apache Hop</title> <meta name="description" content="When adding or modifying SVG files in the Apache Hop project we kindly ask developers to keep the concerns below in mind."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="SVG Files :: Apache [...]
             (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
diff --git a/manual/0/best-practices/index.html b/manual/0/best-practices/index.html
deleted file mode 100644
index 924d427..0000000
--- a/manual/0/best-practices/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Best practices :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/best-practices/index.html"> <meta name="description" content="Apache Hop best practices are a set of guiding principles. These best practices apply to the way you design, run, test, deploy and maintain a Hop project."> <meta name="generator" content="A [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/concepts.html b/manual/0/concepts.html
deleted file mode 100644
index 723c05e..0000000
--- a/manual/0/concepts.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Concepts :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/concepts.html"> <meta name="description" content="Hop comes with a number of concepts: a variety of tools, a large number of metadata types, projects and enviromments. At the core of literally everything in Hop is metadata."> <meta name="generator" content=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases.html b/manual/0/database/databases.html
deleted file mode 100644
index b59da7c..0000000
--- a/manual/0/database/databases.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Database Plugins :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases.html"> <meta name="description" content="Hop supports tens of databases out of the box. If your preferred database has no specific support, you can probably still connect through a generic database connection."> <meta name="generat [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/as400.html b/manual/0/database/databases/as400.html
deleted file mode 100644
index 88a6845..0000000
--- a/manual/0/database/databases/as400.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>AS400 :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/as400.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="AS400 :: Apache Hop"> <meta property="og:description" content="Apache Hop - Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/cache.html b/manual/0/database/databases/cache.html
deleted file mode 100644
index c53b9c4..0000000
--- a/manual/0/database/databases/cache.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Cache :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/cache.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Cache :: Apache Hop"> <meta property="og:description" content="Apache Hop - Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/clickhouse.html b/manual/0/database/databases/clickhouse.html
deleted file mode 100644
index d9b30e9..0000000
--- a/manual/0/database/databases/clickhouse.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>ClickHouse :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/clickhouse.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="ClickHouse :: Apache Hop"> <meta property="og:description" content=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/db2.html b/manual/0/database/databases/db2.html
deleted file mode 100644
index d7b29e2..0000000
--- a/manual/0/database/databases/db2.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>DB2 :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/db2.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="DB2 :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orch [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/derby.html b/manual/0/database/databases/derby.html
deleted file mode 100644
index bf78c72..0000000
--- a/manual/0/database/databases/derby.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Derby :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/derby.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Apache Derby :: Apache Hop"> <meta property="og:description" content="A [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/doris.html b/manual/0/database/databases/doris.html
deleted file mode 100644
index caab329..0000000
--- a/manual/0/database/databases/doris.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Doris :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/doris.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Apache Doris :: Apache Hop"> <meta property="og:description" content="A [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/exasol.html b/manual/0/database/databases/exasol.html
deleted file mode 100644
index 7cd1481..0000000
--- a/manual/0/database/databases/exasol.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Exasol :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/exasol.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Exasol :: Apache Hop"> <meta property="og:description" content="Apache Hop - [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/firebird.html b/manual/0/database/databases/firebird.html
deleted file mode 100644
index 2b2e099..0000000
--- a/manual/0/database/databases/firebird.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Firebird :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/firebird.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Firebird :: Apache Hop"> <meta property="og:description" content="Apache [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/googlebigquery.html b/manual/0/database/databases/googlebigquery.html
deleted file mode 100644
index aefd771..0000000
--- a/manual/0/database/databases/googlebigquery.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Google BigQuery :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/googlebigquery.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Google BigQuery :: Apache Hop"> <meta property="og:descript [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/greenplum.html b/manual/0/database/databases/greenplum.html
deleted file mode 100644
index e3eab83..0000000
--- a/manual/0/database/databases/greenplum.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Greenplum :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/greenplum.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Greenplum :: Apache Hop"> <meta property="og:description" content="Apa [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/h2.html b/manual/0/database/databases/h2.html
deleted file mode 100644
index e2f3fb0..0000000
--- a/manual/0/database/databases/h2.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>H2 :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/h2.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="H2 :: Apache Hop"> <meta property="og:description" content="Apache Hop - Hop Orchest [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/hypersonic.html b/manual/0/database/databases/hypersonic.html
deleted file mode 100644
index 44471be..0000000
--- a/manual/0/database/databases/hypersonic.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hypersonic :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/hypersonic.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Hypersonic :: Apache Hop"> <meta property="og:description" content=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/infinidb.html b/manual/0/database/databases/infinidb.html
deleted file mode 100644
index 7f49635..0000000
--- a/manual/0/database/databases/infinidb.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>InfiniDB :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/infinidb.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="InfiniDB :: Apache Hop"> <meta property="og:description" content="Apache [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/infobright.html b/manual/0/database/databases/infobright.html
deleted file mode 100644
index a3e5241..0000000
--- a/manual/0/database/databases/infobright.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Infobright DB :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/infobright.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Infobright DB :: Apache Hop"> <meta property="og:description" con [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/informix.html b/manual/0/database/databases/informix.html
deleted file mode 100644
index d727fe3..0000000
--- a/manual/0/database/databases/informix.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Informix :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/informix.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Informix :: Apache Hop"> <meta property="og:description" content="Apache [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/ingres.html b/manual/0/database/databases/ingres.html
deleted file mode 100644
index 5e545eb..0000000
--- a/manual/0/database/databases/ingres.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Ingres :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/ingres.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Ingres :: Apache Hop"> <meta property="og:description" content="Apache Hop - [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/interbase.html b/manual/0/database/databases/interbase.html
deleted file mode 100644
index 9b550d3..0000000
--- a/manual/0/database/databases/interbase.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>interbase :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/interbase.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="interbase :: Apache Hop"> <meta property="og:description" content="Apa [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/kingbasees.html b/manual/0/database/databases/kingbasees.html
deleted file mode 100644
index 45aeba2..0000000
--- a/manual/0/database/databases/kingbasees.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>kingbase es :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/kingbasees.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="kingbase es :: Apache Hop"> <meta property="og:description" content [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/mariadb.html b/manual/0/database/databases/mariadb.html
deleted file mode 100644
index 2491798..0000000
--- a/manual/0/database/databases/mariadb.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Mariadb :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/mariadb.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Mariadb :: Apache Hop"> <meta property="og:description" content="Apache Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/monetdb.html b/manual/0/database/databases/monetdb.html
deleted file mode 100644
index f4166b4..0000000
--- a/manual/0/database/databases/monetdb.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MonetDB :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/monetdb.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="MonetDB :: Apache Hop"> <meta property="og:description" content="Apache Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/mssql.html b/manual/0/database/databases/mssql.html
deleted file mode 100644
index 7c60406..0000000
--- a/manual/0/database/databases/mssql.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MS SqlServer :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/mssql.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="MS SqlServer :: Apache Hop"> <meta property="og:description" content="A [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/mssqlnative.html b/manual/0/database/databases/mssqlnative.html
deleted file mode 100644
index ddc7912..0000000
--- a/manual/0/database/databases/mssqlnative.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MS SqlServer (Native) :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/mssqlnative.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="MS SqlServer (Native) :: Apache Hop"> <meta property="og [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/mysql.html b/manual/0/database/databases/mysql.html
deleted file mode 100644
index 766ba0a..0000000
--- a/manual/0/database/databases/mysql.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MySql :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/mysql.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="MySql :: Apache Hop"> <meta property="og:description" content="Apache Hop - Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/netezza.html b/manual/0/database/databases/netezza.html
deleted file mode 100644
index 0af50e2..0000000
--- a/manual/0/database/databases/netezza.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Netezza :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/netezza.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Netezza :: Apache Hop"> <meta property="og:description" content="Apache Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/oracle.html b/manual/0/database/databases/oracle.html
deleted file mode 100644
index 4e8dcb8..0000000
--- a/manual/0/database/databases/oracle.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Oracle :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/oracle.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Oracle :: Apache Hop"> <meta property="og:description" content="Apache Hop - [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/oraclerdb.html b/manual/0/database/databases/oraclerdb.html
deleted file mode 100644
index 3d1c78a..0000000
--- a/manual/0/database/databases/oraclerdb.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Oracle RDB :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/oraclerdb.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Oracle RDB :: Apache Hop"> <meta property="og:description" content="A [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/postgresql.html b/manual/0/database/databases/postgresql.html
deleted file mode 100644
index 88e1614..0000000
--- a/manual/0/database/databases/postgresql.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>PostgreSQL :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/postgresql.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="PostgreSQL :: Apache Hop"> <meta property="og:description" content=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/redshift.html b/manual/0/database/databases/redshift.html
deleted file mode 100644
index 5018099..0000000
--- a/manual/0/database/databases/redshift.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Redshift :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/redshift.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Redshift :: Apache Hop"> <meta property="og:description" content="Apache [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/sapdb.html b/manual/0/database/databases/sapdb.html
deleted file mode 100644
index 35a3263..0000000
--- a/manual/0/database/databases/sapdb.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MaxDB (SAP DB) :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/sapdb.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="MaxDB (SAP DB) :: Apache Hop"> <meta property="og:description" conten [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/snowflake.html b/manual/0/database/databases/snowflake.html
deleted file mode 100644
index e774693..0000000
--- a/manual/0/database/databases/snowflake.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Snowflake :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/snowflake.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Snowflake :: Apache Hop"> <meta property="og:description" content="Apa [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/sqlbase.html b/manual/0/database/databases/sqlbase.html
deleted file mode 100644
index 9b9b8ec..0000000
--- a/manual/0/database/databases/sqlbase.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Gupta SQLBase :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/sqlbase.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Gupta SQLBase :: Apache Hop"> <meta property="og:description" conten [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/sqlite.html b/manual/0/database/databases/sqlite.html
deleted file mode 100644
index 6ab8715..0000000
--- a/manual/0/database/databases/sqlite.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>SqLite :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/sqlite.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="SqLite :: Apache Hop"> <meta property="og:description" content="Apache Hop - [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/sybase.html b/manual/0/database/databases/sybase.html
deleted file mode 100644
index 1caedd0..0000000
--- a/manual/0/database/databases/sybase.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Sybase :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/sybase.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Sybase :: Apache Hop"> <meta property="og:description" content="Apache Hop - [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/sybaseiq.html b/manual/0/database/databases/sybaseiq.html
deleted file mode 100644
index ab4fada..0000000
--- a/manual/0/database/databases/sybaseiq.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Sybase IQ :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/sybaseiq.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Sybase IQ :: Apache Hop"> <meta property="og:description" content="Apac [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/teradata.html b/manual/0/database/databases/teradata.html
deleted file mode 100644
index 00ef289..0000000
--- a/manual/0/database/databases/teradata.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Teradata :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/teradata.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Teradata :: Apache Hop"> <meta property="og:description" content="Apache [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/universe.html b/manual/0/database/databases/universe.html
deleted file mode 100644
index 7edb90e..0000000
--- a/manual/0/database/databases/universe.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>IBM Universe :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/universe.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="IBM Universe :: Apache Hop"> <meta property="og:description" content [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/vectorwise.html b/manual/0/database/databases/vectorwise.html
deleted file mode 100644
index f49c229..0000000
--- a/manual/0/database/databases/vectorwise.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Vectorwise :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/vectorwise.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Vectorwise :: Apache Hop"> <meta property="og:description" content=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/database/databases/vertica.html b/manual/0/database/databases/vertica.html
deleted file mode 100644
index 566ccfd..0000000
--- a/manual/0/database/databases/vertica.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Vertica :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/database/databases/vertica.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Vertica :: Apache Hop"> <meta property="og:description" content="Apache Ho [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/faq/faq.html b/manual/0/faq/faq.html
deleted file mode 100644
index cef697f..0000000
--- a/manual/0/faq/faq.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Frequently Asked Questions :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/faq/faq.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Frequently Asked Questions :: Apache Hop"> <meta property="og:description" co [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-concepts.html b/manual/0/getting-started/hop-concepts.html
deleted file mode 100644
index 24a7542..0000000
--- a/manual/0/getting-started/hop-concepts.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Concepts :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-concepts.html"> <link rel="prev" href="hop-what-is-hop.html"> <link rel="next" href="hop-download-install.html"> <meta name="description" content="Getting Started (2/8): before going into the details of workflows and pipelines, we&#x2 [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-download-install.html b/manual/0/getting-started/hop-download-install.html
deleted file mode 100644
index 6554241..0000000
--- a/manual/0/getting-started/hop-download-install.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Download and Install Hop :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-download-install.html"> <link rel="prev" href="hop-concepts.html"> <link rel="next" href="hop-tools.html"> <meta name="description" content="Getting Started (3/8): Installing Hop is as easy and accessible as possible: down [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-gui-pipelines.html b/manual/0/getting-started/hop-gui-pipelines.html
deleted file mode 100644
index 7375fa8..0000000
--- a/manual/0/getting-started/hop-gui-pipelines.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipelines :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-gui-pipelines.html"> <link rel="prev" href="hop-gui.html"> <link rel="next" href="hop-gui-workflows.html"> <meta name="description" content="Getting Started (6/8): Pipelines are one of the two main file types in Hop. Learn how to add tra [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-gui-workflows.html b/manual/0/getting-started/hop-gui-workflows.html
deleted file mode 100644
index e391906..0000000
--- a/manual/0/getting-started/hop-gui-workflows.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Workflows :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-gui-workflows.html"> <link rel="prev" href="hop-gui-pipelines.html"> <link rel="next" href="hop-next-steps.html"> <meta name="description" content="Getting Started (7/8): Workflows in Hop are where you&#x27;ll do most of the orchestratio [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-gui.html b/manual/0/getting-started/hop-gui.html
deleted file mode 100644
index 13da8f1..0000000
--- a/manual/0/getting-started/hop-gui.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Gui :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-gui.html"> <link rel="prev" href="hop-tools.html"> <link rel="next" href="hop-gui-pipelines.html"> <meta name="description" content="Getting Started (5/8): Hop Gui is Hop&#x27;s visual development environment where you design, run and debu [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-next-steps.html b/manual/0/getting-started/hop-next-steps.html
deleted file mode 100644
index 37cf704..0000000
--- a/manual/0/getting-started/hop-next-steps.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Next Steps :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-next-steps.html"> <link rel="prev" href="hop-gui-workflows.html"> <link rel="next" href="../concepts.html"> <meta name="description" content="Getting Started (8/8): You now know the basic Hop terminology and tools, and you&#x27;ve creat [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-tools.html b/manual/0/getting-started/hop-tools.html
deleted file mode 100644
index 50ff929..0000000
--- a/manual/0/getting-started/hop-tools.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Tools :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-tools.html"> <link rel="prev" href="hop-download-install.html"> <link rel="next" href="hop-gui.html"> <meta name="description" content="Getting Started (4/8): Hop comes with a number of GUI and command line tools to not only design and r [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/hop-what-is-hop.html b/manual/0/getting-started/hop-what-is-hop.html
deleted file mode 100644
index 39fda81..0000000
--- a/manual/0/getting-started/hop-what-is-hop.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>What is Apache Hop? :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/hop-what-is-hop.html"> <link rel="prev" href="index.html"> <link rel="next" href="hop-concepts.html"> <meta name="description" content="Getting Started (1/8): before we&#x27;re diving into Hop, we&#x27;ll have a quick look at the v [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/getting-started/index.html b/manual/0/getting-started/index.html
deleted file mode 100644
index 6cd7632..0000000
--- a/manual/0/getting-started/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Getting Started :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/getting-started/index.html"> <link rel="prev" href="../index.html"> <link rel="next" href="hop-what-is-hop.html"> <meta name="description" content="The Apache Hop Getting Started guide walks new Hop users through the Hop concepts and the bare necessit [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/file-dialog.html b/manual/0/hop-gui/file-dialog.html
deleted file mode 100644
index 78147c1..0000000
--- a/manual/0/hop-gui/file-dialog.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop File Dialog :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/file-dialog.html"> <meta name="description" content="Hop Gui&#x27;s file dialog is a powerful tool that not only lets you browse for files and folders, but also shows a lot of metadata about files, allows you to create bookmarks etc."> <meta n [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/hop-gui-git.html b/manual/0/hop-gui/hop-gui-git.html
deleted file mode 100644
index d515ae1..0000000
--- a/manual/0/hop-gui/hop-gui-git.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Working with git :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/hop-gui-git.html"> <meta name="description" content="Version control is an important aspect of any serious data orchestration project.. Hop&#x27;s file explorer perspective offers the basic functionality to manage your work in git: pull, push [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/hop-gui-popup-dialog.html b/manual/0/hop-gui/hop-gui-popup-dialog.html
deleted file mode 100644
index 80e6a22..0000000
--- a/manual/0/hop-gui/hop-gui-popup-dialog.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Gui Popup (Context) Dialog :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/hop-gui-popup-dialog.html"> <meta name="description" content="The Hop Gui popup dialog is a contextual dialog that allows you to perform a lot of operations on metadata, workflows and pipelines."> <meta name="generator" content= [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/hop-web.html b/manual/0/hop-gui/hop-web.html
deleted file mode 100644
index 4d35d07..0000000
--- a/manual/0/hop-gui/hop-web.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Web :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/hop-web.html"> <meta name="description" content="Hop Web is a browser based alternative for desktop Hop Gui. Hop Web offers exactly the same functionality as the desktop client, you&#x27;ll hardly notice any difference."> <meta name="generator" conten [...]
-22-Apr-2021 18:13:39.790 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
-22-Apr-2021 18:13:39.797 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [8319] milliseconds
-2021/04/22 18:14:37 - Hop - Projects enabled
-2021/04/22 18:14:37 - Hop - Enabling project : 'default'</code></pre> </div> </div> <div class="paragraph"> <p>Once your container has started, Hop Web is available at <a href="http://localhost:8080/ui" class="bare">http://localhost:8080/ui</a>. You&#8217;ll feel right at home!</p> </div> <div class="paragraph"> <p><span class="image"><img src="../_images/hop-web.png" alt="Hop Web" width="90%"></span></p> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/index.html b/manual/0/hop-gui/index.html
deleted file mode 100644
index 6aabb68..0000000
--- a/manual/0/hop-gui/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Gui :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/index.html"> <meta name="description" content="Hop Gui is Hop&#x27;s visual development environment where you will mainly design, run and debug workflows and pipelines, but Hop Gui has a lot more to offer: you can configure all of your metadata items  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspective-data-orchestration.html b/manual/0/hop-gui/perspective-data-orchestration.html
deleted file mode 100644
index d8f7af2..0000000
--- a/manual/0/hop-gui/perspective-data-orchestration.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspective-data-orchestration.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspective-file-explorer.html b/manual/0/hop-gui/perspective-file-explorer.html
deleted file mode 100644
index 7552101..0000000
--- a/manual/0/hop-gui/perspective-file-explorer.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspective-file-explorer.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content="Apa [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspective-metadata.html b/manual/0/hop-gui/perspective-metadata.html
deleted file mode 100644
index 3f59949..0000000
--- a/manual/0/hop-gui/perspective-metadata.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspective-metadata.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content="Apache H [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspective-neo4j.html b/manual/0/hop-gui/perspective-neo4j.html
deleted file mode 100644
index 10b4889..0000000
--- a/manual/0/hop-gui/perspective-neo4j.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspective-neo4j.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content="Apache Hop  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspective-plugin.html b/manual/0/hop-gui/perspective-plugin.html
deleted file mode 100644
index 201eca1..0000000
--- a/manual/0/hop-gui/perspective-plugin.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspective-plugin.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content="Apache Hop [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspective-search.html b/manual/0/hop-gui/perspective-search.html
deleted file mode 100644
index bd4c3b1..0000000
--- a/manual/0/hop-gui/perspective-search.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspective-search.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" content="Apache Hop [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/perspectives.html b/manual/0/hop-gui/perspectives.html
deleted file mode 100644
index 58c47e9..0000000
--- a/manual/0/hop-gui/perspectives.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Gui Perspectives :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/perspectives.html"> <meta name="description" content="Hop Gui provides a number of perspectives for a variety of tasks. You&#x27;ll spend most of your time in the data orchestration perspective, building workflows and pipelines, but other [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-gui/shortcuts.html b/manual/0/hop-gui/shortcuts.html
deleted file mode 100644
index b787666..0000000
--- a/manual/0/hop-gui/shortcuts.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Shortcuts :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/shortcuts.html"> <meta name="description" content="A lot of actions in Hop can be performed significantly faster through keyboard shortcuts. This page provides an overview of all the available keyboard shortcuts in Hop Gui."> <meta name="generat [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-run/index.html b/manual/0/hop-run/index.html
deleted file mode 100644
index ea30aa6..0000000
--- a/manual/0/hop-run/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Run :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-run/index.html"> <meta name="description" content="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 &#x60;hop-run.sh&#x60; [...]
-                    [-j=&lt;projectOption&gt;] [-l=&lt;level&gt;]
-                    [-r=&lt;runConfigurationName&gt;] [-p=&lt;parameters&gt;[,
-                    &lt;parameters&gt;...]]... [-s=&lt;systemProperties&gt;[,
-                    &lt;systemProperties&gt;...]]...
-  -e, --environment=&lt;environmentOption&gt;
-                          The name of the lifecycle environment to use
-  -f, --file=&lt;filename&gt;   The filename of the workflow or pipeline to run
-  -h, --help              Displays this help message and quits.
-  -j, --project=&lt;projectOption&gt;
-                          The name of the project to use
-  -l, --level=&lt;level&gt;     The debug level, one of NONE, MINIMAL, BASIC, DETAILED,
-                            DEBUG, ROWLEVEL
-  -o, --printoptions      Print the used options
-  -p, --parameters=&lt;parameters&gt;[,&lt;parameters&gt;...]
-                          A comma separated list of PARAMETER=VALUE pairs
-  -r, --runconfig=&lt;runConfigurationName&gt;
-                          The name of the Run Configuration to use
-  -s, --system-properties=&lt;systemProperties&gt;[,&lt;systemProperties&gt;...]
-                          A comma separated list of KEY=VALUE pairs</code></pre> </div> </div> <div class="paragraph"> <p>The available options are listed in more detail in the table below:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Short</th> <th class="tableblock halign-left valign-top">Extended</th> <th class="tableblock halign-left valign-top">D [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-search/index.html b/manual/0/hop-search/index.html
deleted file mode 100644
index faf6b85..0000000
--- a/manual/0/hop-search/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Search :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-search/index.html"> <meta name="description" content="Hop Search is a command line tool which allows you to search in your projects. It&#x27;s particularly useful if you&#x27;re working on a remote server over a ssh connection and you need to find a ce [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-server/async-web-service.html b/manual/0/hop-server/async-web-service.html
deleted file mode 100644
index 5031e97..0000000
--- a/manual/0/hop-server/async-web-service.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Asynchronous Web Service :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-server/async-web-service.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Asynchronous Web Service :: Apache Hop"> <meta property="o [...]
-  --user cluster:cluster \
-  --request POST \
-  -o async-run.json \
-  -H "Content-Type: application/json" \
-  --data-binary '@document.json' \
-  'http://localhost:8282/hop/asyncRun/?service=dataload&amp;MAX=50000000'</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_query_status"><a class="anchor" href="#_query_status"></a>Query Status</h3> <div class="paragraph"> <p>You can call method <code>hop/asyncStatus</code> with as arguments the service name and ID of the executing workflow: <code>hop/asyncStatus?service=&lt;name&gt;&amp;id=&lt;id&gt;</code>.</p> </div> <div class="paragraph"> <p>The variables that are spec [...]
-curl --user cluster:cluster \
-     --request GET \
-     -o - \
-     'http://localhost:8282/hop/asyncStatus/?service=dataload&amp;id='$ID</code></pre> </div> </div> <div class="paragraph"> <p>The ID of the executing asynchronous web service is the same as the ID of the executing workflow. This means you can query the workflow itself as well with the <code>hop/getWorkflowStatus</code> service. The output of that service can be given in HTML (default), XML (parameter <code>&amp;xml=Y</code>) or JSON (parameter <code>&amp;json=Y</code>). See also: <a hr [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-server/index.html b/manual/0/hop-server/index.html
deleted file mode 100644
index 6623417..0000000
--- a/manual/0/hop-server/index.html
+++ /dev/null
@@ -1,192 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Server :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-server/index.html"> <meta name="description" content="Hop Server is a lightweight server to run workflows and pipelines with remote run configuration as well as through a number of REST services."> <meta name="generator" content="Antora 3.0.1"> <link r [...]
-                    [-j=&lt;projectOption&gt;] [-l=&lt;level&gt;] [-p=&lt;password&gt;]
-                    [-ps=&lt;pipelineName&gt;] [-u=&lt;username&gt;] [-ws=&lt;workflowName&gt;]
-                    [-s=&lt;systemProperties&gt;[,&lt;systemProperties&gt;...]]...
-                    &lt;parameters&gt;...
-      &lt;parameters&gt;...   One XML configuration file or a hostname and port
-  -e, --environment=&lt;environmentOption&gt;
-                        The name of the lifecycle environment to use
-      -gs, --general-status
-                        List the general status of the server
-      -id=&lt;id&gt;          Specify the ID of the pipeline or workflow to query
-  -j, --project=&lt;projectOption&gt;
-                        The name of the project to use
-  -k, --kill            Stop the running hopServer server.  This is only allowed
-                          when using the hostname/port form of the command. Use the
-                          -s and -u options to authenticate
-  -l, --level=&lt;level&gt;   The debug level, one of NONE, MINIMAL, BASIC, DETAILED,
-                          DEBUG, ROWLEVEL
-  -p, --password=&lt;password&gt;
-                        The server password.  Required for administrative operations
-                          only, not for starting the server.
-      -ps, --pipeline-status=&lt;pipelineName&gt;
-                        List the status of the pipeline with this name (also specify
-                          the -id option)
-  -s, --system-properties=&lt;systemProperties&gt;[,&lt;systemProperties&gt;...]
-                        A comma separated list of KEY=VALUE pairs
-  -u, --userName=&lt;username&gt;
-                        The server user name.  Required for administrative
-                          operations only, not for starting the server.
-      -ws, --workflow-status=&lt;workflowName&gt;
-                        List the status of the workflow with this name (also specify
-                          the -id option)
-
-Example: hop-server.sh 0.0.0.0 8080
-Example: hop-server.sh 192.168.1.221 8081
-
-Example: hop-server.sh -e aura-gcp gs://apachehop/hop-server-config.xml
-Example: hop-server.sh 127.0.0.1 8080 --kill --userName cluster --password cluster</code></pre> </div> </div> <div class="paragraph"> <p>The available Hop Server options are:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Short</th> <th class="tableblock halign-left valign-top">Extended</th> <th class="tableblock halign-left valign-top">Description</th> [...]
-
-  &lt;hop-server&gt;
-    &lt;name&gt;server-8181&lt;/name&gt;
-    &lt;hostname&gt;localhost&lt;/hostname&gt;
-    &lt;port&gt;8181&lt;/port&gt;
-  &lt;/hop-server&gt;
-
-  &lt;!-- Join the web server thread and wait until it's finished.
-       The default is true
-  --&gt;
-  &lt;joining&gt;true&lt;/joining&gt;
-
-  &lt;!-- The maximum number of log lines kept in memory by the server.
-       The default is 0 which means: keep all lines
-   --&gt;
-  &lt;max_log_lines&gt;0&lt;/max_log_lines&gt;
-
-  &lt;!-- The time (in minutes) it takes for a log line to be cleaned up in memory.
-       The default is 0 which means: never clean up log lines
-  --&gt;
-  &lt;max_log_timeout_minutes&gt;1440&lt;/max_log_timeout_minutes&gt;
-
-  &lt;!-- The time (in minutes) it takes for a pipeline or workflow execution to be removed from the server status.
-       The default is 0 which means: never clean executions
-  --&gt;
-  &lt;object_timeout_minutes&gt;1440&lt;/object_timeout_minutes&gt;
-
-  &lt;!-- The folder to read metadata objects from so that web services and database connections for sequences can be found.
-       The default is that no metadata is configured: remotely executed pipelines and workflows will have their own metadata.
-  --&gt;
-  &lt;metadata_folder&gt;&lt;/metadata_folder&gt;
-
-&lt;/hop-server-config&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Example startup commands with a configuration file are:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-shell hljs" data-lang="shell">hop-server.sh /foo/bar/hop-server-config.xml</code></pre> </div> </div> <div class="paragraph"> <p>Or with a remote configuration file:</p> </div> <div class="listingblock"> <div class="content"> <pre class=" [...]
-#
-openssl genrsa -des3 -out hop.key
-
-# Make a new certificate
-#
-openssl req -new -x509 -key hop.key -out hop.crt
-
-# Create a PKCS12 keystore and import it into a JKS keystore
-# The resulting file is: keystore
-#
-keytool -keystore keystore -import -alias hop -file hop.crt -trustcacerts
-openssl req -new -key hop.key -out hop.csr
-openssl pkcs12 -inkey hop.key -in hop.crt -export -out hop.pkcs12
-keytool -importkeystore -srckeystore hop.pkcs12 -srcstoretype PKCS12 -destkeystore keystore</code></pre> </div> </div> <div class="paragraph"> <p>Here is an example of the information to include in your server XML:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;hop-server-config&gt;
-&lt;hop-server&gt;
-...
-
-    &lt;sslConfig&gt;
-      &lt;keyStore&gt;/path/to/keystore&lt;/keyStore&gt;
-      &lt;keyStorePassword&gt;password&lt;/keyStorePassword&gt;
-      &lt;keyPassword&gt;keyPassword&lt;/keyPassword&gt;
-    &lt;/sslConfig&gt;
-
-    &lt;!-- Add the following line to support querying over https --&gt;
-    &lt;sslMode&gt;Y&lt;/sslMode&gt;
-  &lt;/hop-server&gt;
-  ...
-&lt;/hop-server-config&gt;</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_start_hop_server_with_docker"><a class="anchor" href="#_start_hop_server_with_docker"></a>Start Hop Server with docker</h3> <div class="paragraph"> <p>It&#8217;s often very convenient to run a Hop docker container since it has all the required software automatically delivered. For a complete description of the standard Hop docker container see the <a href="https://hop.apache.org/tech-manual/latest/d [...]
-  -p 8080:8080 \
-  -e HOP_SERVER_PORT=8080 \
-  -e HOP_SERVER_USER=username \
-  -e HOP_SERVER_USER=password \
-  apache/hop</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_stopping_hop_server"><a class="anchor" href="#_stopping_hop_server"></a>Stopping Hop Server</h3> <div class="paragraph"> <p>In a testing setup where Hop Server was started from a terminal, the process can be terminated through <code>CTRL-C</code>.</p> </div> <div class="paragraph"> <p>In headless environments, the same hop-server command used to start the server can be used to stop it:</p> </div> <div class="list [...]
-2020/06/20 18:35:12 - HopServer - Created listener for webserver @ address : localhost:8081</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_query_a_server_from_the_command_line"><a class="anchor" href="#_query_a_server_from_the_command_line"></a>Query a server from the command line</h2> <div class="sectionbody"> <div class="paragraph"> <p>You can query the new server with another hop-server command:</p> </div> <div class="listingblock"> <div class="content"> <pre cl [...]
-Pipelines: 0 found.
-
-Workflows: 0 found.</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_query_a_pipeline_from_the_command_line"><a class="anchor" href="#_query_a_pipeline_from_the_command_line"></a>Query a pipeline from the command line</h2> <div class="sectionbody"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-log hljs" data-lang="log">sh hop-server.sh -id 375c9113-b538-4559-8e98-ee02a435fbb9 -u cluster -p cluster -ps servic [...]
-2021/10/01 13:27:04 - HopServer - Enabling project 'my-project'
-  ID: 375c9113-b538-4559-8e98-ee02a435fbb9
-      Name:     service-example
-      Status:   Finished
-      Start:    2021/10/01 13:26:45.128
-      End:      2021/10/01 13:26:45.220
-      Log date: 2021/10/01 13:27:04.363
-      Errors:   0
-      Transforms: 4 found.
-        1
-          Name:      a,b
-          Copy:      0
-          Status:    Finished
-          Input:     0
-          Output:    0
-          Read:      1
-          Written:   1
-          Rejected:  0
-          Updated:   0
-          Errors:    0
-        2
-...
-        3
-...
-        4
-...
-      Logging:
-          2021/10/01 13:26:45 - service-example - Executing this pipeline using the Local Pipeline Engine with run configuration 'local'
-          2021/10/01 13:26:45 - service-example - Execution started for pipeline [service-example]
-          2021/10/01 13:26:45 - a,b.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
-          2021/10/01 13:26:45 - c,d.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
-          2021/10/01 13:26:45 - build JSON.0 - Finished processing (I=0, O=1, R=1, W=1, U=0, E=0)
-          2021/10/01 13:26:45 - OUTPUT.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
-          2021/10/01 13:26:45 - service-example - Pipeline duration : 0.092 seconds [  0.092" ]
-          2021/10/01 13:26:45 - service-example - Execution finished on a local pipeline engine with run configuration 'local'</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_query_a_workflow_from_the_command_line"><a class="anchor" href="#_query_a_workflow_from_the_command_line"></a>Query a workflow from the command line</h2> <div class="sectionbody"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-log hljs" [...]
-  ID: e24b4549-edf0-4d77-987e-f103b630b4cc
-      Name:     test-workflow
-      Status:   Finished
-      Log date: 2021/10/01 14:27:45.891
-      Result:   true
-      Errors:   0
-      Logging:
-          2021/10/01 14:27:45 - test-workflow - Start of workflow execution
-          2021/10/01 14:27:46 - test-workflow - Starting action [sample]
-          2021/10/01 14:27:46 - sample - Using run configuration [remote-8181]
-          2021/10/01 14:27:46 - sample - Executing this pipeline using the Remote Pipeline Engine with run configuration 'remote-8181'
-          2021/10/01 14:27:46 - sample - 2021/10/01 14:27:46 - sample - Executing this pipeline using the Local Pipeline Engine with run configuration 'local'
-          2021/10/01 14:27:46 - sample - 2021/10/01 14:27:46 - sample - Execution started for pipeline [sample]
-          2021/10/01 14:27:47 - sample - 2021/10/01 14:27:47 - 1M.0 - Finished processing (I=0, O=0, R=0, W=1000000, U=0, E=0)
-          2021/10/01 14:27:47 - sample - 2021/10/01 14:27:47 - someString,someInt.0 - Finished processing (I=0, O=0, R=1000000, W=1000000, U=0, E=0)
-          2021/10/01 14:27:47 - sample - 2021/10/01 14:27:47 - id.0 - Finished processing (I=0, O=0, R=1000000, W=1000000, U=0, E=0)
-          2021/10/01 14:27:47 - sample - 2021/10/01 14:27:47 - sample - Pipeline duration : 0.977 seconds [  0.977" ]
-          2021/10/01 14:27:47 - sample - 2021/10/01 14:27:47 - sample - Execution finished on a local pipeline engine with run configuration 'local'
-          2021/10/01 14:27:47 - sample - Execution finished on a remote pipeline engine with run configuration 'remote-8181'
-          2021/10/01 14:27:48 - test-workflow - Starting action [true]
-          2021/10/01 14:27:48 - test-workflow - Starting action [false]
-          2021/10/01 14:27:48 - test-workflow - Starting action [log-something]
-          2021/10/01 14:27:48 - Subject - Message
-          2021/10/01 14:27:48 - test-workflow - Starting action [Success]
-          2021/10/01 14:27:48 - test-workflow - Finished action [Success] (result=[true])
-          2021/10/01 14:27:48 - test-workflow - Finished action [log-something] (result=[true])
-          2021/10/01 14:27:48 - test-workflow - Finished action [false] (result=[true])
-          2021/10/01 14:27:48 - test-workflow - Finished action [true] (result=[true])
-          2021/10/01 14:27:48 - test-workflow - Finished action [sample] (result=[true])
-          2021/10/01 14:27:48 - test-workflow - Workflow execution finished
-          2021/10/01 14:27:48 - test-workflow - Workflow duration : 2.715 seconds [  2.714" ]</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_connect_to_the_hop_server_ui"><a class="anchor" href="#_connect_to_the_hop_server_ui"></a>Connect to the Hop Server UI</h2> <div class="sectionbody"> <div class="paragraph"> <p>To connect to the previously started server, point your browser to <code><a href="http://localhost:8081" class="bare">http://localhost:8081</a></code>. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-server/rest-api.html b/manual/0/hop-server/rest-api.html
deleted file mode 100644
index f83cb29..0000000
--- a/manual/0/hop-server/rest-api.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Server Web Services Overview :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-server/rest-api.html"> <meta name="description" content="Hop Server has a rich set of web services that can be used to query and manage the server&#x27;s status, or to manage pipeline and workflow execution details."> <meta name=" [...]
-&lt;webresult&gt;
-    &lt;result&gt;OK&lt;/result&gt;
-    &lt;message&gt;file:///tmp/export_70eb8ef1-9721-4cf5-afa3-940cd0f771d9.zip&lt;/message&gt;
-    &lt;id/&gt;
-&lt;/webresult&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_addpipeline"><a class="anchor" href="#_addpipeline"></a>addPipeline</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>addPipeline</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Add a pipeline for execution</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>hop/addPipeline</code></p> </dd> <dt class="hdlist1">parameters</dt> <dd> <div clas [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;Pause pipeline&lt;/TITLE&gt;
-	&lt;META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=&lt;NAME&gt;&amp;id=&lt;ID&gt;"&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H1&gt;Pipeline [tmp] : pause requested.&lt;/H1&gt;
-	&lt;a href="/hop/pipelineStatus?name=&lt;NAME&gt;&amp;id=&lt;ID&gt;"&gt;Back to the pipeline status page&lt;/a&gt;
-	&lt;p&gt;
-		&lt;p&gt;
-&lt;/BODY&gt;
-
-&lt;/HTML&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_prepare_execution"><a class="anchor" href="#_prepare_execution"></a>Prepare Execution</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>prepareExec</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Prepare the execution of a pipeline</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/prepareExec</code></p> </dd> <dt class="hdlist1">parameter [...]
-&lt;webresult&gt;
-    &lt;result&gt;OK&lt;/result&gt;
-    &lt;message/&gt;
-    &lt;id/&gt;
-&lt;/webresult&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_register_pipeline"><a class="anchor" href="#_register_pipeline"></a>Register Pipeline</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>registerPipeline</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Register a pipeline for execution</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>hop/registerPipeline</code></p> </dd> <dt class="hdlist [...]
-&lt;pipeline&gt;
-  &lt;info&gt;
-    &lt;name&gt;generate_rows&lt;/name&gt;
-    &lt;name_sync_with_filename&gt;Y&lt;/name_sync_with_filename&gt;
-    &lt;description/&gt;
-    &lt;extended_description/&gt;
-    &lt;pipeline_version/&gt;
-    &lt;pipeline_type&gt;Normal&lt;/pipeline_type&gt;
-    &lt;parameters&gt;
-    &lt;/parameters&gt;
-    &lt;capture_transform_performance&gt;N&lt;/capture_transform_performance&gt;
-    &lt;transform_performance_capturing_delay&gt;1000&lt;/transform_performance_capturing_delay&gt;
-    &lt;transform_performance_capturing_size_limit&gt;100&lt;/transform_performance_capturing_size_limit&gt;
-    &lt;created_user&gt;-&lt;/created_user&gt;
-    &lt;created_date&gt;2022/02/03 13:47:49.645&lt;/created_date&gt;
-    &lt;modified_user&gt;-&lt;/modified_user&gt;
-    &lt;modified_date&gt;2022/02/03 13:47:49.645&lt;/modified_date&gt;
-    &lt;key_for_session_key&gt;H4sIAAAAAAAA/wMAAAAAAAAAAAA=&lt;/key_for_session_key&gt;
-    &lt;is_key_private&gt;N&lt;/is_key_private&gt;
-  &lt;/info&gt;
-  &lt;notepads&gt;
-  &lt;/notepads&gt;
-  &lt;order&gt;
-    &lt;hop&gt;
-      &lt;from&gt;Generate rows&lt;/from&gt;
-      &lt;to&gt;Delay row&lt;/to&gt;
-      &lt;enabled&gt;Y&lt;/enabled&gt;
-    &lt;/hop&gt;
-    &lt;hop&gt;
-      &lt;from&gt;Delay row&lt;/from&gt;
-      &lt;to&gt;result&lt;/to&gt;
-      &lt;enabled&gt;Y&lt;/enabled&gt;
-    &lt;/hop&gt;
-  &lt;/order&gt;
-  &lt;transform&gt;
-    &lt;name&gt;Delay row&lt;/name&gt;
-    &lt;type&gt;Delay&lt;/type&gt;
-    &lt;description/&gt;
-    &lt;distribute&gt;Y&lt;/distribute&gt;
-    &lt;custom_distribution/&gt;
-    &lt;copies&gt;1&lt;/copies&gt;
-    &lt;partitioning&gt;
-      &lt;method&gt;none&lt;/method&gt;
-      &lt;schema_name/&gt;
-    &lt;/partitioning&gt;
-    &lt;scaletime&gt;seconds&lt;/scaletime&gt;
-    &lt;timeout&gt;1&lt;/timeout&gt;
-    &lt;attributes/&gt;
-    &lt;GUI&gt;
-      &lt;xloc&gt;416&lt;/xloc&gt;
-      &lt;yloc&gt;96&lt;/yloc&gt;
-    &lt;/GUI&gt;
-  &lt;/transform&gt;
-  &lt;transform&gt;
-    &lt;name&gt;Generate rows&lt;/name&gt;
-    &lt;type&gt;RowGenerator&lt;/type&gt;
-    &lt;description/&gt;
-    &lt;distribute&gt;Y&lt;/distribute&gt;
-    &lt;custom_distribution/&gt;
-    &lt;copies&gt;1&lt;/copies&gt;
-    &lt;partitioning&gt;
-      &lt;method&gt;none&lt;/method&gt;
-      &lt;schema_name/&gt;
-    &lt;/partitioning&gt;
-    &lt;fields&gt;
-      &lt;field&gt;
-        &lt;length&gt;-1&lt;/length&gt;
-        &lt;name&gt;value&lt;/name&gt;
-        &lt;precision&gt;-1&lt;/precision&gt;
-        &lt;set_empty_string&gt;N&lt;/set_empty_string&gt;
-        &lt;type&gt;String&lt;/type&gt;
-        &lt;nullif&gt;test&lt;/nullif&gt;
-      &lt;/field&gt;
-    &lt;/fields&gt;
-    &lt;interval_in_ms&gt;5000&lt;/interval_in_ms&gt;
-    &lt;last_time_field&gt;FiveSecondsAgo&lt;/last_time_field&gt;
-    &lt;never_ending&gt;N&lt;/never_ending&gt;
-    &lt;limit&gt;10000&lt;/limit&gt;
-    &lt;row_time_field&gt;now&lt;/row_time_field&gt;
-    &lt;attributes/&gt;
-    &lt;GUI&gt;
-      &lt;xloc&gt;160&lt;/xloc&gt;
-      &lt;yloc&gt;96&lt;/yloc&gt;
-    &lt;/GUI&gt;
-  &lt;/transform&gt;
-  &lt;transform&gt;
-    &lt;name&gt;result&lt;/name&gt;
-    &lt;type&gt;Dummy&lt;/type&gt;
-    &lt;description/&gt;
-    &lt;distribute&gt;Y&lt;/distribute&gt;
-    &lt;custom_distribution/&gt;
-    &lt;copies&gt;1&lt;/copies&gt;
-    &lt;partitioning&gt;
-      &lt;method&gt;none&lt;/method&gt;
-      &lt;schema_name/&gt;
-    &lt;/partitioning&gt;
-    &lt;attributes/&gt;
-    &lt;GUI&gt;
-      &lt;xloc&gt;720&lt;/xloc&gt;
-      &lt;yloc&gt;96&lt;/yloc&gt;
-    &lt;/GUI&gt;
-  &lt;/transform&gt;
-  &lt;transform_error_handling&gt;
-  &lt;/transform_error_handling&gt;
-  &lt;attributes/&gt;
-&lt;/pipeline&gt;
-  &lt;pipeline_execution_configuration&gt;
-    &lt;pass_export&gt;N&lt;/pass_export&gt;
-    &lt;parameters&gt;
-    &lt;/parameters&gt;
-    &lt;variables&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_AUDIT_FOLDER&lt;/name&gt;&lt;value&gt;/Users/hans/config/audit&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_AUTO_CREATE_CONFIG&lt;/name&gt;&lt;value&gt;Y&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_CONFIG_FOLDER&lt;/name&gt;&lt;value&gt;/Users/hans/config&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_DATASETS_FOLDER&lt;/name&gt;&lt;value&gt;/Users/hans/test/datasets&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_ENVIRONMENT_NAME&lt;/name&gt;&lt;value&gt;test1&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_METADATA_FOLDER&lt;/name&gt;&lt;value&gt;/Users/hans/test/metadata&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_PIPELINE_PAN_JVM_EXIT_CODE&lt;/name&gt;&lt;value/&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_PROJECTS&lt;/name&gt;&lt;value&gt;/Users/hans/tmp/&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_PROJECT_NAME&lt;/name&gt;&lt;value&gt;test&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;HOP_UNIT_TESTS_FOLDER&lt;/name&gt;&lt;value&gt;/Users/hans/test&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;NEO4J_CONNECTION&lt;/name&gt;&lt;value&gt;neo4j&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;PROJECT_HOME&lt;/name&gt;&lt;value&gt;/Users/hans/test&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;TEST&lt;/name&gt;&lt;value&gt;TEST&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;ftp.nonProxyHosts&lt;/name&gt;&lt;value&gt;local|*.local|169.254/16|*.169.254/16&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;http.nonProxyHosts&lt;/name&gt;&lt;value&gt;local|*.local|169.254/16|*.169.254/16&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;jdk.debug&lt;/name&gt;&lt;value&gt;release&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;native.encoding&lt;/name&gt;&lt;value&gt;UTF-8&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;p1&lt;/name&gt;&lt;value&gt;a&lt;/value&gt;&lt;/variable&gt;
-    &lt;variable&gt;&lt;name&gt;socksNonProxyHosts&lt;/name&gt;&lt;value&gt;local|*.local|169.254/16|*.169.254/16&lt;/value&gt;&lt;/variable&gt;
-    &lt;/variables&gt;
-    &lt;log_level&gt;Basic&lt;/log_level&gt;
-    &lt;log_file&gt;N&lt;/log_file&gt;
-    &lt;log_filename/&gt;
-    &lt;log_file_append&gt;N&lt;/log_file_append&gt;
-    &lt;create_parent_folder&gt;N&lt;/create_parent_folder&gt;
-    &lt;clear_log&gt;Y&lt;/clear_log&gt;
-    &lt;show_subcomponents&gt;Y&lt;/show_subcomponents&gt;
-    &lt;run_configuration&gt;local&lt;/run_configuration&gt;
-&lt;/pipeline_execution_configuration&gt;
-&lt;metastore_json&gt;H4sIAAAAAAAA/+1XbVPbOBD+Kxl/upshzQsUAt/SxBzchSRNTDudpuNRZNlRkSVXkgk5hv9+K0t+
-CSl3cDP37coH8Gq1evTs7rPqo6eIvCfSu/j66G3JephlU5QS78Lzjjyl2EjwmCbeBc8ZKww3IoLV
-GDFFjrxMiofdXEht/TdCaW539/pn77rw0wNzhpTaChmB2edY7jJNolZ/Tc4HKMaDU4TO4j45wese
-Qv3T9zgyJjyAjVzwuTnhCuIqe4QArJJGxH+gSlOewHpGpKZENUE50w1Smkh7H3uBzGId9AYGmMPK
-ydZzd7mqbwCmHLhxX5jlJpb39A08aUYY5aQNW9aw+BVsOae6rYnS9lNG61QVnLq/Hr3ldPb5cjL8
-wzcfEdJojRSpuc5YnlB+bUiqPY88yiPyEKA1IypDuLrHFkmyEYDPbjbhDp0QxkSpYJeBpbuXnZeS
-4lUMVYgcwiUX25ihO2LKoqgY3qAVaS3pOtfE3vR2Pp8tgmUYXN/4y2B4Mw/Hw2AYBl/mcHnvC4T4
-eDsL/HA4mYSX1/5kvATzFMzVzg+z2cQfTg/2Xc4WIz+8HvvT4Bp2LuCMWTiZffYXo+HSd1HmC3/p
-Lz75ofs9Dj/PFuPQeZgwy4+TcDSbTv1RYO/607gA5nncS3+xgHjL0ZV/Mwynwxuz5j0deSniOWK3
-kh1Ujvf0VFVaQjiRFPdhR6My5rNl8Btg/Tj5SWlkkLVEArF7JdLY8mKNvLUomMCIme83tOzZOSa9
-bnR6fox6+Lwun/cnx/3nJTS3N7GY/6+ht9TQBnHVrKMsKYQIMnQXM7FtM5FY3cGQN8QjidpYcE6w
-poLbFU7Eyfd2IlG2aaeg4cyaQfLbJhfUVAjIlZZwVCxk6pI2ztN01/olEi0u9AYE91dAFlNGHJJV
-5xa2q1XHQFx1jAKuOqbyljbou03Gih2ERS7kPWK5kRFmFXypkc5r9XZxFUozRkKAV6KDywmuCde2
-dj2UZYxiZG646nxXcM8jD1BBvUPVapmTPamWOTeUwCzLJXKsPII/lCdZ5Hy0v/TofSAoHVMJDM5d
-CL/wNWuapNlEYOdbsHGx6pifeyRXnViwqKDkvgu0fE9P77Ik6nbPTjmO7rJ4IJPjaNuFfwkAD1Yd
-0w1awnlAxpXIgjID6kMex0Qu6Z9OsnmerokMRRyaxMMR1hwj/TuSdc0MQWVMD0KsF0NfwjjbXAOd
-ErJht1aZnxdNO2JQSkQ1R4EKBCQrcWgesgNHU6F7JH9CkhYK5GrQ5rYYk6BPRGFJM8diIYkv52NB
-UqEL9smD0ZgQJFHkEpvQJtkwcktDqJFMiA5tHizYetH+3lu0WhRmgrGQ7nECVRNi9wKy+li8crKw
-fDS5t0MzArQW2v0jG49VK/cOqThyPQJFXvS5c5WWgzcyNylgwx8xIdEa4btQ2Yp6b2rQgLet5qy9
-pk1DqwElYZJTWJqgIm9SbBXQW/u7HTEJ0+bjUG3ENiwPraxaZAKSYKaEsyRIb4C8lID+41oIinpE
-hYIZ/IX1lQVWZmqfJyBHtXaQ/lapCqpVeLJda0v1pgUwWkqDfCIZ2ZUWNE3l3bIc24wUarqnsY/V
-S3pvkq4LuqR7JJ+dnJ2491pjxhfRvMYAcNdBuRYp3BOX1yxnZa6god1gLk53nEmRG0mtn8KvHuPr
-qH8cRYNujAupfXZAfb5XwHwI6uQsIG+7gJbvypqTCb2H545Sow3Bd8YBwD33ecE8xD9yquiBB3S6
-0kPGRuZ9Hxv1J+oA26iBICa6QubI2fevKH7O4VzAdNlZp7Vgukzg6eDsBSBVBCgCBaeflMrEn2e5
-AXEuBKsVvjHyS+8yWBO2qcBU8ERE64M5nyFAVH8iteO4vT/lm3OxejlUb4m3TspKXw4V4KUWbrZp
-/2/6tMT0uj4tvas+fZ0s/jvY/x3qb/Z91Y5ITDltJAAzoXJZvgWa/3U9GB/Fc2tcBXByoggUB9JC
-ljWkYK7zO7toJAlk3Xw8/QVlC+SCFRAAAA==
-&lt;/metastore_json&gt;
-&lt;/pipeline_configuration&gt;</code></pre> </div> </div> <div class="paragraph"> <p>The metastore_json is base64 encoded GZip content</p> </div> <div class="dlist"> <dl> <dt class="hdlist1">result</dt> <dd> <p>-</p> </dd> </dl> </div> </div> </div> <div class="sect1"> <h2 id="_register_workflow"><a class="anchor" href="#_register_workflow"></a>Register Workflow</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>registerWorkflow</p> </dd> <dt c [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;The pipeline was removed&lt;/TITLE&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H3&gt;The pipeline with name [&lt;NAME&gt;] and hopServer object id &lt;ID&gt; was removed from Hop
-		Server.&lt;/H3&gt;
-	&lt;a href="/hop/status"&gt;Back to the status page&lt;/a&gt;&lt;br&gt;
-	&lt;p&gt;
-&lt;/BODY&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_remove_workflow"><a class="anchor" href="#_remove_workflow"></a>Remove Workflow</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>removeWorkflow</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Remove a workflow from the server</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/removeWorkflow</code></p> </dd> <dt class="hdlist1">parameters< [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;The workflow was removed&lt;/TITLE&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H3&gt;The workflow with name [&lt;NAME&gt;] and hopServer object id &lt;ID&gt; was removed from Hop
-		Server.&lt;/H3&gt;
-	&lt;a href="/hop/status"&gt;Back to the status page&lt;/a&gt;&lt;br&gt;
-	&lt;p&gt;
-&lt;/BODY&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_sniff_transform"><a class="anchor" href="#_sniff_transform"></a>Sniff Transform</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>sniffTransform</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Sniff test a pipeline transform</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/sniffTransform</code></p> </dd> <dt class="hdlist1">parameters</d [...]
-&lt;row-meta/&gt;
-&lt;/row-buffer&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_start_pipeline_execution"><a class="anchor" href="#_start_pipeline_execution"></a>Start Pipeline Execution</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>startExec</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Start the execution of a pipeline</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/startExec</code></p> </dd> <dt clas [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;Start of pipeline&lt;/TITLE&gt;
-	&lt;META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=&lt;NAME&gt;"&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H1&gt;Pipeline [&lt;NAME&gt;] was started.&lt;/H1&gt;
-	&lt;a href="/hop/pipelineStatus?name=&lt;NAME&gt;&amp;id=8bea27db-de97-4bd0-a210-d9bba3aacac2"&gt;Back to the status page&lt;/a&gt;
-	&lt;p&gt;
-		&lt;p&gt;
-&lt;/BODY&gt;
-
-&lt;/HTML&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_start_pipeline"><a class="anchor" href="#_start_pipeline"></a>Start Pipeline</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>startPipeline</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Prepare and start the execution of a pipeline</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/startPipeline</code></p> </dd> <dt class="hdlist1">para [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;Start of pipeline&lt;/TITLE&gt;
-	&lt;META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=&lt;NAME&gt;"&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H1&gt;Pipeline [&lt;NAME&gt;] was started.&lt;/H1&gt;
-	&lt;a href="/hop/pipelineStatus?name=&lt;NAME&gt;&amp;id=8bea27db-de97-4bd0-a210-d9bba3aacac2"&gt;Back to the status page&lt;/a&gt;
-	&lt;p&gt;
-		&lt;p&gt;
-&lt;/BODY&gt;
-
-&lt;/HTML&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_start_workflow"><a class="anchor" href="#_start_workflow"></a>Start Workflow</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>startWorkflow</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Prepare and start the execution of a workflow</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/startPipeline</code></p> </dd> <dt class="hdlist1">para [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;Start of workflow&lt;/TITLE&gt;
-	&lt;META http-equiv="Refresh" content="2;url=/hop/startWorkflow?name=&lt;NAME&gt;"&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H1&gt;Workflow [&lt;NAME&gt;] was started.&lt;/H1&gt;
-	&lt;a href="/hop/workflowStatus?name=&lt;NAME&gt;&amp;id=8bea27db-de97-4bd0-a210-d9bba3aacac2"&gt;Back to the status page&lt;/a&gt;
-	&lt;p&gt;
-		&lt;p&gt;
-&lt;/BODY&gt;
-
-&lt;/HTML&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_stop_pipeline"><a class="anchor" href="#_stop_pipeline"></a>Stop Pipeline</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>stopPipeline</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Stop a pipeline</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/stopPipeline</code></p> </dd> <dt class="hdlist1">parameters</dt> <dd> <div class="ulist" [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;Stop pipeline&lt;/TITLE&gt;
-	&lt;META http-equiv="Refresh" content="2;url=/hop/pipelineStatus?name=&lt;NAME&gt;&gt;"&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H1&gt;Pipeline [&lt;NAME&gt;] stop requested.&lt;/H1&gt;
-	&lt;a href="/hop/pipelineStatus?name=&lt;NAME&gt;&amp;id=&lt;ID&gt;"&gt;Back to the pipeline status page&lt;/a&gt;
-	&lt;p&gt;
-		&lt;p&gt;
-&lt;/BODY&gt;
-
-&lt;/HTML&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_stop_workflow"><a class="anchor" href="#_stop_workflow"></a>Stop Workflow</h2> <div class="sectionbody"> <div class="dlist"> <dl> <dt class="hdlist1">name</dt> <dd> <p>stopWorkflow</p> </dd> <dt class="hdlist1">description</dt> <dd> <p>Stop a workflow</p> </dd> <dt class="hdlist1">endPoint</dt> <dd> <p>GET <code>/hop/stopWorkflow</code></p> </dd> <dt class="hdlist1">parameters</dt> <dd> <div class="ulist" [...]
-
-&lt;HEAD&gt;
-	&lt;TITLE&gt;Stop workflow&lt;/TITLE&gt;
-	&lt;META http-equiv="Refresh" content="2;url=/hop/workflowStatus?name=&lt;NAME&gt;&gt;"&gt;
-	&lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
-&lt;/HEAD&gt;
-
-&lt;BODY&gt;
-	&lt;H1&gt;Workflow [&lt;NAME&gt;] stop requested.&lt;/H1&gt;
-	&lt;a href="/hop/workflowStatus?name=&lt;NAME&gt;&amp;id=&lt;ID&gt;"&gt;Back to the pipeline status page&lt;/a&gt;
-	&lt;p&gt;
-		&lt;p&gt;
-&lt;/BODY&gt;
-
-&lt;/HTML&gt;</code></pre> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../download/">Download</a></dd> <dd><a href="../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd> <dd><a target="_blank" href="../../../c [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-server/web-service.html b/manual/0/hop-server/web-service.html
deleted file mode 100644
index 8dbfec5..0000000
--- a/manual/0/hop-server/web-service.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Web Service :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-server/web-service.html"> <meta name="description" content="Hop has a simple way of exposing data through a servlet."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css"> <meta property="og: [...]
-  &lt;hop-server&gt;
-    &lt;name&gt;8181&lt;/name&gt;
-    &lt;hostname&gt;localhost&lt;/hostname&gt;
-    &lt;port&gt;8181&lt;/port&gt;
-  &lt;/hop-server&gt;
-  &lt;metadata_folder&gt;/home/hop/project/services/metadata&lt;/metadata_folder&gt;
-
-&lt;/hop-server-config&gt;</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_using_the_service"><a class="anchor" href="#_using_the_service"></a>Using the service</h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_base_request"><a class="anchor" href="#_base_request"></a>Base request</h3> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-http request hljs" data-lang="http request">http://&lt;hop-server-u [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf-cloud-aws-s3.html b/manual/0/hop-tools/hop-conf/hop-conf-cloud-aws-s3.html
deleted file mode 100644
index 5da93a0..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf-cloud-aws-s3.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf-cloud-aws-s3.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" co [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf-cloud-azure-blob-storage.html b/manual/0/hop-tools/hop-conf/hop-conf-cloud-azure-blob-storage.html
deleted file mode 100644
index 6df2390..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf-cloud-azure-blob-storage.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf-cloud-azure-blob-storage.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:des [...]
-                            The account to use for the Azure VFS
-      -azi, --azure-block-increment=&lt;blockIncrement&gt;
-                            The block increment size for new files on Azure,
-                              multiples of 512 only.
-      -azk, --azure-key=&lt;key&gt;
-                            The key to use for the Azure VFS</code></pre> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd>  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf-cloud-google-cloud-storage.html b/manual/0/hop-tools/hop-conf/hop-conf-cloud-google-cloud-storage.html
deleted file mode 100644
index bf93da1..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf-cloud-google-cloud-storage.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf-cloud-google-cloud-storage.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:d [...]
-                            Configure the path to a Google Cloud service account JSON key file</code></pre> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://ch [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf-cloud-google-drive.html b/manual/0/hop-tools/hop-conf/hop-conf-cloud-google-drive.html
deleted file mode 100644
index c048256..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf-cloud-google-drive.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf-cloud-google-drive.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:descripti [...]
-                            Configure the path to a Google Drive credentials JSON
-                              file
-      -gdt, --google-drive-tokens-folder=&lt;tokensFolder&gt;
-                            Configure the path to a Google Drive tokens folder</code></pre> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.o [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf-projects.html b/manual/0/hop-tools/hop-conf/hop-conf-projects.html
deleted file mode 100644
index 78b4286..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf-projects.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf-projects.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" conten [...]
-     --environment-create \
-     --environment hop2 \
-     --environment-project hop2 \
-     --environment-purpose=Development \
-     --environment-config-files=/home/user/projects/hop2-conf.json
-Creating environment 'hop2'
-Environment 'hop2' was created in Hop configuration file &lt;path-to-hop&gt;/config/hop-config.json
-2021/02/01 16:37:02 - General - ERROR: Configuration file '/home/user/projects/hop2-conf.json' does not exist to read variables from.
-Created empty environment configuration file : /home/user/projects/hop2-conf.json
-  hop2
-    Purpose: Development
-    Configuration files:
-    Project name: hop2
-      Config file: /home/user/projects/hop2-conf.json</code></pre> </div> </div> <div class="paragraph"> <p>As you can see from the log, an empty file was created to set variables in:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ }</code></pre> </div> </div> </div> <div class="sect3"> <h4 id="_setting_variables_in_an_environment"><a class="anchor" href="#_setting_variables_in_an_environme [...]
-Configuration file '/home/user/projects/hop2-conf.json' was modified.</code></pre> </div> </div> <div class="paragraph"> <p>If we look at the file <code><code>hop2-conf.json</code></code> we&#8217;ll see that the variables were added:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
-  "variables" : [ {
-    "name" : "DB_HOSTNAME",
-    "value" : "localhost",
-    "description" : ""
-  }, {
-    "name" : "DB_PASSWORD",
-    "value" : "abcd",
-    "description" : ""
-  } ]
-}</code></pre> </div> </div> <div class="paragraph"> <p>Please note that you can add descriptions for the variables as well with the <code><code>--describe-variable</code></code> option. Please run hop-conf without options to see all the possibilities.</p> </div> </div> <div class="sect3"> <h4 id="_deleting_an_environment"><a class="anchor" href="#_deleting_an_environment"></a>Deleting an environment</h4> <div class="paragraph"> <p>The following deletes an environment from the Hop config [...]
-Lifecycle environment 'hop2' was deleted from Hop configuration file &lt;path-to-hop&gt;/config/hop-config.json</code></pre> </div> </div> </div> </div> <div class="sect2"> <h3 id="_projects_plugin_configuration"><a class="anchor" href="#_projects_plugin_configuration"></a>Projects Plugin configuration</h3> <div class="paragraph"> <p>There are various options to configure the behavior of the <code><code>Projects</code></code> plugin itself. In Hop configuration file <code><code>hop-confi [...]
-    "projectMandatory" : true,
-    "environmentMandatory" : false,
-    "defaultProject" : "default",
-    "defaultEnvironment" : null,
-    "standardParentProject" : "default",
-    "standardProjectsFolder" : "/home/matt/test-stuff/"
-}</code></pre> </div> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">hop-conf option</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">projectMandatory</p></td> <td class="tablebl [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf-run-hpl-hwf.html b/manual/0/hop-tools/hop-conf/hop-conf-run-hpl-hwf.html
deleted file mode 100644
index 4d2a9d4..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf-run-hpl-hwf.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf-run-hpl-hwf.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Untitled :: Apache Hop"> <meta property="og:description" con [...]
-2021/02/01 16:52:15 - HopRun - Enabling project 'samples'
-2021/02/01 16:52:25 - HopRun - Relative path filename specified: config/projects/samples/beam/pipelines/complex.hpl
-2021/02/01 16:52:26 - General - Created Apache Beam pipeline with name 'complex'
-2021/02/01 16:52:27 - General - Handled transform (INPUT) : Customer data
-2021/02/01 16:52:27 - General - Handled transform (INPUT) : State data
-2021/02/01 16:52:27 - General - Handled Group By (STEP) : countPerState, gets data from 1 previous transform(s)
-2021/02/01 16:52:27 - General - Handled transform (STEP) : uppercase state, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled Merge Join (STEP) : Merge join
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Lookup count per state, gets data from 1 previous transform(s), targets=0, infos=1
-2021/02/01 16:52:27 - General - Handled transform (STEP) : name&lt;n, gets data from 1 previous transform(s), targets=2, infos=0
-2021/02/01 16:52:27 - General - Transform Label: N-Z reading from previous transform targeting this one using : name&lt;n - TARGET - Label: N-Z
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Label: N-Z, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform Label: A-M reading from previous transform targeting this one using : name&lt;n - TARGET - Label: A-M
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Label: A-M, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Switch / case, gets data from 2 previous transform(s), targets=4, infos=0
-2021/02/01 16:52:27 - General - Transform CA reading from previous transform targeting this one using : Switch / case - TARGET - CA
-2021/02/01 16:52:27 - General - Handled transform (STEP) : CA, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform NY reading from previous transform targeting this one using : Switch / case - TARGET - NY
-2021/02/01 16:52:27 - General - Handled transform (STEP) : NY, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform FL reading from previous transform targeting this one using : Switch / case - TARGET - FL
-2021/02/01 16:52:27 - General - Handled transform (STEP) : FL, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform Default reading from previous transform targeting this one using : Switch / case - TARGET - Default
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Default, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Collect, gets data from 4 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled transform (OUTPUT) : complex, gets data from Collect
-2021/02/01 16:52:27 - General - Executing this pipeline using the Beam Pipeline Engine with run configuration 'Direct'
-2021/02/01 16:52:34 - General - Beam pipeline execution has finished.</code></pre> </div> </div> <div class="paragraph"> <p>To execute an Apache Beam pipeline a lot of information and metadata is needed. Let&#8217;s dive into a few fun information tidbits:</p> </div> <div class="ulist"> <ul> <li> <p>By referencing the <code><code>samples</code></code> project Hop knows where the project is located (<code><code>config/projects/samples</code></code>)</p> </li> <li> <p>Since we know the loc [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-conf/hop-conf.html b/manual/0/hop-tools/hop-conf/hop-conf.html
deleted file mode 100644
index 534cb7a..0000000
--- a/manual/0/hop-tools/hop-conf/hop-conf.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Conf - The Hop command line configuration tool :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-conf/hop-conf.html"> <meta name="description" content="Hop Conf is a command line tool to manage environments. The hop-conf.sh script can be run with the -h flag (&#x60;./hop-conf.sh -h&#x60;) to displa [...]
-                    [-pn] [-py] [-aza=&lt;account&gt;] [-azi=&lt;blockIncrement&gt;]
-                    [-azk=&lt;key&gt;] [-cfg=&lt;configFile&gt;]
-                    [-dc=&lt;defaultProjectConfigFile&gt;] [-de=&lt;defaultEnvironment&gt;]
-                    [-dp=&lt;defaultProject&gt;] [-dv=&lt;describeVariable&gt;]
-                    [-e=&lt;environmentName&gt;] [-ep=&lt;environmentProject&gt;]
-                    [-eu=&lt;environmentPurpose&gt;] [-fj=&lt;fatJarFilename&gt;]
-                    [-gck=&lt;serviceAccountKeyFile&gt;] [-gdc=&lt;credentialsFile&gt;]
-                    [-gdt=&lt;tokensFolder&gt;] [-p=&lt;projectName&gt;]
-                    [-pa=&lt;projectMetadataBaseFolder&gt;]
-                    [-pb=&lt;projectDataSetsCsvFolder&gt;] [-pf=&lt;projectConfigFile&gt;]
-                    [-ph=&lt;projectHome&gt;] [-pp=&lt;projectCompany&gt;]
-                    [-pr=&lt;projectParent&gt;] [-ps=&lt;projectDescription&gt;]
-                    [-pt=&lt;projectDepartment&gt;] [-pu=&lt;projectUnitTestsBasePath&gt;]
-                    [-px=&lt;projectEnforceExecutionInHome&gt;]
-                    [-sj=&lt;standardProjectsFolder&gt;]
-                    [-sp=&lt;standardParentProject&gt;] [-sv=&lt;setVariable&gt;]
-                    [-xm=&lt;metadataJsonFilename&gt;] [-cfd=&lt;configDescribeVariables&gt;
-                    [,&lt;configDescribeVariables&gt;...]]...
-                    [-cfv=&lt;configSetVariables&gt;[,&lt;configSetVariables&gt;...]]...
-                    [-eg=&lt;environmentConfigFiles&gt;[,
-                    &lt;environmentConfigFiles&gt;...]]... [-pv=&lt;projectVariables&gt;[,
-                    &lt;projectVariables&gt;...]]...
-      -aza, --azure-account=&lt;account&gt;
-                            The account to use for the Azure VFS
-      -azi, --azure-block-increment=&lt;blockIncrement&gt;
-                            The block increment size for new files on Azure,
-                              multiples of 512 only.
-      -azk, --azure-key=&lt;key&gt;
-                            The key to use for the Azure VFS
-      -cfd, --config-file-describe-variables=&lt;configDescribeVariables&gt;[,
-        &lt;configDescribeVariables&gt;...]
-                            A list of variable=description combinations separated by
-                              a comma
-      -cfg, --config-file=&lt;configFile&gt;
-                            Specify the configuration JSON file to manage
-      -cfv, --config-file-set-variables=&lt;configSetVariables&gt;[,
-        &lt;configSetVariables&gt;...]
-                            A list of variable=value combinations separated by a
-                              comma
-      -dc, --default-projects-folder=&lt;defaultProjectConfigFile&gt;
-                            The standard project configuration filename proposed
-                              when creating projects
-      -de, --default-environment=&lt;defaultEnvironment&gt;
-                            The name of the default environment to use when none is
-                              specified
-      -dp, --default-project=&lt;defaultProject&gt;
-                            The name of the default project to use when none is
-                              specified
-      -dv, --describe-variable=&lt;describeVariable&gt;
-                            Describe a variable, use format VARIABLE=Description
-  -e, --environment=&lt;environmentName&gt;
-                            The name of the lifecycle environment to manage
-      -ec, --environment-create
-                            Create a new project lifecycle environment. Also specify
-                              its name, purpose, the project name and the
-                              configuration files.
-      -ed, --environment-delete
-                            Delete a lifecycle environment
-      -eg, --environment-config-files=&lt;environmentConfigFiles&gt;[,
-        &lt;environmentConfigFiles&gt;...]
-                            A list of configuration files for this lifecycle
-                              environment, comma separated
-      -el, --environments-list
-                            List the defined lifecycle environments
-      -em, --environment-modify
-                            Modify a lifecycle environment
-      -ep, --environment-project=&lt;environmentProject&gt;
-                            The project for the environment
-      -eu, --environment-purpose=&lt;environmentPurpose&gt;
-                            The purpose of the environment: Development, Testing,
-                              Production, CI, ...
-      -ey, --environment-mandatory
-                            Make it mandatory to reference an environment
-      -fj, --generate-fat-jar=&lt;fatJarFilename&gt;
-                            Specify the filename of the fat jar to generate from
-                              your current software installation
-      -gck, --google-cloud-service-account-key-file=&lt;serviceAccountKeyFile&gt;
-                            Configure the path to a Google Cloud service account
-                              JSON key file
-      -gdc, --google-drive-credentials-file=&lt;credentialsFile&gt;
-                            Configure the path to a Google Drive credentials JSON
-                              file
-      -gdt, --google-drive-tokens-folder=&lt;tokensFolder&gt;
-                            Configure the path to a Google Drive tokens folder
-  -h, --help                Displays this help message and quits.
-  -p, --project=&lt;projectName&gt;
-                            The name of the project to manage
-      -pa, --project-metadata-base=&lt;projectMetadataBaseFolder&gt;
-                            The metadata base folder (relative to home)
-      -pb, --project-datasets-base=&lt;projectDataSetsCsvFolder&gt;
-                            The data sets CSV folder (relative to home)
-      -pc, --project-create Create a new project. Also specify the name and its home
-      -pd, --project-delete Delete a project
-      -pf, --project-config-file=&lt;projectConfigFile&gt;
-                            The configuration file relative to the home folder. The
-                              default value is project-config.json
-      -ph, --project-home=&lt;projectHome&gt;
-                            The home directory of the project
-      -pl, -projects-list   List the defined projects
-      -pm, --project-modify Modify a project
-      -pn, --projects-enabled
-                            Enable or disable the projects plugin
-      -pp, --project-company=&lt;projectCompany&gt;
-                            The company
-      -pr, --project-parent=&lt;projectParent&gt;
-                            The name of the parent project to inherit metadata and
-                              variables from
-      -ps, --project-description=&lt;projectDescription&gt;
-                            The description of the project
-      -pt, --project-department=&lt;projectDepartment&gt;
-                            The department
-      -pu, --project-unit-tests-base=&lt;projectUnitTestsBasePath&gt;
-                            The unit tests base folder (relative to home)
-      -pv, --project-variables=&lt;projectVariables&gt;[,&lt;projectVariables&gt;...]
-                            A list of variable=value combinations separated by a
-                              comma
-      -px, --project-enforce-execution=&lt;projectEnforceExecutionInHome&gt;
-                            Validate before execution that a workflow or pipeline is
-                              located in the project home folder or a sub-folder
-                              (true/false).
-      -py, --project-mandatory
-                            Make it mandatory to reference a project
-      -sj, --standard-projects-folder=&lt;standardProjectsFolder&gt;
-                            GUI: The standard projects folder proposed when creating
-                              projects
-      -sp, --standard-parent-project=&lt;standardParentProject&gt;
-                            The name of the standard project to use as a parent when
-                              creating new projects
-      -sv, --set-variable=&lt;setVariable&gt;
-                            Set a variable, use format VAR=Value
-      -xm, --export-metadata=&lt;metadataJsonFilename&gt;
-                            Export project metadata to a single JSON file which you
-                              can specify with this option. Also specify the -p
-                              option.</code></pre> </div> </div> <div class="paragraph"> <p>The available options are listed below:</p> </div> <div class="table-wrapper"><table id="hop-conf" class="tableblock frame-all grid-all"> <caption class="title">Table 1. Hop-conf Options</caption> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Short Option</th> <th class="tableblock halign-left valign-top">Extended Option</th> <th class="tablebl [...]
-     --environment-create \
-     --environment hop2 \
-     --environment-project hop2 \
-     --environment-purpose=Development \
-     --environment-config-files=/home/user/projects/hop2-conf.json
-Creating environment 'hop2'
-Environment 'hop2' was created in Hop configuration file &lt;path-to-hop&gt;/config/hop-config.json
-2021/02/01 16:37:02 - General - ERROR: Configuration file '/home/user/projects/hop2-conf.json' does not exist to read variables from.
-Created empty environment configuration file : /home/user/projects/hop2-conf.json
-  hop2
-    Purpose: Development
-    Configuration files:
-    Project name: hop2
-      Config file: /home/user/projects/hop2-conf.json</code></pre> </div> </div> <div class="paragraph"> <p>As you can see from the log, an empty file was created to set variables in:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ }</code></pre> </div> </div> </div> <div class="sect3"> <h4 id="_setting_variables_in_an_environment"><a class="anchor" href="#_setting_variables_in_an_environme [...]
-Configuration file '/home/user/projects/hop2-conf.json' was modified.</code></pre> </div> </div> <div class="paragraph"> <p>If we look at the file <code><code>hop2-conf.json</code></code> we&#8217;ll see that the variables were added:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
-  "variables" : [ {
-    "name" : "DB_HOSTNAME",
-    "value" : "localhost",
-    "description" : ""
-  }, {
-    "name" : "DB_PASSWORD",
-    "value" : "abcd",
-    "description" : ""
-  } ]
-}</code></pre> </div> </div> <div class="paragraph"> <p>Please note that you can add descriptions for the variables as well with the <code><code>--describe-variable</code></code> option. Please run hop-conf without options to see all the possibilities.</p> </div> </div> <div class="sect3"> <h4 id="_deleting_an_environment"><a class="anchor" href="#_deleting_an_environment"></a>Deleting an environment</h4> <div class="paragraph"> <p>The following deletes an environment from the Hop config [...]
-Lifecycle environment 'hop2' was deleted from Hop configuration file &lt;path-to-hop&gt;/config/hop-config.json</code></pre> </div> </div> </div> </div> <div class="sect2"> <h3 id="_projects_plugin_configuration"><a class="anchor" href="#_projects_plugin_configuration"></a>Projects Plugin configuration</h3> <div class="paragraph"> <p>There are various options to configure the behavior of the <code><code>Projects</code></code> plugin itself. In Hop configuration file <code><code>hop-confi [...]
-    "projectMandatory" : true,
-    "environmentMandatory" : false,
-    "defaultProject" : "default",
-    "defaultEnvironment" : null,
-    "standardParentProject" : "default",
-    "standardProjectsFolder" : "/home/matt/test-stuff/"
-}</code></pre> </div> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">hop-conf option</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">projectMandatory</p></td> <td class="tablebl [...]
-2021/02/01 16:52:15 - HopRun - Enabling project 'samples'
-2021/02/01 16:52:25 - HopRun - Relative path filename specified: config/projects/samples/beam/pipelines/complex.hpl
-2021/02/01 16:52:26 - General - Created Apache Beam pipeline with name 'complex'
-2021/02/01 16:52:27 - General - Handled transform (INPUT) : Customer data
-2021/02/01 16:52:27 - General - Handled transform (INPUT) : State data
-2021/02/01 16:52:27 - General - Handled Group By (STEP) : countPerState, gets data from 1 previous transform(s)
-2021/02/01 16:52:27 - General - Handled transform (STEP) : uppercase state, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled Merge Join (STEP) : Merge join
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Lookup count per state, gets data from 1 previous transform(s), targets=0, infos=1
-2021/02/01 16:52:27 - General - Handled transform (STEP) : name&lt;n, gets data from 1 previous transform(s), targets=2, infos=0
-2021/02/01 16:52:27 - General - Transform Label: N-Z reading from previous transform targeting this one using : name&lt;n - TARGET - Label: N-Z
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Label: N-Z, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform Label: A-M reading from previous transform targeting this one using : name&lt;n - TARGET - Label: A-M
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Label: A-M, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Switch / case, gets data from 2 previous transform(s), targets=4, infos=0
-2021/02/01 16:52:27 - General - Transform CA reading from previous transform targeting this one using : Switch / case - TARGET - CA
-2021/02/01 16:52:27 - General - Handled transform (STEP) : CA, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform NY reading from previous transform targeting this one using : Switch / case - TARGET - NY
-2021/02/01 16:52:27 - General - Handled transform (STEP) : NY, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform FL reading from previous transform targeting this one using : Switch / case - TARGET - FL
-2021/02/01 16:52:27 - General - Handled transform (STEP) : FL, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Transform Default reading from previous transform targeting this one using : Switch / case - TARGET - Default
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Default, gets data from 1 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled transform (STEP) : Collect, gets data from 4 previous transform(s), targets=0, infos=0
-2021/02/01 16:52:27 - General - Handled transform (OUTPUT) : complex, gets data from Collect
-2021/02/01 16:52:27 - General - Executing this pipeline using the Beam Pipeline Engine with run configuration 'Direct'
-2021/02/01 16:52:34 - General - Beam pipeline execution has finished.</code></pre> </div> </div> <div class="paragraph"> <p>To execute an Apache Beam pipeline a lot of information and metadata is needed. Let&#8217;s dive into a few fun information tidbits:</p> </div> <div class="ulist"> <ul> <li> <p>By referencing the <code><code>samples</code></code> project Hop knows where the project is located (<code><code>config/projects/samples</code></code>)</p> </li> <li> <p>Since we know the loc [...]
-                            The account to use for the Azure VFS
-      -azi, --azure-block-increment=&lt;blockIncrement&gt;
-                            The block increment size for new files on Azure,
-                              multiples of 512 only.
-      -azk, --azure-key=&lt;key&gt;
-                            The key to use for the Azure VFS</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_google"><a class="anchor" href="#_google"></a>Google</h3> <div class="sect3"> <h4 id="_google_cloud_storage"><a class="anchor" href="#_google_cloud_storage"></a>Google Cloud Storage</h4> <div class="paragraph"> <p>Set the path to your Google Cloud service account JSON key file</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highli [...]
-                            Configure the path to a Google Cloud service account JSON key file</code></pre> </div> </div> </div> <div class="sect3"> <h4 id="_google_drive"><a class="anchor" href="#_google_drive"></a>Google Drive</h4> <div class="paragraph"> <p>Set the path to your Google Drive credentials JSON file or Google Drive tokens folder.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-shell script hljs" data-lan [...]
-                            Configure the path to a Google Drive credentials JSON
-                              file
-      -gdt, --google-drive-tokens-folder=&lt;tokensFolder&gt;
-                            Configure the path to a Google Drive tokens folder</code></pre> </div> </div> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-encrypt.html b/manual/0/hop-tools/hop-encrypt.html
deleted file mode 100644
index ba2cf29..0000000
--- a/manual/0/hop-tools/hop-encrypt.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Encrypt :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-encrypt.html"> <meta name="description" content="Hop Encrypt is a command line tool to encrypt (obfuscate) passwords for use in XML, password or Hop metadata files."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href [...]
-
-  encr &lt;-hop|-server&gt; &lt;password&gt;
-  Options:
-    -hop: generate an obfuscated or encrypted password
-    -server : generate an obfuscated password to include in the hop-server password file 'pwd/hop.pwd'
-
-This command line tool obfuscates or encrypts a plain text password for use in XML, password or metadata files.
-Make sure to also copy the password encryption prefix to indicate the obfuscated nature of the password.
-Hop will then be able to make the distinction between regular plain text passwords and obfuscated ones.</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_options"><a class="anchor" href="#_options"></a>Options</h2> <div class="sectionbody"> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Descri [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-import.html b/manual/0/hop-tools/hop-import.html
deleted file mode 100644
index 837fb58..0000000
--- a/manual/0/hop-tools/hop-import.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Import :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-import.html"> <meta name="description" content="Hop Import is a command line tool for importing and convert third party metadata to an Apache Hop format."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_ [...]
-                    [-j=&lt;jdbcPropertiesFilename&gt;]
-                    [-k=&lt;kettlePropertiesFilename&gt;] [-o=&lt;outputFolderName&gt;]
-                    [-s=&lt;sharedXmlFilename&gt;] [-t=&lt;type&gt;]
-  -c, --target-config-file=&lt;targetConfigFilename&gt;
-                        The target config file to write variable to
-  -e, --skip-existing   Skip existing files in the target folders
-  -f, --skip-folders    Skip import of sub-folders
-  -h, --help            Displays this help message and quits.
-  -i, --input=&lt;inputFolderName&gt;
-                        The input folder to read from
-  -j, --jdbc-properties=&lt;jdbcPropertiesFilename&gt;
-                        The jdbc.properties file to read from
-  -k, --kettle-properties=&lt;kettlePropertiesFilename&gt;
-                        The kettle.properties file to read from
-  -l, --list-plugins    List the available import plugins
-  -o, --output=&lt;outputFolderName&gt;
-                        The output folder to write to
-  -p, --skip-hidden     Skip import of hidden files and folders
-  -s, --shared-xml=&lt;sharedXmlFilename&gt;
-                        The shared.xml file to read from
-  -t, --type=&lt;type&gt;     The type of import plugin to use (e.g. kettle)</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_examples"><a class="anchor" href="#_examples"></a>Examples</h2> <div class="sectionbody"> <div class="paragraph"> <p>Import a set of Kettle files and folders into a project stored on Amazon AWS S3:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-none hljs">sh hop-import.sh \
-  --type kettle \
-  --input /projects/kettle/inventory \
-  --output s3:///apache-hop/s3project \
-  --target-config-file imported-env-conf.json \
-  --kettle-properties /home/etl/.kettle/kettle.properties \
-  --shared-xml /home/matt/.kettle/shared.xml</code></pre> </div> </div> <div class="paragraph"> <p>The logging will show what is going on and will print a report at the end:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-none hljs">2021/06/22 16:39:29 - HopImport - Import is skipping existing target files
-2021/06/22 16:39:29 - HopImport - Import is skipping hidden files and folders
-2021/06/22 16:39:29 - HopImport - Import is not skipping sub-folders
-2021/06/22 16:39:29 - HopImport - Finding files to import
-2021/06/22 16:39:29 - HopImport - We found 84 kettle files.
-2021/06/22 16:39:29 - HopImport - Importing files
-2021/06/22 16:39:29 - HopImport -   - Saving file s3:///apache-hop/s3project/load-nodes/sample-model.json
-2021/06/22 16:39:29 - HopImport -   - Saving file s3:///apache-hop/s3project/scaleable-file-processing/input/file02.csv
-2021/06/22 16:39:29 - HopImport -   - Saving file s3:///apache-hop/s3project/graph-output/READ.me
-2021/06/22 16:39:29 - HopImport -   - Saving file s3:///apache-hop/s3project/scaleable-file-processing/PDI/Check slave server.hpl
-2021/06/22 16:39:29 - HopImport -   - Saving file s3:///apache-hop/s3project/remove-everything/remove all in database.hwf
-...
-2021/06/22 16:39:37 - HopImport -   - Saving file s3:///apache-hop/s3project/scaleable-file-processing/input/file01.csv
-2021/06/22 16:39:37 - HopImport - Importing connections
-2021/06/22 16:39:41 - HopImport - Importing variables
-Creating new default Hop configuration file: s3:///apache-hop/s3project/imported-env-conf.json
-
-2021/06/22 16:39:43 - HopImport - Imported:
-2021/06/22 16:39:43 - HopImport - 10 jobs
-2021/06/22 16:39:43 - HopImport - 31 transformations
-2021/06/22 16:39:43 - HopImport - 43 other files
-2021/06/22 16:39:43 - HopImport - 86 variables were imported into environment config file s3:///apache-hop/s3project/imported-env-conf.json
-2021/06/22 16:39:43 - HopImport - You can use this as a configuration file in an environment.
-2021/06/22 16:39:43 - HopImport - 3 database connections where saved in metadata folder s3:///apache-hop/s3project/metadata
-2021/06/22 16:39:43 - HopImport -
-2021/06/22 16:39:43 - HopImport - Connections with the same name and different configurations have only been saved once.
-2021/06/22 16:39:43 - HopImport - Check the following file for a list of connections that might need extra attention: s3:///apache-hop/s3project/connections.csv</code></pre> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../download/">Download</a></dd> <dd><a href="../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/hop-search.html b/manual/0/hop-tools/hop-search.html
deleted file mode 100644
index 54224b1..0000000
--- a/manual/0/hop-tools/hop-search.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Search :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/hop-search.html"> <meta name="description" content="Hop Search is a command line tool to search for metadata in Hop or a Hop project."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../_/css/site-a89d2c4eee.css [...]
-                    &lt;searchString&gt;
-      &lt;searchString&gt;         The string to search for
-  -e, --environment=&lt;environmentOption&gt;
-                             The name of the lifecycle environment to use
-  -h, --help                 Displays this help message and quits.
-  -i, --case-insensitive     Perform a case insensitive search
-  -j, --project=&lt;projectOption&gt;
-                             The name of the project to use
-  -l, --print-locations      Print which locations are being looked at
-  -x, --regular-expression   The specified search string is a regular expression
-./hop-search.sh  9.08s user 0.44s system 338% cpu 2.808 total</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_options"><a class="anchor" href="#_options"></a>Options</h2> <div class="sectionbody"> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td [...]
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : matching property value: EnhancedJsonOutput
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : matching property value: Enhanced JSON Output
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : pipeline transform property : jsonBloc
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : pipeline transform property : jsonPrittified (Boolean)
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : pipeline transform property : isJSONFragment (Boolean)
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : pipeline transform property : isJSONFragment (Boolean)
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Final Complex Data structure : pipeline transform property : isJSONFragment (Boolean)
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Intermediate Structures : matching property value: EnhancedJsonOutput
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Intermediate Structures : matching property value: Enhanced JSON Output
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Intermediate Structures : pipeline transform property : jsonPrittified (Boolean)
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : Intermediate Structures : pipeline transform property : isJSONFragment (Boolean)
-&lt;PROJECT_PATH&gt;/samples/transforms/Enhanced JSON - Generate complex nested structure from table.hpl : null : matching property value: This sample gets a table of values and generate a complex nested structure as output
-by looping over a predefined key. Second Enhanced JSON Transform als gets a JSON fragment produced
-by furst Enhanced JSON Transform and use it as value of an attribute of the resulting final
-JSON stream.</code></pre> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../download/">Download</a></dd> <dd><a href="../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd> <dd><a target="_blank" href="../../../co [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-tools/index.html b/manual/0/hop-tools/index.html
deleted file mode 100644
index 770cb79..0000000
--- a/manual/0/hop-tools/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Tools :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-tools/index.html"> <meta name="description" content="Even though Hop developers will spend the majority of their time in Hop Gui, Hop has a lot more tools to offer. This page provides an overview of the tools that are available in the platform."> <meta  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/hop-usps.html b/manual/0/hop-usps.html
deleted file mode 100644
index 5e18b0e..0000000
--- a/manual/0/hop-usps.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Unique Selling Propositions :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-usps.html"> <meta name="description" content="Hop differentiates itself from other platforms through an absolute focus on metadata, a visual code editor, a kernel + plugins architecture, portable run configurations, unit and integr [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/how-to-guides/apache-hop-web-services-docker.html b/manual/0/how-to-guides/apache-hop-web-services-docker.html
deleted file mode 100644
index b0393c7..0000000
--- a/manual/0/how-to-guides/apache-hop-web-services-docker.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Web Services in Apache Hop :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/0/how-to-guides/apache-hop-web-services-docker.html"> <meta name="description" content="This tutorial explains how to run Apache Hop web services from a Docker container"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href= [...]
-Example: docker pull apache/hop:1.1.0-SNAPSHOT</code></pre> </div> </div> <div class="paragraph"> <p>To execute the containers afterwards, the following environment variables or parameters must be set as a minimum:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Variable/Docker Parameter</th> <th class="tableblock halign-left valign-top">Example value</t [...]
-  --env HOP_SERVER_USER=admin \
-  --env HOP_SERVER_PASS=admin \
-  --env HOP_SERVER_PORT=8182 \
-  --env HOP_SERVER_HOSTNAME=0.0.0.0 \
-  --env HOP_PROJECT_NAME=proj1 \
-  --env HOP_PROJECT_FOLDER=/files \
-  --env HOP_ENVIRONMENT_NAME=Local \
-  --env HOP_ENVIRONMENT_CONFIG_FILE_NAME_PATHS=/files/config/localTestConfig.json \
-  --env HOP_SERVER_METADATA_FOLDER=/files/metadata \
-  --env HOP_SHARED_JDBC_FOLDER=/files/jdbc \
-  -p 8182:8182 \
-  -v /my/path/to/location:/files \
-  --name test-hop-container \
- apache/hop:1.1.0-SNAPSHOT</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_step_5_call_web_service"><a class="anchor" href="#_step_5_call_web_service"></a>Step 5: Call Web Service</h3> <div class="paragraph"> <p>If the container has been started successfully, the web server GUI can be opened via <a href="http://&lt;IP_HOST&gt;:&lt;PORT_HOST&gt;/hop/status/" class="bare">http://&lt;IP_HOST&gt;:&lt;PORT_HOST&gt;/hop/status/</a> which gives an overview of the pipelines and wo [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/how-to-guides/index.html b/manual/0/how-to-guides/index.html
deleted file mode 100644
index 7a29d02..0000000
--- a/manual/0/how-to-guides/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Untitled :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/0/how-to-guides/index.html"> <meta name="description" content="This page contains a collection of how-to guides to perform a variety of tasks, configurations etc with Apache Hop."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../.. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/image-testpage.html b/manual/0/image-testpage.html
deleted file mode 100644
index 8eefa9f..0000000
--- a/manual/0/image-testpage.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Image testpage :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/image-testpage.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Image testpage :: Apache Hop"> <meta property="og:description" content="Apache Hop -  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/index.html b/manual/0/index.html
deleted file mode 100644
index 1b9f063..0000000
--- a/manual/0/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop User Manual :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/index.html"> <meta name="description" content="As a relatively young platform, Hop covers a area of functionalities that is both wide and deep. This page provides an overview of topic that may be of interest to you."> <meta name="generator" content="A [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/logging/logging-basics.html b/manual/0/logging/logging-basics.html
deleted file mode 100644
index 30e79b6..0000000
--- a/manual/0/logging/logging-basics.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Logging :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/logging/logging-basics.html"> <meta name="description" content="Every workflow or pipeline you execute through Hop Gui or Hop Run and a lot of the other tools generate logging as logging text in the most obvious form."> <meta name="generator" content="Antora  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/logging/logging-reflection.html b/manual/0/logging/logging-reflection.html
deleted file mode 100644
index 436b503..0000000
--- a/manual/0/logging/logging-reflection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Reflection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/logging/logging-reflection.html"> <meta name="description" content="The Hop Reflection plugin adds easy ways for you to get more information about what&#x27;s going on inside your pipelines or workflows. It offers 3 main ways of reflecting on what&#x27;s g [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/beam-file-definition.html b/manual/0/metadata-types/beam-file-definition.html
deleted file mode 100644
index 67d3f5b..0000000
--- a/manual/0/metadata-types/beam-file-definition.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam File Definition :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/beam-file-definition.html"> <link rel="prev" href="index.html"> <link rel="next" href="cassandra/cassandra-connection.html"> <meta name="description" content="A Beam File Definition describes a file layout in a Beam pipeline. The B [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/cassandra/cassandra-connection.html b/manual/0/metadata-types/cassandra/cassandra-connection.html
deleted file mode 100644
index 7336f62..0000000
--- a/manual/0/metadata-types/cassandra/cassandra-connection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Cassandra Connection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/cassandra/cassandra-connection.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Cassandra Connection :: Apache Hop"> <meta [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/data-set.html b/manual/0/metadata-types/data-set.html
deleted file mode 100644
index 7b2346f..0000000
--- a/manual/0/metadata-types/data-set.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Data Set :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/data-set.html"> <link rel="prev" href="cassandra/cassandra-connection.html"> <link rel="next" href="hop-server.html"> <meta name="description" content="A Data Set is a static pre-defined collection of rows, used in unit testing, where a data s [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/hop-server.html b/manual/0/metadata-types/hop-server.html
deleted file mode 100644
index f0ac6bb..0000000
--- a/manual/0/metadata-types/hop-server.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hop Server :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/hop-server.html"> <link rel="prev" href="data-set.html"> <link rel="next" href="mongodb-connection.html"> <meta name="description" content="Hop Server is a lightweight web server that hosts a Hop runtime for remote execution, with a web inte [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/index.html b/manual/0/metadata-types/index.html
deleted file mode 100644
index d3c1836..0000000
--- a/manual/0/metadata-types/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata Types :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/index.html"> <link rel="prev" href="../logging/logging-reflection.html"> <link rel="next" href="beam-file-definition.html"> <meta name="description" content="Metadata is one of the cornerstones in Hop and can be defined as workflows, pip [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/mongodb-connection.html b/manual/0/metadata-types/mongodb-connection.html
deleted file mode 100644
index 579748d..0000000
--- a/manual/0/metadata-types/mongodb-connection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MongoDB Connection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/mongodb-connection.html"> <link rel="prev" href="hop-server.html"> <link rel="next" href="neo4j/neo4j-connection.html"> <meta name="description" content="Describes a MongoDB connection. The MongoDB connection, specified on a project  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/neo4j/neo4j-connection.html b/manual/0/metadata-types/neo4j/neo4j-connection.html
deleted file mode 100644
index 615e17e..0000000
--- a/manual/0/metadata-types/neo4j/neo4j-connection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Connection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/neo4j/neo4j-connection.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Neo4j Connection :: Apache Hop"> <meta property="og:de [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/neo4j/neo4j-graphmodel.html b/manual/0/metadata-types/neo4j/neo4j-graphmodel.html
deleted file mode 100644
index 24783cb..0000000
--- a/manual/0/metadata-types/neo4j/neo4j-graphmodel.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Graph Model :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/neo4j/neo4j-graphmodel.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Neo4j Graph Model :: Apache Hop"> <meta property="og: [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/partition-schema.html b/manual/0/metadata-types/partition-schema.html
deleted file mode 100644
index 0224cc7..0000000
--- a/manual/0/metadata-types/partition-schema.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Partition Schema :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/partition-schema.html"> <link rel="prev" href="neo4j/neo4j-graphmodel.html"> <link rel="next" href="pipeline-log.html"> <meta name="description" content="Describes a partition schema. A partition schema defines how many ways the row st [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/pipeline-log.html b/manual/0/metadata-types/pipeline-log.html
deleted file mode 100644
index 3020223..0000000
--- a/manual/0/metadata-types/pipeline-log.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Log :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/pipeline-log.html"> <link rel="prev" href="partition-schema.html"> <link rel="next" href="pipeline-probe.html"> <meta name="description" content="Allows to log the activity of a pipeline with another pipeline. A pipeline log streams loggin [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/pipeline-probe.html b/manual/0/metadata-types/pipeline-probe.html
deleted file mode 100644
index c6cbc53..0000000
--- a/manual/0/metadata-types/pipeline-probe.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Probe :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/pipeline-probe.html"> <link rel="prev" href="pipeline-log.html"> <link rel="next" href="pipeline-run-config.html"> <meta name="description" content="Allows to stream output rows of a pipeline to another pipeline. A pipeline log streams d [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/pipeline-run-config.html b/manual/0/metadata-types/pipeline-run-config.html
deleted file mode 100644
index 87180b3..0000000
--- a/manual/0/metadata-types/pipeline-run-config.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Run Configuration :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/pipeline-run-config.html"> <link rel="prev" href="pipeline-probe.html"> <link rel="next" href="pipeline-unit-test.html"> <meta name="description" content="Describes how and with which engine a pipeline is to be executed. Pipe [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/pipeline-unit-test.html b/manual/0/metadata-types/pipeline-unit-test.html
deleted file mode 100644
index a02841d..0000000
--- a/manual/0/metadata-types/pipeline-unit-test.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Unit Test :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/pipeline-unit-test.html"> <link rel="prev" href="pipeline-run-config.html"> <link rel="next" href="rdbms-connection.html"> <meta name="description" content="Describes a test for a pipeline. During the test, alternative data sets are  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/rdbms-connection.html b/manual/0/metadata-types/rdbms-connection.html
deleted file mode 100644
index 7079a04..0000000
--- a/manual/0/metadata-types/rdbms-connection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Relational Database Connection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/rdbms-connection.html"> <link rel="prev" href="pipeline-unit-test.html"> <link rel="next" href="splunk-connection.html"> <meta name="description" content="Describes all the information needed to connect to a relational da [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/splunk-connection.html b/manual/0/metadata-types/splunk-connection.html
deleted file mode 100644
index 0db0c19..0000000
--- a/manual/0/metadata-types/splunk-connection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Splunk Connection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/splunk-connection.html"> <link rel="prev" href="rdbms-connection.html"> <link rel="next" href="../hop-server/web-service.html"> <meta name="description" content="Describes a Splunk connection."> <meta name="generator" content="Antora  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/workflow-log.html b/manual/0/metadata-types/workflow-log.html
deleted file mode 100644
index b84b545..0000000
--- a/manual/0/metadata-types/workflow-log.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Workflow Log :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/workflow-log.html"> <link rel="prev" href="../hop-server/web-service.html"> <link rel="next" href="workflow-run-config.html"> <meta name="description" content="Allows to log the activity of a workflow with a pipeline. A workflow log stream [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/metadata-types/workflow-run-config.html b/manual/0/metadata-types/workflow-run-config.html
deleted file mode 100644
index 8b36819..0000000
--- a/manual/0/metadata-types/workflow-run-config.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Workflow Run Config :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/metadata-types/workflow-run-config.html"> <link rel="prev" href="workflow-log.html"> <link rel="next" href="../password/passwords.html"> <meta name="description" content="Describes how to run a workflow. Workflows can be executed either locally or [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/password/passwords.html b/manual/0/password/passwords.html
deleted file mode 100644
index 818da3a..0000000
--- a/manual/0/password/passwords.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Passwords and Password Plugins :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/password/passwords.html"> <meta name="description" content="Hop provides password obfuscation as a way to prevent storing passwords as clear text. Obfuscation is the deliberate act of creating source or machine code that is difficult fo [...]
-  "rdbms": {
-    "POSTGRESQL": {
-      "databaseName": "DBNAME",
-      "pluginId": "POSTGRESQL",
-      "indexTablespace": "",
-      "dataTablespace": "",
-      "accessType": 0,
-      "hostname": "localhost",
-      "password": "Encrypted 2be98afc86aa7f2e4cb79ce10df90acde",
-      "port": "5432",
-      "pluginName": "PostgreSQL",
-      "servername": "",
-      "attributes": {},
-      "username": "dbuser"
-    }
-  },
-  "name": "DBCONN"
-}</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_password_obfuscation_in_hop_server"><a class="anchor" href="#_password_obfuscation_in_hop_server"></a>Password obfuscation in Hop Server</h2> <div class="sectionbody"> <div class="paragraph"> <p>Obfuscated passwords for Hop Server can be stored in the server&#8217;s .pwd file.</p> </div> <div class="paragraph"> <p>In the example below, Hop&#8217;s default server hop.pwd contains the username 'cluster' and the default [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/password/passwords/aespasswords.html b/manual/0/password/passwords/aespasswords.html
deleted file mode 100644
index 072fce3..0000000
--- a/manual/0/password/passwords/aespasswords.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>AES Two way password encoder :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/password/passwords/aespasswords.html"> <meta name="description" content="The AES two-way password encoder plugin allows you to encrypt and decrypt passwords using a provided key string."> <meta name="generator" content="Antora 3.0.1"> <li [...]
-$:~/hop$ export HOP_AES_ENCODER_KEY=ddsfsdfsfsdf
-$:~/hop$ sh hop-encrypt.sh -hop MyPassword222
-AES kb/8yIPqClL/0+/e+gsVcw==
-
-$:~/hop$ export HOP_AES_ENCODER_KEY=abcd
-$:~/hop$ sh hop-encrypt.sh -hop MyPassword222
-AES s7JDgDBqQWMh1E/RWgGaUA==</code></pre> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd> <dd><a target="_bl [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/beam/getting-started-with-beam.html b/manual/0/pipeline/beam/getting-started-with-beam.html
deleted file mode 100644
index eb4debe..0000000
--- a/manual/0/pipeline/beam/getting-started-with-beam.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Getting started with Apache Beam :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/beam/getting-started-with-beam.html"> <meta name="description" content="Apache Beam is an advanced unified programming model that allows you to implement and run batch and streaming data processing jobs."> <meta name="generat [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/create-pipeline.html b/manual/0/pipeline/create-pipeline.html
deleted file mode 100644
index da7e1a0..0000000
--- a/manual/0/pipeline/create-pipeline.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Create a Pipeline :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/create-pipeline.html"> <meta name="description" content="Pipelines are the fundamental building blocks of your Hop projects. Pipelines read from data sources and perform operations (joins, lookups, filter and lots more) on the data before i [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/errorhandling.html b/manual/0/pipeline/errorhandling.html
deleted file mode 100644
index e4b9a8a..0000000
--- a/manual/0/pipeline/errorhandling.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Error Handling :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/errorhandling.html"> <meta name="description" content="When a major failure occurs in one of the transforms, the pipeline is notified and halts all active operations. This is fine in most cases, pipeline failures are typically handled [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/hop-pipeline-editor.html b/manual/0/pipeline/hop-pipeline-editor.html
deleted file mode 100644
index c223366..0000000
--- a/manual/0/pipeline/hop-pipeline-editor.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Toolbar :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/hop-pipeline-editor.html"> <meta name="description" content="You&#x27;ll perform a lot of operations on the pipeline canvas, but a lot of additional functionality is available from the pipeline editor&#x27;s main toolbar"> <meta name="generator" cont [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/metadata-injection.html b/manual/0/pipeline/metadata-injection.html
deleted file mode 100644
index fc608cd..0000000
--- a/manual/0/pipeline/metadata-injection.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata Injection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/metadata-injection.html"> <meta name="description" content="Metadata injection inserts data from various sources into a template pipeline at runtime to reduce repetitive tasks."> <meta name="generator" content="Antora 3.0.1"> <link rel="st [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/partitioning.html b/manual/0/pipeline/partitioning.html
deleted file mode 100644
index 5e3d853..0000000
--- a/manual/0/pipeline/partitioning.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Partitioning :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/partitioning.html"> <meta name="description" content="Partitioning allows you to distribute all the data from a set into distinct subsets according to the rule applied on a table or row, where these subsets form a partition of the original set w [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.html b/manual/0/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.html
deleted file mode 100644
index f81a0b8..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Beam Google DataFlow Pipeline Engine :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.html"> <meta name="description" content="Apache Hop supports running pipelines on GCP Dataflow over Apache Beam. GCP Dataflow is a fully managed service for [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.html b/manual/0/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.html
deleted file mode 100644
index e79bb02..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Beam Direct Pipeline Engine :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.html"> <meta name="description" content="The Direct runner can be used for local testing and development of Hop pipelines on Apache Beam. The Direct Runner executes pi [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.html b/manual/0/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.html
deleted file mode 100644
index b2b4a01..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Beam Flink Pipeline Engine :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.html"> <meta name="description" content="Apache Hop supports running pipelines on Apache Flink using an Apache Beam Flink runner. This page describes how to configure th [...]
-  --class org.apache.hop.beam.run.MainBeam \
-  --parallelism 2 \
-  -D PROJECT_HOME=/my/project/home \
-  /path/to/apache-hop-fat.jar \
-  /my/project/home/pipeline.hpl \
-  metadata-export.json \
-  FlinkRunConfig</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_flink_embedded"><a class="anchor" href="#_flink_embedded"></a>Flink embedded</h2> <div class="sectionbody"> <div class="paragraph"> <p>You can specify a master of <code>[local]</code> to run using an embedded Flink engine. It&#8217;s primarily used for testing locally.</p> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../.. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.html b/manual/0/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.html
deleted file mode 100644
index e6d3fa5..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Beam Spark Pipeline Engine :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.html"> <meta name="description" content="Apache Hop supports running pipelines on Apache Spark over Apache Beam. The Apache Spark Runner can be used to execute Beam pipe [...]
-  --master spark://master-host:7077 \
-  --class org.apache.hop.beam.run.MainBeam \
-  --driver-java-options '-DPROJECT_HOME=/my/project/home' \
-  hop-0.70-fat.jar \
-  /my/project/home/pipeline.hpl \
-  metadata-export.json \
-  SparkRunConfig</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_spark_embedded"><a class="anchor" href="#_spark_embedded"></a>Spark embedded</h2> <div class="sectionbody"> <div class="paragraph"> <p>You can specify a master of <code>local[4]</code> to run using an embedded Spark engine. It&#8217;s primarily used for testing locally. The number 4 in the example is the desired number of threads to use when executing. You can also specify <code>*</code> to automatical [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/native-local-pipeline-engine.html b/manual/0/pipeline/pipeline-run-configurations/native-local-pipeline-engine.html
deleted file mode 100644
index cd0f0cb..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/native-local-pipeline-engine.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Local Pipeline Engine :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/native-local-pipeline-engine.html"> <meta name="description" content="The local runner runs Hop pipelines on the local Hop engine. This is the runtime configuration you&#x27;ll use when testing pipelines on y [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/native-remote-pipeline-engine.html b/manual/0/pipeline/pipeline-run-configurations/native-remote-pipeline-engine.html
deleted file mode 100644
index 08f481b..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/native-remote-pipeline-engine.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Remote Pipeline Engine :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/native-remote-pipeline-engine.html"> <meta name="description" content="The remote run configuration runs Hop pipelines on a remote Hop Server. This run configuration requires little configuration, but requir [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-run-configurations/pipeline-run-configurations.html b/manual/0/pipeline/pipeline-run-configurations/pipeline-run-configurations.html
deleted file mode 100644
index ef30072..0000000
--- a/manual/0/pipeline/pipeline-run-configurations/pipeline-run-configurations.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Run Configurations :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-run-configurations/pipeline-run-configurations.html"> <meta name="description" content="Run configurations decouple the design and execution phases of Hop pipeline development. A pipeline is a definition of _how_ data is  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipeline-unit-testing.html b/manual/0/pipeline/pipeline-unit-testing.html
deleted file mode 100644
index 622ce3f..0000000
--- a/manual/0/pipeline/pipeline-unit-testing.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Unit Testing :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipeline-unit-testing.html"> <meta name="description" content="Hop unit tests simulate inputs in the form of _Input data sets_ and validates output against _Golden data sets_. A unit test is a combination of zero or more input sets and  [...]
-2021/04/21 21:16:43 - count by year.0 - Finished processing (I=0, O=0, R=10000, W=22, U=0, E=0)
-2021/04/21 21:16:43 - sort by year.0 - Finished processing (I=0, O=0, R=22, W=22, U=0, E=0)
-2021/04/21 21:16:43 - customers by year out.0 - Finished processing (I=0, O=0, R=22, W=22, U=0, E=0)
-2021/04/21 21:16:43 - read-customers - Unit test 'read-customers UNIT' passed succesfully
-2021/04/21 21:16:43 - read-customers - ----------------------------------------------
-2021/04/21 21:16:43 - read-customers - customers by year out - customers-by-year : Test passed succesfully against golden data set
-2021/04/21 21:16:43 - read-customers - Test passed succesfully against unit test
-2021/04/21 21:16:43 - read-customers - ----------------------------------------------
-2021/04/21 21:16:43 - read-customers - Pipeline duration : 0.108 seconds [  0.108 ]
-2021/04/21 21:16:43 - read-customers - Execution finished on a local pipeline engine with run configuration 'local'</code></pre> </div> </div> <div class="paragraph"> <p>If changes to the pipeline cause the test to fail, a popup will be shown for the failed rows.</p> </div> <div class="paragraph"> <p>In the example below, the number of rows for the year 1990 was changed from 486 to 487, causing the test to fail:</p> </div> <div class="imageblock"> <div class="content"> <img src="../_imag [...]
-2021/04/22 10:05:23 - read-customers - ----------------------------------------------
-2021/04/22 10:05:23 - read-customers - customers by year out - customers-by-year : Test passed succesfully against golden data set
-2021/04/22 10:05:23 - read-customers - Test passed succesfully against unit test
-2021/04/22 10:05:23 - read-customers - ----------------------------------------------
-2021/04/22 10:05:23 - read-customers - Pipeline duration : 0.227 seconds [  0.227" ]</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_run_unit_tests_in_a_pipeline"><a class="anchor" href="#_run_unit_tests_in_a_pipeline"></a>Run unit tests in a pipeline</h3> <div class="paragraph"> <p>Similar to the workflow action, there&#8217;s a transform to run your unit tests:</p> </div> <div class="paragraph"> <p><span class="image"><img src="../_images/pipeline-unit-testing-run-unit-t [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/pipelines.html b/manual/0/pipeline/pipelines.html
deleted file mode 100644
index 6b93b1f..0000000
--- a/manual/0/pipeline/pipelines.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipelines :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/pipelines.html"> <meta name="description" content="Pipelines, together with workflows, are the main building blocks in Hop. Pipelines perform the heavy data lifting: in a pipeline, you read data from one or more sources, perform a number of operati [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/run-preview-debug-pipeline.html b/manual/0/pipeline/run-preview-debug-pipeline.html
deleted file mode 100644
index 37abf54..0000000
--- a/manual/0/pipeline/run-preview-debug-pipeline.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Run, Preview and Debug a Pipeline :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/run-preview-debug-pipeline.html"> <meta name="description" content="Hop Gui offers a lot of functionality to let data developers run, preview and debug pipelines. Feedback is provided through the UI, logging and run metrics. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms.html b/manual/0/pipeline/transforms.html
deleted file mode 100644
index 288d1a4..0000000
--- a/manual/0/pipeline/transforms.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Transform Plugins :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms.html"> <meta name="description" content="Transforms are the cornerstone of HOP, they are used to process and transforming your data, they are the building blocks that are used to create a pipeline."> <meta name="generator" conten [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/abort.html b/manual/0/pipeline/transforms/abort.html
deleted file mode 100644
index b6ba44b..0000000
--- a/manual/0/pipeline/transforms/abort.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Abort :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/abort.html"> <meta name="description" content="The Abort tranform aborts a running pipeline as soon as it receives input data. The main use case for this transform is to throw an error when an unexpected or unwanted situation occurs."> <meta [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/addchecksum.html b/manual/0/pipeline/transforms/addchecksum.html
deleted file mode 100644
index 776e4d8..0000000
--- a/manual/0/pipeline/transforms/addchecksum.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Add a checksum :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/addchecksum.html"> <meta name="description" content="The Add a Checksum transform calculates checksums for one or more fields in the input stream and adds this to the output as a new field."> <meta name="generator" content="Antora 3 [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/addconstant.html b/manual/0/pipeline/transforms/addconstant.html
deleted file mode 100644
index 53fba2f..0000000
--- a/manual/0/pipeline/transforms/addconstant.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Add Constants :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/addconstant.html"> <meta name="description" content="The Add Constant Values transform is a simple and high performance way to add constant values to a pipeline stream."> <meta name="generator" content="Antora 3.0.1"> <link rel="styl [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/addfieldschangesequence.html b/manual/0/pipeline/transforms/addfieldschangesequence.html
deleted file mode 100644
index 878aded..0000000
--- a/manual/0/pipeline/transforms/addfieldschangesequence.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Add value fields changing sequence :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/addfieldschangesequence.html"> <meta name="description" content="The Add Fields Changing Sequence transform simply adds a sequence value which resets each time a value changes in the list of specified fields."> < [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/addsequence.html b/manual/0/pipeline/transforms/addsequence.html
deleted file mode 100644
index d53bbe6..0000000
--- a/manual/0/pipeline/transforms/addsequence.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Add Sequence :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/addsequence.html"> <meta name="description" content="The Add Sequence transform adds a sequence to the Hop stream. A sequence is an ever-changing integer value with a specific start and increment value. Sequences can be generated by H [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/addxml.html b/manual/0/pipeline/transforms/addxml.html
deleted file mode 100644
index 38b3262..0000000
--- a/manual/0/pipeline/transforms/addxml.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Add XML :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/addxml.html"> <meta name="description" content="The Add XML transform allows you to encode the content of a number of fields in a row in XML. This XML is added to the row in the form of a String field."> <meta name="generator" content="Ant [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/analyticquery.html b/manual/0/pipeline/transforms/analyticquery.html
deleted file mode 100644
index c22a62d..0000000
--- a/manual/0/pipeline/transforms/analyticquery.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Analytic Query :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/analyticquery.html"> <meta name="description" content="The Analytic Query transform allows you to peek forward and backwards across rows in a pipeline."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href=".. [...]
---------
-aaa , 1
-aaa , 2
-aaa , 3
-bbb , 4
-bbb , 5
-bbb , 6</code></pre> </div> </div> </div> </div> <div class="paragraph"> <p>And you want to create a field named Z, with the Y value in the previous row.</p> </div> <div class="paragraph"> <p>If you only care about the Y field, you don&#8217;t need to group. And you will have the following result:</p> </div> <div class="exampleblock"> <div class="content"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash" [...]
-------------
-aaa , 1 , &lt;null&gt;
-aaa , 2 , 1
-aaa , 3 , 2
-bbb , 4 , 3
-bbb , 5 , 4
-bbb , 6 , 5</code></pre> </div> </div> </div> </div> <div class="paragraph"> <p>But if you don&#8217;t want to mix the values for aaa and bbb, you can group by the X field, and you will have this:</p> </div> <div class="exampleblock"> <div class="content"> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">X   , Y , Z
-------------
-X   , Y , Z
-------------
-aaa , 1 , &lt;null&gt;
-aaa , 2 , 1
-aaa , 3 , 2
-bbb , 4 , &lt;null&gt;
-bbb , 5 , 4
-bbb , 6 , 5</code></pre> </div> </div> </div> </div> <div class="paragraph"> <p>Thus, by grouping (provided the input is sorted according to your grouping), you can be assured that lead or lag operations will not return row values outside of the defined group.</p> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd>  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/apache-tika.html b/manual/0/pipeline/transforms/apache-tika.html
deleted file mode 100644
index 23cedf6..0000000
--- a/manual/0/pipeline/transforms/apache-tika.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Tika :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/apache-tika.html"> <meta name="description" content="The Apache Tika transform parses files in all sorts of formats and extracts the text content as well as the available metadata."> <meta name="generator" content="Antora 3.0.1"> <link [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/append.html b/manual/0/pipeline/transforms/append.html
deleted file mode 100644
index 52134fd..0000000
--- a/manual/0/pipeline/transforms/append.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Append Streams :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/append.html"> <meta name="description" content="The Append Streams transform reads the data from two transforms, only processing the second stream after the first one is finished."> <meta name="generator" content="Antora 3.0.1"> <li [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/avro-decode.html b/manual/0/pipeline/transforms/avro-decode.html
deleted file mode 100644
index 484129f..0000000
--- a/manual/0/pipeline/transforms/avro-decode.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Avro Decode :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/avro-decode.html"> <meta name="description" content="The Avro Decode transform allows you to decode an Avro field and convert it to Hop fields."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/avro-file-input.html b/manual/0/pipeline/transforms/avro-file-input.html
deleted file mode 100644
index 29723b4..0000000
--- a/manual/0/pipeline/transforms/avro-file-input.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Avro File Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/avro-file-input.html"> <meta name="description" content="The Avro File Input transform simply reads Avro records from one or more files. Each record is encapsulated in an Avro field, each value has its own Schema and record."> <met [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/azure-event-hubs-listener.html b/manual/0/pipeline/transforms/azure-event-hubs-listener.html
deleted file mode 100644
index a36d9c4..0000000
--- a/manual/0/pipeline/transforms/azure-event-hubs-listener.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Azure Event Hubs Listener :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/azure-event-hubs-listener.html"> <meta name="description" content="The Azure Event Hubs Listener transform listens indefinitely to an Event Hub on the Microsoft Azure cloud platform."> <meta name="generator" content="Anto [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/azure-event-hubs-writer.html b/manual/0/pipeline/transforms/azure-event-hubs-writer.html
deleted file mode 100644
index 60402a0..0000000
--- a/manual/0/pipeline/transforms/azure-event-hubs-writer.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Azure Event Hubs Writer :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/azure-event-hubs-writer.html"> <meta name="description" content="The Azure Event Hubs Writer transform allows you to write messages (events) to a streaming service bus called Event Hubs on the Microsoft Azure cloud platform [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beambigqueryinput.html b/manual/0/pipeline/transforms/beambigqueryinput.html
deleted file mode 100644
index c316f16..0000000
--- a/manual/0/pipeline/transforms/beambigqueryinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam BigQuery Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beambigqueryinput.html"> <meta name="description" content="The Beam BigQuery Input transform can be used to input data from Google Cloud BigQuery using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beambigqueryoutput.html b/manual/0/pipeline/transforms/beambigqueryoutput.html
deleted file mode 100644
index 5c73868..0000000
--- a/manual/0/pipeline/transforms/beambigqueryoutput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam BigQuery Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beambigqueryoutput.html"> <meta name="description" content="The Beam BigQuery Output transform can be used to write data to a BigQuery table using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <li [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beambigtableinput.html b/manual/0/pipeline/transforms/beambigtableinput.html
deleted file mode 100644
index 5177e92..0000000
--- a/manual/0/pipeline/transforms/beambigtableinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Bigtable Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beambigtableinput.html"> <meta name="description" content="The Beam Bigtable Input transform can be used to input data from Google Cloud Bigtable using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beambigtableoutput.html b/manual/0/pipeline/transforms/beambigtableoutput.html
deleted file mode 100644
index 4360265..0000000
--- a/manual/0/pipeline/transforms/beambigtableoutput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Bigtable Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beambigtableoutput.html"> <meta name="description" content="The Beam Bigtable Output transform can be used to write data to a Google Cloud Bigtable table using the Beam execution engine."> <meta name="generator" content="Antor [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamgcppublisher.html b/manual/0/pipeline/transforms/beamgcppublisher.html
deleted file mode 100644
index a729714..0000000
--- a/manual/0/pipeline/transforms/beamgcppublisher.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam GCP Pub/Sub : Publish :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamgcppublisher.html"> <meta name="description" content="The Beam GCP Pub/Sub : Publish transform publishes messages to a Google Cloud Pub/Sub topic using the Beam execution engine."> <meta name="generator" content="Ant [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamgcpsubscriber.html b/manual/0/pipeline/transforms/beamgcpsubscriber.html
deleted file mode 100644
index d2f2dee..0000000
--- a/manual/0/pipeline/transforms/beamgcpsubscriber.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam GCP Pub/Sub : Subscribe :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamgcpsubscriber.html"> <meta name="description" content="The Beam GCP Pub/Sub : Subscribe transform gets messages from a Google Cloud Pub/Sub topic using a subscription with the Beam execution engine."> <meta name="g [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beaminput.html b/manual/0/pipeline/transforms/beaminput.html
deleted file mode 100644
index d73c039..0000000
--- a/manual/0/pipeline/transforms/beaminput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beaminput.html"> <meta name="description" content="The Beam Input transform reads files using a file definition with the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamkafkaconsume.html b/manual/0/pipeline/transforms/beamkafkaconsume.html
deleted file mode 100644
index 20ee1a4..0000000
--- a/manual/0/pipeline/transforms/beamkafkaconsume.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Kafka Consume :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamkafkaconsume.html"> <meta name="description" content="The Beam Kafka Consume transform consumes records from a Kafka cluster using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="styles [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamkafkaproduce.html b/manual/0/pipeline/transforms/beamkafkaproduce.html
deleted file mode 100644
index 39de6ad..0000000
--- a/manual/0/pipeline/transforms/beamkafkaproduce.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Kafka Produce :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamkafkaproduce.html"> <meta name="description" content="The Beam Kafka Produce transform publishes records to a Kafka cluster using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesh [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamoutput.html b/manual/0/pipeline/transforms/beamoutput.html
deleted file mode 100644
index 4488371..0000000
--- a/manual/0/pipeline/transforms/beamoutput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamoutput.html"> <meta name="description" content="The Beam Output transform writes files using a file definition with the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamtimestamp.html b/manual/0/pipeline/transforms/beamtimestamp.html
deleted file mode 100644
index 42d79cd..0000000
--- a/manual/0/pipeline/transforms/beamtimestamp.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Timestamp :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamtimestamp.html"> <meta name="description" content="The Beam Timestamp transform adds a custom timestamp using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/beamwindow.html b/manual/0/pipeline/transforms/beamwindow.html
deleted file mode 100644
index b911528..0000000
--- a/manual/0/pipeline/transforms/beamwindow.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Beam Window :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/beamwindow.html"> <meta name="description" content="The Beam Window transform adds event-time-based window functions using the Beam execution engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/blockingtransform.html b/manual/0/pipeline/transforms/blockingtransform.html
deleted file mode 100644
index 412a15e..0000000
--- a/manual/0/pipeline/transforms/blockingtransform.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Blocking transform :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/blockingtransform.html"> <meta name="description" content="The Blocking transform blocks all output until the very last row is received from the previous transform."> <meta name="generator" content="Antora 3.0.1"> <link rel="sty [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/blockuntiltransformsfinish.html b/manual/0/pipeline/transforms/blockuntiltransformsfinish.html
deleted file mode 100644
index 80a194b..0000000
--- a/manual/0/pipeline/transforms/blockuntiltransformsfinish.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Blocking until transforms finish :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/blockuntiltransformsfinish.html"> <meta name="description" content="This transform simply waits until all the transform copies that are specified in the dialog have finished."> <meta name="generator" content="Antor [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/calculator.html b/manual/0/pipeline/transforms/calculator.html
deleted file mode 100644
index 238d916..0000000
--- a/manual/0/pipeline/transforms/calculator.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Calculator :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/calculator.html"> <meta name="description" content="The Calculator transform provides you with predefined functions that can be executed on input field values."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/calldbproc.html b/manual/0/pipeline/transforms/calldbproc.html
deleted file mode 100644
index 0039ecf..0000000
--- a/manual/0/pipeline/transforms/calldbproc.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Call DB procedure :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/calldbproc.html"> <meta name="description" content="The Call DB Procedure transform allows you to execute a database procedure (or function) and get the result(s) back."> <meta name="generator" content="Antora 3.0.1"> <link rel=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/cassandra-input.html b/manual/0/pipeline/transforms/cassandra-input.html
deleted file mode 100644
index 5f94b79..0000000
--- a/manual/0/pipeline/transforms/cassandra-input.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Cassandra Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/cassandra-input.html"> <meta name="description" content="The Cassandra Input transform reads data from a Cassandra table of an Apache Cassandra cluster using CQL (Cassandra Query Language) version 3.x."> <meta name="generator" cont [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/cassandra-output.html b/manual/0/pipeline/transforms/cassandra-output.html
deleted file mode 100644
index f7a265c..0000000
--- a/manual/0/pipeline/transforms/cassandra-output.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Cassandra Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/cassandra-output.html"> <meta name="description" content="The Cassandra Output transform writes data to a Cassandra table of an Apache Cassandra cluster using CQL (Cassandra Query Language) version 3.x."> <meta name="generator" co [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/changefileencoding.html b/manual/0/pipeline/transforms/changefileencoding.html
deleted file mode 100644
index 621f2fe..0000000
--- a/manual/0/pipeline/transforms/changefileencoding.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Change file encoding :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/changefileencoding.html"> <meta name="description" content="The Change File Encoding transform changes a text file from one encoding to another."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/checkfilelocked.html b/manual/0/pipeline/transforms/checkfilelocked.html
deleted file mode 100644
index 38e9ef1..0000000
--- a/manual/0/pipeline/transforms/checkfilelocked.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Check if file is locked :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/checkfilelocked.html"> <meta name="description" content="The Check If A File Is Locked transform tries to determine if a file is locked by another process by trying to move the file to itself."> <meta name="generator" conte [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/checkwebserviceavailable.html b/manual/0/pipeline/transforms/checkwebserviceavailable.html
deleted file mode 100644
index a787d56..0000000
--- a/manual/0/pipeline/transforms/checkwebserviceavailable.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Check if webservice is available :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/checkwebserviceavailable.html"> <meta name="description" content="The Check If Webservice Is Available transform checks if a webservice URL in the data stream is valid, can be connected to and can be read."> <meta  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/clonerow.html b/manual/0/pipeline/transforms/clonerow.html
deleted file mode 100644
index 90865ca..0000000
--- a/manual/0/pipeline/transforms/clonerow.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Clone row :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/clonerow.html"> <meta name="description" content="The Clone Row transform creates copies (clones) of a row and outputs them directly after the original row to the next transforms."> <meta name="generator" content="Antora 3.0.1"> <link re [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/closure.html b/manual/0/pipeline/transforms/closure.html
deleted file mode 100644
index 5e2883d..0000000
--- a/manual/0/pipeline/transforms/closure.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Closure :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/closure.html"> <meta name="description" content="The Closure transform allows you to generate a Reflexive Transitive Closure Table for the Mondrian OLAP engine."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href=" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/coalesce.html b/manual/0/pipeline/transforms/coalesce.html
deleted file mode 100644
index 9f4a4d9..0000000
--- a/manual/0/pipeline/transforms/coalesce.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Coalesce :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/coalesce.html"> <meta name="description" content="The Coalesce transform lets you list multiple fields and returns the first non-null value."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/s [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/columnexists.html b/manual/0/pipeline/transforms/columnexists.html
deleted file mode 100644
index 8ec18d2..0000000
--- a/manual/0/pipeline/transforms/columnexists.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Column exists :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/columnexists.html"> <meta name="description" content="The Column Exists transforms allows you to verify the existence of a specific column in a database table."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" h [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/combinationlookup.html b/manual/0/pipeline/transforms/combinationlookup.html
deleted file mode 100644
index eebed45..0000000
--- a/manual/0/pipeline/transforms/combinationlookup.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Combination lookup/update :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/combinationlookup.html"> <meta name="description" content="The Combination Lookup-Update transform allows you to store information in a junk-dimension table. The transform can possibly also be used to maintain Kimball pur [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/concatfields.html b/manual/0/pipeline/transforms/concatfields.html
deleted file mode 100644
index e12ace4..0000000
--- a/manual/0/pipeline/transforms/concatfields.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Concat Fields :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/concatfields.html"> <meta name="description" content="The Concat Fields transform concatenates multiple fields into one target field. The fields can be separated by a separator and an enclosure."> <meta name="generator" content="Anto [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/copyrowstoresult.html b/manual/0/pipeline/transforms/copyrowstoresult.html
deleted file mode 100644
index 8c1fb7f..0000000
--- a/manual/0/pipeline/transforms/copyrowstoresult.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Copy rows to result :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/copyrowstoresult.html"> <meta name="description" content="The Copy Rows To Result transform allows you to transfer rows of data (in memory) to the next pipeline (or workflow action) in a workflow via an internal result row set. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/creditcardvalidator.html b/manual/0/pipeline/transforms/creditcardvalidator.html
deleted file mode 100644
index 7ac0600..0000000
--- a/manual/0/pipeline/transforms/creditcardvalidator.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Credit card validator :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/creditcardvalidator.html"> <meta name="description" content="The Credit Card Validator transform will help you check the validity of a credit card number and the credit card vendor."> <meta name="generator" content="Antora 3. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/csvinput.html b/manual/0/pipeline/transforms/csvinput.html
deleted file mode 100644
index 78df3e2..0000000
--- a/manual/0/pipeline/transforms/csvinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>CSV File Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/csvinput.html"> <meta name="description" content="The CSV File Input transform reads data from a delimited file."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> < [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/databasejoin.html b/manual/0/pipeline/transforms/databasejoin.html
deleted file mode 100644
index 2cac0c6..0000000
--- a/manual/0/pipeline/transforms/databasejoin.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Database Join :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/databasejoin.html"> <meta name="description" content="The Database Join transform allows you to run a query against a database using data from your pipelines fields as parameters.."> <meta name="generator" content="Antora 3.0.1"> <li [...]
-FROM        product_orders, customer
-WHERE       orders.customernr = customer.customernr
-AND         orders.productnr = ?
-ORDER BY    customer.date_of_birth</code></pre> </div> </div> <div class="paragraph"> <p>The grid is then defined as follows:</p> </div> <div class="imageblock unresolved"> <div class="content"> <img src="databasejoin-grid.png" alt="databasejoin grid"> </div> </div> <div class="paragraph"> <p>When the transform runs, the (?) placeholder defined in the SQL query will be replaced with the incoming productnr field value from the source hop. To define and use multiple parameters, list the fi [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/databaselookup.html b/manual/0/pipeline/transforms/databaselookup.html
deleted file mode 100644
index 33a8963..0000000
--- a/manual/0/pipeline/transforms/databaselookup.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Database Lookup :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/databaselookup.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Database Lookup :: Apache Hop"> <meta property="og:descrip [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/datagrid.html b/manual/0/pipeline/transforms/datagrid.html
deleted file mode 100644
index 6d68728..0000000
--- a/manual/0/pipeline/transforms/datagrid.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Data Grid :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/datagrid.html"> <meta name="description" content="The Data Grid transform allows you to enter a static list of rows in a grid, similar to an in-pipeline spreadsheet. This is usually done for testing, reference or demo purposes."> <meta n [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/delay.html b/manual/0/pipeline/transforms/delay.html
deleted file mode 100644
index 8946195..0000000
--- a/manual/0/pipeline/transforms/delay.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Delay row :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/delay.html"> <meta name="description" content="The Delay Row transform will wait the indicated timeout period before passing an input row to the next transform."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/delete.html b/manual/0/pipeline/transforms/delete.html
deleted file mode 100644
index 59bb155..0000000
--- a/manual/0/pipeline/transforms/delete.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Delete :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/delete.html"> <meta name="description" content="The Delete transform deletes rows of data from a database. This transform is similar to the update family of transforms in that it takes one or more key fields to determine the rows to delete. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/detectemptystream.html b/manual/0/pipeline/transforms/detectemptystream.html
deleted file mode 100644
index fd73fe1..0000000
--- a/manual/0/pipeline/transforms/detectemptystream.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Detect Empty Stream :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/detectemptystream.html"> <meta name="description" content="The Detect Empty Stream transform outputs one single empty row of data if the input stream is empty (ie when input stream does not contain any row). The output row will [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/dimensionlookup.html b/manual/0/pipeline/transforms/dimensionlookup.html
deleted file mode 100644
index 12329b9..0000000
--- a/manual/0/pipeline/transforms/dimensionlookup.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Dimension lookup/update :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/dimensionlookup.html"> <meta name="description" content="The Dimension Lookup/Update transform allows you to implement Ralph Kimball&#x27;s slowly changing dimension for both types: Type I (update) and Type II (insert) toge [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/dummy.html b/manual/0/pipeline/transforms/dummy.html
deleted file mode 100644
index e6ee147..0000000
--- a/manual/0/pipeline/transforms/dummy.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Dummy (do nothing) :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/dummy.html"> <meta name="description" content="The Dummy transform passes data without making any modifications. It functions as a placeholder for testing purposes or a way to combine multiple streams with the same field layout. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/dynamicsqlrow.html b/manual/0/pipeline/transforms/dynamicsqlrow.html
deleted file mode 100644
index cbf9e35..0000000
--- a/manual/0/pipeline/transforms/dynamicsqlrow.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Dynamic SQL row :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/dynamicsqlrow.html"> <meta name="description" content="The Dynamic SQL Row transform allows you to execute a SQL statement that is defined in a database field. The lookup values returned by the transform are added as new fields ont [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/edi2xml.html b/manual/0/pipeline/transforms/edi2xml.html
deleted file mode 100644
index ed5f5fd..0000000
--- a/manual/0/pipeline/transforms/edi2xml.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Edi to XML :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/edi2xml.html"> <meta name="description" content="The Edi To XML transform converts EDI message text (conforming to the ISO 9735 standard) to generic XML."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../. [...]
-	&lt;SEGMENT&gt;
-		&lt;element&gt;
-			&lt;value&gt;&lt;/value&gt;
-			...
-		&lt;/element&gt;
-		...
-	&lt;/SEGMENT&gt;
-	...
-&lt;/edifact&gt;</code></pre> </div> </div> <div class="paragraph"> <p>The conversion rules are:</p> </div> <div class="ulist"> <ul> <li> <p>the root of the document is the "edifact" tag</p> </li> <li> <p>each segment in the edifact message is converted to a tag, using the segment name as the tag name.</p> </li> <li> <p>each field within a segment is represented by an "element" tag</p> </li> <li> <p>each value within a field is represented by an "value" tag</p> </li> </ul> </div> </div>  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/emailinput.html b/manual/0/pipeline/transforms/emailinput.html
deleted file mode 100644
index 1f49057..0000000
--- a/manual/0/pipeline/transforms/emailinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Email Messages Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/emailinput.html"> <meta name="description" content="The Email Messages Input transform allows you to retrieve messages and their attachments from a mail server using the POP3, IMAP or MBOX standard protocols."> <meta name="gen [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/enhancedjsonoutput.html b/manual/0/pipeline/transforms/enhancedjsonoutput.html
deleted file mode 100644
index 1f5ff9e..0000000
--- a/manual/0/pipeline/transforms/enhancedjsonoutput.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Enhanced JSON Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/enhancedjsonoutput.html"> <meta name="description" content="The Enhanced JSON Output transform allows you to generate JSON blocks based on input transform values. Output JSON will be available as a Javascript array or Javascri [...]
-  "result" : [ {
-    "key2" : "C",
-    "lvl1Details" : {
-      "result" : [ {
-        "campo2" : "F",
-        "campo3" : "5"
-      }, {
-        "campo2" : "F",
-        "campo3" : "6"
-      }, {
-        "campo2" : "V",
-        "campo3" : "6"
-      }, {
-        "campo2" : "B",
-        "campo3" : "7"
-      } ]
-    }
-  }, {
-    "key2" : "B",
-    "lvl1Details" : {
-      "result" : [ {
-        "campo2" : "C",
-        "campo3" : "1"
-      }, {
-        "campo2" : "C",
-        "campo3" : "2"
-      }, {
-        "campo2" : "D",
-        "campo3" : "4"
-      } ]
-    }
-  }, {
-    "key2" : "A",
-    "lvl1Details" : {
-      "result" : [ {
-        "campo2" : "B",
-        "campo3" : "1"
-      }, {
-        "campo2" : "B",
-        "campo3" : "2"
-      } ]
-    }
-  } ]
-}</code></pre> </div> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd> <dd><a target="_blank" href="../../../ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/excelinput.html b/manual/0/pipeline/transforms/excelinput.html
deleted file mode 100644
index 01554c2..0000000
--- a/manual/0/pipeline/transforms/excelinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Microsoft Excel input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/excelinput.html"> <meta name="description" content="The Microsoft Excel Input transform reads data from Microsoft Excel spreadsheet. The default spreadsheet type (engine) is set to Excel XLSX, XLS."> <meta name="generator" co [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/excelwriter.html b/manual/0/pipeline/transforms/excelwriter.html
deleted file mode 100644
index 5c4bdc8..0000000
--- a/manual/0/pipeline/transforms/excelwriter.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Excel writer :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/excelwriter.html"> <meta name="description" content="The Microsoft Excel Writer transform writes incoming rows from Hop out to an MS Excel file. It supports both the .xls and .xlsx file formats."> <meta name="generator" content="Antor [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/execprocess.html b/manual/0/pipeline/transforms/execprocess.html
deleted file mode 100644
index b8ae828..0000000
--- a/manual/0/pipeline/transforms/execprocess.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Execute a process :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/execprocess.html"> <meta name="description" content="The Execute A Process transform executes a shell script (on the host that runs the pipeline). This transform is similar to the Shell workflow action, but can be used in a pipel [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/execsql.html b/manual/0/pipeline/transforms/execsql.html
deleted file mode 100644
index 8643806..0000000
--- a/manual/0/pipeline/transforms/execsql.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Execute SQL script :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/execsql.html"> <meta name="description" content="The Execute SQL Script transform runs a SQL script either once, during the initialization phase of the pipeline, or once for every input-row that the transform receives."> <meta n [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/execsqlrow.html b/manual/0/pipeline/transforms/execsqlrow.html
deleted file mode 100644
index cfcc6b6..0000000
--- a/manual/0/pipeline/transforms/execsqlrow.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Execute row SQL script :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/execsqlrow.html"> <meta name="description" content="The Execute Row SQL Script transform executes an SQL script for every input row the transform receives. The SQL to execute can be passed as pipeline fields or read from a f [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/exectests.html b/manual/0/pipeline/transforms/exectests.html
deleted file mode 100644
index 1736cd8..0000000
--- a/manual/0/pipeline/transforms/exectests.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Execute Unit Tests :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/exectests.html"> <meta name="description" content="The Execute Unit Tests transform fetches and executes the available unit tests for the current project."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" h [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/fake.html b/manual/0/pipeline/transforms/fake.html
deleted file mode 100644
index 0b3f262..0000000
--- a/manual/0/pipeline/transforms/fake.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Fake data :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/fake.html"> <meta name="description" content="The Fake Data tranform allows you to generate fake data using the Java Faker library. It can be used to generate pretty data for development, testing or showcasing a project."> <meta name="ge [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/fileexists.html b/manual/0/pipeline/transforms/fileexists.html
deleted file mode 100644
index 8fa8b7e..0000000
--- a/manual/0/pipeline/transforms/fileexists.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>File exists :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/fileexists.html"> <meta name="description" content="The File Exists transforms verifies the existence of a file. The filenames to check are read from pipeline fields. The transform outputs a boolean flag field, indicating whether a fil [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/filemetadata.html b/manual/0/pipeline/transforms/filemetadata.html
deleted file mode 100644
index b3de5c4..0000000
--- a/manual/0/pipeline/transforms/filemetadata.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>File Metadata :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/filemetadata.html"> <meta name="description" content="The File Metadata transform scans a file to determine its metadata structure or layout. Use this transforms in situations where you need to read a structured text file (e.g. CSV,  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/filesfromresult.html b/manual/0/pipeline/transforms/filesfromresult.html
deleted file mode 100644
index 794cd5e..0000000
--- a/manual/0/pipeline/transforms/filesfromresult.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Files from result :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/filesfromresult.html"> <meta name="description" content="The Files From Result transform reads filenames and additional metadata that was added through the &#x27;add filename to result&#x27; in other transforms."> <meta name="gen [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/filestoresult.html b/manual/0/pipeline/transforms/filestoresult.html
deleted file mode 100644
index 08beb21..0000000
--- a/manual/0/pipeline/transforms/filestoresult.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Files to result :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/filestoresult.html"> <meta name="description" content="The Files To Result transform allows you to set filenames in the internal result files of a pipeline, for use by subsequent workflow actions. Subsequent workflow actions can th [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/filterrows.html b/manual/0/pipeline/transforms/filterrows.html
deleted file mode 100644
index 16e01f0..0000000
--- a/manual/0/pipeline/transforms/filterrows.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Filter Rows :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/filterrows.html"> <meta name="description" content="The Filter Rows transform allows you to filter rows based on conditions and comparisons."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/cs [...]
-field2,
-${myvar} AS field3
-FROM table
-WHERE field1=xxxx</code></pre> </div> </div> <div class="paragraph"> <p>Then in the filter row condition, you can have</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">field1 = field3</code></pre> </div> </div> <div class="paragraph"> <p><strong>FYI</strong> - instead of the Table Input trick above you can use the simple "Get Variables" transform to set parameters in fields.</p> </div> </div>  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/fuzzymatch.html b/manual/0/pipeline/transforms/fuzzymatch.html
deleted file mode 100644
index 79c54b2..0000000
--- a/manual/0/pipeline/transforms/fuzzymatch.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Fuzzy match :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/fuzzymatch.html"> <meta name="description" content="The Fuzzy Match transform finds strings that potentially match using duplicate-detecting algorithms that calculate the similarity of two streams of data."> <meta name="generator" cont [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/generaterandomvalue.html b/manual/0/pipeline/transforms/generaterandomvalue.html
deleted file mode 100644
index eda323e..0000000
--- a/manual/0/pipeline/transforms/generaterandomvalue.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Generate Random Value :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/generaterandomvalue.html"> <meta name="description" content="The Generate Random Value transform generates random numbers, integers, strings, UUIDs and more."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesh [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getdatafromxml.html b/manual/0/pipeline/transforms/getdatafromxml.html
deleted file mode 100644
index fc07ad2..0000000
--- a/manual/0/pipeline/transforms/getdatafromxml.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get Data From XML :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getdatafromxml.html"> <meta name="description" content="The Get Data From XML transform provides the ability to read data from any type of XML file using XPath specifications."> <meta name="generator" content="Antora 3.0.1"> <lin [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getfilenames.html b/manual/0/pipeline/transforms/getfilenames.html
deleted file mode 100644
index cf47d6c..0000000
--- a/manual/0/pipeline/transforms/getfilenames.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get filenames :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getfilenames.html"> <meta name="description" content="The Get File Names transform allows you to get information associated with file names on the file system. The information about the retrieved files is added as rows onto the strea [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getfilesrowcount.html b/manual/0/pipeline/transforms/getfilesrowcount.html
deleted file mode 100644
index bb80c0e..0000000
--- a/manual/0/pipeline/transforms/getfilesrowcount.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get files Row Count :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getfilesrowcount.html"> <meta name="description" content="The Get Files Row Count transform counts the number of rows in a file or set of files."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getrecordsfromstream.html b/manual/0/pipeline/transforms/getrecordsfromstream.html
deleted file mode 100644
index e92120b..0000000
--- a/manual/0/pipeline/transforms/getrecordsfromstream.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get records from stream :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getrecordsfromstream.html"> <meta name="description" content="The Get Records From Stream transform returns records that were previously generated by another pipeline in a workflow. The records were passed to this transform [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getrowsfromresult.html b/manual/0/pipeline/transforms/getrowsfromresult.html
deleted file mode 100644
index 4832a7f..0000000
--- a/manual/0/pipeline/transforms/getrowsfromresult.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get Rows from Result :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getrowsfromresult.html"> <meta name="description" content="The Get Rows from Result transform returns rows that were previously generated by another pipeline in a workflow. The rows were passed on to this transform using eithe [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getserversequence.html b/manual/0/pipeline/transforms/getserversequence.html
deleted file mode 100644
index 2f30b98..0000000
--- a/manual/0/pipeline/transforms/getserversequence.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get ID from slave server :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getserversequence.html"> <meta name="description" content="The Get ID From Slave Server transform gets a unique ID from the hop server of your choice. The transform works by asking a hop server for a range of values."> <me [...]
-
-  &lt;hop-server&gt;
-    &lt;name&gt;master1&lt;/name&gt;
-    &lt;hostname&gt;localhost&lt;/hostname&gt;
-    &lt;port&gt;8282&lt;/port&gt;
-    &lt;master&gt;Y&lt;/master&gt;
-  &lt;/hop-server&gt;
-
-  &lt;connection&gt;
-    &lt;name&gt;MySQL&lt;/name&gt;
-    &lt;server&gt;localhost&lt;/server&gt;
-    &lt;type&gt;MYSQL&lt;/type&gt;
-    &lt;access&gt;Native&lt;/access&gt;
-    &lt;database&gt;test&lt;/database&gt;
-    &lt;port&gt;3306&lt;/port&gt;
-    &lt;username&gt;matt&lt;/username&gt;
-    &lt;password&gt;Encrypted 2be98afc86aa7f2e4cb79ce10df90acde&lt;/password&gt;
-  &lt;/connection&gt;
-
-  &lt;sequences&gt;
-
-   &lt;sequence&gt;
-    &lt;name&gt;test&lt;/name&gt;
-    &lt;start&gt;0&lt;/start&gt;
-    &lt;connection&gt;MySQL&lt;/connection&gt;
-    &lt;schema/&gt;
-    &lt;table&gt;SEQ_TABLE&lt;/table&gt;
-    &lt;sequence_field&gt;SEQ_NAME&lt;/sequence_field&gt;
-    &lt;value_field&gt;SEQ_VALUE&lt;/value_field&gt;
-   &lt;/sequence&gt;
-
-  &lt;/sequences&gt;</code></pre> </div> </div> <div class="paragraph"> <p>The start tag is optional and will default to 0 if you leave it out of the definition. You can define as many sequences as you like.</p> </div> </div> </div> <div class="sect1"> <h2 id="_servlet_information"><a class="anchor" href="#_servlet_information"></a>Servlet information</h2> <div class="sectionbody"> <div class="paragraph"> <p>Once the configuration files are changed as shown above, slave servers receive a [...]
-    &lt;connection&gt;MySQL&lt;/connection&gt;
-    &lt;schema/&gt;
-    &lt;start&gt;1234&lt;/start&gt;
-    &lt;table&gt;SEQ_TABLE&lt;/table&gt;
-    &lt;sequence_field&gt;SEQ_NAME&lt;/sequence_field&gt;
-    &lt;value_field&gt;SEQ_VALUE&lt;/value_field&gt;
-
-    &lt;autocreate&gt;N&lt;/autocreate&gt;
-&lt;/autosequence&gt;</code></pre> </div> </div> <div class="paragraph"> <p>The &lt;autocreate&gt; tag allows any sequence name to be specified in the transform without error. In that case, the sequence with the name specified will be created automatically with the start value from the &lt;autosequence&gt; specification.</p> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd> [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getsubfolders.html b/manual/0/pipeline/transforms/getsubfolders.html
deleted file mode 100644
index 5249809..0000000
--- a/manual/0/pipeline/transforms/getsubfolders.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get SubFolder names :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getsubfolders.html"> <meta name="description" content="The Get Subfolder Names transform gets subfolder names from a directory."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/sit [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getsystemdata.html b/manual/0/pipeline/transforms/getsystemdata.html
deleted file mode 100644
index 6668dff..0000000
--- a/manual/0/pipeline/transforms/getsystemdata.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get System Info :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getsystemdata.html"> <meta name="description" content="The Get System Info transform retrieves system information from the Hop project, or the environment or system Hop is running on."> <meta name="generator" content="Antora 3.0.1" [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/gettablenames.html b/manual/0/pipeline/transforms/gettablenames.html
deleted file mode 100644
index 83ab4d8..0000000
--- a/manual/0/pipeline/transforms/gettablenames.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get table names :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/gettablenames.html"> <meta name="description" content="The Get Table Names transform gets table names from a database connection."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site- [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/getvariable.html b/manual/0/pipeline/transforms/getvariable.html
deleted file mode 100644
index 81cc213..0000000
--- a/manual/0/pipeline/transforms/getvariable.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Get variables :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/getvariable.html"> <meta name="description" content="The Get Variables transform allows you to get the value of a variable and returns rows or adds values to existing input rows."> <meta name="generator" content="Antora 3.0.1"> <link [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/groupby.html b/manual/0/pipeline/transforms/groupby.html
deleted file mode 100644
index 8c15dbc..0000000
--- a/manual/0/pipeline/transforms/groupby.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Group By :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/groupby.html"> <meta name="description" content="The Group By transform groups rows from a source, based on a specified field or collection of fields. A new row is generated for each group."> <meta name="generator" content="Antora 3.0.1"> [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/http.html b/manual/0/pipeline/transforms/http.html
deleted file mode 100644
index 7a1159f..0000000
--- a/manual/0/pipeline/transforms/http.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>HTTP client :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/http.html"> <meta name="description" content="The HTTP Client transform performs a simple call to a base URL with additional options."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site- [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/httppost.html b/manual/0/pipeline/transforms/httppost.html
deleted file mode 100644
index 7c64915..0000000
--- a/manual/0/pipeline/transforms/httppost.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>HTTP Post :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/httppost.html"> <meta name="description" content="The HTTP Post transform uses an HTTP POST command to submit form data via a URL."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2 [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/identifylastrow.html b/manual/0/pipeline/transforms/identifylastrow.html
deleted file mode 100644
index e93adfd..0000000
--- a/manual/0/pipeline/transforms/identifylastrow.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Identify last row in a stream :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/identifylastrow.html"> <meta name="description" content="The Identify Last Row In A Stream pipeline transform generates a Boolean field filled with true for the last row, and false otherwise."> <meta name="generator"  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/ifnull.html b/manual/0/pipeline/transforms/ifnull.html
deleted file mode 100644
index 2ecf232..0000000
--- a/manual/0/pipeline/transforms/ifnull.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>If Null :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/ifnull.html"> <meta name="description" content="The If Null transform replaces nulls by a given value either by processing the complete row with all fields, by processing the complete row but only for specific field types (Number, String,  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/injector.html b/manual/0/pipeline/transforms/injector.html
deleted file mode 100644
index 0e0add4..0000000
--- a/manual/0/pipeline/transforms/injector.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Injector :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/injector.html"> <meta name="description" content="The Injector transform is used for special purpose pipelines where you  want to &#x27;inject&#x27; rows into the pipeline using the Hop API and Java, or from streaming input transforms lik [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/insertupdate.html b/manual/0/pipeline/transforms/insertupdate.html
deleted file mode 100644
index 555251e..0000000
--- a/manual/0/pipeline/transforms/insertupdate.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Insert / Update :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/insertupdate.html"> <meta name="description" content="The Insert/Update transform first looks up a row in a table using one or more lookup keys. If a table row for the specified keys can&#x27;t be found, a new row is inserted."> <m [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/javafilter.html b/manual/0/pipeline/transforms/javafilter.html
deleted file mode 100644
index eb0c3c9..0000000
--- a/manual/0/pipeline/transforms/javafilter.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Java Filter :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/javafilter.html"> <meta name="description" content="The Java Filter transform allows the stream to be filtered using a user defined Java expressions."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../. [...]
-  {matching-transform}
-else
-  {non-matching transform}</code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_options"><a class="anchor" href="#_options"></a>Options</h2> <div class="sectionbody"> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left vali [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/javascript.html b/manual/0/pipeline/transforms/javascript.html
deleted file mode 100644
index 7f131e4..0000000
--- a/manual/0/pipeline/transforms/javascript.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>JavaScript :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/javascript.html"> <meta name="description" content="The JavaScript transform allows you to create JavaScript scripts that use the available pipeline fields as variables."> <meta name="generator" content="Antora 3.0.1"> <link rel="styles [...]
-if ( idx &lt; 0 )
-{
-   var lookupValue = 0;
-}
-else
-{
-   var lookupValue = row[idx];
-}</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_add_a_new_field_in_a_row"><a class="anchor" href="#_add_a_new_field_in_a_row"></a>Add a New Field in a Row</h3> <div class="paragraph"> <p>Fields must be added to the rows in the same order to keep the structure of the row coherent.</p> </div> <div class="paragraph"> <p>To add a field, define it as var in the Javascript pane, and add it as a field in the Fields table.</p> </div> </div> <div class="sect2"> <h3 id="_numeric_v [...]
-{
-case 1:
-case 2:
-case 3:
- strvalueswitch = "one, two, three";
- break;
-case 4:
- strvalueswitch = "four";
- break;
-default:
- strvalueswitch = "five";
-}</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_filter_rows"><a class="anchor" href="#_filter_rows"></a>Filter Rows</h3> <div class="paragraph"> <p>To filter rows (remove the rows from the output for example) set the pipeline_Status variable as follows:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-javascript hljs" data-lang="javascript">pipeline_Status = CONTINUE_PIPELINE
-if (/* your condition here */) pipeline_Status = SKIP_PIPELINE</code></pre> </div> </div> <div class="paragraph"> <p>All rows matching the specified condition are removed from the output.</p> </div> </div> </div> </div> </article> </div> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https:/ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/joinrows.html b/manual/0/pipeline/transforms/joinrows.html
deleted file mode 100644
index 0dff8c3..0000000
--- a/manual/0/pipeline/transforms/joinrows.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Join Rows :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/joinrows.html"> <meta name="description" content="The Join Rows transform allows you to produce combinations (Cartesian product) of all rows in the input streams."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" hr [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/jsoninput.html b/manual/0/pipeline/transforms/jsoninput.html
deleted file mode 100644
index 98af0fa..0000000
--- a/manual/0/pipeline/transforms/jsoninput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>JSON Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/jsoninput.html"> <meta name="description" content="The JSON Input transform reads data from JSON structures, files, or incoming fields using a JSONPath expression to extract data and output rows."> <meta name="generator" content="Antora [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/jsonoutput.html b/manual/0/pipeline/transforms/jsonoutput.html
deleted file mode 100644
index 6679522..0000000
--- a/manual/0/pipeline/transforms/jsonoutput.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>JSON Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/jsonoutput.html"> <meta name="description" content="The JSON Output transform allows you to generate JSON blocks based on input transform values."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../.. [...]
-  "data" : [ {
-    "name" : "item",
-    "value" : 25
-  }, {
-    "name" : "item",
-    "value" : 25
-  }, {
-    "name" : "item",
-    "value" : 25
-  } ]
-}{
-  "data" : [ {
-    "name" : "item",
-    "value" : 25
-  } ]
-}</code></pre> </div> </div> <div class="paragraph"> <p>If compatibility mode is enabled and the transform has the following settings:</p> </div> <div class="ulist"> <ul> <li> <p>Json block name = "data"</p> </li> <li> <p>Nr rows in block = 3</p> </li> <li> <p>'Compatibility mode' is checked</p> </li> </ul> </div> <div class="paragraph"> <p>This will output:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" dat [...]
-{"data":[{"name":"item"},{"value":25}]}</code></pre> </div> </div> <div class="paragraph"> <p>Pretty formatting does not affect compatibility mode. We have 2 output json objects. First object harvest first 3 input rows and second object harvests only one row. This happens because of number of rows in a block is 3. Anyway it can be considered as incorrect result, as the real object count for array is 6 for the first output object. By default compatibility mode is disabled.</p> </div> <div [...]
-  "name" : "item",
-  "value" : 25
-}, {
-  "name" : "item",
-  "value" : 25
-}, {
-  "name" : "item",
-  "value" : 25
-} ][ {
-  "name" : "item",
-  "value" : 25
-} ]</code></pre> </div> </div> <div class="paragraph"> <p>We will have just 4 simple json objects that will be outputted as a 4 transform output rows.</p> </div> <div class="paragraph"> <p>In case of json block name is defined - output structure will looks like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
-  "data" : {
-    "name" : "item",
-    "value" : 25
-  }
-}{
-  "data" : {
-    "name" : "item",
-    "value" : 25
-  }
-}{
-  "data" : {
-    "name" : "item",
-    "value" : 25
-  }
-}{
-  "data" : {
-    "name" : "item",
-    "value" : 25
-  }
-}</code></pre> </div> </div> <div class="paragraph"> <p>So this is will be same 4 output objects with json block name defined.</p> </div> <div class="paragraph"> <p>If 'Nr. rows in a block' will be less that 1 output will be as a one object:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
-  "data" : [ {
-    "name" : "item",
-    "value" : 25
-  }, {
-    "name" : "item",
-    "value" : 25
-  }, {
-    "name" : "item",
-    "value" : 25
-  }, {
-    "name" : "item",
-    "value" : 25
-  } ]
-}</code></pre> </div> </div> <div class="paragraph"> <p>This will be one object (one output row) with data block containing json array with 4 objects (as we had 4 input data rows). Please note - when using 0 'Nr. rows in a block' transform will build output object until input data is available. When input is done - one big output object will be passed to output row. For big input data it can impact memory usage.</p> </div> </div> <div class="sect2"> <h3 id="_output_file"><a class="anchor [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/kafkaconsumer.html b/manual/0/pipeline/transforms/kafkaconsumer.html
deleted file mode 100644
index f3e576d..0000000
--- a/manual/0/pipeline/transforms/kafkaconsumer.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Kafka Consumer :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/kafkaconsumer.html"> <meta name="description" content="The Kafka Consumer transform pulls streaming data from Kafka. It runs a sub-pipeline that executes according to message batch size or duration, letting you process a continuous  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/kafkaproducer.html b/manual/0/pipeline/transforms/kafkaproducer.html
deleted file mode 100644
index 74ea50a..0000000
--- a/manual/0/pipeline/transforms/kafkaproducer.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Kafka Producer :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/kafkaproducer.html"> <meta name="description" content="The Kafka Producer transform allows you to publish messages in near-real-time across worker nodes where multiple, subscribed members have access."> <meta name="generator" conten [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/ldapinput.html b/manual/0/pipeline/transforms/ldapinput.html
deleted file mode 100644
index 2c3e03e..0000000
--- a/manual/0/pipeline/transforms/ldapinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>LDAP Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/ldapinput.html"> <meta name="description" content="The LDAP Input transform allows you to read information like users, roles and other data from an LDAP server."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" hre [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/ldapoutput.html b/manual/0/pipeline/transforms/ldapoutput.html
deleted file mode 100644
index 84e9645..0000000
--- a/manual/0/pipeline/transforms/ldapoutput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>LDAP Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/ldapoutput.html"> <meta name="description" content="The LDAP Output transform allows you to write information like users, roles and other data to an LDAP server."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" h [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/loadfileinput.html b/manual/0/pipeline/transforms/loadfileinput.html
deleted file mode 100644
index c08a056..0000000
--- a/manual/0/pipeline/transforms/loadfileinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Load file content in memory :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/loadfileinput.html"> <meta name="description" content="The Load File Content In Memory transform loads the content of a file in memory."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../.. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mail.html b/manual/0/pipeline/transforms/mail.html
deleted file mode 100644
index 089f1f1..0000000
--- a/manual/0/pipeline/transforms/mail.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Mail :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mail.html"> <meta name="description" content="The Mail transform uses an SMTP server to send an email using data from the pipeline fields."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a8 [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mailvalidator.html b/manual/0/pipeline/transforms/mailvalidator.html
deleted file mode 100644
index c5112e5..0000000
--- a/manual/0/pipeline/transforms/mailvalidator.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Mail Validator :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mailvalidator.html"> <meta name="description" content="The Mail Validator transform checks the validity of an email address."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mapping-input.html b/manual/0/pipeline/transforms/mapping-input.html
deleted file mode 100644
index b23e5ec..0000000
--- a/manual/0/pipeline/transforms/mapping-input.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Mapping Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mapping-input.html"> <meta name="description" content="The Mapping Input transform represents and describes the input for a Mapping pipeline (referred to as a Mapping)."> <meta name="generator" content="Antora 3.0.1"> <link rel="styl [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mapping-output.html b/manual/0/pipeline/transforms/mapping-output.html
deleted file mode 100644
index ea41f5a..0000000
--- a/manual/0/pipeline/transforms/mapping-output.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Mapping Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mapping-output.html"> <meta name="description" content="The Mapping Output transform describes the output of the mapping pipeline to the parent pipeline (the pipeline calling the mapping)."> <meta name="generator" content="Antora 3. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/memgroupby.html b/manual/0/pipeline/transforms/memgroupby.html
deleted file mode 100644
index 274c9b0..0000000
--- a/manual/0/pipeline/transforms/memgroupby.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Memory Group By :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/memgroupby.html"> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee.css"> <meta property="og:title" content="Memory Group By :: Apache Hop"> <meta property="og:description [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mergejoin.html b/manual/0/pipeline/transforms/mergejoin.html
deleted file mode 100644
index 3dc1a45..0000000
--- a/manual/0/pipeline/transforms/mergejoin.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Merge Join :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mergejoin.html"> <meta name="description" content="The Merge Join transform performs a classic merge join between data sets with data coming from two different input transforms."> <meta name="generator" content="Antora 3.0.1"> <link rel [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mergerows.html b/manual/0/pipeline/transforms/mergerows.html
deleted file mode 100644
index 8280606..0000000
--- a/manual/0/pipeline/transforms/mergerows.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Merge rows (diff) :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mergerows.html"> <meta name="description" content="The Merge Rows (Diff) transform compares and merges data within two rows of data, adding a field indicator for each row."> <meta name="generator" content="Antora 3.0.1"> <link re [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/metadata-input.html b/manual/0/pipeline/transforms/metadata-input.html
deleted file mode 100644
index 4df0fee..0000000
--- a/manual/0/pipeline/transforms/metadata-input.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/metadata-input.html"> <meta name="description" content="The Metadata Input transform gives you access to the Hop Metadata items in the current project."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href=".. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/metainject.html b/manual/0/pipeline/transforms/metainject.html
deleted file mode 100644
index 47b8e97..0000000
--- a/manual/0/pipeline/transforms/metainject.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata Injection :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/metainject.html"> <meta name="description" content="The Metadata Injection transform inserts data from various sources into a pipeline at runtime."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/metastructure.html b/manual/0/pipeline/transforms/metastructure.html
deleted file mode 100644
index 83117ec..0000000
--- a/manual/0/pipeline/transforms/metastructure.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata structure of stream :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/metastructure.html"> <meta name="description" content="The Metadata Structure Of Stream transform produces the metadata structure of the input fields of this transform as output."> <meta name="generator" content="Antor [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/monetdbbulkloader.html b/manual/0/pipeline/transforms/monetdbbulkloader.html
deleted file mode 100644
index 42687ee..0000000
--- a/manual/0/pipeline/transforms/monetdbbulkloader.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MonetDB Bulk Loader :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/monetdbbulkloader.html"> <meta name="description" content="The MonetDB Bulk Loader transform bulk loads data to MonetDB. This significantly speeds up data loading to MonetDB."> <meta name="generator" content="Antora 3.0.1"> <li [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mongodbinput.html b/manual/0/pipeline/transforms/mongodbinput.html
deleted file mode 100644
index 5ce3f90..0000000
--- a/manual/0/pipeline/transforms/mongodbinput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MongoDB Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mongodbinput.html"> <meta name="description" content="The MongoDB Input transform enables you to retrieve documents or records from a collection within MongoDB."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet"  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/mongodboutput.html b/manual/0/pipeline/transforms/mongodboutput.html
deleted file mode 100644
index 1f44fca..0000000
--- a/manual/0/pipeline/transforms/mongodboutput.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>MongoDB Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/mongodboutput.html"> <meta name="description" content="The MongoDB Output transform can output data to a MongoDB database collection."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/si [...]
-Bob, Jones ,"13 Bob Street", 34
-Fred, Flintstone, "10 Rock Street",50
-Zaphod, Beeblebrox, "Beetlejuice 1", 356
-Noddy,Puppet,"Noddy Land",5</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_document_field_definitions"><a class="anchor" href="#_document_field_definitions"></a>Document field definitions</h5> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Mongo document p [...]
-  "top1" : {
-    "first" : "&lt;string val&gt;"
-   },
-  "array" : [ { "last" : "&lt;string val&gt;" , "address" : "&lt;string val&gt;"}],
-  "age" : "&lt;integer val&gt;"
-}</code></pre> </div> </div> </div> </div> </div> </div> <div class="sect2"> <h3 id="_createdrop_indexes_tab"><a class="anchor" href="#_createdrop_indexes_tab"></a>Create/drop indexes tab</h3> <div class="imageblock"> <div class="content"> <img src="../../_images/mongodb-output-screenshot-indexes-tab.png" alt="mongodb output screenshot indexes tab"> </div> </div> <div class="paragraph"> <p>Use the Create/drop indexes tab to create and drop indexes on one or more fields. Unless unique ind [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/multimerge.html b/manual/0/pipeline/transforms/multimerge.html
deleted file mode 100644
index 5d72926..0000000
--- a/manual/0/pipeline/transforms/multimerge.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Multiway Merge Join :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/multimerge.html"> <meta name="description" content="The Multiway Merge Join transform joins input data from multiple streams."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site- [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-cypher.html b/manual/0/pipeline/transforms/neo4j-cypher.html
deleted file mode 100644
index 95a765b..0000000
--- a/manual/0/pipeline/transforms/neo4j-cypher.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Cypher :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-cypher.html"> <meta name="description" content="The Neo4j Cypher transform allows you to execute any Cypher through the Neo4j Bolt protocol using the Java driver."> <meta name="generator" content="Antora 3.0.1"> <link rel="style [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-gencsv.html b/manual/0/pipeline/transforms/neo4j-gencsv.html
deleted file mode 100644
index 5d9e8ef..0000000
--- a/manual/0/pipeline/transforms/neo4j-gencsv.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Generate CSVs :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-gencsv.html"> <meta name="description" content="The Neo4j Generate CSV transform writes files for nodes and relationships to the import folder for use with Neo4j&#x27;s neo4j-import tool."> <meta name="generator" content= [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-getloginfo.html b/manual/0/pipeline/transforms/neo4j-getloginfo.html
deleted file mode 100644
index f01ac65..0000000
--- a/manual/0/pipeline/transforms/neo4j-getloginfo.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Get Logging Info :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-getloginfo.html"> <meta name="description" content="The Neo4j Get Logging Info transform queries the Neo4j logging graph and retrieves logging information."> <meta name="generator" content="Antora 3.0.1"> <link rel="st [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-graphoutput.html b/manual/0/pipeline/transforms/neo4j-graphoutput.html
deleted file mode 100644
index 606081f..0000000
--- a/manual/0/pipeline/transforms/neo4j-graphoutput.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Graph Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-graphoutput.html"> <meta name="description" content="The Graph Output transform lets you map input fields automatically to a graph model."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-import.html b/manual/0/pipeline/transforms/neo4j-import.html
deleted file mode 100644
index 473d268..0000000
--- a/manual/0/pipeline/transforms/neo4j-import.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Import :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-import.html"> <meta name="description" content="The Neo4j Import transform runs an import command using the provided CSV files."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-output.html b/manual/0/pipeline/transforms/neo4j-output.html
deleted file mode 100644
index bd70742..0000000
--- a/manual/0/pipeline/transforms/neo4j-output.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-output.html"> <meta name="description" content="The Neo4j Output transform allows you to do high performance updates in one node, two nodes or two nodes and a relationship."> <meta name="generator" content="Antora 3.0.1"> <link  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/neo4j-split-graph.html b/manual/0/pipeline/transforms/neo4j-split-graph.html
deleted file mode 100644
index 57c553f..0000000
--- a/manual/0/pipeline/transforms/neo4j-split-graph.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Neo4j Split Graph :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/neo4j-split-graph.html"> <meta name="description" content="The Neo4j Split Graph transforms splits the nodes and relationships of a graph data type."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href=".. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/nullif.html b/manual/0/pipeline/transforms/nullif.html
deleted file mode 100644
index 1aa5779..0000000
--- a/manual/0/pipeline/transforms/nullif.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Null If :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/nullif.html"> <meta name="description" content="The Null If transform sets the value of a certain field to null (empty) if the provided value equals a value specified in this transform."> <meta name="generator" content="Antora 3.0.1"> <lin [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/numberrange.html b/manual/0/pipeline/transforms/numberrange.html
deleted file mode 100644
index afc5968..0000000
--- a/manual/0/pipeline/transforms/numberrange.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Number range :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/numberrange.html"> <meta name="description" content="The Number Range transform creates groups numerical values into a number of predefined ranges."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../.. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/parquet-file-input.html b/manual/0/pipeline/transforms/parquet-file-input.html
deleted file mode 100644
index 3c43dfa..0000000
--- a/manual/0/pipeline/transforms/parquet-file-input.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Parquet File Input :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/parquet-file-input.html"> <meta name="description" content="The Parquet File Input transform reads (primitive) values from an Apache Parquet file."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../ [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/parquet-file-output.html b/manual/0/pipeline/transforms/parquet-file-output.html
deleted file mode 100644
index 1526773..0000000
--- a/manual/0/pipeline/transforms/parquet-file-output.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Parquet File Output :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/parquet-file-output.html"> <meta name="description" content="The Parquet File Output transform writes data into the Apache Parquet file format."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../.. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/pgpdecryptstream.html b/manual/0/pipeline/transforms/pgpdecryptstream.html
deleted file mode 100644
index 97f342c..0000000
--- a/manual/0/pipeline/transforms/pgpdecryptstream.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>PGP decrypt stream :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/pgpdecryptstream.html"> <meta name="description" content="The PGP Decrypt Stream transform decrypts PGP encrypted text."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4 [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/pgpencryptstream.html b/manual/0/pipeline/transforms/pgpencryptstream.html
deleted file mode 100644
index 33b3881..0000000
--- a/manual/0/pipeline/transforms/pgpencryptstream.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>PGP encrypt stream :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/pgpencryptstream.html"> <meta name="description" content="The PGP Encrypt Stream transform encrypts text using PGP."> <meta name="generator" content="Antora 3.0.1"> <link rel="stylesheet" href="../../../../_/css/site-a89d2c4eee. [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/pipelineexecutor.html b/manual/0/pipeline/transforms/pipelineexecutor.html
deleted file mode 100644
index 9ebc937..0000000
--- a/manual/0/pipeline/transforms/pipelineexecutor.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Pipeline Executor :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/pipelineexecutor.html"> <meta name="description" content="The Pipeline Executor transform allows you to execute a Hop pipeline from within a pipeline. It is similar to the Workflow Executor transform, but works with pipelines.">  [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/postgresbulkloader.html b/manual/0/pipeline/transforms/postgresbulkloader.html
deleted file mode 100644
index 3f75826..0000000
--- a/manual/0/pipeline/transforms/postgresbulkloader.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>PostgreSQL Bulk Loader :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/postgresbulkloader.html"> <meta name="description" content="The PostgreSQL Bulk Loader transform streams data from Hop to PostgreSQL, using COPY DATA FROM STDIN into the database."> <meta name="generator" content="Antora 3.0 [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
-  apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
-  indexName: 'hop-doc',
-  inputSelector: '#search-input',
-  autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
-  algoliaOptions: { hitsPerPage: 10 }
-}).autocomplete
-search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
-function focusSearchInput () { document.querySelector('#search-input').focus() }
-if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> <script defer data-domain="hop.apache.org" src="https://plausible.io/js/plausible.js"></script> </body> </html> 
\ No newline at end of file
diff --git a/manual/0/pipeline/transforms/processfiles.html b/manual/0/pipeline/transforms/processfiles.html
deleted file mode 100644
index 872e31e..0000000
--- a/manual/0/pipeline/transforms/processfiles.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Process files :: Apache Hop</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/pipeline/transforms/processfiles.html"> <meta name="description" content="The Process Files transform copies, moves or deletes files by giving the source and target file names in the data stream."> <meta name="generator" content="Antora 3.0.1"> <link re [...]
-            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-            })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- 
-            ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
-            ga('send', 'pageview');
-        }, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
-  appId: 'IEDZCR8JT4',
... 37140 lines suppressed ...