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

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new 40d77549c8 [DOCS] missing pages and marketplace references (#8483)
40d77549c8 is described below

commit 40d77549c8f460320def782cc0f7d41433e1eeec
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Sun Sep 20 16:55:00 2026 +0200

    [DOCS] missing pages and marketplace references (#8483)
---
 .../images/transforms/icons/spark-file-input.svg   |   5 +
 .../images/transforms/icons/spark-file-output.svg  |   4 +
 docs/hop-user-manual/modules/ROOT/nav.adoc         |   3 +
 .../ROOT/pages/database/databases/databricks.adoc  |   1 +
 .../ROOT/pages/hop-gui/perspective-neo4j.adoc      |   1 +
 .../ROOT/pages/hop-tools/hop-arrow-command.adoc    |   1 +
 .../pages/hop-tools/hop-python/hop-python.adoc     |   1 +
 .../pages/metadata-types/beam-file-definition.adoc |   1 +
 .../cassandra/cassandra-connection.adoc            |   1 +
 .../data-stream/arrow-file-stream.adoc             |   1 +
 .../metadata-types/data-stream/arrow-flight.adoc   |   1 +
 .../data-stream/arrow-random-access-file.adoc      |   1 +
 .../metadata-types/databricks-connection.adoc      |   1 +
 .../metadata-types/databricks-vfs-connection.adoc  |   1 +
 .../ROOT/pages/metadata-types/dbt-project.adoc     |   1 +
 .../metadata-types/elastic-location-type.adoc      |   1 +
 .../ROOT/pages/metadata-types/hdfs-connection.adoc |   1 +
 .../pages/metadata-types/minio-connection.adoc     |   1 +
 .../pages/metadata-types/mongodb-connection.adoc   |   1 +
 .../metadata-types/neo4j/neo4j-connection.adoc     |   1 +
 .../metadata-types/neo4j/neo4j-graphmodel.adoc     |   1 +
 .../metadata-types/neo4j/neo4j-location-type.adoc  |   1 +
 .../metadata-types/opensearch-location-type.adoc   |   1 +
 .../metadata-types/redis/redis-connection.adoc     |   1 +
 .../metadata-types/salesforce-connection.adoc      |   1 +
 .../ROOT/pages/metadata-types/spark-catalog.adoc   |   1 +
 .../pages/pipeline/beam/beam-samples-dataflow.adoc |   1 +
 .../pipeline/beam/beam-samples-direct-runner.adoc  |   1 +
 .../pages/pipeline/beam/beam-samples-flink.adoc    |   1 +
 .../pages/pipeline/beam/beam-samples-spark.adoc    |   1 +
 .../dataflowPipeline/google-dataflow-pipeline.adoc |   1 +
 .../flink-k8s-operator-running-hop-pipeline.adoc   |   1 +
 .../pipeline/beam/getting-started-with-beam.adoc   |   1 +
 .../pipeline/beam/running-the-beam-samples.adoc    |   1 +
 .../beam-dataflow-pipeline-engine.adoc             |   1 +
 .../beam-direct-pipeline-engine.adoc               |   1 +
 .../beam-flink-pipeline-engine.adoc                |   1 +
 .../beam-spark-pipeline-engine.adoc                |   1 +
 .../native-spark-pipeline-engine.adoc              |   1 +
 .../spark/cluster-mapping-walkthrough.adoc         |   1 +
 .../spark/getting-started-with-native-spark.adoc   |   1 +
 .../ROOT/pages/pipeline/spark/lakehouse.adoc       |   1 +
 .../pipeline/spark/paths-and-filesystems.adoc      |   1 +
 .../pages/pipeline/transforms/apache-tika.adoc     |   1 +
 .../pages/pipeline/transforms/avro-decode.adoc     |   1 +
 .../pages/pipeline/transforms/avro-encode.adoc     |   1 +
 .../pages/pipeline/transforms/avro-file-input.adoc |   1 +
 .../pipeline/transforms/avro-file-output.adoc      |   1 +
 .../pipeline/transforms/beambigqueryinput.adoc     |   1 +
 .../pipeline/transforms/beambigqueryoutput.adoc    |   1 +
 .../pipeline/transforms/beambigtableinput.adoc     |   1 +
 .../pipeline/transforms/beambigtableoutput.adoc    |   1 +
 .../pages/pipeline/transforms/beamfileinput.adoc   |   1 +
 .../pages/pipeline/transforms/beamfileoutput.adoc  |   1 +
 .../pipeline/transforms/beamgcppublisher.adoc      |   1 +
 .../pipeline/transforms/beamgcpsubscriber.adoc     |   1 +
 .../pipeline/transforms/beamhivecataloginput.adoc  |   1 +
 .../pipeline/transforms/beamkafkaconsume.adoc      |   1 +
 .../pipeline/transforms/beamkafkaproduce.adoc      |   1 +
 .../pipeline/transforms/beamkinesisconsume.adoc    |   1 +
 .../pipeline/transforms/beamkinesisproduce.adoc    |   1 +
 .../pages/pipeline/transforms/beamtimestamp.adoc   |   1 +
 .../ROOT/pages/pipeline/transforms/beamwindow.adoc |   1 +
 .../pages/pipeline/transforms/cassandra-input.adoc |   1 +
 .../pipeline/transforms/cassandra-output.adoc      |   1 +
 .../pages/pipeline/transforms/detectlanguage.adoc  |   1 +
 .../pages/pipeline/transforms/mongodbdelete.adoc   |   1 +
 .../pages/pipeline/transforms/mongodbinput.adoc    |   1 +
 .../pages/pipeline/transforms/mongodboutput.adoc   |   1 +
 .../pipeline/transforms/neo4j-cypher-builder.adoc  | 142 +++++++++++++++++++++
 .../pages/pipeline/transforms/neo4j-cypher.adoc    |   1 +
 .../pages/pipeline/transforms/neo4j-gencsv.adoc    |   1 +
 .../pipeline/transforms/neo4j-getloginfo.adoc      |   1 +
 .../pipeline/transforms/neo4j-graphoutput.adoc     |   1 +
 .../pages/pipeline/transforms/neo4j-import.adoc    |   1 +
 .../pages/pipeline/transforms/neo4j-output.adoc    |   1 +
 .../pipeline/transforms/neo4j-split-graph.adoc     |   1 +
 .../pipeline/transforms/parquet-file-input.adoc    |   1 +
 .../pipeline/transforms/parquet-file-output.adoc   |   1 +
 .../pages/pipeline/transforms/pgvector-search.adoc |   1 +
 .../pages/pipeline/transforms/pgvector-upsert.adoc |   1 +
 .../pages/pipeline/transforms/redis-input.adoc     |   1 +
 .../pages/pipeline/transforms/redis-output.adoc    |   1 +
 .../pipeline/transforms/rulesaccumulator.adoc      |   1 +
 .../pages/pipeline/transforms/rulesexecutor.adoc   |   1 +
 .../pipeline/transforms/salesforcedelete.adoc      |   1 +
 .../pages/pipeline/transforms/salesforceinput.adoc |   1 +
 .../pipeline/transforms/salesforceinsert.adoc      |   1 +
 .../pipeline/transforms/salesforceupdate.adoc      |   1 +
 .../pipeline/transforms/salesforceupsert.adoc      |   1 +
 .../pipeline/transforms/spark-file-input.adoc      |  98 ++++++++++++++
 .../pipeline/transforms/spark-file-output.adoc     |  92 +++++++++++++
 .../transforms/spark-lake-table-input.adoc         |   1 +
 .../transforms/spark-lake-table-maintenance.adoc   |   1 +
 .../transforms/spark-lake-table-merge.adoc         |   1 +
 .../transforms/spark-lake-table-output.adoc        |   1 +
 .../ROOT/pages/pipeline/transforms/spark-sql.adoc  |   1 +
 .../pages/pipeline/transforms/sstable-output.adoc  |   1 +
 .../pages/pipeline/transforms/stanfordnlp.adoc     |   1 +
 .../ROOT/pages/pipeline/transforms/vcardinput.adoc |   1 +
 .../pages/pipeline/transforms/vcardoutput.adoc     |   1 +
 .../ROOT/pages/technology/arrow/apache-arrow.adoc  |   1 +
 .../modules/ROOT/pages/technology/avro/index.adoc  |   1 +
 .../ROOT/pages/technology/cassandra/index.adoc     |   1 +
 .../ROOT/pages/technology/memgraph/index.adoc      |   1 +
 .../modules/ROOT/pages/technology/neo4j/index.adoc |   1 +
 .../technology/neo4j/neo4j-logging-schema.adoc     |   1 +
 .../technology/neo4j/working-with-neo4j-data.adoc  |   1 +
 .../technology/openlineage/dataset-identity.adoc   |   1 +
 .../ROOT/pages/technology/openlineage/index.adoc   |   1 +
 .../modules/ROOT/pages/technology/redis/index.adoc |   1 +
 .../modules/ROOT/pages/vfs/databricks-vfs.adoc     |   1 +
 .../modules/ROOT/pages/vfs/dropbox-vfs.adoc        |   1 +
 .../modules/ROOT/pages/vfs/hdfs-vfs.adoc           |   1 +
 .../modules/ROOT/pages/vfs/minio-vfs.adoc          |   1 +
 .../pages/workflow/actions/cassandra-exec-cql.adoc |   1 +
 .../pages/workflow/actions/databricks-job-run.adoc |   1 +
 .../workflow/actions/databricks-job-wait.adoc      |   1 +
 .../modules/ROOT/pages/workflow/actions/dbt.adoc   |   1 +
 .../ROOT/pages/workflow/actions/documentation.adoc |   1 +
 .../modules/ROOT/pages/workflow/actions/mql.adoc   |   1 +
 .../workflow/actions/neo4j-checkconnections.adoc   |   1 +
 .../pages/workflow/actions/neo4j-constraint.adoc   |   1 +
 .../pages/workflow/actions/neo4j-cypherscript.adoc |   1 +
 .../ROOT/pages/workflow/actions/neo4j-index.adoc   |   1 +
 .../hop/neo4j/transforms/split/SplitGraphMeta.java |   2 +-
 126 files changed, 464 insertions(+), 1 deletion(-)

diff --git 
a/docs/hop-user-manual/modules/ROOT/assets/images/transforms/icons/spark-file-input.svg
 
b/docs/hop-user-manual/modules/ROOT/assets/images/transforms/icons/spark-file-input.svg
new file mode 100644
index 0000000000..dd89035553
--- /dev/null
+++ 
b/docs/hop-user-manual/modules/ROOT/assets/images/transforms/icons/spark-file-input.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"; width="24" height="24">
+    <path d="M 12,12.190476 8,8.1904762 V 11.190476 H 0 v 2 h 8 v 3 m 10,2 V 
6.1904762 c 0,-1.11 -0.9,-2 -2,-2 H 4 a 2,2 0 0 0 -2,2 v 3 h 2 v -3 H 16 V 
18.190476 H 4 v -3 H 2 v 3 a 2,2 0 0 0 2,2 h 12 a 2,2 0 0 0 2,-2 z"
+            style="fill:#0e3a5a;fill-opacity:1"/>
+</svg>
diff --git 
a/docs/hop-user-manual/modules/ROOT/assets/images/transforms/icons/spark-file-output.svg
 
b/docs/hop-user-manual/modules/ROOT/assets/images/transforms/icons/spark-file-output.svg
new file mode 100644
index 0000000000..e3fb4293a6
--- /dev/null
+++ 
b/docs/hop-user-manual/modules/ROOT/assets/images/transforms/icons/spark-file-output.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"; width="24" height="24">
+    <path fill="#0F3B5A" d="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 
3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 
1,18Z"/>
+</svg>
diff --git a/docs/hop-user-manual/modules/ROOT/nav.adoc 
b/docs/hop-user-manual/modules/ROOT/nav.adoc
index eba4f81a41..c05479893a 100644
--- a/docs/hop-user-manual/modules/ROOT/nav.adoc
+++ b/docs/hop-user-manual/modules/ROOT/nav.adoc
@@ -233,6 +233,7 @@ under the License.
 *** xref:pipeline/transforms/multimerge.adoc[Multiway Merge Join]
 *** xref:pipeline/transforms/mysqlbulkloader.adoc[MySQL bulk loader]
 *** xref:pipeline/transforms/neo4j-cypher.adoc[Neo4j Cypher]
+*** xref:pipeline/transforms/neo4j-cypher-builder.adoc[Neo4j Cypher builder]
 *** xref:pipeline/transforms/neo4j-gencsv.adoc[Neo4j generate CSVs]
 *** xref:pipeline/transforms/neo4j-getloginfo.adoc[Neo4j Get Logging Info]
 *** xref:pipeline/transforms/neo4j-graphoutput.adoc[Neo4j graph output]
@@ -291,6 +292,8 @@ under the License.
 *** xref:pipeline/transforms/sort.adoc[Sort Rows]
 *** xref:pipeline/transforms/sortedmerge.adoc[Sorted Merge]
 *** xref:pipeline/transforms/sortedschemamerge.adoc[Sorted schema merge]
+*** xref:pipeline/transforms/spark-file-input.adoc[Spark file input]
+*** xref:pipeline/transforms/spark-file-output.adoc[Spark file output]
 *** xref:pipeline/transforms/spark-lake-table-input.adoc[Spark lake table 
input]
 *** xref:pipeline/transforms/spark-lake-table-maintenance.adoc[Spark lake 
table maintenance]
 *** xref:pipeline/transforms/spark-lake-table-merge.adoc[Spark lake table 
merge]
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/database/databases/databricks.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/database/databases/databricks.adoc
index 8687ec2cd0..d1218cb98c 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/database/databases/databricks.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/database/databases/databricks.adoc
@@ -17,6 +17,7 @@ under the License.
 [[database-plugins-databricks]]
 :documentationPath: /database/databases/
 :language: en_US
+:page-marketplace: hop-tech-databricks
 
 = Databricks
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-neo4j.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-neo4j.adoc
index 98398b14ae..2750729521 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-neo4j.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-neo4j.adoc
@@ -15,6 +15,7 @@ specific language governing permissions and limitations
 under the License.
 ////
 :imagesdir: ../assets/images
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j Perspective
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-arrow-command.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-arrow-command.adoc
index 5bbe33f044..c6c182b867 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-arrow-command.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-arrow-command.adoc
@@ -18,6 +18,7 @@ under the License.
 :imagesdir: ../../../assets/images/
 :page-pagination:
 :description: Hop Arrow command
+:page-marketplace: hop-tech-arrow
 
 = Hop Arrow command
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-python/hop-python.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-python/hop-python.adoc
index 15f10f60fc..758ba3fe65 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-python/hop-python.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/hop-tools/hop-python/hop-python.adoc
@@ -18,6 +18,7 @@ under the License.
 :description: Program Hop pipelines and workflows in Python
 
 :TOC:
+:page-marketplace: hop-misc-py4j
 
 = Hop Python
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/beam-file-definition.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/beam-file-definition.adoc
index e323a4cd40..3abbb0e494 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/beam-file-definition.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/beam-file-definition.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: A Beam File Definition describes a file layout in a Beam 
pipeline. The Beam File Definition specifies the file layout (name, field 
definitions, enclosure and separator) to be used in Beam Pipelines.
+:page-marketplace: hop-engines-beam
 
 = Beam File Definition
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/cassandra/cassandra-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/cassandra/cassandra-connection.adoc
index 24ea35f2c7..32dfd53cda 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/cassandra/cassandra-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/cassandra/cassandra-connection.adoc
@@ -16,6 +16,7 @@ under the License.
 ////
 :documentationPath: /metadata-types/cassandra/
 :language: en_US
+:page-marketplace: hop-tech-cassandra
 
 = Cassandra Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-file-stream.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-file-stream.adoc
index a9dde01b25..fe4313ff9a 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-file-stream.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-file-stream.adoc
@@ -18,6 +18,7 @@ under the License.
 :imagesdir: ../../../assets/images/
 :page-pagination:
 :description: Apache Arrow Flight Data Stream
+:page-marketplace: hop-tech-arrow
 
 = Apache Arrow Flight Data Stream
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-flight.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-flight.adoc
index 69c8d81494..7f5c6ee283 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-flight.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-flight.adoc
@@ -17,6 +17,7 @@ under the License.
 ////
 :imagesdir: ../assets/images
 :description: Apache Arrow Flight data stream
+:page-marketplace: hop-tech-arrow
 
 == Overview
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-random-access-file.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-random-access-file.adoc
index bd7a98eecd..42cafadd3b 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-random-access-file.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/data-stream/arrow-random-access-file.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../../assets/images/
 :page-pagination:
 :description: Apache Arrow Random Access File Data Stream
+:page-marketplace: hop-tech-arrow
 
 = Apache Arrow Random Access File Data Stream
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc
index 571fa12ebd..52ede2a816 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-connection.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Databricks Connection metadata for the Jobs / workspace REST API 
(PAT), used by Databricks job run actions.
+:page-marketplace: hop-tech-databricks
 
 = Databricks Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc
index 3a27c63b43..ffb2463c75 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/databricks-vfs-connection.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Named Databricks VFS connection for Unity Catalog Volumes and 
Workspace files (Files API)
+:page-marketplace: hop-tech-databricks
 
 = Databricks VFS Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/dbt-project.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/dbt-project.adoc
index dced4e7203..a0db38abbd 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/dbt-project.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/dbt-project.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Register a dbt Core project once and reference it from the dbt 
actions in your workflows.
+:page-marketplace: hop-action-dbt
 
 = dbt Project
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/elastic-location-type.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/elastic-location-type.adoc
index 1e05d76390..6bf6e198e5 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/elastic-location-type.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/elastic-location-type.adoc
@@ -17,6 +17,7 @@ under the License.
 
 :documentationPath: /metadata-types/
 :language: en_US
+:page-marketplace: hop-tech-elastic
 
 = Elastic Location Type
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/hdfs-connection.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/hdfs-connection.adoc
index 7fe3900be6..a7d8dfa9cd 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/hdfs-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/hdfs-connection.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Named HDFS connection over WebHDFS, HttpFS or Knox
+:page-marketplace: hop-tech-hadoop
 
 = HDFS Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/minio-connection.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/minio-connection.adoc
index 992d074b28..42ec870307 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/minio-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/minio-connection.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: This is used to register one or more S3 endpoints
+:page-marketplace: hop-tech-minio
 
 = Minio Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/mongodb-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/mongodb-connection.adoc
index 850324dc4b..770a1b30a8 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/mongodb-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/mongodb-connection.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Describes a MongoDB connection. The MongoDB connection, 
specified on a project level, can be reused across multiple (instances of) a 
transform or other plugin types.
+:page-marketplace: hop-tech-mongodb
 
 = MongoDB Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-connection.adoc
index 3e2dc857a4..544427a4c6 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-connection.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /metadata-types/neo4j/
 :language: en_US
 :toc:
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-graphmodel.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-graphmodel.adoc
index 85c923e965..7567fdca46 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-graphmodel.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-graphmodel.adoc
@@ -16,6 +16,7 @@ under the License.
 ////
 :documentationPath: /metadata-types/neo4j/
 :language: en_US
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j Graph Model
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-location-type.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-location-type.adoc
index adf2fce9ba..5afc8432b1 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-location-type.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/neo4j/neo4j-location-type.adoc
@@ -17,6 +17,7 @@ under the License.
 
 :documentationPath: /metadata-types/neo4j/
 :language: en_US
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j Location Type
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/opensearch-location-type.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/opensearch-location-type.adoc
index 8cf7a42452..9691a0ffc7 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/opensearch-location-type.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/opensearch-location-type.adoc
@@ -17,6 +17,7 @@ under the License.
 [[OpenSearchLocationType]]
 :imagesdir: ../../assets/images
 :description: Store Hop execution information in an OpenSearch index.
+:page-marketplace: hop-tech-opensearch
 
 = OpenSearch Location Type
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/redis/redis-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/redis/redis-connection.adoc
index ea6e5ef425..814d4d6502 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/redis/redis-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/redis/redis-connection.adoc
@@ -16,6 +16,7 @@ under the License.
 ////
 :documentationPath: /metadata-types/redis/
 :language: en_US
+:page-marketplace: hop-tech-redis
 
 = Redis Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/salesforce-connection.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/salesforce-connection.adoc
index dba955fd3c..1e273e47b5 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/salesforce-connection.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/salesforce-connection.adoc
@@ -17,6 +17,7 @@ License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Describes a Salesforce connection. The Salesforce connection, 
specified on a project level, can be reused across multiple Salesforce 
transforms.
+:page-marketplace: hop-tech-salesforce
 
 = Salesforce Connection
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/spark-catalog.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/spark-catalog.adoc
index c8928bc717..278f6ac221 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/metadata-types/spark-catalog.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/metadata-types/spark-catalog.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../assets/images/
 :page-pagination:
 :description: Spark Catalog metadata configures Spark SQL catalogs for Delta 
Lake and Apache Iceberg TABLE mode on the native Spark pipeline engine.
+:page-marketplace: hop-engines-spark
 
 = Spark Catalog
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-dataflow.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-dataflow.adoc
index 97015c4eff..964ce31bcc 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-dataflow.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-dataflow.adoc
@@ -20,6 +20,7 @@ under the License.
 
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Running the Apache Beam samples on Google Cloud Dataflow
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-direct-runner.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-direct-runner.adoc
index 3e67c0aaa9..1889aefa6b 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-direct-runner.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-direct-runner.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: Follow the instruction on this page to set up a minimal 
installation to run the Apache Hop samples for the Apache Beam run 
configurations for the Apache Beam Direct Runner.
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Running the Apache Beam samples With the Beam Direct Runner
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-flink.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-flink.adoc
index dc7a9889b1..ba9dc94183 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-flink.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-flink.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: Follow the instruction on this page to set up a minimal 
installation to run the Apache Hop samples for the Apache Beam run 
configurations for Apache Flink.
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Running the Apache Beam samples With Apache Flink
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-spark.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-spark.adoc
index 5ff986d23b..613fd45910 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-spark.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/beam-samples-spark.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: Follow the instruction on this page to set up a minimal 
installation to run the Apache Hop samples for the Apache Beam run 
configurations for Apache Spark.
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Running the Apache Beam samples With Apache Spark
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/dataflowPipeline/google-dataflow-pipeline.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/dataflowPipeline/google-dataflow-pipeline.adoc
index 91101d5c91..e04296059f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/dataflowPipeline/google-dataflow-pipeline.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/dataflowPipeline/google-dataflow-pipeline.adoc
@@ -18,6 +18,7 @@ under the License.
 [[DataflowPipeline]]
 :imagesdir: ../../../assets/images
 :description: This page explains how to use the Google Dataflow pipeline 
templates
+:page-marketplace: hop-engines-beam
 
 = Google Dataflow Pipeline (Template)
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/flink-k8s-operator-running-hop-pipeline.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/flink-k8s-operator-running-hop-pipeline.adoc
index 34dedec891..0d83b6a31a 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/flink-k8s-operator-running-hop-pipeline.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/flink-k8s-operator-running-hop-pipeline.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: This page explains how you can run a Hop pipeline on a Flink 
cluster that is automatically started on kubernetes.
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Running a Hop pipeline using the Flink Kubernetes Operator
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/getting-started-with-beam.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/getting-started-with-beam.adoc
index e9effe2eef..1c93658037 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/getting-started-with-beam.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/getting-started-with-beam.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: Apache Beam is an advanced unified programming model that allows 
you to implement and run batch and streaming data processing jobs.
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Getting started with Apache Beam
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/running-the-beam-samples.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/running-the-beam-samples.adoc
index 293f298946..459900f407 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/running-the-beam-samples.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/beam/running-the-beam-samples.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: Follow the instruction on this page to set up a minimal 
installation to run the Apache Hop samples for the Apache Beam run 
configurations for Apache Spark, Apache Flink and Google Cloud Dataflow.
 
 :toc:
+:page-marketplace: hop-engines-beam
 
 = Running the Apache Beam samples
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc
index 7955f252a2..dbc9ea518e 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-dataflow-pipeline-engine.adoc
@@ -17,6 +17,7 @@ under the License.
 [[BeamDataFlowPipelineEngine]]
 :imagesdir: ../assets/images
 :description: Apache Hop supports running pipelines on GCP Dataflow over 
Apache Beam. GCP Dataflow is a fully managed service for executing Beam 
pipelines.
+:page-marketplace: hop-engines-beam
 
 = Apache Beam Google DataFlow Pipeline Engine
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.adoc
index 723bfb662c..da134b1933 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-direct-pipeline-engine.adoc
@@ -17,6 +17,7 @@ under the License.
 [[BeamDirectPipelineEngine]]
 :imagesdir: ../assets/images
 :description: The Direct runner can be used for local testing and development 
of Hop pipelines on Apache Beam. The Direct Runner executes pipelines on your 
machine and is designed to validate that pipelines adhere to the Apache Beam 
model as closely as possible.
+:page-marketplace: hop-engines-beam
 
 = Apache Beam Direct Pipeline Engine
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.adoc
index 80d50bb8af..9462787b24 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-flink-pipeline-engine.adoc
@@ -17,6 +17,7 @@ under the License.
 [[BeamFlinkPipelineEngine]]
 :imagesdir: ../assets/images
 :description: Apache Hop supports running pipelines on Apache Flink using an 
Apache Beam Flink runner. This page describes how to configure this runner.
+:page-marketplace: hop-engines-beam
 = Apache Beam Flink Pipeline Engine
 
 == Beam Flink
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.adoc
index 80c5e58f4c..08df26bb97 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/beam-spark-pipeline-engine.adoc
@@ -17,6 +17,7 @@ under the License.
 [[BeamSparkPipelineEngine]]
 :imagesdir: ../assets/images
 :description: Apache Hop supports running pipelines on Apache Spark over 
Apache Beam. The Apache Spark Runner can be used to execute Beam pipelines 
using Apache Spark.
+:page-marketplace: hop-engines-beam
 
 = Apache Beam Spark Pipeline Engine
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc
index 4d632af226..4b0132dc99 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc
@@ -17,6 +17,7 @@ under the License.
 [[NativeSparkPipelineEngine]]
 :imagesdir: ../../../assets/images
 :description: Apache Hop native Spark pipeline engine run configuration 
options (Spark 4.1.x without Beam).
+:page-marketplace: hop-engines-spark
 
 = Native Spark Pipeline Engine
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/cluster-mapping-walkthrough.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/cluster-mapping-walkthrough.adoc
index 4ee65a3140..4b1fb032e2 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/cluster-mapping-walkthrough.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/cluster-mapping-walkthrough.adoc
@@ -17,6 +17,7 @@ under the License.
 [[NativeSparkClusterMappingWalkthrough]]
 :imagesdir: ../../../assets/images
 :description: Walk-through: run Native Spark pipelines (Simple Mapping and 
Workflow Executor) on a Docker Spark 4.1 cluster using a project package.
+:page-marketplace: hop-engines-spark
 
 = Cluster demo walk-through (Native Spark)
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc
index 219729e64a..a3a04b898a 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/getting-started-with-native-spark.adoc
@@ -20,6 +20,7 @@ under the License.
 
 :toc:
 :toclevels: 3
+:page-marketplace: hop-engines-spark
 
 = Getting started with the native Spark pipeline engine
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/lakehouse.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/lakehouse.adoc
index 1970719e75..50588960a6 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/lakehouse.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/lakehouse.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: Open table formats (Delta Lake and Apache Iceberg) on the Apache 
Hop native Spark pipeline engine
 :toc:
 :toclevels: 3
+:page-marketplace: hop-engines-spark
 
 = Lakehouse tables on the native Spark engine
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/paths-and-filesystems.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/paths-and-filesystems.adoc
index 7b46059137..d543c09d72 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/paths-and-filesystems.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/spark/paths-and-filesystems.adoc
@@ -17,6 +17,7 @@ under the License.
 [[NativeSparkPathsAndFilesystems]]
 :imagesdir: ../../../assets/images
 :description: Hop VFS URIs versus Spark/Hadoop FileSystem URIs when using the 
native Spark pipeline engine.
+:page-marketplace: hop-engines-spark
 
 = Paths and file systems on native Spark
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/apache-tika.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/apache-tika.adoc
index 13fd05ffb7..1f88e1651f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/apache-tika.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/apache-tika.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Apache Tika transform parses files in all sorts of formats 
and extracts the text content as well as the available metadata.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-tika
 
 = image:transforms/icons/tika.svg[Apache Tika Icon, role="image-doc-icon"] 
Apache Tika
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-decode.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-decode.adoc
index 2c92593d47..e7f5f91d25 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-decode.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-decode.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Avro decode transform allows you to decode an Avro field and 
convert it to Hop fields.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-avro
 
 = image:transforms/icons/avro_decode.svg[Avro decode Icon, 
role="image-doc-icon"] Avro decode
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-encode.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-encode.adoc
index bc367588e8..bb407a1dbf 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-encode.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-encode.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Avro encode transform allows you to encode a new Avro field 
using a selection of Hop fields.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-avro
 
 = image:transforms/icons/avro_encode.svg[Avro encode Icon, 
role="image-doc-icon"] Avro encode
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-input.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-input.adoc
index 59161e360e..9d54360131 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-input.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-input.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: 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.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-avro
 
 = image:transforms/icons/avro_input.svg[Avro file input Icon, 
role="image-doc-icon"] Avro file input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-output.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-output.adoc
index f5b9ec2882..00e0c2331a 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/avro-file-output.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Avro file output transform can write Apache Avro messages to 
a file or field
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-avro
 
 = image:transforms/icons/avro_output.svg[Avro file output Icon, 
role="image-doc-icon"] Avro file output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryinput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryinput.adoc
index 5104f18508..fe5a2ca640 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryinput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryinput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The BigQuery input transform reads data from Google Cloud 
BigQuery.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-bq-input.svg[BigQuery input Icon, 
role="image-doc-icon"] BigQuery input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryoutput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryoutput.adoc
index 3777b23a6c..da3fa8a6be 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryoutput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigqueryoutput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The BigQuery output transform writes data to a Google Cloud 
BigQuery table.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-bq-output.svg[BigQuery output Icon, 
role="image-doc-icon"] BigQuery output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableinput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableinput.adoc
index 097ba2d9b7..041a55ff97 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableinput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableinput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Bigtable input transform can be used to input data from 
Google Cloud Bigtable using the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-gcp-bigtable-input.svg[Beam Bigtable input Icon, 
role="image-doc-icon"] Beam Bigtable input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableoutput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableoutput.adoc
index 5c8bf8a666..b3d7eab17c 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableoutput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beambigtableoutput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Bigtable output transform can be used to write data to 
a Google Cloud Bigtable table using the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-gcp-bigtable-output.svg[Beam Bigtable output 
Icon, role="image-doc-icon"] Beam Bigtable output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileinput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileinput.adoc
index 3677ecd25d..b24db635ae 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileinput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileinput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam file input transform reads files using a file 
definition with the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-input.svg[Beam Input Icon, 
role="image-doc-icon"] Beam file input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileoutput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileoutput.adoc
index 960e055ea5..fd0ca3eaaa 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileoutput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamfileoutput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam file output transform writes files using a file 
definition with the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-output.svg[Beam Output Icon, 
role="image-doc-icon"] Beam file output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcppublisher.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcppublisher.adoc
index 2d678c6245..8e70f653c2 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcppublisher.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcppublisher.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam GCP Pub/Sub: publish transform publishes messages to a 
Google Cloud Pub/Sub topic using the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-gcp-pubsub-publish.svg[Beam Pub/Sub Publish 
Icon, role="image-doc-icon"] Beam GCP Pub/Sub: publish
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcpsubscriber.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcpsubscriber.adoc
index e5002d66e5..4324173d82 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcpsubscriber.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamgcpsubscriber.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam GCP Pub/Sub: subscribe transform gets messages from a 
Google Cloud Pub/Sub topic using a subscription with the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-gcp-pubsub-subscribe.svg[Beam Pub/Sub Subscribe 
Icon, role="image-doc-icon"] Beam GCP Pub/Sub: subscribe
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamhivecataloginput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamhivecataloginput.adoc
index bd01f736c3..5e419fbcca 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamhivecataloginput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamhivecataloginput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Hive Catalog input transform reads data from an Apache 
Hive metastore.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-input.svg[Beam Input Icon, 
role="image-doc-icon"] (Experimental) Beam Hive catalog input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaconsume.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaconsume.adoc
index 9287fbd8b6..8bdbd953d7 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaconsume.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaconsume.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Kafka consume transform consumes records from a Kafka 
cluster using the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-kafka-input.svg[Beam Kafka consume Icon, 
role="image-doc-icon"] Beam Kafka consume
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaproduce.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaproduce.adoc
index c2a8514fc8..764e6748f6 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaproduce.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkafkaproduce.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Kafka produce transform publishes records to a Kafka 
cluster using the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-kafka-output.svg[Beam Kafka produce Icon, 
role="image-doc-icon"] Beam Kafka produce
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisconsume.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisconsume.adoc
index cf61d60c54..88b0b1120f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisconsume.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisconsume.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Kinesis consume transform consumes records from a 
Kinesis stream using the Beam pipeline execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-kinesis-consume.svg[Beam Kinesis consume Icon, 
role="image-doc-icon"] Beam Kinesis consume
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisproduce.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisproduce.adoc
index 9dbcd426a0..5ba4403c29 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisproduce.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamkinesisproduce.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam Kinesis produce transform sends data to a Kinesis 
stream using the Beam pipeline execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-kinesis-produce.svg[Beam Kinesis produce Icon, 
role="image-doc-icon"] Beam Kinesis produce
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamtimestamp.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamtimestamp.adoc
index 881c755ca6..5655a635f6 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamtimestamp.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamtimestamp.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam timestamp transform adds a custom timestamp using the 
Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-timestamp.svg[Beam timestamp Icon, 
role="image-doc-icon"] Beam timestamp
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamwindow.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamwindow.adoc
index 5a2598da46..ddff2f943f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamwindow.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/beamwindow.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Beam window transform adds event-time-based window functions 
using the Beam execution engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=no, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-engines-beam
 
 = image:transforms/icons/beam-window.svg[Beam window Icon, 
role="image-doc-icon"] Beam window
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-input.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-input.adoc
index 18b8d8223c..3ea33a9f44 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-input.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-input.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: The Cassandra Input transform reads data from a Cassandra table 
of an Apache Cassandra cluster using CQL (Cassandra Query Language) version 3.x.
 
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-cassandra
 
 = image:transforms/icons/cassandrain.svg[Cassandra Input transform Icon, 
role="image-doc-icon"] Cassandra Input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-output.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-output.adoc
index 942fd66cbe..699f95e194 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/cassandra-output.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: The Cassandra Output transform writes data to a Cassandra table 
of an Apache Cassandra cluster using CQL (Cassandra Query Language) version 3.x.
 
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-cassandra
 
 = image:transforms/icons/cassandraout.svg[Cassandra Output transform Icon, 
role="image-doc-icon"] Cassandra Output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
index 38d6d1d81c..ace4d07ded 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Detect language transform examine text to identify the 
language.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-detectlanguage
 
 = image:transforms/icons/detectlanguage.svg[Detect language transform Icon, 
role="image-doc-icon"] Detect language
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbdelete.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbdelete.adoc
index dee7688c5d..2994985628 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbdelete.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbdelete.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The MongoDB delete transform enables you to delete documents or 
records from a collection within MongoDB.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-mongodb
 
 = image:transforms/icons/mongodb-delete.svg[MongoDB delete transform Icon, 
role="image-doc-icon"] MongoDB delete
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbinput.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbinput.adoc
index 759a075a27..803f587f76 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbinput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodbinput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The MongoDB Input transform enables you to retrieve documents or 
records from a collection within MongoDB.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-mongodb
 
 = image:transforms/icons/mongodb-input.svg[MongoDB Input transform Icon, 
role="image-doc-icon"] MongoDB Input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodboutput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodboutput.adoc
index c7a7703ecc..0fe0b77272 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodboutput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/mongodboutput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The MongoDB Output transform can output data to a MongoDB 
database collection.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-mongodb
 
 = image:transforms/icons/mongodb-output.svg[MongoDB Output transform Icon, 
role="image-doc-icon"] MongoDB Output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher-builder.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher-builder.adoc
new file mode 100644
index 0000000000..bf3bd63040
--- /dev/null
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher-builder.adoc
@@ -0,0 +1,142 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+:description: The Neo4j Cypher builder transform composes a Cypher statement 
from a list of node and relationship operations, so you can read or update a 
graph without writing Cypher by hand.
+:page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-neo4j
+
+= image:transforms/icons/neo4j_cypher.svg[Neo4j Cypher builder transform Icon, 
role="image-doc-icon"] Neo4j Cypher builder
+
+== Description
+
+The *Neo4j Cypher builder* transform builds a Cypher statement from a list of 
**operations** you define in the dialog: match, merge, create, delete or set 
nodes and relationships, order the result and return values.
+The generated Cypher is shown in the *Cypher* tab and executed over the Bolt 
protocol for every input row, or for a batch of rows at once with `UNWIND`.
+
+Use it when you want the structure of the statement to be visible and editable 
in the dialog rather than typed as free text.
+When you need something the operations cannot express, use the 
xref:pipeline/transforms/neo4j-cypher.adoc[Neo4j Cypher] transform, which runs 
any statement you give it.
+
+== Options
+
+=== Options tab
+
+[options="header",cols="1,3"]
+|===
+|Option |Description
+
+|Transform name
+|Unique name of the transform in the pipeline.
+
+|Neo4j Connection
+|The xref:metadata-types/neo4j/neo4j-connection.adoc[Neo4j connection] to use.
+
+|Batch size (rows)
+|How many input rows are sent to Neo4j in one transaction. Default `1000`. 
With an *Unwind map alias* the whole batch goes into a single `UNWIND` 
statement; without one, the statement is executed once per row inside the same 
transaction.
+
+|Unwind map alias
+|The alias used in the generated `UNWIND $rows AS <alias>` clause, default 
`row`. Every parameter is then referenced as `<alias>.<parameter>` in the 
statement. Clear this field to execute the statement per row with plain 
`$parameter` references instead; that is slower but keeps the input fields on 
the output rows (see <<output>>).
+
+|Maximum retries
+|How many times a failed batch is retried before the transform errors out. 
Default `10`; `0` disables retries.
+|===
+
+=== Parameters tab
+
+Parameters make input field values available to the operations.
+Click *Get parameters* to add every input field.
+
+[options="header",cols="1,3"]
+|===
+|Column |Description
+
+|Parameter
+|The name used to reference the value in the operations.
+
+|Input field
+|The input field whose value is passed.
+
+|Neo4j type
+|The type the value is converted to before it is sent to Neo4j.
+|===
+
+Parameters can be used for property values and keys.
+They can not be used for node labels or relationship labels.
+
+=== Operations tab
+
+The list on the left holds the operations, executed in the order shown; use 
the buttons to add, delete and reorder them.
+Every operation has a name and a type, and the fields on the right depend on 
the type:
+
+[options="header",cols="1,3"]
+|===
+|Operation type |What it generates
+
+|Match node
+|`MATCH (alias:Label {key: value, ...})`. Give the node one or more labels, an 
alias to refer to it later, and the *Node keys* (property name and the 
parameter that supplies its value) that identify it.
+
+|Merge node
+|`MERGE (alias:Label {key: value, ...})`, so the node is created when the keys 
do not match an existing one. Extra *Properties* are set on the node with `SET`.
+
+|Create node
+|`CREATE (alias:Label {...})` with the listed properties.
+
+|Delete node
+|`DELETE alias` for a node matched earlier. Check *Detach when deleting?* to 
also delete the relationships attached to it (`DETACH DELETE`).
+
+|Set values
+|`SET alias.property = value, ...` on a node or relationship matched earlier. 
Each property has a name and a parameter or expression that supplies the value.
+
+|Match relationship
+|`MATCH (source)-[alias:LABEL]->(target)` between two nodes matched or merged 
earlier, referenced by their aliases.
+
+|Merge relationship
+|`MERGE (source)-[alias:LABEL]->(target)`, with optional properties set on the 
relationship.
+
+|Create relationship
+|`CREATE (source)-[alias:LABEL {...}]->(target)`.
+
+|Order by
+|`ORDER BY alias.property [DESC], ...` on the values returned.
+
+|Return values
+|`RETURN alias.property AS name, ...`. Each return value has an alias and 
property or a free expression, an optional *Rename*, the Neo4j type and the Hop 
type it is converted to. The listed values become the output fields of the 
transform.
+|===
+
+=== Cypher tab
+
+Shows the statement the operations generate, with the `UNWIND` clause on top 
when an alias is set.
+It is read-only; change the operations to change the Cypher.
+
+[[output]]
+== Output
+
+* Without a *Return values* operation the transform only writes to the graph 
and passes the input rows through unchanged.
+* With *Return values* and an *Unwind map alias*, the output rows are the 
records Neo4j returns for the whole batch. They can not be matched back to 
individual input rows, so the output layout consists of the return values only.
+* With *Return values* and no unwind alias, every returned record is appended 
to the input row it was produced for, so the output has the input fields 
followed by the return values.
+
+The transform opens a read transaction when the operations only match, order 
and return, and a write transaction as soon as one of them merges, creates, 
deletes or sets values.
+
+== Metadata injection
+
+All options support xref:pipeline/metadata-injection.adoc[metadata injection].
+
+== Related pages
+
+* xref:pipeline/transforms/neo4j-cypher.adoc[Neo4j Cypher] for hand-written 
statements
+* xref:pipeline/transforms/neo4j-output.adoc[Neo4j output] for loading nodes 
and relationships from a row layout
+* xref:metadata-types/neo4j/neo4j-connection.adoc[Neo4j connection]
+* xref:technology/neo4j/index.adoc[Neo4j technology overview]
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher.adoc
index 7c3d59ca79..732c7f1d14 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-cypher.adoc
@@ -19,6 +19,7 @@ under the License.
 :description: The Neo4j Cypher transform allows you to execute any Cypher 
through the Neo4j Bolt protocol using the Java driver.
 
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/neo4j_cypher.svg[Neo4j Cypher transform Icon, 
role="image-doc-icon"] Neo4j Cypher
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-gencsv.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-gencsv.adoc
index 41755847bb..5c15a90b19 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-gencsv.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-gencsv.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Neo4j Generate CSV transform writes files for nodes and 
relationships to the import folder for use with Neo4j's neo4j-import tool.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/neo4j_load.svg[Neo4j generate CSVs transform Icon, 
role="image-doc-icon"] Neo4j generate CSVs
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-getloginfo.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-getloginfo.adoc
index b2520ca598..cbce45a7d0 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-getloginfo.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-getloginfo.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Neo4j Get Logging Info transform queries the Neo4j logging 
graph and retrieves logging information.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/systeminfo.svg[Neo4j Get Logging Info transform Icon, 
role="image-doc-icon"] Neo4j Get Logging Info
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-graphoutput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-graphoutput.adoc
index e46726dd18..7b8f8befe2 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-graphoutput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-graphoutput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Graph Output transform lets you map input fields 
automatically to a graph model.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/neo4j_graph_output.svg[Neo4j graph output transform 
Icon, role="image-doc-icon"] Neo4j graph output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-import.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-import.adoc
index f674712dc1..8712d25aa6 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-import.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-import.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Neo4j import transform runs an import command using the 
provided CSV files.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/neo4j_import.svg[Neo4j import transform Icon, 
role="image-doc-icon"] Neo4j import
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-output.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-output.adoc
index d2e78f7ecf..f10c3db738 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-output.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Neo4j output transform allows you to do high performance 
updates in one node, two nodes or two nodes and a relationship.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/neo4j_output.svg[Neo4j output transform Icon, 
role="image-doc-icon"] Neo4j output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-split-graph.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-split-graph.adoc
index 4cff0a839a..4ccad1ca29 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-split-graph.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/neo4j-split-graph.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Neo4j split graph transforms splits the nodes and 
relationships of a graph data type.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-neo4j
 
 = image:transforms/icons/neo4j_split.svg[Neo4j split graph transform Icon, 
role="image-doc-icon"] Neo4j split graph
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-input.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-input.adoc
index a00d96c822..879d0d549c 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-input.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-input.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Parquet file input transform reads (primitive) values from 
an Apache Parquet file.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-parquet
 
 = image:transforms/icons/parquet_input.svg[Parquet file input transform Icon, 
role="image-doc-icon"] Parquet file input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-output.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-output.adoc
index ad682c0bc5..a30e7560e0 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/parquet-file-output.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Parquet file output transform writes data into the Apache 
Parquet file format.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=yes, Beam Flink=yes, Beam Dataflow=yes
+:page-marketplace: hop-tech-parquet
 
 = image:transforms/icons/parquet_output.svg[Parquet file output transform 
Icon, role="image-doc-icon"] Parquet file output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-search.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-search.adoc
index 24053713a0..37d2ea9a97 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-search.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-search.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /pipeline/transforms/
 :language: en_US
 :description: Run a top-k similarity search against a PostgreSQL table that 
uses the pgvector extension.
+:page-marketplace: hop-tech-pgvector
 
 = image:transforms/icons/vector-store.svg[pgvector search transform Icon, 
role="image-doc-icon"] pgvector search
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-upsert.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-upsert.adoc
index d2096f59c8..e1292580bc 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-upsert.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/pgvector-upsert.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /pipeline/transforms/
 :language: en_US
 :description: Upsert text chunks and their embeddings into a PostgreSQL table 
that uses the pgvector extension.
+:page-marketplace: hop-tech-pgvector
 
 = image:transforms/icons/vector-store.svg[pgvector upsert transform Icon, 
role="image-doc-icon"] pgvector upsert
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-input.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-input.adoc
index 9046f8932d..956163aad2 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-input.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-input.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /pipeline/transforms/
 :language: en_US
 :description: Read STRING, HASH, SET or LIST values from Redis.
+:page-marketplace: hop-tech-redis
 
 = Redis Input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-output.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-output.adoc
index 4d13f37ca6..27da2b293f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/redis-output.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /pipeline/transforms/
 :language: en_US
 :description: Write STRING, HASH, SET or LIST values to Redis.
+:page-marketplace: hop-tech-redis
 
 = Redis Output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesaccumulator.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesaccumulator.adoc
index 17f57f0755..7e8fe4a456 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesaccumulator.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesaccumulator.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The rules accumulator uses Drools to check rows against a rule 
set
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-drools
 
 = image:transforms/icons/rules_acc.svg[Rules accumulator transform Icon, 
role="image-doc-icon"] Rules accumulator
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesexecutor.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesexecutor.adoc
index 5632db4b40..ec12bc00c9 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesexecutor.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/rulesexecutor.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The rules executor uses Drools to check rows against a rule set
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-drools
 
 = image:transforms/icons/rules_exec.svg[Rules executor transform Icon, 
role="image-doc-icon"] Rules executor
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc
index 9aa101a529..5f07ac4852 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforcedelete.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Salesforce Delete transform deletes records directly from 
your Salesforce database using the Salesforce Web Service.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-salesforce
 
 = image:transforms/icons/SFD.svg[Salesforce Delete transform Icon, 
role="image-doc-icon"] Salesforce Delete
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc
index 0b04191396..c2bf9bdcae 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinput.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /pipeline/transforms/
 :language: en_US
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-salesforce
 
 = image:transforms/icons/SFI.svg[Salesforce Input transform Icon, 
role="image-doc-icon"] Salesforce Input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc
index 44aa352030..c726884a68 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceinsert.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Salesforce Insert transform inserts records directly into 
your Salesforce database using the Salesforce Web Service.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-salesforce
 
 = image:transforms/icons/salesforceinsert.svg[Salesforce Insert transform 
Icon, role="image-doc-icon"] Salesforce Insert
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc
index 9fafd43986..2000bf28d9 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupdate.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Salesforce Update transform updates records directly in your 
Salesforce database using the Salesforce Web Service.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-salesforce
 
 = image:transforms/icons/SFUD.svg[Salesforce Update transform Icon, 
role="image-doc-icon"] Salesforce Update
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc
index c6dd98777d..a05bcc5df2 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/salesforceupsert.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Salesforce Upsert transform updates existing records and 
inserts new records into your Salesforce database using the Salesforce Web 
Service.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-salesforce
 
 = image:transforms/icons/SFU.svg[Salesforce Upsert transform Icon, 
role="image-doc-icon"] Salesforce Upsert
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-file-input.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-file-input.adoc
new file mode 100644
index 0000000000..75e53e46c7
--- /dev/null
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-file-input.adoc
@@ -0,0 +1,98 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+:description: Spark file input reads CSV, Parquet, JSON, ORC or text files as 
a Spark Dataset on the native Spark pipeline engine. The path is a Spark/Hadoop 
URI, not a Hop VFS path.
+:page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
+
+= image:transforms/icons/spark-file-input.svg[Spark file input transform Icon, 
role="image-doc-icon"] Spark file input
+
+== Description
+
+*Spark file input* reads a file, directory or glob with 
`spark.read.format(...).load(path)` on the 
xref:pipeline/spark/getting-started-with-native-spark.adoc[native Spark 
pipeline engine] and hands the resulting `Dataset` to the next transform.
+It is the bulk input of the native Spark engine: Spark reads the files in 
parallel on the executors, so use it instead of the classic Text File Input, 
CSV File Input or Parquet File Input transforms for large data.
+
+This transform is **not** available on the local Hop engine or on the Beam 
engines.
+
+The path is a Spark/Hadoop `FileSystem` URI that must be visible to every 
executor, **not** a Hop VFS path: a local path on `local[*]`, `hdfs://…` or 
`s3a://…` on a cluster.
+Hop-only schemes such as `s3://`, `azure://` or a named MinIO connection do 
not work here; see xref:pipeline/spark/paths-and-filesystems.adoc[Paths and 
file systems] for the mapping and for the *Path scheme map* on the run 
configuration.
+
+== Options
+
+[options="header",cols="1,3"]
+|===
+|Option |Description
+
+|Transform name
+|Unique name of the transform in the pipeline.
+
+|Spark path (Hadoop URI)
+|File, directory or glob to read. Supports variables. Avoid `${PROJECT_HOME}` 
when running with a Spark project package: that variable points at the 
extracted definition files, not at data. Use a data variable such as `HOP_DATA` 
or an explicit `s3a://` / `hdfs://` URI instead.
+
+|Format
+|`csv` (default), `parquet`, `json`, `orc` or `text`. Any other Spark data 
source name is passed to `spark.read.format()` as is.
+
+|First line is header
+|CSV and text only. When checked, the first line names the columns and the 
field list is matched to them by name.
+
+|Separator
+|CSV and text only. Field separator, default `,`. Supports variables.
+
+|Quote character
+|CSV and text only. Default `"`. Supports variables.
+
+|Infer schema (CSV without field list)
+|CSV and text only. Lets Spark run an extra pass over the data to guess column 
types. Only applied when the field list is empty; an explicit field list is 
safer and faster for production.
+
+|Multi-line
+|CSV and text only. Allows quoted values to span lines (Spark option 
`multiLine`). Disables header-based schema typing, so columns are read as 
strings and cast afterwards.
+
+|Extra options
+|Additional Spark read options as `key=value` lines, one per line. They are 
applied before the options above, so a key you set here wins over the dialog 
fields (for example `header`, `sep`, `quote`, `mode`, `dateFormat`, 
`timestampFormat`, `recursiveFileLookup`).
+
+|Fields (optional schema)
+|The columns to read, with Hop type, length, precision and format mask. See 
<<fields>> below.
+|===
+
+[[fields]]
+== Fields
+
+When the field list is empty every column in the file is passed on with the 
type Spark gives it (strings for CSV unless *Infer schema* is checked).
+
+When fields are listed they are a **projection**: only the named columns are 
returned, in the listed order, cast to the Hop types you give.
+
+* **CSV/text with a header**: columns are matched to the file header **by 
name**, case-insensitive, in any order. Numeric and date fields are typed by 
the CSV reader itself; other columns are read as strings and cast.
+* **CSV/text without a header**: Spark names the columns `_c0`, `_c1`, … and 
the field list is mapped **by position**.
+* **Parquet, ORC and JSON**: the file already carries a schema, so the fields 
select and cast columns by name.
+
+Date and timestamp fields without a format mask are parsed with a set of 
common masks (`yyyy/MM/dd`, `yyyy-MM-dd`, `MM/dd/yyyy`, `dd/MM/yyyy`, 
`yyyyMMdd`, and the same with a time part). Set a format mask on the field when 
your data uses something else.
+
+Delimited files are read in Spark's `PERMISSIVE` mode with leading and 
trailing whitespace ignored, so a value that does not fit its type becomes 
`null` instead of failing the job. Set `mode=FAILFAST` in *Extra options* if 
you want the job to fail instead.
+
+== Metadata injection
+
+All options support xref:pipeline/metadata-injection.adoc[metadata injection].
+
+Field group `FIELDS`: `NAME`, `TYPE`, `LENGTH`, `PRECISION`, `FORMAT_MASK`.
+
+== Related pages
+
+* xref:pipeline/transforms/spark-file-output.adoc[Spark file output]
+* xref:pipeline/spark/paths-and-filesystems.adoc[Paths and file systems on the 
native Spark engine]
+* xref:pipeline/transforms/spark-lake-table-input.adoc[Spark lake table input] 
for Delta Lake and Apache Iceberg tables
+* 
xref:pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc[Native
 Spark pipeline engine]
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-file-output.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-file-output.adoc
new file mode 100644
index 0000000000..bde439f3d7
--- /dev/null
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-file-output.adoc
@@ -0,0 +1,92 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+  http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:documentationPath: /pipeline/transforms/
+:language: en_US
+:description: Spark file output writes a Spark Dataset as CSV, Parquet, JSON, 
ORC or text files on the native Spark pipeline engine. The path is a 
Spark/Hadoop URI, not a Hop VFS path.
+:page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
+
+= image:transforms/icons/spark-file-output.svg[Spark file output transform 
Icon, role="image-doc-icon"] Spark file output
+
+== Description
+
+*Spark file output* writes the incoming `Dataset` with 
`df.write.format(...).save(path)` on the 
xref:pipeline/spark/getting-started-with-native-spark.adoc[native Spark 
pipeline engine].
+It is the bulk output of the native Spark engine: Spark writes one part file 
per partition in parallel on the executors, so use it instead of the classic 
Text File Output or Parquet File Output transforms for large or partitioned 
writes.
+
+This transform is **not** available on the local Hop engine or on the Beam 
engines.
+It is a leaf: the write is executed as a Spark action when the engine 
materialises the pipeline, and no rows are passed on.
+
+The path is a Spark/Hadoop `FileSystem` URI that must be writable from every 
executor, **not** a Hop VFS path: a local directory on `local[*]`, `hdfs://…` 
or `s3a://…` on a cluster.
+Spark always writes a **directory** of part files at that location, never a 
single file with that name; see <<single-file>> below.
+See xref:pipeline/spark/paths-and-filesystems.adoc[Paths and file systems] for 
the scheme mapping and for the *Path scheme map* on the run configuration.
+
+== Options
+
+[options="header",cols="1,3"]
+|===
+|Option |Description
+
+|Transform name
+|Unique name of the transform in the pipeline.
+
+|Spark path / directory (Hadoop URI)
+|Output directory or prefix. Supports variables. Avoid `${PROJECT_HOME}` when 
running with a Spark project package: that variable points at the extracted 
definition files, not at a data location. Use a data variable such as 
`HOP_DATA` or `OUTPUT_ROOT`, or an explicit `s3a://` / `hdfs://` URI. Can be 
left empty for a path-less sink such as `jdbc`, which is addressed entirely 
through *Extra options*.
+
+|Format
+|`csv` (default), `parquet`, `json`, `orc` or `text`. Any other Spark data 
source name is passed to `df.write.format()` as is, for example `jdbc`.
+
+|Save mode
+|What to do when the target already exists: `Overwrite` (default), `Append`, 
`Ignore` (silently do nothing) or `ErrorIfExists`.
+
+|Write header
+|CSV and text only. Write the column names as the first line of every part 
file.
+
+|Separator
+|CSV and text only. Field separator, default `,`. Supports variables.
+
+|Quote character
+|CSV and text only. Default `"`. Supports variables.
+
+|Partition by columns
+|Comma-separated list of columns to partition the output by. Spark creates one 
sub-directory per distinct value (`column=value/…`) and drops the column from 
the files themselves.
+
+|Coalesce partitions
+|Reduce the number of partitions, and therefore of part files, before writing. 
Supports variables. `1` produces a single part file at the cost of moving all 
data through one task; leave empty to keep Spark's partitioning.
+
+|Extra options
+|Additional Spark write options as `key=value` lines, one per line. They are 
applied before the options above, so a key you set here wins over the dialog 
fields (for example `compression=gzip`, `dateFormat`, `timestampFormat`, 
`nullValue`, or `url`, `dbtable`, `user` and `password` for a `jdbc` sink).
+|===
+
+The output fields are the input fields: this transform does not change the row 
layout.
+
+[[single-file]]
+== Getting a single file
+
+Spark writes `part-00000-…` files into the directory you give, together with a 
`_SUCCESS` marker.
+To get one data file, set *Coalesce partitions* to `1`; the file still lives 
inside the output directory and keeps its Spark-generated name.
+If you need an exact file name, rename or copy it in a following workflow 
action.
+
+== Metadata injection
+
+All options support xref:pipeline/metadata-injection.adoc[metadata injection].
+
+== Related pages
+
+* xref:pipeline/transforms/spark-file-input.adoc[Spark file input]
+* xref:pipeline/spark/paths-and-filesystems.adoc[Paths and file systems on the 
native Spark engine]
+* xref:pipeline/transforms/spark-lake-table-output.adoc[Spark lake table 
output] for Delta Lake and Apache Iceberg tables
+* 
xref:pipeline/pipeline-run-configurations/native-spark-pipeline-engine.adoc[Native
 Spark pipeline engine]
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-input.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-input.adoc
index 89813b1588..5e6901bf56 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-input.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-input.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: Spark lake table input reads Delta Lake or Apache Iceberg tables 
on the native Spark pipeline engine, with optional time travel and projection.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
 
 = image:transforms/icons/spark-lake-table-input.svg[Spark lake table input 
transform Icon, role="image-doc-icon"] Spark lake table input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-maintenance.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-maintenance.adoc
index cefaee6870..ee7d966fab 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-maintenance.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-maintenance.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: Spark lake table maintenance runs OPTIMIZE, VACUUM, expire 
snapshots, and related operations on Delta Lake or Apache Iceberg tables.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
 
 = image:transforms/icons/spark-lake-table-maintenance.svg[Spark lake table 
maintenance transform Icon, role="image-doc-icon"] Spark lake table maintenance
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-merge.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-merge.adoc
index 53704ae1f7..ab116c83d6 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-merge.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-merge.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: Spark lake table merge runs MERGE INTO against Delta Lake or 
Apache Iceberg tables on the native Spark pipeline engine.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
 
 = image:transforms/icons/spark-lake-table-merge.svg[Spark lake table merge 
transform Icon, role="image-doc-icon"] Spark lake table merge
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-output.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-output.adoc
index 6aeaf6a910..b6fffd7355 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-lake-table-output.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: Spark lake table output writes Delta Lake or Apache Iceberg 
tables on the native Spark pipeline engine with ACID commit semantics.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
 
 = image:transforms/icons/spark-lake-table-output.svg[Spark lake table output 
transform Icon, role="image-doc-icon"] Spark lake table output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-sql.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-sql.adoc
index 07114b9001..cd729a2e22 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-sql.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/spark-sql.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: Spark SQL runs a SQL statement over the Datasets of the incoming 
transforms on the native Spark pipeline engine, so joins, unions and 
aggregations are planned as one Catalyst query.
 :page-engines: Hop Engine=no, Single Threaded=no, Native Spark=native, Beam 
Spark=no, Beam Flink=no, Beam Dataflow=no
+:page-marketplace: hop-engines-spark
 
 = image:transforms/icons/spark-sql.svg[Spark SQL transform Icon, 
role="image-doc-icon"] Spark SQL
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/sstable-output.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/sstable-output.adoc
index 21b7f94cfb..78ebe040e5 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/sstable-output.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/sstable-output.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Cassandra SSTable Output transform writes to a file system 
directory as a Cassandra SSTable.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-tech-cassandra
 
 = image:transforms/icons/cassandra.svg[Cassandra SSTable Output transform 
Icon, role="image-doc-icon"] Cassandra SSTable Output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc
index fcd5cd4b8a..7502a71d38 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The Stanford NLP Transform allows you to parse text and provides 
the foundational building blocks for higher level text understanding
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-stanfordnlp
 
 = image:transforms/icons/stanfordnlp.svg[Stanford NLP transform Icon, 
role="image-doc-icon"] Stanford NLP Transform
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardinput.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardinput.adoc
index 708454def0..6fbbd3327a 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardinput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardinput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The vCard Input transform reads vCard (.vcf) files and outputs 
contact fields as rows.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-vcard
 
 = image:transforms/icons/vcard.svg[vCard Input transform Icon, 
role="image-doc-icon"] vCard Input
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardoutput.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardoutput.adoc
index 587f49e028..c8493bbdc3 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardoutput.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/vcardoutput.adoc
@@ -18,6 +18,7 @@ under the License.
 :language: en_US
 :description: The vCard Output transform builds vCard text from stream fields 
and optionally writes .vcf files.
 :page-engines: Hop Engine=yes, Single Threaded=yes, Native Spark=yes, Beam 
Spark=maybe, Beam Flink=maybe, Beam Dataflow=maybe
+:page-marketplace: hop-transform-vcard
 
 = image:transforms/icons/vcard.svg[vCard Output transform Icon, 
role="image-doc-icon"] vCard Output
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/arrow/apache-arrow.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/arrow/apache-arrow.adoc
index 269c209ae9..ba8105e0ca 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/arrow/apache-arrow.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/arrow/apache-arrow.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../../assets/images/
 :page-pagination:
 :description: Apache Arrow
+:page-marketplace: hop-tech-arrow
 
 = Apache Arrow
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/technology/avro/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/avro/index.adoc
index 52238095f8..6b64c60866 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/avro/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/avro/index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/avro/
 :language: en_US
 :description: This page describes how Hop supports the Avro data type.
+:page-marketplace: hop-tech-avro
 
 = Avro
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/cassandra/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/cassandra/index.adoc
index f9ff3ce19c..895b817d07 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/cassandra/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/cassandra/index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/cassandra/
 :language: en_US
 :description: Apache Hop supports Apache Cassandra through a connection 
metadata type, actions and transforms.
+:page-marketplace: hop-tech-cassandra
 
 = Cassandra Technology
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/memgraph/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/memgraph/index.adoc
index 28bcaeafee..c9acff94ba 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/memgraph/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/memgraph/index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/memgraph/
 :language: en_US
 :description: Apache Hop has extensive support for the Neo4j graph database. 
Memgraph is largely compatible with Neo4j and can use a lot of the Neo4j 
functionality in Apache Hop.
+:page-marketplace: hop-tech-neo4j
 
 = Memgraph
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/index.adoc
index 7286c0ca7a..f64bb4299e 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/neo4j/
 :language: en_US
 :description: Apache Hop has extensive support for the Neo4j graph database 
through a dedicated connection metadata type, a graph model type and tens of 
transforms and actions. Additionally, Hop logging data can be written to a 
Neo4j database and can be consulted directly from the Neo4j logging perspective 
in Hop Gui.
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/neo4j-logging-schema.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/neo4j-logging-schema.adoc
index 75c3156c79..1ebc76c0c4 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/neo4j-logging-schema.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/neo4j-logging-schema.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/neo4j/
 :language: en_US
 :description: The Neo4j logging schema describes the nodes and relationships 
Apache Hop writes when logging executions to Neo4j.
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j Logging Schema
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/working-with-neo4j-data.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/working-with-neo4j-data.adoc
index ecbeaba38f..4e11f6719f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/working-with-neo4j-data.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/technology/neo4j/working-with-neo4j-data.adoc
@@ -15,6 +15,7 @@ specific language governing permissions and limitations
 under the License.
 ////
 :description: Apache Hop has extensive support for the Neo4j graph database, 
including a library of samples that explain how to load data to and read from 
your Neo4j graphs through Apache Hop.
+:page-marketplace: hop-tech-neo4j
 
 = Working with Neo4j data
 :toc:
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/dataset-identity.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/dataset-identity.adoc
index 3fff026d85..cc25af186f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/dataset-identity.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/dataset-identity.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/openlineage/
 :language: en_US
 :description: How the Hop OpenLineage sink identifies datasets, and the naming 
another lineage producer has to match to stitch into Hop's graph.
+:page-marketplace: hop-tech-openlineage
 
 = OpenLineage dataset identity
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/index.adoc
index 35d99ff7d1..a11d1378b3 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/openlineage/index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/openlineage/
 :language: en_US
 :description: The OpenLineage technology plugin is a Hop lineage sink that 
maps the engine's lineage events to OpenLineage JSON and posts them to a 
collector such as Marquez.
+:page-marketplace: hop-tech-openlineage
 
 = OpenLineage
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/technology/redis/index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/technology/redis/index.adoc
index e2d315c4e2..10acab52e9 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/technology/redis/index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/technology/redis/index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /technology/redis/
 :language: en_US
 :description: Apache Hop supports Redis through a connection metadata type and 
input/output transforms.
+:page-marketplace: hop-tech-redis
 
 = Redis Technology
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc
index f7e5726717..dc10ea28a2 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/vfs/databricks-vfs.adoc
@@ -18,6 +18,7 @@ under the License.
 :documentationPath: /vfs/
 :language: en_US
 :description: Hop VFS for Databricks Unity Catalog Volumes and Workspace files 
via the Files API
+:page-marketplace: hop-tech-databricks
 
 = Databricks Volumes / Workspace VFS
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs/dropbox-vfs.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/vfs/dropbox-vfs.adoc
index 5ef1397de0..bd9544846e 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/vfs/dropbox-vfs.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/vfs/dropbox-vfs.adoc
@@ -18,6 +18,7 @@ under the License.
 :documentationPath: /vfs/
 :language: en_US
 :description: Apache Hop supports reading from and writing to Dropbox from 
almost anywhere in the platform through Apache VFS
+:page-marketplace: hop-tech-dropbox
 
 = Dropbox VFS
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs/hdfs-vfs.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/vfs/hdfs-vfs.adoc
index 6c717cf925..b1c7785fc5 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/vfs/hdfs-vfs.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/vfs/hdfs-vfs.adoc
@@ -18,6 +18,7 @@ under the License.
 :documentationPath: /vfs/
 :language: en_US
 :description: HDFS through a named VFS connection (WebHDFS / HttpFS / Knox)
+:page-marketplace: hop-tech-hadoop
 
 = HDFS
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/vfs/minio-vfs.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/vfs/minio-vfs.adoc
index e0b6674ad7..6be95f430a 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/vfs/minio-vfs.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/vfs/minio-vfs.adoc
@@ -18,6 +18,7 @@ under the License.
 :documentationPath: /vfs/
 :language: en_US
 :description: Use MinIO or other S3 compatible object stores
+:page-marketplace: hop-tech-minio
 
 = MinIO
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/cassandra-exec-cql.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/cassandra-exec-cql.adoc
index c3fbfafc9b..2352c9acd1 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/cassandra-exec-cql.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/cassandra-exec-cql.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The Cassandra Exec CQL action executes one or more CassandraQL 
statements on a Cassandra cluster.
+:page-marketplace: hop-tech-cassandra
 
 
 = Cassandra Exec CQL
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-run.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-run.adoc
index 4432a3232b..1a3914a851 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-run.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-run.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../../assets/images/
 :page-pagination:
 :description: Databricks job run workflow action — run or submit Jobs API work 
and wait for completion.
+:page-marketplace: hop-tech-databricks
 
 = Databricks job run
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-wait.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-wait.adoc
index b5a7c89668..b18a3b46ba 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-wait.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/databricks-job-wait.adoc
@@ -17,6 +17,7 @@ under the License.
 :imagesdir: ../../../assets/images/
 :page-pagination:
 :description: Databricks job wait — poll a job run until it completes.
+:page-marketplace: hop-tech-databricks
 
 = Databricks job wait
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/dbt.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/dbt.adoc
index fe735e3834..773c5ede21 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/dbt.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/dbt.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The dbt action runs a dbt Core operation against a dbt project 
and reports its per-model results back to the workflow.
+:page-marketplace: hop-action-dbt
 
 = dbt
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/documentation.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/documentation.adoc
index 3cc1f9344c..7d99fa6843 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/documentation.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/documentation.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: Build documentation of a Hop project
+:page-marketplace: hop-misc-documentation
 
 = Build documentation
 
diff --git a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/mql.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/mql.adoc
index d8ada1cd99..49cd882c8f 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/mql.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/mql.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The SQL action executes one or more SQL scripts from this 
action's configuration or from a file.
+:page-marketplace: hop-tech-mongodb
 
 = MongoDB QL
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-checkconnections.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-checkconnections.adoc
index 023e475930..92c8b64f7e 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-checkconnections.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-checkconnections.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The Check Neo4j connections action lines up a list of Neo4j 
connections that you want to check for availability.
+:page-marketplace: hop-tech-neo4j
 
 = Check Neo4j connections
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-constraint.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-constraint.adoc
index d97e865c4c..9ad6d9e405 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-constraint.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-constraint.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The Neo4j constraint action can be used to create or drop 
constraints on node or relationship properties in a Neo4j Graph
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j constraint
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-cypherscript.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-cypherscript.adoc
index 5ceb15bf51..04b583505f 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-cypherscript.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-cypherscript.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The Neo4j Cypher script action executes Cypher statements in a 
workflow.
+:page-marketplace: hop-tech-neo4j
 
 
 = Neo4j Cypher script
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-index.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-index.adoc
index 69a6a2db4d..33c8d15860 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-index.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/neo4j-index.adoc
@@ -17,6 +17,7 @@ under the License.
 :documentationPath: /workflow/actions/
 :language: en_US
 :description: The Neo4j index action can be used to create or drop indexes on 
node or relationship properties in a Neo4j Graph
+:page-marketplace: hop-tech-neo4j
 
 = Neo4j index
 
diff --git 
a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/transforms/split/SplitGraphMeta.java
 
b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/transforms/split/SplitGraphMeta.java
index e23b846778..8c2a07593d 100644
--- 
a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/transforms/split/SplitGraphMeta.java
+++ 
b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/transforms/split/SplitGraphMeta.java
@@ -39,7 +39,7 @@ import org.apache.hop.pipeline.transform.TransformMeta;
     image = "neo4j_split.svg",
     categoryDescription = "i18n::SplitGraphMeta.categoryDescription",
     keywords = "i18n::SplitGraphMeta.keyword",
-    documentationUrl = "/plugins/transforms/split-graph.html")
+    documentationUrl = "/pipeline/transforms/neo4j-split-graph.html")
 public class SplitGraphMeta extends BaseTransformMeta<SplitGraph, 
SplitGraphData> {
 
   @HopMetadataProperty(key = "graph_field")

Reply via email to