diff --git a/integration-tests/samples/read-samples-build-hop-run.hpl b/integration-tests/samples/read-samples-build-hop-run.hpl
index 0079094b008..364a71bf1af 100644
--- a/integration-tests/samples/read-samples-build-hop-run.hpl
+++ b/integration-tests/samples/read-samples-build-hop-run.hpl
@@ -428,6 +428,14 @@ var hop_run_cmd = './hop-run.sh -j samples -r ' + run_config + ' -f ' + filename
- textfileoutput-tiny-file.hpl
- generates the input file required by csvinput-basic.hpl
+
+ - parquet-file-output.hpl
+ - generates the Parquet file read by parquet-file-input.hpl
+
+
+ - data-stream-output.hpl
+ - generates the Arrow stream file read by data-stream-input.hpl
+
Y
1
@@ -575,6 +583,270 @@ var hop_run_cmd = './hop-run.sh -j samples -r ' + run_config + ' -f ' + filename
- structured-extract-basic.hpl
- requires an AI provider named ollama-local
+
+ - call-db-procedure.hpl
+ - requires a stored procedure in the database
+
+
+ - get-table-names.hpl
+ - fails on the H2 2.x metadata of the hop-samples connection (INFORMATION_SCHEMA.CONSTANTS)
+
+
+ - http-client.hpl
+ - requires network access to the URL
+
+
+ - http-post.hpl
+ - requires network access to the URL
+
+
+ - web-services-lookup.hpl
+ - requires network access to the web service
+
+
+ - mail.hpl
+ - requires mail connection sample-mail
+
+
+ - email-messages-input.hpl
+ - requires mail connection sample-mail
+
+
+ - ldap-input.hpl
+ - requires reachable LDAP server
+
+
+ - ldap-output.hpl
+ - requires reachable LDAP server
+
+
+ - jms-consumer.hpl
+ - requires JMS connection sample-jms
+
+
+ - jms-producer.hpl
+ - requires JMS connection sample-jms
+
+
+ - splunk-input.hpl
+ - requires reachable Splunk server
+
+
+ - execution-information.hpl
+ - requires execution info location metadata
+
+
+ - sas-input.hpl
+ - requires a SAS data set file
+
+
+ - pgp-encrypt-stream.hpl
+ - requires gpg and the PGP key of the recipient
+
+
+ - pgp-decrypt-stream.hpl
+ - requires gpg and a PGP private key
+
+
+ - dataset-input.hpl
+ - requires unit test data set metadata
+
+
+ - dataset-output.hpl
+ - requires unit test data set metadata
+
+
+ - execute-unit-tests.hpl
+ - requires unit test metadata
+
+
+ - aws-sns-notify.hpl
+ - requires AWS credentials
+
+
+ - aws-sqs-reader.hpl
+ - requires AWS credentials
+
+
+ - redshift-bulk-loader.hpl
+ - requires AWS credentials and a Redshift cluster
+
+
+ - azure-event-hubs-listener.hpl
+ - requires Azure Event Hubs and credentials
+
+
+ - azure-event-hubs-writer.hpl
+ - requires Azure Event Hubs and credentials
+
+
+ - cassandra-input.hpl
+ - requires reachable Cassandra cluster
+
+
+ - cassandra-output.hpl
+ - requires reachable Cassandra cluster
+
+
+ - cassandra-sstable-output.hpl
+ - requires Cassandra connection settings
+
+
+ - google-sheets-input.hpl
+ - requires Google credentials
+
+
+ - google-sheets-output.hpl
+ - requires Google credentials
+
+
+ - google-analytics-4.hpl
+ - requires Google credentials
+
+
+ - salesforce-input.hpl
+ - requires Salesforce credentials
+
+
+ - salesforce-insert.hpl
+ - requires Salesforce credentials
+
+
+ - salesforce-update.hpl
+ - requires Salesforce credentials
+
+
+ - salesforce-upsert.hpl
+ - requires Salesforce credentials
+
+
+ - salesforce-delete.hpl
+ - requires Salesforce credentials
+
+
+ - pgvector-search.hpl
+ - requires PostgreSQL with the pgvector extension
+
+
+ - pgvector-upsert.hpl
+ - requires PostgreSQL with the pgvector extension
+
+
+ - sftp-put.hpl
+ - requires reachable SFTP host and credentials
+
+
+ - embed-text.hpl
+ - requires AI connection with an embedding model
+
+
+ - mssql-bulk-loader.hpl
+ - requires a SQL Server connection named mssql
+
+
+ - mysql-bulk-loader.hpl
+ - requires a MySQL connection named mysql
+
+
+ - monetdb-bulk-loader.hpl
+ - requires a MonetDB connection named monetdb
+
+
+ - postgresql-bulk-loader.hpl
+ - requires a PostgreSQL connection named postgresql
+
+
+ - oracle-bulk-loader.hpl
+ - requires an Oracle connection named oracle
+
+
+ - cratedb-bulk-loader.hpl
+ - requires a CrateDB connection named cratedb
+
+
+ - snowflake-bulk-loader.hpl
+ - requires a Snowflake connection named snowflake
+
+
+ - microsoft-access-output.hpl
+ - requires an Access database file and table name
+
+
+ - doris-bulk-loader.hpl
+ - requires a reachable Doris frontend
+
+
+ - teradata-fastload-bulk-loader.hpl
+ - requires a Teradata connection named teradata
+
+
+ - rules-executor.hpl
+ - requires a rules definition
+
+
+ - beam-bigquery-input.hpl
+ - requires Beam run configuration and GCP credentials
+
+
+ - beam-bigquery-output.hpl
+ - requires Beam run configuration and GCP credentials
+
+
+ - beam-bigtable-input.hpl
+ - requires Beam run configuration and GCP credentials
+
+
+ - beam-gcp-pubsub-publish.hpl
+ - requires Beam run configuration and GCP credentials
+
+
+ - beam-gcp-pubsub-subscribe.hpl
+ - requires Beam run configuration and GCP credentials
+
+
+ - beam-kinesis-consume.hpl
+ - requires Beam run configuration and AWS credentials
+
+
+ - beam-kinesis-produce.hpl
+ - requires Beam run configuration and AWS credentials
+
+
+ - beam-timestamp.hpl
+ - requires Beam run configuration
+
+
+ - beam-hive-catalog-input.hpl
+ - requires Beam run configuration and a Hive metastore
+
+
+ - redis-input-multi-structure.hpl
+ - requires a reachable Redis server and Redis connection localhost_standalone
+
+
+ - redis-output-set.hpl
+ - requires a reachable Redis server and Redis connection localhost_standalone
+
+
+ - redis-output-stream.hpl
+ - requires a reachable Redis server and Redis connection localhost_standalone
+
+
+ - redis-output-list.hpl
+ - requires a reachable Redis server and Redis connection localhost_standalone
+
+
+ - redis-output-string.hpl
+ - requires a reachable Redis server and Redis connection localhost_standalone
+
+
+ - redis-output-hash.hpl
+ - requires a reachable Redis server and Redis connection localhost_standalone
+
+
+ - odata-input-northwind.hpl
+ - requires network access to services.odata.org
+
Y
1
@@ -806,4 +1078,4 @@ var hop_run_cmd = './hop-run.sh -j samples -r ' + run_config + ' -f ' + filename
-
+
\ No newline at end of file
diff --git a/plugins/databases/access/src/assembly/assembly.xml b/plugins/databases/access/src/assembly/assembly.xml
index 51f9d3930ed..f6789116d36 100644
--- a/plugins/databases/access/src/assembly/assembly.xml
+++ b/plugins/databases/access/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/access/src/main/samples/transforms/microsoft-access-output.hpl b/plugins/databases/access/src/main/samples/transforms/microsoft-access-output.hpl
new file mode 100644
index 00000000000..6bcf8c5d4c6
--- /dev/null
+++ b/plugins/databases/access/src/main/samples/transforms/microsoft-access-output.hpl
@@ -0,0 +1,139 @@
+
+
+
+
+ microsoft-access-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a Microsoft Access database file. Set the Access database file and table name before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Microsoft Access output
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Microsoft Access output
+ AccessOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ Y
+ 500
+ Y
+ Y
+ N
+ V2019
+ N
+
+
+ 1184
+ 288
+
+
+
+
+
+
diff --git a/plugins/databases/cratedb/src/assembly/assembly.xml b/plugins/databases/cratedb/src/assembly/assembly.xml
index 4132bed1ba7..6746ca9866d 100644
--- a/plugins/databases/cratedb/src/assembly/assembly.xml
+++ b/plugins/databases/cratedb/src/assembly/assembly.xml
@@ -37,6 +37,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/cratedb/src/main/samples/transforms/cratedb-bulk-loader.hpl b/plugins/databases/cratedb/src/main/samples/transforms/cratedb-bulk-loader.hpl
new file mode 100644
index 00000000000..7fb35d0f713
--- /dev/null
+++ b/plugins/databases/cratedb/src/main/samples/transforms/cratedb-bulk-loader.hpl
@@ -0,0 +1,171 @@
+
+
+
+
+ cratedb-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a CrateDB table. Create a CrateDB connection named cratedb before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ load
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ load
+ CrateDBBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ cratedb
+ doc
+
+ N
+
+ 1000
+
+ Encrypted
+ N
+
+ Encrypted
+ N
+ N
+ Y
+ Y
+ file:///home/output-stream-0004.csv
+ ${PROJECT_HOME}/import/
+ N
+
+ N
+ N
+
+
+ id
+ id
+
+
+ ratio
+ ratio
+
+
+ name
+ name
+
+
+ when_ts
+ when_ts
+
+
+
+
+ 480
+ 192
+
+
+
+
+
+
diff --git a/plugins/databases/doris/src/assembly/assembly.xml b/plugins/databases/doris/src/assembly/assembly.xml
index 64b2252dbc9..ec1150f5d23 100644
--- a/plugins/databases/doris/src/assembly/assembly.xml
+++ b/plugins/databases/doris/src/assembly/assembly.xml
@@ -38,6 +38,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/doris/src/main/samples/transforms/doris-bulk-loader.hpl b/plugins/databases/doris/src/main/samples/transforms/doris-bulk-loader.hpl
new file mode 100644
index 00000000000..91789a16d76
--- /dev/null
+++ b/plugins/databases/doris/src/main/samples/transforms/doris-bulk-loader.hpl
@@ -0,0 +1,136 @@
+
+
+
+
+ doris-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into an Apache Doris table. Set the Doris frontend host, database, table and credentials before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Doris bulk loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Doris bulk loader
+ DorisBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ 0
+ 0
+
+
+
+
+ 1376
+ 160
+
+
+
+
+
+
diff --git a/plugins/databases/monetdb/src/assembly/assembly.xml b/plugins/databases/monetdb/src/assembly/assembly.xml
index b4e207d968f..50af6743e7f 100644
--- a/plugins/databases/monetdb/src/assembly/assembly.xml
+++ b/plugins/databases/monetdb/src/assembly/assembly.xml
@@ -38,6 +38,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/monetdb/src/main/samples/transforms/monetdb-bulk-loader.hpl b/plugins/databases/monetdb/src/main/samples/transforms/monetdb-bulk-loader.hpl
new file mode 100644
index 00000000000..79b4aab50f7
--- /dev/null
+++ b/plugins/databases/monetdb/src/main/samples/transforms/monetdb-bulk-loader.hpl
@@ -0,0 +1,153 @@
+
+
+
+
+ monetdb-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a MonetDB table. Create a MonetDB connection named monetdb before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ MonetDB bulk loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ MonetDB bulk loader
+ MonetDBBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ monetdb
+ 100000
+ sys
+
+
+ N
+ Y
+ |
+ "
+ null
+ UTF-8
+
+ id
+ id
+ N
+
+
+ payload
+ payload
+ N
+
+
+
+ 352
+ 80
+
+
+
+
+
+
diff --git a/plugins/databases/mssqlnative/src/assembly/assembly.xml b/plugins/databases/mssqlnative/src/assembly/assembly.xml
index 15752e266da..3c2ca835b41 100644
--- a/plugins/databases/mssqlnative/src/assembly/assembly.xml
+++ b/plugins/databases/mssqlnative/src/assembly/assembly.xml
@@ -38,6 +38,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/mssqlnative/src/main/samples/transforms/mssql-bulk-loader.hpl b/plugins/databases/mssqlnative/src/main/samples/transforms/mssql-bulk-loader.hpl
new file mode 100644
index 00000000000..d211c9f3493
--- /dev/null
+++ b/plugins/databases/mssqlnative/src/main/samples/transforms/mssql-bulk-loader.hpl
@@ -0,0 +1,158 @@
+
+
+
+
+ mssql-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a Microsoft SQL Server table. Create a Microsoft SQL Server connection named mssql before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Bulk load binary
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Bulk load binary
+ MsSqlServerBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ 3
+ 0
+ N
+ mssql
+
+
+ NONE
+ id
+ id
+
+
+ NONE
+ payload
+ payload
+
+
+ N
+ N
+ Y
+ N
+ dbo
+ Y
+
+ Y
+ Y
+
+
+ 400
+ 144
+
+
+
+
+
+
diff --git a/plugins/databases/mysql/src/assembly/assembly.xml b/plugins/databases/mysql/src/assembly/assembly.xml
index 11e8a4261eb..644ac1323bc 100644
--- a/plugins/databases/mysql/src/assembly/assembly.xml
+++ b/plugins/databases/mysql/src/assembly/assembly.xml
@@ -33,6 +33,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/mysql/src/main/samples/transforms/mysql-bulk-loader.hpl b/plugins/databases/mysql/src/main/samples/transforms/mysql-bulk-loader.hpl
new file mode 100644
index 00000000000..98e034a76f3
--- /dev/null
+++ b/plugins/databases/mysql/src/main/samples/transforms/mysql-bulk-loader.hpl
@@ -0,0 +1,156 @@
+
+
+
+
+ mysql-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a MySQL table with LOAD DATA. Create a MySQL connection named mysql before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ MySQL bulk loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ MySQL bulk loader
+ MySqlBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+
+ mysql
+
+ "
+
+ \
+
+
+ OK
+ column1
+ column1
+
+
+ OK
+ column2
+ column2
+
+
+ /tmp/fifo
+ N
+ Y
+ N
+
+
+
+
+ 464
+ 160
+
+
+
+
+
+
diff --git a/plugins/databases/oracle/src/assembly/assembly.xml b/plugins/databases/oracle/src/assembly/assembly.xml
index 0530c211697..205f55bb410 100644
--- a/plugins/databases/oracle/src/assembly/assembly.xml
+++ b/plugins/databases/oracle/src/assembly/assembly.xml
@@ -33,6 +33,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/oracle/src/main/samples/transforms/oracle-bulk-loader.hpl b/plugins/databases/oracle/src/main/samples/transforms/oracle-bulk-loader.hpl
new file mode 100644
index 00000000000..bb6305c30d1
--- /dev/null
+++ b/plugins/databases/oracle/src/main/samples/transforms/oracle-bulk-loader.hpl
@@ -0,0 +1,148 @@
+
+
+
+
+ oracle-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into an Oracle table with SQL*Loader. Create an Oracle connection named oracle before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Oracle bulk loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Oracle bulk loader
+ OraBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ oracle
+ 0
+ 100000
+ control${Internal.Transform.CopyNr}.cfg
+ load${Internal.Transform.CopyNr}.dat
+ N
+ Y
+ 50
+ N
+ N
+ APPEND
+ AUTO_END
+ N
+ 0
+ sqlldr
+
+
+
+ 1376
+ 544
+
+
+
+
+
+
diff --git a/plugins/databases/postgresql/src/assembly/assembly.xml b/plugins/databases/postgresql/src/assembly/assembly.xml
index 53392067225..b41f7625937 100644
--- a/plugins/databases/postgresql/src/assembly/assembly.xml
+++ b/plugins/databases/postgresql/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/postgresql/src/main/samples/transforms/postgresql-bulk-loader.hpl b/plugins/databases/postgresql/src/main/samples/transforms/postgresql-bulk-loader.hpl
new file mode 100644
index 00000000000..01dab9840f5
--- /dev/null
+++ b/plugins/databases/postgresql/src/main/samples/transforms/postgresql-bulk-loader.hpl
@@ -0,0 +1,149 @@
+
+
+
+
+ postgresql-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a PostgreSQL table with the COPY command. Create a PostgreSQL connection named postgresql before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Bulk load orders_bulk
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Bulk load orders_bulk
+ PGBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ postgresql
+ ;
+ "
+ TRUNCATE
+
+
+ id
+ id
+
+
+
+ amount
+ amount
+
+ public
+ N
+
+
+
+ 352
+ 80
+
+
+
+
+
+
diff --git a/plugins/databases/snowflake/src/assembly/assembly.xml b/plugins/databases/snowflake/src/assembly/assembly.xml
index 4d5fb0ad8d5..77658170167 100644
--- a/plugins/databases/snowflake/src/assembly/assembly.xml
+++ b/plugins/databases/snowflake/src/assembly/assembly.xml
@@ -33,6 +33,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/snowflake/src/main/samples/transforms/generate-snowflake-id.hpl b/plugins/databases/snowflake/src/main/samples/transforms/generate-snowflake-id.hpl
new file mode 100644
index 00000000000..a8b601c29aa
--- /dev/null
+++ b/plugins/databases/snowflake/src/main/samples/transforms/generate-snowflake-id.hpl
@@ -0,0 +1,128 @@
+
+
+
+
+ generate-snowflake-id
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Add a unique snowflake identifier to every row.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ generate snowflake id
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+ - 2
+
+
+ - 3
+
+
+
+
+ 128
+ 160
+
+
+
+ generate snowflake id
+ SnowflakeId
+
+ Y
+
+ 1
+
+ none
+
+
+ 2
+ 31
+ snowflakeId
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/databases/snowflake/src/main/samples/transforms/snowflake-bulk-loader.hpl b/plugins/databases/snowflake/src/main/samples/transforms/snowflake-bulk-loader.hpl
new file mode 100644
index 00000000000..13ea197c308
--- /dev/null
+++ b/plugins/databases/snowflake/src/main/samples/transforms/snowflake-bulk-loader.hpl
@@ -0,0 +1,148 @@
+
+
+
+
+ snowflake-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a Snowflake table. Create a Snowflake connection named snowflake before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Snowflake Bulk Loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Snowflake Bulk Loader
+ SnowflakeBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ snowflake
+ N
+ csv
+ N
+ Y
+
+
+ N
+ user
+ abort
+ Y
+ N
+ 20000
+ N
+ N
+ ${java.io.tmpdir}
+
+
+ 1376
+ 96
+
+
+
+
+
+
diff --git a/plugins/databases/teradata/src/assembly/assembly.xml b/plugins/databases/teradata/src/assembly/assembly.xml
index 0c8c7ea3652..d8028bdc13e 100644
--- a/plugins/databases/teradata/src/assembly/assembly.xml
+++ b/plugins/databases/teradata/src/assembly/assembly.xml
@@ -33,6 +33,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/databases/teradata/src/main/samples/transforms/teradata-fastload-bulk-loader.hpl b/plugins/databases/teradata/src/main/samples/transforms/teradata-fastload-bulk-loader.hpl
new file mode 100644
index 00000000000..6db501ce5fc
--- /dev/null
+++ b/plugins/databases/teradata/src/main/samples/transforms/teradata-fastload-bulk-loader.hpl
@@ -0,0 +1,143 @@
+
+
+
+
+ teradata-fastload-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into a Teradata table with FastLoad. Create a Teradata connection named teradata before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Teradata Fastload bulk loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Teradata Fastload bulk loader
+ TeraFast
+
+ Y
+
+ 1
+
+ none
+
+
+ teradata
+
+
+ 0
+
+
+ 0
+
+ N
+ N
+ N
+
+
+ 1376
+ 32
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-bigquery-input.hpl b/plugins/engines/beam/src/main/samples/beam/beam-bigquery-input.hpl
new file mode 100644
index 00000000000..59162c73d34
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-bigquery-input.hpl
@@ -0,0 +1,112 @@
+
+
+
+
+ beam-bigquery-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a BigQuery table with a Beam pipeline. Requires GCP credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ apache-hop.it.customers
+ BeamBQInput
+
+ Y
+
+ 1
+
+ none
+
+
+ it
+
+
+ Integer
+ rowCount
+
+
+ Integer
+ minId
+
+
+ Integer
+ maxId
+
+
+ String
+ minName
+
+
+ String
+ maxName
+
+
+ apache-hop
+ SELECT
+ count(*) as rowCount,
+ min(id) as minId, max(id) as maxId,
+ min(lastName) as minName, max(lastName) as maxName
+FROM apache-hop.it.customers
+
+
+
+ 192
+ 112
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-bigquery-output.hpl b/plugins/engines/beam/src/main/samples/beam/beam-bigquery-output.hpl
new file mode 100644
index 00000000000..73204b31dbb
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-bigquery-output.hpl
@@ -0,0 +1,134 @@
+
+
+
+
+ beam-bigquery-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a BigQuery table with a Beam pipeline. Requires GCP credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ apache-hop.it.customers
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+
+
+ 128
+ 224
+
+
+
+ apache-hop.it.customers
+ BeamBQOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ Y
+ it
+ N
+ apache-hop
+ customers
+ Y
+
+
+ 368
+ 96
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-bigtable-input.hpl b/plugins/engines/beam/src/main/samples/beam/beam-bigtable-input.hpl
new file mode 100644
index 00000000000..57f773634ec
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-bigtable-input.hpl
@@ -0,0 +1,133 @@
+
+
+
+
+ beam-bigtable-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a Google Cloud Bigtable table with a Beam pipeline. Requires GCP credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ apache-hop-it.customers
+ BeamBigtableInput
+
+ N
+
+ 1
+
+ none
+
+
+ apache-hop-it
+ key
+ apache-hop
+
+
+ lastName
+ lastName
+ String
+
+
+ firstName
+ firstName
+ String
+
+
+ zipCode
+ zipCode
+ String
+
+
+ city
+ city
+ String
+
+
+ birthdate
+ birthdate
+ String
+
+
+ street
+ street
+ String
+
+
+ housenr
+ housenr
+ String
+
+
+ stateCode
+ stateCode
+ String
+
+
+ state
+ state
+ String
+
+
+ customers
+
+
+ 256
+ 144
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-gcp-pubsub-publish.hpl b/plugins/engines/beam/src/main/samples/beam/beam-gcp-pubsub-publish.hpl
new file mode 100644
index 00000000000..25fb46c6cdc
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-gcp-pubsub-publish.hpl
@@ -0,0 +1,122 @@
+
+
+
+
+ beam-gcp-pubsub-publish
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Publish the message field of every row to a GCP Pub/Sub topic. Run this pipeline with a Beam run configuration. Requires GCP credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ publish to pubsub
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ message
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - hello from Beam
+
+
+
+
+ 128
+ 224
+
+
+
+ publish to pubsub
+ BeamPublish
+
+ Y
+
+ 1
+
+ none
+
+
+ projects/sample-project/topics/sample-topic
+ String
+ message
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-gcp-pubsub-subscribe.hpl b/plugins/engines/beam/src/main/samples/beam/beam-gcp-pubsub-subscribe.hpl
new file mode 100644
index 00000000000..5f1087d3bff
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-gcp-pubsub-subscribe.hpl
@@ -0,0 +1,85 @@
+
+
+
+
+ beam-gcp-pubsub-subscribe
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Subscribe to a GCP Pub/Sub topic and add every message as a row. Run this pipeline with a Beam run configuration. Requires GCP credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ subscribe to pubsub
+ BeamSubscribe
+
+ Y
+
+ 1
+
+ none
+
+
+ projects/sample-project/topics/sample-topic
+ String
+ message
+
+
+ 128
+ 224
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-hive-catalog-input.hpl b/plugins/engines/beam/src/main/samples/beam/beam-hive-catalog-input.hpl
new file mode 100644
index 00000000000..a4051894d1f
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-hive-catalog-input.hpl
@@ -0,0 +1,85 @@
+
+
+
+
+ beam-hive-catalog-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a Hive table through the Hive metastore. Run this pipeline with a Beam run configuration. Requires a reachable Hive metastore.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ beam hive catalog input
+ BeamHiveCatalogInput
+
+ Y
+
+ 1
+
+ none
+
+
+ thrift://localhost:9083
+ sample_db
+ sample_table
+
+
+ 128
+ 224
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-kinesis-consume.hpl b/plugins/engines/beam/src/main/samples/beam/beam-kinesis-consume.hpl
new file mode 100644
index 00000000000..fe29a8e6b62
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-kinesis-consume.hpl
@@ -0,0 +1,92 @@
+
+
+
+
+ beam-kinesis-consume
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Consume messages from an AWS Kinesis stream. Run this pipeline with a Beam run configuration. Requires AWS credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ beam kinesis consume
+ BeamKinesisConsume
+
+ Y
+
+ 1
+
+ none
+
+
+ Encrypted
+ Encrypted
+ sample-stream
+ id
+ data
+ String
+ partition_key
+ sequence_number
+ sub_sequence_number
+ shard_id
+
+
+ 128
+ 224
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-kinesis-produce.hpl b/plugins/engines/beam/src/main/samples/beam/beam-kinesis-produce.hpl
new file mode 100644
index 00000000000..4881ad08005
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-kinesis-produce.hpl
@@ -0,0 +1,134 @@
+
+
+
+
+ beam-kinesis-produce
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Produce the data field of every row to an AWS Kinesis stream. Run this pipeline with a Beam run configuration. Requires AWS credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ beam kinesis produce
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ data
+ String
+
+ -1
+ -1
+ N
+
+
+ partition_key
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - hello
+ - key-1
+
+
+
+
+ 128
+ 224
+
+
+
+ beam kinesis produce
+ BeamKinesisProduce
+
+ Y
+
+ 1
+
+ none
+
+
+ Encrypted
+ Encrypted
+ sample-stream
+ data
+ String
+ partition_key
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/engines/beam/src/main/samples/beam/beam-timestamp.hpl b/plugins/engines/beam/src/main/samples/beam/beam-timestamp.hpl
new file mode 100644
index 00000000000..d8bdde63b8d
--- /dev/null
+++ b/plugins/engines/beam/src/main/samples/beam/beam-timestamp.hpl
@@ -0,0 +1,121 @@
+
+
+
+
+ beam-timestamp
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Set the timestamp of every row so that Beam can use it for windowing. Run this pipeline with a Beam run configuration.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ beam timestamp
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 224
+
+
+
+ beam timestamp
+ BeamTimestamp
+
+ Y
+
+ 1
+
+ none
+
+
+ timestamp
+ N
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/misc/mail/src/main/samples/transforms/email-messages-input.hpl b/plugins/misc/mail/src/main/samples/transforms/email-messages-input.hpl
new file mode 100644
index 00000000000..4ce60560048
--- /dev/null
+++ b/plugins/misc/mail/src/main/samples/transforms/email-messages-input.hpl
@@ -0,0 +1,183 @@
+
+
+
+
+ email-messages-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read email messages from a mail server. Create a mail connection named sample-mail before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Email messages input
+ MailInput
+
+ Y
+
+ 1
+
+ none
+
+
+ sample-mail
+ N
+
+
+ 0
+ Message number
+
+
+ 1
+ Subject
+
+
+ 2
+ Sender
+
+
+ 3
+ Reply to
+
+
+ 4
+ Recipients
+
+
+ 5
+ Description
+
+
+ 6
+ Body
+
+
+ 7
+ Received date
+
+
+ 8
+ Sent date
+
+
+ 9
+ Content type
+
+
+ 10
+ Folder name
+
+
+ 11
+ Size
+
+
+ 12
+ Flag new
+
+
+ 13
+ Flag read
+
+
+ 14
+ Flag flagged
+
+
+ 15
+ Flag draft
+
+
+ 16
+ Flag deleted
+
+
+ 17
+ Attached files count
+
+
+ 18
+ Mail Header(Name)
+
+
+ 19
+ Content Type (Body)
+
+
+ 10
+ INBOX
+ Y
+ N
+ N
+ N
+ N
+ Encrypted
+ IMAP
+ 0
+ 0
+ james
+ N
+ N
+ N
+ N
+ imaplistall
+
+
+ 224
+ 192
+
+
+
+
+
+
diff --git a/plugins/misc/mail/src/main/samples/transforms/mail.hpl b/plugins/misc/mail/src/main/samples/transforms/mail.hpl
new file mode 100644
index 00000000000..1d1c075e714
--- /dev/null
+++ b/plugins/misc/mail/src/main/samples/transforms/mail.hpl
@@ -0,0 +1,203 @@
+
+
+
+
+ mail
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Send an email for every row. Create a mail connection named sample-mail before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ messages
+ send mail
+ Y
+
+
+
+ messages
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ to
+ String
+
+ -1
+ -1
+ N
+
+
+ subject
+ String
+
+ -1
+ -1
+ N
+
+
+ message
+ String
+
+ -1
+ -1
+ N
+
+
+ senderAddress
+ String
+
+ -1
+ -1
+ N
+
+
+ senderName
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - someone@example.org
+ - Hello from Hop
+ - This is a sample message.
+ - hop@example.org
+ - Apache Hop
+
+
+
+
+ 128
+ 160
+
+
+
+ send mail
+ Mail
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ N
+ Encrypted
+
+ N
+ message
+ sample-mail
+
+
+ to
+
+
+
+
+
+
+
+ UTF-8
+ normal
+ N
+ N
+ N
+ N
+ N
+
+ N
+
+ normal
+
+ senderAddress
+ senderName
+ SSL
+ normal
+
+
+
+ subject
+
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ 0
+
+
+
+ 320
+ 96
+
+
+
+
+
+
diff --git a/plugins/misc/testing/src/assembly/assembly.xml b/plugins/misc/testing/src/assembly/assembly.xml
index a482c02c004..281c2ac2aab 100644
--- a/plugins/misc/testing/src/assembly/assembly.xml
+++ b/plugins/misc/testing/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/misc/testing/src/main/samples/transforms/dataset-input.hpl b/plugins/misc/testing/src/main/samples/transforms/dataset-input.hpl
new file mode 100644
index 00000000000..f913d7ed727
--- /dev/null
+++ b/plugins/misc/testing/src/main/samples/transforms/dataset-input.hpl
@@ -0,0 +1,81 @@
+
+
+
+
+ dataset-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read the rows of a unit test data set. Create a data set named 0108-data-set-output before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ DataSetInput
+ golden-data-stream
+ golden-data-stream
+ Y
+ 1
+
+ none
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/misc/testing/src/main/samples/transforms/dataset-output.hpl b/plugins/misc/testing/src/main/samples/transforms/dataset-output.hpl
new file mode 100644
index 00000000000..58cadabfdfb
--- /dev/null
+++ b/plugins/misc/testing/src/main/samples/transforms/dataset-output.hpl
@@ -0,0 +1,136 @@
+
+
+
+
+ dataset-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a unit test data set so it can be used in pipelines and unit tests.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ write data set
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ DataSetOutput
+ write data set
+ 0108-data-set-output
+
+ 0108-data-set-output.csv
+ N
+ Y
+ Y
+ 1
+
+
+ none
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/misc/testing/src/main/samples/transforms/execute-unit-tests.hpl b/plugins/misc/testing/src/main/samples/transforms/execute-unit-tests.hpl
new file mode 100644
index 00000000000..2d7f8f1744b
--- /dev/null
+++ b/plugins/misc/testing/src/main/samples/transforms/execute-unit-tests.hpl
@@ -0,0 +1,127 @@
+
+
+
+
+ execute-unit-tests
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Execute the unit tests named in the input rows and report the results.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ tests
+ Execute Unit Tests
+ Y
+
+
+
+ tests
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - sample-unit-test
+
+
+
+
+ 128
+ 160
+
+
+
+ Execute Unit Tests
+ ExecuteTests
+
+ Y
+
+ 1
+
+ none
+
+
+ comment
+ dataset
+ error
+ pipeline
+ name
+ transform
+ DEVELOPMENT
+ unittest
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/ai/src/main/samples/transforms/embed-text.hpl b/plugins/tech/ai/src/main/samples/transforms/embed-text.hpl
new file mode 100644
index 00000000000..14c76d6fe72
--- /dev/null
+++ b/plugins/tech/ai/src/main/samples/transforms/embed-text.hpl
@@ -0,0 +1,141 @@
+
+
+
+
+ embed-text
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Calculate the vector embedding of text fields with a language model. Requires an AI connection.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Embed text
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Embed text
+ EmbedText
+
+ Y
+
+ 1
+
+ none
+
+
+ ollama-embeddings
+
+ chunk_text
+ embedding
+ STRING
+ ${EMBED_BATCH_SIZE}
+ Y
+ embedding_model
+ embedding_dimensions
+
+
+ 256
+ 96
+
+
+
+
+
+
diff --git a/plugins/tech/arrow/src/main/samples/metadata/data-stream/sample-data-stream.json b/plugins/tech/arrow/src/main/samples/metadata/data-stream/sample-data-stream.json
new file mode 100644
index 00000000000..2e64aecad82
--- /dev/null
+++ b/plugins/tech/arrow/src/main/samples/metadata/data-stream/sample-data-stream.json
@@ -0,0 +1,10 @@
+{
+ "dataStream": {
+ "ArrowStreamFile": {
+ "filename": "${java.io.tmpdir}/sample-data-stream.arrow",
+ "batchSize": "500"
+ }
+ },
+ "name": "sample-data-stream",
+ "description": "Arrow stream file used by the data-stream-output and data-stream-input samples"
+}
diff --git a/plugins/tech/aws/src/assembly/assembly.xml b/plugins/tech/aws/src/assembly/assembly.xml
index b1fb574d20e..4b77e768feb 100644
--- a/plugins/tech/aws/src/assembly/assembly.xml
+++ b/plugins/tech/aws/src/assembly/assembly.xml
@@ -31,6 +31,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/tech/aws/src/main/samples/transforms/aws-sns-notify.hpl b/plugins/tech/aws/src/main/samples/transforms/aws-sns-notify.hpl
new file mode 100644
index 00000000000..43ad663c6da
--- /dev/null
+++ b/plugins/tech/aws/src/main/samples/transforms/aws-sns-notify.hpl
@@ -0,0 +1,147 @@
+
+
+
+
+ aws-sns-notify
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Send a message to an AWS SNS topic. Requires AWS credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ AWS SNS Notify
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ AWS SNS Notify
+ SnsNotify
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+
+ eu-west-1
+ N
+ N
+ N
+ N
+
+
+
+ Send once with first row
+
+
+
+
+
+ 1792
+ 544
+
+
+
+
+
+
diff --git a/plugins/tech/aws/src/main/samples/transforms/aws-sqs-reader.hpl b/plugins/tech/aws/src/main/samples/transforms/aws-sqs-reader.hpl
new file mode 100644
index 00000000000..9f0e37768ab
--- /dev/null
+++ b/plugins/tech/aws/src/main/samples/transforms/aws-sqs-reader.hpl
@@ -0,0 +1,94 @@
+
+
+
+
+ aws-sqs-reader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read messages from an AWS SQS queue. Requires AWS credentials and a reachable queue.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ aws sqs reader
+ AwsSqSreader
+
+ Y
+
+ 1
+
+ none
+
+
+ Default
+ Encrypted
+ Encrypted
+ eu-west-1
+ sample-queue
+ message_id
+ message_body
+ receipt_handle
+ body_md5
+ sns_message
+ delete_message
+ max_messages
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/aws/src/main/samples/transforms/redshift-bulk-loader.hpl b/plugins/tech/aws/src/main/samples/transforms/redshift-bulk-loader.hpl
new file mode 100644
index 00000000000..cbe82d75f79
--- /dev/null
+++ b/plugins/tech/aws/src/main/samples/transforms/redshift-bulk-loader.hpl
@@ -0,0 +1,145 @@
+
+
+
+
+ redshift-bulk-loader
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load rows into an Amazon Redshift table. Requires AWS credentials and a Redshift cluster.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Redshift bulk loader
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Redshift bulk loader
+ RedshiftBulkLoader
+
+ Y
+
+ 1
+
+ none
+
+
+ redshift
+ N
+
+
+ N
+ N
+ Y
+ N
+ N
+ N
+ N
+ N
+ N
+
+
+ 1376
+ 352
+
+
+
+
+
+
diff --git a/plugins/tech/azure/src/main/samples/transforms/azure-event-hubs-listener.hpl b/plugins/tech/azure/src/main/samples/transforms/azure-event-hubs-listener.hpl
new file mode 100644
index 00000000000..452360fbb72
--- /dev/null
+++ b/plugins/tech/azure/src/main/samples/transforms/azure-event-hubs-listener.hpl
@@ -0,0 +1,89 @@
+
+
+
+
+ azure-event-hubs-listener
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Listen for messages on an Azure Event Hub. Requires an Azure Event Hub and credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Azure Event Hubs Listener
+ AzureListener
+
+ Y
+
+ 1
+
+ none
+
+
+ $Default
+ enqueuedTime
+ host
+ offset
+ message
+ partitionId
+ sequenceNumber
+
+
+ 1568
+ 1184
+
+
+
+
+
+
diff --git a/plugins/tech/azure/src/main/samples/transforms/azure-event-hubs-writer.hpl b/plugins/tech/azure/src/main/samples/transforms/azure-event-hubs-writer.hpl
new file mode 100644
index 00000000000..6d76d43d4c5
--- /dev/null
+++ b/plugins/tech/azure/src/main/samples/transforms/azure-event-hubs-writer.hpl
@@ -0,0 +1,132 @@
+
+
+
+
+ azure-event-hubs-writer
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to an Azure Event Hub. Requires an Azure Event Hub and credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Azure Event Hubs Writer
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Azure Event Hubs Writer
+ AzureWriter
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 1568
+ 1120
+
+
+
+
+
+
diff --git a/plugins/tech/cassandra/src/assembly/assembly.xml b/plugins/tech/cassandra/src/assembly/assembly.xml
index 564aee1cca8..c4685a01277 100644
--- a/plugins/tech/cassandra/src/assembly/assembly.xml
+++ b/plugins/tech/cassandra/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/tech/cassandra/src/main/samples/transforms/cassandra-input.hpl b/plugins/tech/cassandra/src/main/samples/transforms/cassandra-input.hpl
new file mode 100644
index 00000000000..2dce123ba32
--- /dev/null
+++ b/plugins/tech/cassandra/src/main/samples/transforms/cassandra-input.hpl
@@ -0,0 +1,87 @@
+
+
+
+
+ cassandra-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a Cassandra table. Requires a reachable Cassandra cluster.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ hop.customers
+ CassandraInput
+
+ Y
+
+ 1
+
+ none
+
+
+ cassandra
+ SELECT * FROM customers
+;
+
+ N
+
+
+ 224
+ 96
+
+
+
+
+
+
diff --git a/plugins/tech/cassandra/src/main/samples/transforms/cassandra-output.hpl b/plugins/tech/cassandra/src/main/samples/transforms/cassandra-output.hpl
new file mode 100644
index 00000000000..2e1de180a96
--- /dev/null
+++ b/plugins/tech/cassandra/src/main/samples/transforms/cassandra-output.hpl
@@ -0,0 +1,150 @@
+
+
+
+
+ cassandra-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a Cassandra table. Requires a reachable Cassandra cluster.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ hop.customers
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ hop.customers
+ CassandraOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ 11
+ cassandra
+ ONE
+
+ 11
+ Y
+
+ N
+ id
+ localhost
+ 9042
+
+ N
+
+
+
+ N
+ N
+
+
+ 400
+ 128
+
+
+
+
+
+
diff --git a/plugins/tech/cassandra/src/main/samples/transforms/cassandra-sstable-output.hpl b/plugins/tech/cassandra/src/main/samples/transforms/cassandra-sstable-output.hpl
new file mode 100644
index 00000000000..1c7671815b6
--- /dev/null
+++ b/plugins/tech/cassandra/src/main/samples/transforms/cassandra-sstable-output.hpl
@@ -0,0 +1,130 @@
+
+
+
+
+ cassandra-sstable-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows as Cassandra SSTable files that can be loaded into a cluster offline.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ hop.customers
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+
+
+ 128
+ 160
+
+
+
+ hop.customers
+ SSTableOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ id
+
+
+
+ 400
+ 128
+
+
+
+
+
+
diff --git a/plugins/tech/google/src/main/samples/transforms/google-analytics-4.hpl b/plugins/tech/google/src/main/samples/transforms/google-analytics-4.hpl
new file mode 100644
index 00000000000..da7b3356b8f
--- /dev/null
+++ b/plugins/tech/google/src/main/samples/transforms/google-analytics-4.hpl
@@ -0,0 +1,85 @@
+
+
+
+
+ google-analytics-4
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read data from a Google Analytics 4 property. Requires Google credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Google Analytics 4
+ GoogleAnalytics
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 0
+
+
+ 1792
+ 672
+
+
+
+
+
+
diff --git a/plugins/tech/google/src/main/samples/transforms/google-sheets-input.hpl b/plugins/tech/google/src/main/samples/transforms/google-sheets-input.hpl
new file mode 100644
index 00000000000..b211d3d703a
--- /dev/null
+++ b/plugins/tech/google/src/main/samples/transforms/google-sheets-input.hpl
@@ -0,0 +1,133 @@
+
+
+
+
+ google-sheets-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a Google Sheets spreadsheet. Requires a Google service account key in client_secret.json in the project folder.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Google Sheets Input
+ GoogleSheetsInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+ N
+ N
+
+
+
+
+ -1
+ column1
+ 0
+ -1
+ 0
+ 2
+
+
+ N
+ N
+
+
+
+
+ -1
+ column2
+ 0
+ 0
+ 0
+ 1
+
+
+ N
+ N
+
+
+
+
+ -1
+ column3
+ 0
+ -1
+ 0
+ 0
+
+
+
+ ${PROJECT_HOME}/client_secret.json
+ 100
+ 1uTxX_siSLikbHgZm6kSwUGFZlKDzTP0CnfY7TNaZgeE
+ 5
+ Sheet1
+
+
+ 144
+ 48
+
+
+
+
+
+
diff --git a/plugins/tech/google/src/main/samples/transforms/google-sheets-output.hpl b/plugins/tech/google/src/main/samples/transforms/google-sheets-output.hpl
new file mode 100644
index 00000000000..508b88178e4
--- /dev/null
+++ b/plugins/tech/google/src/main/samples/transforms/google-sheets-output.hpl
@@ -0,0 +1,142 @@
+
+
+
+
+ google-sheets-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a Google Sheets spreadsheet. Requires a Google service account key in client_secret.json in the project folder.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Google Sheet Output
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Google Sheet Output
+ GoogleSheetsOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ Y
+
+
+
+
+ ${PROJECT_HOME}/client_secret.json
+ 1uTxX_siSLikbHgZm6kSwUGFZlKDzTP0CnfY7TNaZgeE
+ 5
+ Sheet2
+
+
+ 384
+ 80
+
+
+
+
+
+
diff --git a/plugins/tech/mongodb/src/main/samples/transforms/mongodb-delete.hpl b/plugins/tech/mongodb/src/main/samples/transforms/mongodb-delete.hpl
new file mode 100644
index 00000000000..202453c833d
--- /dev/null
+++ b/plugins/tech/mongodb/src/main/samples/transforms/mongodb-delete.hpl
@@ -0,0 +1,121 @@
+
+
+
+
+ mongodb-delete
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Delete documents in MongoDB that match the input rows. Requires a reachable MongoDB cluster.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ keys
+ mongodb delete
+ Y
+
+
+
+ keys
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 160
+
+
+
+ mongodb delete
+ MongoDbDelete
+
+ Y
+
+ 1
+
+ none
+
+
+
+ 5
+
+
+ 448
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/mongodb/src/main/samples/transforms/mongodb-input.hpl b/plugins/tech/mongodb/src/main/samples/transforms/mongodb-input.hpl
new file mode 100644
index 00000000000..84505fd547d
--- /dev/null
+++ b/plugins/tech/mongodb/src/main/samples/transforms/mongodb-input.hpl
@@ -0,0 +1,147 @@
+
+
+
+
+ mongodb-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read documents from MongoDB. Requires a reachable MongoDB cluster.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ MongoDB input 2
+ MongoDbInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+ json
+
+ N
+ N
+ N
+
+
+ _id
+ $._id
+ String
+
+
+ birthdate
+ $.birthdate
+ Date
+
+
+ city
+ $.city
+ String
+
+
+ firstname
+ $.firstname
+ String
+
+
+ housenr
+ $.housenr
+ Integer
+
+
+ id
+ $.id
+ Integer
+
+
+ name
+ $.name
+ String
+
+
+ state
+ $.state
+ String
+
+
+ stateCode
+ $.stateCode
+ String
+
+
+ street
+ $.street
+ String
+
+
+ zip
+ $.zip
+ Integer
+
+
+
+
+ 240
+ 144
+
+
+
+
+
+
diff --git a/plugins/tech/mongodb/src/main/samples/transforms/mongodb-output.hpl b/plugins/tech/mongodb/src/main/samples/transforms/mongodb-output.hpl
new file mode 100644
index 00000000000..94a89cce17f
--- /dev/null
+++ b/plugins/tech/mongodb/src/main/samples/transforms/mongodb-output.hpl
@@ -0,0 +1,140 @@
+
+
+
+
+ mongodb-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write documents to MongoDB. Requires a reachable MongoDB cluster.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ m_inserts_1
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ m_inserts_1
+ MongoDbOutput
+
+ Y
+
+ 1
+
+ none
+
+
+
+ N
+ N
+ N
+ N
+ N
+ 5
+ 10
+
+
+ 448
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-cypher-builder.hpl b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-cypher-builder.hpl
new file mode 100644
index 00000000000..26815d9116a
--- /dev/null
+++ b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-cypher-builder.hpl
@@ -0,0 +1,89 @@
+
+
+
+
+ neo4j-cypher-builder
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Build a Cypher statement from input rows.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Neo4j Cypher Builder
+ Neo4jCypherBuilder
+
+ Y
+
+ 1
+
+ none
+
+
+ 1000
+
+
+
+
+ 10
+ row
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-generate-csvs.hpl b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-generate-csvs.hpl
new file mode 100644
index 00000000000..77f8b982a92
--- /dev/null
+++ b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-generate-csvs.hpl
@@ -0,0 +1,138 @@
+
+
+
+
+ neo4j-generate-csvs
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Generate the CSV files to load a graph into Neo4j.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Generate CSV
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Generate CSV
+ Neo4jLoad
+ Generate CSV files from graph data - should handle NULL values without error
+ Y
+
+ 1
+
+ none
+
+
+ /tmp/neo4j-import-test
+ file_type
+ filename
+ test-null-values
+ graph
+ None
+
+
+ 480
+ 112
+
+
+
+
+
+
diff --git a/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-get-logging-info.hpl b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-get-logging-info.hpl
new file mode 100644
index 00000000000..18d6a01cb8c
--- /dev/null
+++ b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-get-logging-info.hpl
@@ -0,0 +1,94 @@
+
+
+
+
+ neo4j-get-logging-info
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Get logging information for Neo4j related processing like pipeline start and end dates.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get neo4j logging info
+ GetLoggingInfo
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ startOfPipelineDelta
+ pipeline date from
+
+
+
+ endOfPipelineDelta
+ pipeline date to
+
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-import.hpl b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-import.hpl
new file mode 100644
index 00000000000..0a1fc5845ec
--- /dev/null
+++ b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-import.hpl
@@ -0,0 +1,94 @@
+
+
+
+
+ neo4j-import
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Import the CSV files generated by the Neo4j generate CSVs transform into a Neo4j database with neo4j-admin.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ neo4j import
+ Neo4jImport
+
+ Y
+
+ 1
+
+ none
+
+
+ filename
+ file_type
+ ${PROJECT_HOME}/output
+ neo4j-admin
+ ${PROJECT_HOME}/output/neo4j-import-report.txt
+ neo4j
+ N
+ Y
+ N
+ N
+ N
+ N
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-split-graph.hpl b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-split-graph.hpl
new file mode 100644
index 00000000000..27152c33a87
--- /dev/null
+++ b/plugins/tech/neo4j/src/main/samples/neo4j/neo4j-split-graph.hpl
@@ -0,0 +1,86 @@
+
+
+
+
+ neo4j-split-graph
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Split a graph in a field into nodes and relationships. Used with the Neo4j graph output transform.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ neo4j split graph
+ Neo4jSplitGraph
+
+ Y
+
+ 1
+
+ none
+
+
+ graph
+ type
+ id
+ props
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/parquet/src/main/samples/transforms/parquet-file-input.hpl b/plugins/tech/parquet/src/main/samples/transforms/parquet-file-input.hpl
new file mode 100644
index 00000000000..ab39d6e7ba2
--- /dev/null
+++ b/plugins/tech/parquet/src/main/samples/transforms/parquet-file-input.hpl
@@ -0,0 +1,134 @@
+
+
+
+
+ parquet-file-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a Parquet file. Reads the file written by parquet-file-output.hpl, so run that sample first.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ get parquet file name
+ read Parquet file
+ Y
+
+
+
+ get parquet file name
+ GetFileNames
+
+ Y
+
+ 1
+
+ none
+
+
+
+ ${PROJECT_HOME}/output/
+ parquet-file-output.*\.parquet
+
+ N
+ N
+
+
+ only_files
+
+ N
+ N
+ N
+ N
+ 0
+ N
+ Y
+
+
+ 128
+ 160
+
+
+
+ read Parquet file
+ ParquetFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ id
+ Integer
+
+
+ name
+ name
+ String
+
+
+ filename
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/parquet/src/main/samples/transforms/parquet-file-output.hpl b/plugins/tech/parquet/src/main/samples/transforms/parquet-file-output.hpl
new file mode 100644
index 00000000000..4c6fee310a4
--- /dev/null
+++ b/plugins/tech/parquet/src/main/samples/transforms/parquet-file-output.hpl
@@ -0,0 +1,157 @@
+
+
+
+
+ parquet-file-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a Parquet file in the output folder.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ parquet file output
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ parquet file output
+ ParquetFileOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ UNCOMPRESSED
+ 1048576
+ 1048576
+
+
+ id
+ id
+
+
+ name
+ name
+
+
+ 1000000
+ ${PROJECT_HOME}/output/parquet-file-output
+ Y
+ yyyyMMdd-HHmmss
+ parquet
+ N
+ N
+ N
+ Y
+ N
+ 20000
+ 2.0
+
+
+ 592
+ 208
+
+
+
+
+
+
diff --git a/plugins/tech/pgvector/src/assembly/assembly.xml b/plugins/tech/pgvector/src/assembly/assembly.xml
index f9f02eddc43..bcf55ab08ed 100644
--- a/plugins/tech/pgvector/src/assembly/assembly.xml
+++ b/plugins/tech/pgvector/src/assembly/assembly.xml
@@ -31,6 +31,13 @@
true
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/tech/pgvector/src/main/samples/transforms/pgvector-search.hpl b/plugins/tech/pgvector/src/main/samples/transforms/pgvector-search.hpl
new file mode 100644
index 00000000000..967ef1233fc
--- /dev/null
+++ b/plugins/tech/pgvector/src/main/samples/transforms/pgvector-search.hpl
@@ -0,0 +1,144 @@
+
+
+
+
+ pgvector-search
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Search for the nearest vectors in a pgvector table. Requires PostgreSQL with the pgvector extension.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Search
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Search
+ PgVectorSearch
+
+ Y
+
+ 1
+
+ none
+
+
+ pgvector
+ public
+ hop_it_chunks
+ embedding
+ 1
+ COSINE
+ 0.0
+ match_id
+ match_document_id
+ match_chunk_index
+ match_content
+ match_score
+
+
+ 320
+ 96
+
+
+
+
+
+
diff --git a/plugins/tech/pgvector/src/main/samples/transforms/pgvector-upsert.hpl b/plugins/tech/pgvector/src/main/samples/transforms/pgvector-upsert.hpl
new file mode 100644
index 00000000000..722e420e73e
--- /dev/null
+++ b/plugins/tech/pgvector/src/main/samples/transforms/pgvector-upsert.hpl
@@ -0,0 +1,132 @@
+
+
+
+
+ pgvector-upsert
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Store or update vector embeddings in a pgvector table. Requires PostgreSQL with the pgvector extension.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ pgvector upsert
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ embedding
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - [0.1,0.2,0.3]
+
+
+
+
+ 128
+ 160
+
+
+
+ pgvector upsert
+ PgVectorUpsert
+
+ Y
+
+ 1
+
+ none
+
+
+ pgvector
+ public
+ hop_it_chunks
+ embedding
+
+
+ 320
+ 96
+
+
+
+
+
+
diff --git a/plugins/tech/redis/src/assembly/assembly.xml b/plugins/tech/redis/src/assembly/assembly.xml
index 8fb0f10f333..fe0be36d158 100644
--- a/plugins/tech/redis/src/assembly/assembly.xml
+++ b/plugins/tech/redis/src/assembly/assembly.xml
@@ -31,6 +31,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/tech/salesforce/src/main/samples/transforms/salesforce-delete.hpl b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-delete.hpl
new file mode 100644
index 00000000000..b5abd9838b6
--- /dev/null
+++ b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-delete.hpl
@@ -0,0 +1,128 @@
+
+
+
+
+ salesforce-delete
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Delete the Salesforce records named in every row. Requires Salesforce credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ salesforce delete
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ Id
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 001xx
+
+
+
+
+ 128
+ 160
+
+
+
+ salesforce delete
+ SalesforceDelete
+
+ Y
+
+ 1
+
+ none
+
+
+ https://login.salesforce.com/services/Soap/u/50.0
+
+ Encrypted
+ 60000
+ N
+ Account
+ Id
+ 10
+ Y
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/salesforce/src/main/samples/transforms/salesforce-input.hpl b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-input.hpl
new file mode 100644
index 00000000000..32822095723
--- /dev/null
+++ b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-input.hpl
@@ -0,0 +1,109 @@
+
+
+
+
+ salesforce-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read records from Salesforce. Requires Salesforce credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Salesforce input
+ SalesforceInput
+
+ Y
+
+ 1
+
+ none
+
+
+ https://login.salesforce.com/services/Soap/u/50.0
+
+ Encrypted
+ 60000
+ N
+ Account
+
+ N
+
+ N
+
+ N
+
+ N
+ N
+
+
+ N
+
+ N
+
+
+ all
+ N
+
+
+ 0
+
+
+ 1568
+ 288
+
+
+
+
+
+
diff --git a/plugins/tech/salesforce/src/main/samples/transforms/salesforce-insert.hpl b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-insert.hpl
new file mode 100644
index 00000000000..9c263b2d21f
--- /dev/null
+++ b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-insert.hpl
@@ -0,0 +1,134 @@
+
+
+
+
+ salesforce-insert
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Insert rows as records in a Salesforce object. Requires Salesforce credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ salesforce insert
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ Name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - Alice
+
+
+ - Bob
+
+
+
+
+ 128
+ 160
+
+
+
+ salesforce insert
+ SalesforceInsert
+
+ Y
+
+ 1
+
+ none
+
+
+ https://login.salesforce.com/services/Soap/u/50.0
+
+ Encrypted
+ 60000
+ N
+ Account
+ 10
+
+
+ Name
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/salesforce/src/main/samples/transforms/salesforce-update.hpl b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-update.hpl
new file mode 100644
index 00000000000..721b86d7e0a
--- /dev/null
+++ b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-update.hpl
@@ -0,0 +1,143 @@
+
+
+
+
+ salesforce-update
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Update Salesforce records with the values of every row. Requires Salesforce credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ salesforce update
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ Id
+ String
+
+ -1
+ -1
+ N
+
+
+ Name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 001xx
+ - Alice
+
+
+
+
+ 128
+ 160
+
+
+
+ salesforce update
+ SalesforceUpdate
+
+ Y
+
+ 1
+
+ none
+
+
+ https://login.salesforce.com/services/Soap/u/50.0
+
+ Encrypted
+ 60000
+ N
+ Account
+ 10
+
+
+ Id
+
+
+ Name
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/salesforce/src/main/samples/transforms/salesforce-upsert.hpl b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-upsert.hpl
new file mode 100644
index 00000000000..1b636ea127e
--- /dev/null
+++ b/plugins/tech/salesforce/src/main/samples/transforms/salesforce-upsert.hpl
@@ -0,0 +1,144 @@
+
+
+
+
+ salesforce-upsert
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Insert or update Salesforce records based on an external id. Requires Salesforce credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ salesforce upsert
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ ExternalId
+ String
+
+ -1
+ -1
+ N
+
+
+ Name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - ext-1
+ - Alice
+
+
+
+
+ 128
+ 160
+
+
+
+ salesforce upsert
+ SalesforceUpsert
+
+ Y
+
+ 1
+
+ none
+
+
+ https://login.salesforce.com/services/Soap/u/50.0
+
+ Encrypted
+ 60000
+ N
+ Account
+ 10
+ ExternalId
+
+
+ ExternalId
+
+
+ Name
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/sftp/src/assembly/assembly.xml b/plugins/tech/sftp/src/assembly/assembly.xml
index 3abec811bdb..13bf612ad68 100644
--- a/plugins/tech/sftp/src/assembly/assembly.xml
+++ b/plugins/tech/sftp/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/tech/sftp/src/main/samples/transforms/sftp-put.hpl b/plugins/tech/sftp/src/main/samples/transforms/sftp-put.hpl
new file mode 100644
index 00000000000..7f75efabbc8
--- /dev/null
+++ b/plugins/tech/sftp/src/main/samples/transforms/sftp-put.hpl
@@ -0,0 +1,142 @@
+
+
+
+
+ sftp-put
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Upload a file to an SFTP server. Requires a reachable SFTP host and credentials.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ SFTP Put
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ SFTP Put
+ SFTPPut
+
+ Y
+
+ 1
+
+ none
+
+
+ sftp
+ sourcefile
+ N
+ remotefolder
+ remotefile
+ Y
+ move
+ archivefolder
+ Y
+ N
+
+
+ 480
+ 96
+
+
+
+
+
+
diff --git a/plugins/transforms/binaryfileoutput/src/main/samples/files/binary-file-output.bin b/plugins/transforms/binaryfileoutput/src/main/samples/files/binary-file-output.bin
new file mode 100644
index 00000000000..2d017aad150
Binary files /dev/null and b/plugins/transforms/binaryfileoutput/src/main/samples/files/binary-file-output.bin differ
diff --git a/plugins/transforms/binaryfileoutput/src/main/samples/transforms/binary-file-output.hpl b/plugins/transforms/binaryfileoutput/src/main/samples/transforms/binary-file-output.hpl
new file mode 100644
index 00000000000..d84f716ab62
--- /dev/null
+++ b/plugins/transforms/binaryfileoutput/src/main/samples/transforms/binary-file-output.hpl
@@ -0,0 +1,178 @@
+
+
+
+
+ binary-file-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read a binary file and write its content to a new binary file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ get filenames
+ load binary file
+ Y
+
+
+
+ get filenames
+ GetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/files/binary-file-output.bin
+
+
+ -1
+ target_filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/output/binary-file-output.bin
+
+
+
+
+ 128
+ 160
+
+
+
+ load binary file
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+
+ 0
+
+ filename
+ Y
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+
+
+ content
+ Binary
+ -1
+
+ none
+ content
+ -1
+
+
+
+ N
+
+
+
+
+ 400
+ 160
+
+
+
+ binary file output
+ BinaryFileOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ content
+ target_filename
+ Y
+ Y
+ N
+
+
+ 688
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/changefileencoding/src/main/samples/files/change-file-encoding.txt b/plugins/transforms/changefileencoding/src/main/samples/files/change-file-encoding.txt
new file mode 100644
index 00000000000..29abefce843
--- /dev/null
+++ b/plugins/transforms/changefileencoding/src/main/samples/files/change-file-encoding.txt
@@ -0,0 +1,3 @@
+café
+naïve
+résumé
diff --git a/plugins/transforms/changefileencoding/src/main/samples/transforms/change-file-encoding.hpl b/plugins/transforms/changefileencoding/src/main/samples/transforms/change-file-encoding.hpl
new file mode 100644
index 00000000000..bcf6dc79d07
--- /dev/null
+++ b/plugins/transforms/changefileencoding/src/main/samples/transforms/change-file-encoding.hpl
@@ -0,0 +1,129 @@
+
+
+
+
+ change-file-encoding
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read a text file in UTF-8 and write it back in ISO-8859-1.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ get filenames
+ change file encoding
+ Y
+
+
+
+ get filenames
+ GetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/files/change-file-encoding.txt
+
+
+ -1
+ target_filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/output/change-file-encoding.txt
+
+
+
+
+ 128
+ 160
+
+
+
+ change file encoding
+ ChangeFileEncoding
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ N
+ filename
+ target_filename
+ ISO-8859-1
+ UTF-8
+ Y
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/combinationlookup/src/main/samples/transforms/combination-lookup-update.hpl b/plugins/transforms/combinationlookup/src/main/samples/transforms/combination-lookup-update.hpl
new file mode 100644
index 00000000000..8cc00742b00
--- /dev/null
+++ b/plugins/transforms/combinationlookup/src/main/samples/transforms/combination-lookup-update.hpl
@@ -0,0 +1,145 @@
+
+
+
+
+ combination-lookup-update
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Look up the technical key of a dimension value in a table, inserting it when it does not exist. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ dimension values
+ Combination lookup/update
+ Y
+
+
+
+ dimension values
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ color
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - red
+
+
+ - green
+
+
+ - blue
+
+
+
+
+ 128
+ 160
+
+
+
+ Combination lookup/update
+ CombinationLookup
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ hop-samples
+ 100
+ 9999
+ N
+ N
+ N
+ hashcode
+
+
+ color
+ color
+
+
+ color_key
+ tablemax
+ N
+
+
+
+
+ 368
+ 96
+
+
+
+
+
+
diff --git a/plugins/transforms/cube/src/main/samples/files/deserialize-from-file.cube b/plugins/transforms/cube/src/main/samples/files/deserialize-from-file.cube
new file mode 100644
index 00000000000..99130a0e1a9
Binary files /dev/null and b/plugins/transforms/cube/src/main/samples/files/deserialize-from-file.cube differ
diff --git a/plugins/transforms/cube/src/main/samples/transforms/deserialize-from-file.hpl b/plugins/transforms/cube/src/main/samples/transforms/deserialize-from-file.hpl
new file mode 100644
index 00000000000..48f177a44de
--- /dev/null
+++ b/plugins/transforms/cube/src/main/samples/transforms/deserialize-from-file.hpl
@@ -0,0 +1,87 @@
+
+
+
+
+ deserialize-from-file
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows back from a binary cube file written by the Serialize to file transform.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ de-serialize from file
+ CubeInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+ ${PROJECT_HOME}/files/deserialize-from-file.cube
+
+ 0
+ N
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/cube/src/main/samples/transforms/serialize-to-file.hpl b/plugins/transforms/cube/src/main/samples/transforms/serialize-to-file.hpl
new file mode 100644
index 00000000000..54ec2ebc170
--- /dev/null
+++ b/plugins/transforms/cube/src/main/samples/transforms/serialize-to-file.hpl
@@ -0,0 +1,142 @@
+
+
+
+
+ serialize-to-file
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Serialize rows to a binary cube file that can be read back with the De-serialize from file transform.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ serialize to file
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+ - 3
+ - carol
+
+
+
+
+ 128
+ 160
+
+
+
+ serialize to file
+ CubeOutput
+
+ Y
+
+ 1
+
+ none
+
+
+
+ ${PROJECT_HOME}/output/serialize-to-file.cube
+ Y
+ N
+ N
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/datagrid/src/main/samples/transforms/datagrid-basic.hpl b/plugins/transforms/datagrid/src/main/samples/transforms/datagrid-basic.hpl
new file mode 100644
index 00000000000..343418237c6
--- /dev/null
+++ b/plugins/transforms/datagrid/src/main/samples/transforms/datagrid-basic.hpl
@@ -0,0 +1,158 @@
+
+
+
+
+ datagrid-basic
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Generate a few rows of data of various types with the Data Grid transform.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ sample data
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ firstname
+ String
+
+ -1
+ -1
+ N
+
+
+ lastname
+ String
+
+ -1
+ -1
+ N
+
+
+ age
+ Integer
+
+ -1
+ -1
+ N
+
+
+ salary
+ Number
+
+ -1
+ -1
+ N
+
+
+ birthdate
+ Date
+ yyyy/MM/dd
+ -1
+ -1
+ N
+
+
+ active
+ Boolean
+
+ -1
+ -1
+ N
+
+
+
+
+ - John
+ - Doe
+ - 42
+ - 3500.50
+ - 1984/03/12
+ - true
+
+
+ - Jane
+ - Doe
+ - 39
+ - 4200.75
+ - 1987/07/23
+ - true
+
+
+ - Max
+ - Mustermann
+ - 25
+ - 2100.00
+ - 2001/11/05
+ - false
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/datastream/src/main/samples/transforms/data-stream-input.hpl b/plugins/transforms/datastream/src/main/samples/transforms/data-stream-input.hpl
new file mode 100644
index 00000000000..ba164d6dcb2
--- /dev/null
+++ b/plugins/transforms/datastream/src/main/samples/transforms/data-stream-input.hpl
@@ -0,0 +1,83 @@
+
+
+
+
+ data-stream-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a named data stream written by the data-stream-output sample.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ data stream input
+ DataStreamInput
+
+ Y
+
+ 1
+
+ none
+
+
+ sample-data-stream
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/datastream/src/main/samples/transforms/data-stream-output.hpl b/plugins/transforms/datastream/src/main/samples/transforms/data-stream-output.hpl
new file mode 100644
index 00000000000..3e134b4d1ac
--- /dev/null
+++ b/plugins/transforms/datastream/src/main/samples/transforms/data-stream-output.hpl
@@ -0,0 +1,137 @@
+
+
+
+
+ data-stream-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a named data stream that a child pipeline can read with the Data stream input transform.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ data stream output
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+ - 3
+ - carol
+
+
+
+
+ 128
+ 160
+
+
+
+ data stream output
+ DataStreamOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ sample-data-stream
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/dbimpact/src/main/samples/transforms/database-impact.hpl b/plugins/transforms/dbimpact/src/main/samples/transforms/database-impact.hpl
new file mode 100644
index 00000000000..7ae15854754
--- /dev/null
+++ b/plugins/transforms/dbimpact/src/main/samples/transforms/database-impact.hpl
@@ -0,0 +1,115 @@
+
+
+
+
+ database-impact
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Collect the database impact of the transforms in the pipeline named in the filename field, here the tableoutput-basic sample.
+ 128
+ 16
+ 560
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ pipeline filename
+ database impact input
+ Y
+
+
+
+ pipeline filename
+ GetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/transforms/tableoutput-basic.hpl
+
+
+
+
+ 128
+ 160
+
+
+
+ database impact input
+ DbImpactInput
+
+ Y
+
+ 1
+
+ none
+
+
+ filename
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/dbproc/src/main/samples/transforms/call-db-procedure.hpl b/plugins/transforms/dbproc/src/main/samples/transforms/call-db-procedure.hpl
new file mode 100644
index 00000000000..80bbc67b780
--- /dev/null
+++ b/plugins/transforms/dbproc/src/main/samples/transforms/call-db-procedure.hpl
@@ -0,0 +1,136 @@
+
+
+
+
+ call-db-procedure
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Call a stored procedure in a database. Uses the hop-samples connection, an in-memory H2 database. Set the procedure name before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ arguments
+ Call DB procedure
+ Y
+
+
+
+ arguments
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - hello
+
+
+ - world
+
+
+
+
+ 128
+ 160
+
+
+
+ Call DB procedure
+ DBProc
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ addCount
+
+
+ value
+ IN
+ String
+
+
+
+ count
+ Integer
+
+ Y
+
+
+ 352
+ 96
+
+
+
+
+
+
diff --git a/plugins/transforms/ddl/src/main/samples/transforms/ddl.hpl b/plugins/transforms/ddl/src/main/samples/transforms/ddl.hpl
new file mode 100644
index 00000000000..39b6acbcfe3
--- /dev/null
+++ b/plugins/transforms/ddl/src/main/samples/transforms/ddl.hpl
@@ -0,0 +1,169 @@
+
+
+
+
+ ddl
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Generate the CREATE TABLE statement for the columns described in the input rows. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ employee columns
+ DDL
+ Y
+
+
+
+ employee columns
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ name
+ String
+ -1
+ -1
+ N
+
+
+ hopType
+ String
+ -1
+ -1
+ N
+
+
+ length
+ Integer
+ -1
+ -1
+ N
+
+
+ precision
+ Integer
+ -1
+ -1
+ N
+
+
+
+
+ - id
+ - Integer
+ - 9
+ - 0
+
+
+ - name
+ - String
+ - 50
+ - -1
+
+
+ - hired
+ - Date
+ - -1
+ - -1
+
+
+ - salary
+ - Number
+ - 10
+ - 2
+
+
+
+
+ 128
+ 160
+
+
+
+ DDL
+ DDL
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ ddl
+ N
+ N
+ length
+ name
+ precision
+ hopType
+ employees
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/delete/src/main/samples/transforms/delete.hpl b/plugins/transforms/delete/src/main/samples/transforms/delete.hpl
new file mode 100644
index 00000000000..cd6e81a6d20
--- /dev/null
+++ b/plugins/transforms/delete/src/main/samples/transforms/delete.hpl
@@ -0,0 +1,134 @@
+
+
+
+
+ delete
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Delete rows from a database table that match the key of every input row. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ keys
+ Delete
+ Y
+
+
+
+ keys
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+ - 2
+
+
+
+
+ 128
+ 160
+
+
+
+ Delete
+ Delete
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ 100
+
+ public
+
+
+ id
+ id
+ =
+
+
+
+
+
+ 256
+ 112
+
+
+
+
+
+
diff --git a/plugins/transforms/denormaliser/src/main/samples/transforms/row-denormaliser.hpl b/plugins/transforms/denormaliser/src/main/samples/transforms/row-denormaliser.hpl
new file mode 100644
index 00000000000..72de8f2bff3
--- /dev/null
+++ b/plugins/transforms/denormaliser/src/main/samples/transforms/row-denormaliser.hpl
@@ -0,0 +1,260 @@
+
+
+
+
+ row-denormaliser
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Pivot rows: turn one row per color into one row with a field per color.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ long rows
+ denormalise colors
+ Y
+
+
+
+ long rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ colorCode
+ String
+
+ -1
+ -1
+ N
+
+
+ colorValue
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - white
+ - #FFFFFF
+
+
+ - 1
+ - black
+ - #000000
+
+
+ - 1
+ - red
+ - #FF0000
+
+
+ - 1
+ - green
+ - #00FF00
+
+
+ - 1
+ - blue
+ - #0000FF
+
+
+ - 2
+ - white
+ - #FFFFFF
+
+
+ - 2
+ - black
+ - #111111
+
+
+ - 2
+ - red
+ - #FF0000
+
+
+ - 2
+ - green
+ - #00FF00
+
+
+ - 2
+ - blue
+ - #0000FF
+
+
+
+
+ 128
+ 160
+
+
+
+ denormalise colors
+ Denormaliser
+
+ Y
+
+ 1
+
+ none
+
+
+ colorCode
+
+
+ id
+
+
+
+
+ colorValue
+ white
+ colorWhite
+ String
+
+ -1
+ -1
+
+
+
+
+ -
+
+
+ colorValue
+ black
+ colorBlack
+ String
+
+ -1
+ -1
+
+
+
+
+ -
+
+
+ colorValue
+ red
+ colorRed
+ String
+
+ -1
+ -1
+
+
+
+
+ -
+
+
+ colorValue
+ green
+ colorGreen
+ String
+
+ -1
+ -1
+
+
+
+
+ -
+
+
+ colorValue
+ blue
+ colorBlue
+ String
+
+ -1
+ -1
+
+
+
+
+ -
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/drools/src/main/samples/transforms/rules-executor.hpl b/plugins/transforms/drools/src/main/samples/transforms/rules-executor.hpl
new file mode 100644
index 00000000000..97b41ff05b2
--- /dev/null
+++ b/plugins/transforms/drools/src/main/samples/transforms/rules-executor.hpl
@@ -0,0 +1,121 @@
+
+
+
+
+ rules-executor
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Execute a set of Drools rules for every row. Requires a Drools rules file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Rules executor
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 160
+
+
+
+ Rules executor
+ RuleExecutor
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/edi2xml/src/main/samples/files/edi-to-xml.txt b/plugins/transforms/edi2xml/src/main/samples/files/edi-to-xml.txt
new file mode 100644
index 00000000000..82d81f2b043
--- /dev/null
+++ b/plugins/transforms/edi2xml/src/main/samples/files/edi-to-xml.txt
@@ -0,0 +1,6 @@
+UNA:+.? '
+UNB+IATB:1+6XPPC:ZZ+LHPPC:ZZ+940101:0950+1'
+UNH+1+PAORES:93:1:IA'
+IFT+3+NO MORE FLIGHTS'
+UNT+4+1'
+UNZ+1+1'
diff --git a/plugins/transforms/edi2xml/src/main/samples/transforms/edi-to-xml.hpl b/plugins/transforms/edi2xml/src/main/samples/transforms/edi-to-xml.hpl
new file mode 100644
index 00000000000..dd1bb6fbb0e
--- /dev/null
+++ b/plugins/transforms/edi2xml/src/main/samples/transforms/edi-to-xml.hpl
@@ -0,0 +1,148 @@
+
+
+
+
+ edi-to-xml
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Convert EDI content in a field to XML.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ load edi file
+ edi to xml
+ Y
+
+
+
+ load edi file
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+
+ 0
+ UTF-8
+
+ N
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+
+ ${PROJECT_HOME}/files/edi-to-xml.txt
+
+
+ N
+ N
+
+
+
+
+ edi
+ String
+ -1
+
+ none
+ content
+ -1
+
+
+
+ N
+
+
+
+
+ 128
+ 160
+
+
+
+ edi to xml
+ TypeExitEdi2XmlTransform
+
+ Y
+
+ 1
+
+ none
+
+
+ edi
+ xml
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/excel/src/main/samples/files/microsoft-excel-input.xlsx b/plugins/transforms/excel/src/main/samples/files/microsoft-excel-input.xlsx
new file mode 100644
index 00000000000..d79fe2b6e69
Binary files /dev/null and b/plugins/transforms/excel/src/main/samples/files/microsoft-excel-input.xlsx differ
diff --git a/plugins/transforms/excel/src/main/samples/transforms/microsoft-excel-input.hpl b/plugins/transforms/excel/src/main/samples/transforms/microsoft-excel-input.hpl
new file mode 100644
index 00000000000..89c864bf272
--- /dev/null
+++ b/plugins/transforms/excel/src/main/samples/transforms/microsoft-excel-input.hpl
@@ -0,0 +1,165 @@
+
+
+
+
+ microsoft-excel-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read rows from a sheet in a Microsoft Excel workbook.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ microsoft excel input
+ ExcelInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+ Y
+ N
+
+
+
+
+ 0
+
+ N
+ N
+
+
+
+ ${PROJECT_HOME}/files/microsoft-excel-input.xlsx
+
+
+ N
+ N
+
+
+
+ id
+ Integer
+ -1
+ -1
+ none
+ N
+
+
+
+
+
+
+ title
+ String
+ -1
+ -1
+ none
+ N
+
+
+
+
+
+
+ author
+ String
+ -1
+ -1
+ none
+ N
+
+
+
+
+
+
+
+
+ Books
+ 0
+ 0
+
+
+ N
+ N
+ N
+
+ warning
+
+ error
+
+ line
+
+
+
+
+
+
+
+
+ POI
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/excel/src/main/samples/transforms/microsoft-excel-writer.hpl b/plugins/transforms/excel/src/main/samples/transforms/microsoft-excel-writer.hpl
new file mode 100644
index 00000000000..4503385adb7
--- /dev/null
+++ b/plugins/transforms/excel/src/main/samples/transforms/microsoft-excel-writer.hpl
@@ -0,0 +1,190 @@
+
+
+
+
+ microsoft-excel-writer
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a Microsoft Excel workbook.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ books
+ microsoft excel writer
+ Y
+
+
+
+ books
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ title
+ String
+
+ -1
+ -1
+ N
+
+
+ author
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - The Hobbit
+ - J.R.R. Tolkien
+
+
+ - 2
+ - Dune
+ - Frank Herbert
+
+
+
+
+ 128
+ 160
+
+
+
+ microsoft excel writer
+ TypeExitExcelWriterTransform
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ 0
+ N
+ 0
+ N
+
+ Y
+ Y
+ N
+ Y
+ xlsx
+ ${PROJECT_HOME}/output/microsoft-excel-writer
+ N
+ new
+ new
+ N
+ Books
+ N
+ 0
+ N
+ N
+ N
+
+
+ N
+
+ N
+ Y
+
+
+ N
+ id
+ id
+ Integer
+
+
+ N
+ title
+ title
+ String
+
+
+ N
+ author
+ author
+ String
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/execinfo/src/main/samples/transforms/execution-information.hpl b/plugins/transforms/execinfo/src/main/samples/transforms/execution-information.hpl
new file mode 100644
index 00000000000..4ad116456d6
--- /dev/null
+++ b/plugins/transforms/execinfo/src/main/samples/transforms/execution-information.hpl
@@ -0,0 +1,90 @@
+
+
+
+
+ execution-information
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ List the executions recorded in the execution information location named local.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ execution information
+ ExecInfo
+
+ N
+
+ 1
+
+ none
+
+
+ local
+ GetExecutionIds
+
+
+ type
+ name
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/execprocess/src/main/samples/transforms/execute-a-process.hpl b/plugins/transforms/execprocess/src/main/samples/transforms/execute-a-process.hpl
new file mode 100644
index 00000000000..020fddd80ff
--- /dev/null
+++ b/plugins/transforms/execprocess/src/main/samples/transforms/execute-a-process.hpl
@@ -0,0 +1,152 @@
+
+
+
+
+ execute-a-process
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Run an operating system command for every row and capture its output.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ processes
+ execute a process
+ Y
+
+
+
+ processes
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ script
+ String
+
+ -1
+ -1
+ N
+
+
+ value1
+ String
+
+ -1
+ -1
+ N
+
+
+ value2
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - echo
+ - hello
+ - world
+
+
+
+
+ 128
+ 160
+
+
+
+ execute a process
+ ExecProcess
+
+ Y
+
+ 1
+
+ none
+
+
+ script
+ output
+ Error output
+ Exit value
+ N
+
+ Y
+
+
+ value1
+
+
+ value2
+
+
+
+
+ 256
+ 64
+
+
+
+
+
+
diff --git a/plugins/transforms/execsqlrow/src/main/samples/transforms/execute-row-sql-script.hpl b/plugins/transforms/execsqlrow/src/main/samples/transforms/execute-row-sql-script.hpl
new file mode 100644
index 00000000000..538ab64cfb7
--- /dev/null
+++ b/plugins/transforms/execsqlrow/src/main/samples/transforms/execute-row-sql-script.hpl
@@ -0,0 +1,131 @@
+
+
+
+
+ execute-row-sql-script
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Execute the SQL statement in every row against a database. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ statements
+ execute row SQL script
+ Y
+
+
+
+ statements
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ sql
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - DELETE FROM employees WHERE id = 1
+
+
+ - UPDATE employees SET name = 'bob' WHERE id = 2
+
+
+
+
+ 128
+ 160
+
+
+
+ execute row SQL script
+ ExecSqlRow
+
+ Y
+
+ 1
+
+ none
+
+
+ 100
+ hop-samples
+ sql
+ inserted
+ updated
+ deleted
+ read
+ N
+ Y
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/filemetadata/src/main/samples/files/file-metadata.txt b/plugins/transforms/filemetadata/src/main/samples/files/file-metadata.txt
new file mode 100644
index 00000000000..c0a46ab192b
--- /dev/null
+++ b/plugins/transforms/filemetadata/src/main/samples/files/file-metadata.txt
@@ -0,0 +1,3 @@
+id;name;city
+1;alice;brussels
+2;bob;antwerp
diff --git a/plugins/transforms/filemetadata/src/main/samples/transforms/file-metadata.hpl b/plugins/transforms/filemetadata/src/main/samples/transforms/file-metadata.hpl
new file mode 100644
index 00000000000..8e7e83ed215
--- /dev/null
+++ b/plugins/transforms/filemetadata/src/main/samples/transforms/file-metadata.hpl
@@ -0,0 +1,130 @@
+
+
+
+
+ file-metadata
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Detect the metadata of a file: delimiters, enclosures, header and more.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ get filenames
+ file metadata
+ Y
+
+
+
+ get filenames
+ GetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/files/file-metadata.txt
+
+
+
+
+ 128
+ 160
+
+
+
+ file metadata
+ FileMetadataPlugin
+
+ Y
+
+ 1
+
+ none
+
+
+ ISO-8859-1
+
+ ;
+
+
+ ,
+
+
+ "
+
+
+ '
+
+ filename
+ Y
+ 10000
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/filesfromresult/src/main/samples/transforms/get-files-from-result.hpl b/plugins/transforms/filesfromresult/src/main/samples/transforms/get-files-from-result.hpl
new file mode 100644
index 00000000000..43782caafa3
--- /dev/null
+++ b/plugins/transforms/filesfromresult/src/main/samples/transforms/get-files-from-result.hpl
@@ -0,0 +1,82 @@
+
+
+
+
+ get-files-from-result
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read the result files that a parent pipeline or workflow passed to this pipeline.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get files from result
+ FilesFromResult
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/filestoresult/src/main/samples/transforms/set-files-in-result.hpl b/plugins/transforms/filestoresult/src/main/samples/transforms/set-files-in-result.hpl
new file mode 100644
index 00000000000..5e4a5258faf
--- /dev/null
+++ b/plugins/transforms/filestoresult/src/main/samples/transforms/set-files-in-result.hpl
@@ -0,0 +1,121 @@
+
+
+
+
+ set-files-in-result
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Add the filename of every row to the result files of this pipeline.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ files
+ set files in result
+ Y
+
+
+
+ files
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ filename
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - sample-file.txt
+
+
+
+
+ 128
+ 160
+
+
+
+ set files in result
+ FilesToResult
+
+ Y
+
+ 1
+
+ none
+
+
+ filename
+ GENERAL
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/tech/neo4j/src/main/samples/files/customers-100.txt b/plugins/transforms/filterrows/src/main/samples/files/customers-100.txt
similarity index 100%
rename from plugins/tech/neo4j/src/main/samples/files/customers-100.txt
rename to plugins/transforms/filterrows/src/main/samples/files/customers-100.txt
diff --git a/plugins/transforms/flattener/src/main/samples/transforms/row-flattener.hpl b/plugins/transforms/flattener/src/main/samples/transforms/row-flattener.hpl
new file mode 100644
index 00000000000..0bb09ef915b
--- /dev/null
+++ b/plugins/transforms/flattener/src/main/samples/transforms/row-flattener.hpl
@@ -0,0 +1,149 @@
+
+
+
+
+ row-flattener
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Flatten consecutive rows into a single row with multiple target fields.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ flatten directions
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ flatten
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - north
+
+
+ - 1
+ - east
+
+
+ - 2
+ - south
+
+
+ - 2
+ - west
+
+
+
+
+ 128
+ 160
+
+
+
+ flatten directions
+ Flattener
+
+ Y
+
+ 1
+
+ none
+
+
+ flatten
+
+
+ direction1
+
+
+ direction2
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/getfilesrowcount/src/main/samples/files/get-files-rows-count.csv b/plugins/transforms/getfilesrowcount/src/main/samples/files/get-files-rows-count.csv
new file mode 100644
index 00000000000..2c82f21998d
--- /dev/null
+++ b/plugins/transforms/getfilesrowcount/src/main/samples/files/get-files-rows-count.csv
@@ -0,0 +1,4 @@
+id,name
+1,alice
+2,bob
+3,carol
diff --git a/plugins/transforms/getfilesrowcount/src/main/samples/transforms/get-files-rows-count.hpl b/plugins/transforms/getfilesrowcount/src/main/samples/transforms/get-files-rows-count.hpl
new file mode 100644
index 00000000000..710e75b5f50
--- /dev/null
+++ b/plugins/transforms/getfilesrowcount/src/main/samples/transforms/get-files-rows-count.hpl
@@ -0,0 +1,98 @@
+
+
+
+
+ get-files-rows-count
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Count the number of rows in a text or CSV file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get files rows count
+ GetFilesRowsCount
+
+ Y
+
+ 1
+
+ none
+
+
+ Y
+ filesCount
+ rowsCount
+ LINEFEED
+
+ Y
+ N
+
+ Y
+
+ ${PROJECT_HOME}/files/get-files-rows-count.csv
+
+
+ N
+ N
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/getsubfolders/src/main/samples/transforms/get-subfolder-names.hpl b/plugins/transforms/getsubfolders/src/main/samples/transforms/get-subfolder-names.hpl
new file mode 100644
index 00000000000..3a2bcc0ec19
--- /dev/null
+++ b/plugins/transforms/getsubfolders/src/main/samples/transforms/get-subfolder-names.hpl
@@ -0,0 +1,90 @@
+
+
+
+
+ get-subfolder-names
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ List the subfolders of the samples project folder.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get subfolder names
+ GetSubFolders
+
+ Y
+
+ 1
+
+ none
+
+
+
+ Y
+ ${PROJECT_HOME}
+
+ N
+ 0
+ Y
+ rowNumber
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/gettablenames/src/main/samples/transforms/get-table-names.hpl b/plugins/transforms/gettablenames/src/main/samples/transforms/get-table-names.hpl
new file mode 100644
index 00000000000..7d58ec5b61b
--- /dev/null
+++ b/plugins/transforms/gettablenames/src/main/samples/transforms/get-table-names.hpl
@@ -0,0 +1,97 @@
+
+
+
+
+ get-table-names
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ List the tables and views of a database. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get table names
+ GetTableNames
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+
+ tablename
+ type
+ isSystem
+ sql
+ N
+ N
+ Y
+ Y
+ Y
+ Y
+ N
+ N
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/http/src/main/samples/transforms/http-client.hpl b/plugins/transforms/http/src/main/samples/transforms/http-client.hpl
new file mode 100644
index 00000000000..77ae332fd52
--- /dev/null
+++ b/plugins/transforms/http/src/main/samples/transforms/http-client.hpl
@@ -0,0 +1,132 @@
+
+
+
+
+ http-client
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Call a web service and add the response to the rows. Requires network access to the URL.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ http client
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 160
+
+
+
+ http client
+ Http
+
+ Y
+
+ 1
+
+ none
+
+
+ -1
+ 10000
+ UTF-8
+ N
+
+
+
+ status_code
+ result
+
+ 10000
+ https://hop.apache.org/
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/httppost/src/main/samples/transforms/http-post.hpl b/plugins/transforms/httppost/src/main/samples/transforms/http-post.hpl
new file mode 100644
index 00000000000..94f6e72159f
--- /dev/null
+++ b/plugins/transforms/httppost/src/main/samples/transforms/http-post.hpl
@@ -0,0 +1,134 @@
+
+
+
+
+ http-post
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Post the input rows to a web service. Requires network access to the URL.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ http post
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 160
+
+
+
+ http post
+ HttpPost
+
+ Y
+
+ 1
+
+ none
+
+
+ -1
+ 10000
+ UTF-8
+
+ N
+
+
+ N
+
+ status_code
+ result
+
+ 10000
+ https://hop.apache.org/
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/janino/src/main/samples/transforms/user-defined-java-expression.hpl b/plugins/transforms/janino/src/main/samples/transforms/user-defined-java-expression.hpl
new file mode 100644
index 00000000000..51d915c8765
--- /dev/null
+++ b/plugins/transforms/janino/src/main/samples/transforms/user-defined-java-expression.hpl
@@ -0,0 +1,140 @@
+
+
+
+
+ user-defined-java-expression
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Calculate new field values with a Java expression evaluated by Janino.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ user defined java expression
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ user defined java expression
+ Janino
+
+ Y
+
+ 1
+
+ none
+
+
+
+ name_length
+ name.length()
+ Integer
+ -1
+ -1
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/jdbc-metadata/src/main/samples/transforms/get-jdbc-metadata.hpl b/plugins/transforms/jdbc-metadata/src/main/samples/transforms/get-jdbc-metadata.hpl
new file mode 100644
index 00000000000..75dc0a97b82
--- /dev/null
+++ b/plugins/transforms/jdbc-metadata/src/main/samples/transforms/get-jdbc-metadata.hpl
@@ -0,0 +1,132 @@
+
+
+
+
+ get-jdbc-metadata
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Call a JDBC metadata method on a database and return the result rows. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Get JDBC Metadata
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 160
+
+
+
+ Get JDBC Metadata
+ JdbcMetadata
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ N
+
+
+ hop-samples
+ getCatalogs
+
+
+ TABLE_CAT
+ TABLE_CAT
+
+
+ N
+
+
+ 112
+ 96
+
+
+
+
+
+
diff --git a/plugins/transforms/jms/src/assembly/assembly.xml b/plugins/transforms/jms/src/assembly/assembly.xml
index 7a22fa8e7ff..31e7f6ed0d7 100644
--- a/plugins/transforms/jms/src/assembly/assembly.xml
+++ b/plugins/transforms/jms/src/assembly/assembly.xml
@@ -37,6 +37,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/transforms/jms/src/main/samples/transforms/jms-consumer.hpl b/plugins/transforms/jms/src/main/samples/transforms/jms-consumer.hpl
new file mode 100644
index 00000000000..52bfa29904b
--- /dev/null
+++ b/plugins/transforms/jms/src/main/samples/transforms/jms-consumer.hpl
@@ -0,0 +1,94 @@
+
+
+
+
+ jms-consumer
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Consume messages from a JMS queue or topic. Create a JMS connection named sample-jms before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ jms consumer
+ JmsConsumer
+
+ Y
+
+ 1
+
+ none
+
+
+ sample-jms
+ sample-queue
+ QUEUE
+
+ N
+ N
+ 10
+ 1000
+ body
+ jms_key
+ destination
+ message_id
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/jms/src/main/samples/transforms/jms-producer.hpl b/plugins/transforms/jms/src/main/samples/transforms/jms-producer.hpl
new file mode 100644
index 00000000000..86ae07bd691
--- /dev/null
+++ b/plugins/transforms/jms/src/main/samples/transforms/jms-producer.hpl
@@ -0,0 +1,125 @@
+
+
+
+
+ jms-producer
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Send rows as messages to a JMS queue or topic. Create a JMS connection named sample-jms before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ messages
+ jms producer
+ Y
+
+
+
+ messages
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ body
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - hello from Hop
+
+
+
+
+ 128
+ 160
+
+
+
+ jms producer
+ JmsProducer
+
+ Y
+
+ 1
+
+ none
+
+
+ sample-jms
+ sample-queue
+ QUEUE
+ N
+ body
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/json/src/main/samples/transforms/json-output.hpl b/plugins/transforms/json/src/main/samples/transforms/json-output.hpl
new file mode 100644
index 00000000000..54a33ece78e
--- /dev/null
+++ b/plugins/transforms/json/src/main/samples/transforms/json-output.hpl
@@ -0,0 +1,168 @@
+
+
+
+
+ json-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to a JSON file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ books
+ json output
+ Y
+
+
+
+ books
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ title
+ String
+
+ -1
+ -1
+ N
+
+
+ author
+ String
+
+ -1
+ -1
+ N
+
+
+ year
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - The Hobbit
+ - J.R.R. Tolkien
+ - 1937
+
+
+ - Dune
+ - Frank Herbert
+ - 1965
+
+
+
+
+ 128
+ 160
+
+
+
+ json output
+ JsonOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ Y
+ N
+ Y
+ UTF-8
+ json
+ N
+ N
+ ${PROJECT_HOME}/output/json-output
+ books
+ 5000
+ writetofile
+
+
+ title
+ title
+
+
+ author
+ author
+
+
+ year
+ year
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/ldap/src/main/samples/transforms/ldap-input.hpl b/plugins/transforms/ldap/src/main/samples/transforms/ldap-input.hpl
new file mode 100644
index 00000000000..090fa237647
--- /dev/null
+++ b/plugins/transforms/ldap/src/main/samples/transforms/ldap-input.hpl
@@ -0,0 +1,113 @@
+
+
+
+
+ ldap-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read entries from an LDAP directory. Requires a reachable LDAP server.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ ldap input
+ LDAPInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+
+ N
+
+
+ dn
+ string
+
+ dn
+ -1
+ N
+ none
+ String
+
+
+ (objectClass=*)
+ onelevel
+ localhost
+ 389
+ N
+ 0
+ dc=example,dc=org
+
+
+ LDAP
+ N
+ N
+
+
+ N
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/ldap/src/main/samples/transforms/ldap-output.hpl b/plugins/transforms/ldap/src/main/samples/transforms/ldap-output.hpl
new file mode 100644
index 00000000000..1e7447ed20c
--- /dev/null
+++ b/plugins/transforms/ldap/src/main/samples/transforms/ldap-output.hpl
@@ -0,0 +1,150 @@
+
+
+
+
+ ldap-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Rename or update entries in an LDAP directory. Requires a reachable LDAP server.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ entries
+ LDAP Rename DN
+ Y
+
+
+
+ entries
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ old_dn
+ String
+
+ -1
+ -1
+ N
+
+
+ new_dn
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - cn=alice,dc=example,dc=org
+ - cn=alice-new,dc=example,dc=org
+
+
+
+
+ 128
+ 160
+
+
+
+ LDAP Rename DN
+ LDAPOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ Y
+ always
+
+ N
+
+
+ localhost
+ ;
+ newDn
+ oldDn
+ rename
+ ${LDAP_PASSWORD}
+ 389
+ LDAP
+ follow
+
+ N
+ Encrypted
+
+ N
+ Y
+ ${LDAP_USERNAME}
+
+
+ 336
+ 112
+
+
+
+
+
+
diff --git a/plugins/transforms/loadfileinput/src/main/samples/files/load-file-content.txt b/plugins/transforms/loadfileinput/src/main/samples/files/load-file-content.txt
new file mode 100644
index 00000000000..7c1e6da1090
--- /dev/null
+++ b/plugins/transforms/loadfileinput/src/main/samples/files/load-file-content.txt
@@ -0,0 +1 @@
+Apache Hop pipelines and workflows.
diff --git a/plugins/transforms/loadfileinput/src/main/samples/transforms/load-file-content-in-memory.hpl b/plugins/transforms/loadfileinput/src/main/samples/transforms/load-file-content-in-memory.hpl
new file mode 100644
index 00000000000..ff030b3de0f
--- /dev/null
+++ b/plugins/transforms/loadfileinput/src/main/samples/transforms/load-file-content-in-memory.hpl
@@ -0,0 +1,124 @@
+
+
+
+
+ load-file-content-in-memory
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Load the entire content of a text file into a single field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ load file content in memory
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+
+ 0
+ UTF-8
+
+ N
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+
+ ${PROJECT_HOME}/files/load-file-content.txt
+
+
+ N
+ N
+
+
+
+
+ content
+ String
+ -1
+
+ none
+ content
+ -1
+
+
+
+ N
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/memgroupby/src/main/samples/transforms/memory-group-by.hpl b/plugins/transforms/memgroupby/src/main/samples/transforms/memory-group-by.hpl
new file mode 100644
index 00000000000..8f6a5951288
--- /dev/null
+++ b/plugins/transforms/memgroupby/src/main/samples/transforms/memory-group-by.hpl
@@ -0,0 +1,162 @@
+
+
+
+
+ memory-group-by
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Group rows in memory and count the employees per department.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ employees
+ count per department
+ Y
+
+
+
+ employees
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ department
+ String
+
+ -1
+ -1
+ N
+
+
+ employee
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - engineering
+ - alice
+
+
+ - engineering
+ - bob
+
+
+ - engineering
+ - carol
+
+
+ - sales
+ - dave
+
+
+ - sales
+ - erin
+
+
+ - marketing
+ - frank
+
+
+
+
+ 128
+ 160
+
+
+
+ count per department
+ MemoryGroupBy
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+
+ department
+
+
+
+
+ employee_count
+ employee
+ COUNT_ALL
+
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/mergerows/src/main/samples/transforms/merge-rows-diff.hpl b/plugins/transforms/mergerows/src/main/samples/transforms/merge-rows-diff.hpl
new file mode 100644
index 00000000000..75ddc116416
--- /dev/null
+++ b/plugins/transforms/mergerows/src/main/samples/transforms/merge-rows-diff.hpl
@@ -0,0 +1,223 @@
+
+
+
+
+ merge-rows-diff
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Compare two sorted streams row by row and flag rows as identical, changed, new or deleted.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ reference rows
+ merge rows (diff)
+ Y
+
+
+ changed rows
+ merge rows (diff)
+ Y
+
+
+
+ reference rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+ score
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+ - 90
+
+
+ - 2
+ - bob
+ - 80
+
+
+ - 3
+ - carol
+ - 70
+
+
+
+
+ 128
+ 160
+
+
+
+ changed rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+ score
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+ - 95
+
+
+ - 2
+ - bob
+ - 80
+
+
+ - 4
+ - dave
+ - 60
+
+
+
+
+ 128
+ 288
+
+
+
+ merge rows (diff)
+ MergeRows
+
+ Y
+
+ 1
+
+ none
+
+
+ changed rows
+ flagfield
+
+ id
+
+
+ reference rows
+
+ name
+ score
+
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/transforms/metadata/src/main/samples/transforms/metadata-input.hpl b/plugins/transforms/metadata/src/main/samples/transforms/metadata-input.hpl
new file mode 100644
index 00000000000..ebc698a8c59
--- /dev/null
+++ b/plugins/transforms/metadata/src/main/samples/transforms/metadata-input.hpl
@@ -0,0 +1,89 @@
+
+
+
+
+ metadata-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read all metadata objects of the current project as rows.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ metadata input
+ MetadataInput
+
+ Y
+
+ 1
+
+ none
+
+
+ json
+ name
+ provider
+ typeClass
+ typeDescription
+ typeKey
+ typeName
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/metastructure/src/main/samples/transforms/metadata-structure-of-stream.hpl b/plugins/transforms/metastructure/src/main/samples/transforms/metadata-structure-of-stream.hpl
new file mode 100644
index 00000000000..c02fc7784f8
--- /dev/null
+++ b/plugins/transforms/metastructure/src/main/samples/transforms/metadata-structure-of-stream.hpl
@@ -0,0 +1,147 @@
+
+
+
+
+ metadata-structure-of-stream
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Describe the fields of the input stream: name, type, length and origin.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ metadata structure of stream
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ metadata structure of stream
+ TransformMetaStructure
+
+ Y
+
+ 1
+
+ none
+
+
+ Comments
+ Fieldname
+ Y
+ Y
+ Y
+ Y
+ Y
+ Y
+ Y
+ Length
+ Origin
+ N
+ Position
+ Precision
+ Type
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/multimerge/src/main/samples/transforms/multiway-merge-join.hpl b/plugins/transforms/multimerge/src/main/samples/transforms/multiway-merge-join.hpl
new file mode 100644
index 00000000000..4a49c81a74c
--- /dev/null
+++ b/plugins/transforms/multimerge/src/main/samples/transforms/multiway-merge-join.hpl
@@ -0,0 +1,191 @@
+
+
+
+
+ multiway-merge-join
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Join two or more sorted streams on a common key.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ countries
+ multiway merge join
+ Y
+
+
+ capitals
+ multiway merge join
+ Y
+
+
+
+ countries
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ code
+ String
+
+ -1
+ -1
+ N
+
+
+ country
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - BE
+ - Belgium
+
+
+ - NL
+ - Netherlands
+
+
+
+
+ 128
+ 160
+
+
+
+ capitals
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ code
+ String
+
+ -1
+ -1
+ N
+
+
+ capital
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - BE
+ - Brussels
+
+
+ - NL
+ - Amsterdam
+
+
+
+
+ 128
+ 288
+
+
+
+ multiway merge join
+ MultiwayMergeJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ INNER
+
+ countries
+ capitals
+
+
+ code
+ code
+
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/transforms/normaliser/src/main/samples/transforms/row-normaliser.hpl b/plugins/transforms/normaliser/src/main/samples/transforms/row-normaliser.hpl
new file mode 100644
index 00000000000..3e399801d68
--- /dev/null
+++ b/plugins/transforms/normaliser/src/main/samples/transforms/row-normaliser.hpl
@@ -0,0 +1,185 @@
+
+
+
+
+ row-normaliser
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Convert one row with a field per quarter into one row per quarter.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ wide rows
+ normalise quarters
+ Y
+
+
+
+ wide rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ quarterA
+ Number
+
+ -1
+ -1
+ N
+
+
+ quarterB
+ Number
+
+ -1
+ -1
+ N
+
+
+ quarterC
+ Number
+
+ -1
+ -1
+ N
+
+
+ quarterD
+ Number
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - 100
+ - 120
+ - 90
+ - 110
+
+
+ - 2
+ - 80
+ - 70
+ - 95
+ - 105
+
+
+
+
+ 128
+ 160
+
+
+
+ normalise quarters
+ Normaliser
+
+ Y
+
+ 1
+
+ none
+
+
+ quarter
+
+
+ quarterA
+ Q1
+ amount
+
+
+ quarterB
+ Q2
+ amount
+
+
+ quarterC
+ Q3
+ amount
+
+
+ quarterD
+ Q4
+ amount
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/odata/src/assembly/assembly.xml b/plugins/transforms/odata/src/assembly/assembly.xml
index 5d6b0b0869b..18ee9a10c4e 100644
--- a/plugins/transforms/odata/src/assembly/assembly.xml
+++ b/plugins/transforms/odata/src/assembly/assembly.xml
@@ -38,6 +38,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/transforms/pgp/src/main/samples/transforms/pgp-decrypt-stream.hpl b/plugins/transforms/pgp/src/main/samples/transforms/pgp-decrypt-stream.hpl
new file mode 100644
index 00000000000..331b6abaa74
--- /dev/null
+++ b/plugins/transforms/pgp/src/main/samples/transforms/pgp-decrypt-stream.hpl
@@ -0,0 +1,88 @@
+
+
+
+
+ pgp-decrypt-stream
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Decrypt a PGP encrypted field. Requires gpg and a private key.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ decrypt the field
+ PGPDecryptStream
+
+ Y
+
+ 1
+
+ none
+
+
+ ${PROJECT_HOME}/output/gpg-in-project.sh
+ hop-it-passphrase
+ N
+
+ sealed
+ opened
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/pgp/src/main/samples/transforms/pgp-encrypt-stream.hpl b/plugins/transforms/pgp/src/main/samples/transforms/pgp-encrypt-stream.hpl
new file mode 100644
index 00000000000..6aae1f68bbe
--- /dev/null
+++ b/plugins/transforms/pgp/src/main/samples/transforms/pgp-encrypt-stream.hpl
@@ -0,0 +1,125 @@
+
+
+
+
+ pgp-encrypt-stream
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Encrypt a field with a PGP public key. Requires gpg and the key of the recipient.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ encrypt the field
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ payload
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - secret message
+
+
+
+
+ 128
+ 160
+
+
+
+ encrypt the field
+ PGPEncryptStream
+
+ Y
+
+ 1
+
+ none
+
+
+ gpg
+ sample-pgp-user
+ N
+
+ payload
+ sealed
+
+
+ 288
+ 96
+
+
+
+
+
+
diff --git a/plugins/transforms/pipelineexecutor/src/main/samples/transforms/pipeline-executor-child.hpl b/plugins/transforms/pipelineexecutor/src/main/samples/transforms/pipeline-executor-child.hpl
new file mode 100644
index 00000000000..9d1f7d8147d
--- /dev/null
+++ b/plugins/transforms/pipelineexecutor/src/main/samples/transforms/pipeline-executor-child.hpl
@@ -0,0 +1,119 @@
+
+
+
+
+ pipeline-executor-child
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Executed by pipeline-executor.hpl, not intended to run standalone.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ child data
+ copy rows to result
+ Y
+
+
+
+ child data
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ child_value
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - from-the-child-pipeline
+
+
+
+
+ 128
+ 160
+
+
+
+ copy rows to result
+ RowsToResult
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/pipelineexecutor/src/main/samples/transforms/pipeline-executor.hpl b/plugins/transforms/pipelineexecutor/src/main/samples/transforms/pipeline-executor.hpl
new file mode 100644
index 00000000000..52763ed7a7d
--- /dev/null
+++ b/plugins/transforms/pipelineexecutor/src/main/samples/transforms/pipeline-executor.hpl
@@ -0,0 +1,189 @@
+
+
+
+
+ pipeline-executor
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Execute a child pipeline for every row. The child copies its rows to the result, which come back on the 'child rows' stream. The execution statistics go to 'execution results'.
+ 128
+ 16
+ 560
+ 42
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ pipeline executor
+ Y
+
+
+ pipeline executor
+ execution results
+ Y
+
+
+ pipeline executor
+ child rows
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+ - 2
+
+
+ - 3
+
+
+
+
+ 128
+ 160
+
+
+
+ pipeline executor
+ PipelineExecutor
+
+ Y
+
+ 1
+
+ none
+
+
+ local
+ 0
+ ${PROJECT_HOME}/transforms/pipeline-executor-child.hpl
+ 1
+
+
+
+ Y
+ execution results
+ ExecutionTime
+ ExecutionResult
+ ExecutionNrErrors
+ child rows
+
+ child_value
+ String
+ -1
+ -1
+
+ FileName
+
+
+ 400
+ 160
+
+
+
+ execution results
+ Dummy
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 672
+ 96
+
+
+
+ child rows
+ Dummy
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 672
+ 224
+
+
+
+
+
+
diff --git a/plugins/transforms/processfiles/src/main/samples/files/process-files.txt b/plugins/transforms/processfiles/src/main/samples/files/process-files.txt
new file mode 100644
index 00000000000..6a087d6cd74
--- /dev/null
+++ b/plugins/transforms/processfiles/src/main/samples/files/process-files.txt
@@ -0,0 +1 @@
+file to copy around
diff --git a/plugins/transforms/processfiles/src/main/samples/transforms/process-files.hpl b/plugins/transforms/processfiles/src/main/samples/transforms/process-files.hpl
new file mode 100644
index 00000000000..b84c524680e
--- /dev/null
+++ b/plugins/transforms/processfiles/src/main/samples/transforms/process-files.hpl
@@ -0,0 +1,129 @@
+
+
+
+
+ process-files
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Copy a file from the files folder to the output folder.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ get filenames
+ copy files
+ Y
+
+
+
+ get filenames
+ GetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ source_filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/files/process-files.txt
+
+
+ -1
+ target_filename
+ -1
+ none
+ String
+ ${PROJECT_HOME}/output/process-files-copy.txt
+
+
+
+
+ 128
+ 160
+
+
+
+ copy files
+ ProcessFiles
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ Y
+ copy
+ Y
+ N
+ source_filename
+ target_filename
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/propertyinput/src/main/samples/files/properties-file-input.txt b/plugins/transforms/propertyinput/src/main/samples/files/properties-file-input.txt
new file mode 100644
index 00000000000..aa76e2ddebb
--- /dev/null
+++ b/plugins/transforms/propertyinput/src/main/samples/files/properties-file-input.txt
@@ -0,0 +1,2 @@
+environment=development
+max_connections=10
diff --git a/plugins/transforms/propertyinput/src/main/samples/transforms/properties-file-input.hpl b/plugins/transforms/propertyinput/src/main/samples/transforms/properties-file-input.hpl
new file mode 100644
index 00000000000..20a8d34107c
--- /dev/null
+++ b/plugins/transforms/propertyinput/src/main/samples/transforms/properties-file-input.hpl
@@ -0,0 +1,140 @@
+
+
+
+
+ properties-file-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read key/value pairs from a properties file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ properties input
+ PropertyInput
+
+ Y
+
+ 1
+
+ none
+
+
+ property
+ UTF-8
+ N
+
+
+ N
+ N
+ N
+
+ N
+ N
+ N
+
+
+
+ ${PROJECT_HOME}/files/properties-file-input.txt
+
+
+ N
+ N
+
+
+
+ Key
+ key
+ String
+
+ -1
+ -1
+
+
+
+ none
+ N
+
+
+ Value
+ value
+ String
+
+ -1
+ -1
+
+
+
+ none
+ N
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/propertyoutput/src/main/samples/transforms/properties-file-output.hpl b/plugins/transforms/propertyoutput/src/main/samples/transforms/properties-file-output.hpl
new file mode 100644
index 00000000000..208459e9dbd
--- /dev/null
+++ b/plugins/transforms/propertyoutput/src/main/samples/transforms/properties-file-output.hpl
@@ -0,0 +1,148 @@
+
+
+
+
+ properties-file-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write key/value pairs to a properties file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ settings
+ properties output
+ Y
+
+
+
+ settings
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ property
+ String
+
+ -1
+ -1
+ N
+
+
+ value
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - environment
+ - production
+
+
+ - max_connections
+ - 25
+
+
+
+
+ 128
+ 160
+
+
+
+ properties output
+ PropertyOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ property
+ value
+ Generated by the properties-file-output sample
+ N
+
+
+ ${PROJECT_HOME}/output/properties-file-output
+ properties
+ N
+ N
+ N
+ N
+ Y
+ N
+ N
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/randomvalue/src/main/samples/transforms/generate-random-value.hpl b/plugins/transforms/randomvalue/src/main/samples/transforms/generate-random-value.hpl
new file mode 100644
index 00000000000..5f1a7ac2a72
--- /dev/null
+++ b/plugins/transforms/randomvalue/src/main/samples/transforms/generate-random-value.hpl
@@ -0,0 +1,129 @@
+
+
+
+
+ generate-random-value
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Add a random number, integer, string and UUID to every row.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ generate 10 rows
+ generate random values
+ Y
+
+
+
+ generate 10 rows
+ RowGenerator
+
+ Y
+
+ 1
+
+ none
+
+
+
+ 5000
+ FiveSecondsAgo
+ 10
+ N
+ now
+
+
+ 128
+ 160
+
+
+
+ generate random values
+ RandomValue
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ random_number
+ random number
+
+
+ random_integer
+ random integer
+
+
+ random_string
+ random string
+
+
+ random_uuid
+ random uuid
+
+
+ 12345
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/regexeval/src/main/samples/transforms/regex-evaluation.hpl b/plugins/transforms/regexeval/src/main/samples/transforms/regex-evaluation.hpl
new file mode 100644
index 00000000000..a9c57b9f430
--- /dev/null
+++ b/plugins/transforms/regexeval/src/main/samples/transforms/regex-evaluation.hpl
@@ -0,0 +1,140 @@
+
+
+
+
+ regex-evaluation
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Evaluate a regular expression against every row and add the result as a new field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ phrases
+ match hop
+ Y
+
+
+
+ phrases
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phrase
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - Apache Hop pipelines and workflows
+
+
+ - A friendly greeting
+
+
+ - Hop around the world
+
+
+
+
+ 128
+ 160
+
+
+
+ match hop
+ RegexEval
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ N
+ Y
+ N
+ N
+
+
+ phrase
+ N
+ Y
+ contains_hop
+
+ N
+ N
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/repeatfields/src/main/samples/transforms/repeat-fields.hpl b/plugins/transforms/repeatfields/src/main/samples/transforms/repeat-fields.hpl
new file mode 100644
index 00000000000..bc09b1e57a2
--- /dev/null
+++ b/plugins/transforms/repeatfields/src/main/samples/transforms/repeat-fields.hpl
@@ -0,0 +1,174 @@
+
+
+
+
+ repeat-fields
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Repeat the lastname of the row marked with indicator A over the following rows of the same id.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ repeat lastname
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ source
+ String
+
+ -1
+ -1
+ N
+
+
+ lastname
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - A
+ - Doe
+
+
+ - 1
+ - B
+
+
+
+ - 1
+ - C
+
+
+
+ - 2
+ - A
+ - Smith
+
+
+ - 2
+ - B
+
+
+
+ - 3
+ - A
+ - Jones
+
+
+
+
+ 128
+ 160
+
+
+
+ repeat lastname
+ RepeatFields
+
+ Y
+
+ 1
+
+ none
+
+
+
+ id
+
+
+
+ source
+ A
+ lastname
+ repeated_lastname
+ current_when_indicated
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/replacestring/src/main/samples/transforms/replace-in-string.hpl b/plugins/transforms/replacestring/src/main/samples/transforms/replace-in-string.hpl
new file mode 100644
index 00000000000..fb6e9464de1
--- /dev/null
+++ b/plugins/transforms/replacestring/src/main/samples/transforms/replace-in-string.hpl
@@ -0,0 +1,139 @@
+
+
+
+
+ replace-in-string
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Replace all occurrences of a string in a field with another string.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ phrases
+ replace in string
+ Y
+
+
+
+ phrases
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phrase
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - hello world
+
+
+ - world of pipelines
+
+
+ - the wide world of data
+
+
+
+
+ 128
+ 160
+
+
+
+ replace in string
+ ReplaceString
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phrase
+ replaced
+ no
+ world
+ Hop
+ N
+
+ no
+ no
+ no
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/reservoirsampling/src/main/samples/transforms/reservoir-sampling.hpl b/plugins/transforms/reservoirsampling/src/main/samples/transforms/reservoir-sampling.hpl
new file mode 100644
index 00000000000..49381a93ad4
--- /dev/null
+++ b/plugins/transforms/reservoirsampling/src/main/samples/transforms/reservoir-sampling.hpl
@@ -0,0 +1,180 @@
+
+
+
+
+ reservoir-sampling
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Take a fixed size random sample of 5 rows out of a larger stream.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ numbers
+ reservoir sampling
+ Y
+
+
+
+ numbers
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+ - 2
+
+
+ - 3
+
+
+ - 4
+
+
+ - 5
+
+
+ - 6
+
+
+ - 7
+
+
+ - 8
+
+
+ - 9
+
+
+ - 10
+
+
+ - 11
+
+
+ - 12
+
+
+ - 13
+
+
+ - 14
+
+
+ - 15
+
+
+ - 16
+
+
+ - 17
+
+
+ - 18
+
+
+ - 19
+
+
+ - 20
+
+
+
+
+ 128
+ 160
+
+
+
+ reservoir sampling
+ ReservoirSampling
+
+ Y
+
+ 1
+
+ none
+
+
+
+ 5
+ 123456
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/rowgenerator/src/main/samples/transforms/generate-rows.hpl b/plugins/transforms/rowgenerator/src/main/samples/transforms/generate-rows.hpl
new file mode 100644
index 00000000000..3dae9eeb9db
--- /dev/null
+++ b/plugins/transforms/rowgenerator/src/main/samples/transforms/generate-rows.hpl
@@ -0,0 +1,88 @@
+
+
+
+
+ generate-rows
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Generate a fixed number of empty rows.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ generate 10 rows
+ RowGenerator
+
+ Y
+
+ 1
+
+ none
+
+
+
+ 5000
+ FiveSecondsAgo
+ 10
+ N
+ now
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/rowsfromresult/src/main/samples/transforms/get-records-from-stream.hpl b/plugins/transforms/rowsfromresult/src/main/samples/transforms/get-records-from-stream.hpl
new file mode 100644
index 00000000000..50d787eaa24
--- /dev/null
+++ b/plugins/transforms/rowsfromresult/src/main/samples/transforms/get-records-from-stream.hpl
@@ -0,0 +1,83 @@
+
+
+
+
+ get-records-from-stream
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read the rows that were passed to this pipeline by a parent pipeline executor as a record stream.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get records from stream
+ RecordsFromStream
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/rowsfromresult/src/main/samples/transforms/get-rows-from-result.hpl b/plugins/transforms/rowsfromresult/src/main/samples/transforms/get-rows-from-result.hpl
new file mode 100644
index 00000000000..10265b64466
--- /dev/null
+++ b/plugins/transforms/rowsfromresult/src/main/samples/transforms/get-rows-from-result.hpl
@@ -0,0 +1,83 @@
+
+
+
+
+ get-rows-from-result
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read the rows that a parent pipeline or workflow passed to this pipeline as the result.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ get rows from result
+ RowsFromResult
+
+ N
+
+ 1
+
+ none
+
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/rowstoresult/src/main/samples/transforms/copy-rows-to-result.hpl b/plugins/transforms/rowstoresult/src/main/samples/transforms/copy-rows-to-result.hpl
new file mode 100644
index 00000000000..b8faf4d3588
--- /dev/null
+++ b/plugins/transforms/rowstoresult/src/main/samples/transforms/copy-rows-to-result.hpl
@@ -0,0 +1,132 @@
+
+
+
+
+ copy-rows-to-result
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Copy rows to the result of this pipeline so a parent workflow or pipeline can pick them up.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ copy rows to result
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ copy rows to result
+ RowsToResult
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/samplerows/src/main/samples/transforms/sample-rows.hpl b/plugins/transforms/samplerows/src/main/samples/transforms/sample-rows.hpl
new file mode 100644
index 00000000000..23bb78da9a5
--- /dev/null
+++ b/plugins/transforms/samplerows/src/main/samples/transforms/sample-rows.hpl
@@ -0,0 +1,148 @@
+
+
+
+
+ sample-rows
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Keep only the rows in the given range and add the row number as a new field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ sample rows
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+ - 2
+
+
+ - 3
+
+
+ - 4
+
+
+ - 5
+
+
+ - 6
+
+
+ - 7
+
+
+ - 8
+
+
+ - 9
+
+
+ - 10
+
+
+
+
+ 128
+ 160
+
+
+
+ sample rows
+ SampleRows
+
+ Y
+
+ 1
+
+ none
+
+
+ 1,3,5-7
+ rownum
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/sasinput/src/main/samples/transforms/sas-input.hpl b/plugins/transforms/sasinput/src/main/samples/transforms/sas-input.hpl
new file mode 100644
index 00000000000..916e9ebb348
--- /dev/null
+++ b/plugins/transforms/sasinput/src/main/samples/transforms/sas-input.hpl
@@ -0,0 +1,83 @@
+
+
+
+
+ sas-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read a SAS data set (.sas7bdat). Point the transform at a SAS file before running.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ SAS Input
+ SASInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/script/src/main/samples/transforms/script.hpl b/plugins/transforms/script/src/main/samples/transforms/script.hpl
new file mode 100644
index 00000000000..75efd8c988b
--- /dev/null
+++ b/plugins/transforms/script/src/main/samples/transforms/script.hpl
@@ -0,0 +1,150 @@
+
+
+
+
+ script
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Calculate new field values with an ECMAScript script.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ script
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ script
+ SuperScript
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ upper_name
+ -1
+ upper_name
+ N
+ N
+ String
+
+
+ ECMAScript
+
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/serverstatus/src/main/samples/metadata/server/local-hop-server.json b/plugins/transforms/serverstatus/src/main/samples/metadata/server/local-hop-server.json
new file mode 100644
index 00000000000..17220cfc909
--- /dev/null
+++ b/plugins/transforms/serverstatus/src/main/samples/metadata/server/local-hop-server.json
@@ -0,0 +1,12 @@
+{
+ "webAppName": "",
+ "sslMode": false,
+ "proxyPort": "",
+ "hostname": "localhost",
+ "nonProxyHosts": "",
+ "password": "Encrypted 2be98afc86aa7f2e4cb1aa265cd86aac8",
+ "port": "8080",
+ "name": "local-hop-server",
+ "proxyHostname": "",
+ "username": "cluster"
+}
diff --git a/plugins/transforms/serverstatus/src/main/samples/transforms/get-server-status.hpl b/plugins/transforms/serverstatus/src/main/samples/transforms/get-server-status.hpl
new file mode 100644
index 00000000000..612d73f3484
--- /dev/null
+++ b/plugins/transforms/serverstatus/src/main/samples/transforms/get-server-status.hpl
@@ -0,0 +1,129 @@
+
+
+
+
+ get-server-status
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Query the status of the Hop servers named in the serverName field. The local-hop-server metadata points at localhost:8080 (cluster/cluster). Without a running Hop server, available is N and errorMessage says why.
+ 128
+ 16
+ 560
+ 42
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ server names
+ get server status
+ Y
+
+
+
+ server names
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ serverName
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - local-hop-server
+
+
+
+
+ 128
+ 160
+
+
+
+ get server status
+ GetServerStatus
+
+ N
+
+ 1
+
+ none
+
+
+ serverName
+ errorMessage
+
+
+ activePipelines
+ finishedPipelines
+ activeWorkflows
+ finishedWorkflows
+ available
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/setvalueconstant/src/main/samples/transforms/set-field-value-to-a-constant.hpl b/plugins/transforms/setvalueconstant/src/main/samples/transforms/set-field-value-to-a-constant.hpl
new file mode 100644
index 00000000000..b024479bcf2
--- /dev/null
+++ b/plugins/transforms/setvalueconstant/src/main/samples/transforms/set-field-value-to-a-constant.hpl
@@ -0,0 +1,145 @@
+
+
+
+
+ set-field-value-to-a-constant
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Replace the lastname of every row with a constant value.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ set constant lastname
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ firstname
+ String
+
+ -1
+ -1
+ N
+
+
+ lastname
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - John
+ - Smith
+
+
+ - Jane
+ - Jones
+
+
+ - Max
+ - Miller
+
+
+
+
+ 128
+ 160
+
+
+
+ set constant lastname
+ SetValueConstant
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ lastname
+ Doe
+
+ N
+
+
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/setvaluefield/src/main/samples/transforms/set-field-value.hpl b/plugins/transforms/setvaluefield/src/main/samples/transforms/set-field-value.hpl
new file mode 100644
index 00000000000..4454d5292cb
--- /dev/null
+++ b/plugins/transforms/setvaluefield/src/main/samples/transforms/set-field-value.hpl
@@ -0,0 +1,142 @@
+
+
+
+
+ set-field-value
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Copy the value of one field into another field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ set field value
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ String
+
+ -1
+ -1
+ N
+
+
+ replacement
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - old
+ - new
+
+
+ - first
+ - second
+
+
+ - a
+ - b
+
+
+
+
+ 128
+ 160
+
+
+
+ set field value
+ SetValueField
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ replacement
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/setvariable/src/main/samples/transforms/set-variables-basic.hpl b/plugins/transforms/setvariable/src/main/samples/transforms/set-variables-basic.hpl
new file mode 100644
index 00000000000..fdc49916520
--- /dev/null
+++ b/plugins/transforms/setvariable/src/main/samples/transforms/set-variables-basic.hpl
@@ -0,0 +1,128 @@
+
+
+
+
+ set-variables-basic
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Set the MY_COLOR pipeline variable from the color field value.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ settings
+ set variables
+ Y
+
+
+
+ settings
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ color
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - blue
+
+
+
+
+ 128
+ 160
+
+
+
+ set variables
+ SetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ color
+ MY_COLOR
+ CURRENT_PIPELINE
+ white
+
+
+ Y
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/sortedmerge/src/main/samples/transforms/sorted-merge.hpl b/plugins/transforms/sortedmerge/src/main/samples/transforms/sorted-merge.hpl
new file mode 100644
index 00000000000..01f2a4584d9
--- /dev/null
+++ b/plugins/transforms/sortedmerge/src/main/samples/transforms/sorted-merge.hpl
@@ -0,0 +1,180 @@
+
+
+
+
+ sorted-merge
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Merge two sorted streams into one stream that is still sorted on the merge field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ left rows
+ sorted merge
+ Y
+
+
+ right rows
+ sorted merge
+ Y
+
+
+
+ left rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 10
+
+
+ - 20
+
+
+ - 50
+
+
+ - 80
+
+
+
+
+ 128
+ 160
+
+
+
+ right rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 30
+
+
+ - 40
+
+
+ - 60
+
+
+ - 90
+
+
+
+
+ 128
+ 288
+
+
+
+ sorted merge
+ SortedMerge
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ value
+ Y
+
+
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/transforms/sortedschemamerge/src/main/samples/transforms/sorted-schema-merge.hpl b/plugins/transforms/sortedschemamerge/src/main/samples/transforms/sorted-schema-merge.hpl
new file mode 100644
index 00000000000..8b2986e084b
--- /dev/null
+++ b/plugins/transforms/sortedschemamerge/src/main/samples/transforms/sorted-schema-merge.hpl
@@ -0,0 +1,196 @@
+
+
+
+
+ sorted-schema-merge
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Merge streams with different schemas into one stream, sorted on a common key.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ source a
+ sorted schema merge
+ Y
+
+
+ source b
+ sorted schema merge
+ Y
+
+
+
+ source a
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 3
+ - carol
+
+
+
+
+ 128
+ 160
+
+
+
+ source b
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ city
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 2
+ - antwerp
+
+
+ - 4
+ - bruges
+
+
+
+
+ 128
+ 288
+
+
+
+ sorted schema merge
+ SortedSchemaMerge
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Y
+
+
+
+
+ source a
+
+
+ source b
+
+
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/transforms/splitfieldtorows/src/main/samples/transforms/split-field-to-rows.hpl b/plugins/transforms/splitfieldtorows/src/main/samples/transforms/split-field-to-rows.hpl
new file mode 100644
index 00000000000..41774aada03
--- /dev/null
+++ b/plugins/transforms/splitfieldtorows/src/main/samples/transforms/split-field-to-rows.hpl
@@ -0,0 +1,129 @@
+
+
+
+
+ split-field-to-rows
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Split a comma separated field into one row per value.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ movies
+ split movies
+ Y
+
+
+
+ movies
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ movies
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - The Matrix, Inception, Interstellar
+
+
+ - Alien, Prometheus, Arrival
+
+
+
+
+ 128
+ 160
+
+
+
+ split movies
+ SplitFieldToRows3
+
+ Y
+
+ 1
+
+ none
+
+
+ movies
+ ,\s*
+ movie
+ Y
+ movieNr
+ Y
+ Y
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/splunk/src/main/samples/transforms/splunk-input.hpl b/plugins/transforms/splunk/src/main/samples/transforms/splunk-input.hpl
new file mode 100644
index 00000000000..ba4c90cdb63
--- /dev/null
+++ b/plugins/transforms/splunk/src/main/samples/transforms/splunk-input.hpl
@@ -0,0 +1,86 @@
+
+
+
+
+ splunk-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read search results from Splunk. Requires a reachable Splunk server.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ Splunk Input
+ SplunkInput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/sql/src/main/samples/transforms/execute-sql-script.hpl b/plugins/transforms/sql/src/main/samples/transforms/execute-sql-script.hpl
new file mode 100644
index 00000000000..19d046fcd2b
--- /dev/null
+++ b/plugins/transforms/sql/src/main/samples/transforms/execute-sql-script.hpl
@@ -0,0 +1,96 @@
+
+
+
+
+ execute-sql-script
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Run a SQL script against a database. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+
+ execute SQL script
+ ExecSql
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ N
+ N
+ N
+ N
+ CREATE TABLE IF NOT EXISTS employees (id INTEGER PRIMARY KEY, name VARCHAR(100));
+ N
+ inserted
+ updated
+ deleted
+ read
+
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/sqlfileoutput/src/main/samples/transforms/sql-file-output.hpl b/plugins/transforms/sqlfileoutput/src/main/samples/transforms/sql-file-output.hpl
new file mode 100644
index 00000000000..7cc62232c6b
--- /dev/null
+++ b/plugins/transforms/sqlfileoutput/src/main/samples/transforms/sql-file-output.hpl
@@ -0,0 +1,153 @@
+
+
+
+
+ sql-file-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write the CREATE TABLE and INSERT statements for the input rows to a SQL file. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ employees
+ SQL file output
+ Y
+
+
+
+ employees
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ SQL file output
+ SQLFileOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+
+
+ N
+ Y
+ UTF-8
+
+ N
+ Y
+
+ ${PROJECT_HOME}/output/filename
+ sql
+ N
+ N
+ N
+ N
+ N
+ 0
+ Y
+ Y
+
+
+
+ 432
+ 112
+
+
+
+
+
+
diff --git a/plugins/transforms/stringcut/src/main/samples/transforms/strings-cut.hpl b/plugins/transforms/stringcut/src/main/samples/transforms/strings-cut.hpl
new file mode 100644
index 00000000000..697d6d46f84
--- /dev/null
+++ b/plugins/transforms/stringcut/src/main/samples/transforms/strings-cut.hpl
@@ -0,0 +1,133 @@
+
+
+
+
+ strings-cut
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Cut a string field between two positions and store the result in a new field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ phrases
+ strings cut
+ Y
+
+
+
+ phrases
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phrase
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - Apache Hop pipelines
+
+
+ - regular expressions
+
+
+ - documentation
+
+
+
+
+ 128
+ 160
+
+
+
+ strings cut
+ StringCut
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ phrase
+ cut
+ 0
+ 5
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/surefirereport/src/assembly/assembly.xml b/plugins/transforms/surefirereport/src/assembly/assembly.xml
index b517cb04be4..0fcda5f6ccc 100644
--- a/plugins/transforms/surefirereport/src/assembly/assembly.xml
+++ b/plugins/transforms/surefirereport/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/transforms/surefirereport/src/main/samples/transforms/surefire-report-output.hpl b/plugins/transforms/surefirereport/src/main/samples/transforms/surefire-report-output.hpl
new file mode 100644
index 00000000000..1318a619ac8
--- /dev/null
+++ b/plugins/transforms/surefirereport/src/main/samples/transforms/surefire-report-output.hpl
@@ -0,0 +1,164 @@
+
+
+
+
+ surefire-report-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write test results as a JUnit style surefire XML report.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ test results
+ surefire report output
+ Y
+
+
+
+ test results
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ test_name
+ String
+
+ -1
+ -1
+ N
+
+
+ duration_ms
+ Integer
+
+ -1
+ -1
+ N
+
+
+ test_result
+ String
+
+ -1
+ -1
+ N
+
+
+ log_text
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - sample-test-one
+ - 120
+ - PASS
+ - everything fine
+
+
+ - sample-test-two
+ - 80
+ - PASS
+ - no errors
+
+
+
+
+ 128
+ 160
+
+
+
+ surefire report output
+ SurefireReportOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ ${PROJECT_HOME}/output/surefire-report-output.xml
+ samples
+ Y
+ test_name
+ duration_ms
+ Y
+ test_result
+ log_text
+
+
+
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/synchronizeaftermerge/src/main/samples/transforms/synchronize-after-merge.hpl b/plugins/transforms/synchronizeaftermerge/src/main/samples/transforms/synchronize-after-merge.hpl
new file mode 100644
index 00000000000..2ab5ec1d177
--- /dev/null
+++ b/plugins/transforms/synchronizeaftermerge/src/main/samples/transforms/synchronize-after-merge.hpl
@@ -0,0 +1,177 @@
+
+
+
+
+ synchronize-after-merge
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Apply the inserts, updates and deletes flagged by a Merge rows (diff) transform to a database table. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Synchronize after merge
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+ flagfield
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 4
+ - dave
+ - new
+
+
+ - 2
+ - bob
+ - changed
+
+
+ - 3
+ - carol
+ - deleted
+
+
+
+
+ 128
+ 160
+
+
+
+ Synchronize after merge
+ SynchronizeAfterMerge
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ 100
+ N
+
+ Y
+ N
+ flagfield
+ new
+ changed
+ deleted
+
+
+
+
+ id
+ id
+ =
+
+
+
+ id
+ id
+ N
+
+
+ name
+ name
+ Y
+
+
+
+
+ 560
+ 96
+
+
+
+
+
+
diff --git a/plugins/transforms/tableexists/src/main/samples/transforms/table-exists.hpl b/plugins/transforms/tableexists/src/main/samples/transforms/table-exists.hpl
new file mode 100644
index 00000000000..952abfe424b
--- /dev/null
+++ b/plugins/transforms/tableexists/src/main/samples/transforms/table-exists.hpl
@@ -0,0 +1,123 @@
+
+
+
+
+ table-exists
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Check whether the table named in every row exists in a database. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ tables
+ Table exists
+ Y
+
+
+
+ tables
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ tablename
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - employees
+
+
+
+
+ 128
+ 160
+
+
+
+ Table exists
+ TableExists
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ tablename
+ result
+ public
+
+
+ 320
+ 80
+
+
+
+
+
+
diff --git a/plugins/transforms/tableoutput/src/main/samples/metadata/rdbms/hop-samples.json b/plugins/transforms/tableoutput/src/main/samples/metadata/rdbms/hop-samples.json
index e9f11fba31b..cc9f1592bb3 100644
--- a/plugins/transforms/tableoutput/src/main/samples/metadata/rdbms/hop-samples.json
+++ b/plugins/transforms/tableoutput/src/main/samples/metadata/rdbms/hop-samples.json
@@ -14,7 +14,7 @@
"SUPPORTS_BOOLEAN_DATA_TYPE": "Y",
"FORCE_IDENTIFIERS_TO_LOWERCASE": "N",
"PRESERVE_RESERVED_WORD_CASE": "Y",
- "SQL_CONNECT": "CREATE TABLE IF NOT EXISTS PUBLIC.dim_sample\n(\n scd_key IDENTITY\n, version INTEGER\n, date_from TIMESTAMP\n, date_to TIMESTAMP\n, id DOUBLE\n, name VARCHAR(50)\n, street VARCHAR(50)\n, number INT\n, zip VARCHAR(50)\n, city VARCHAR(50)\n)\n;\n\nCREATE TABLE IF NOT EXISTS PUBLIC.TABLEOUTPUT_BASIC\n(\n ID INT\n, COL_BOOL BOOLEAN\n, COL_STRING TEXT\n, COL_DATE DATE\n)\n;\n\n\nCREATE TABLE IF NOT EXISTS PUBLIC.INSERTUPDATE\n(\n ID INT\n, COL_BOOL BOOLEAN\n, COL_STRING TEXT\n, COL_DATE DATE\n)\n;\n\nCREATE TABLE IF NOT EXISTS PUBLIC.DBLOOKUP \n(\nID INT,\nDESCRIPTION TEXT\n); \n\nTRUNCATE TABLE PUBLIC.DBLOOKUP; \n\nINSERT INTO PUBLIC.DBLOOKUP VALUES \n(1, \u0027value 01\u0027),\n(2, \u0027value 02\u0027),\n(3, \u0027value 03\u0027),\n(4, \u0027value 04\u0027),\n(5, \u0027value 05\u0027),\n(6, \u0027value 06\u0027),\n(7, \u0027value 07\u0027),\n(8, \u0027value 08\u0027),\n(9, \u0027value 09\u0027),\n(10, \u0027value 10\u0027);\n\nCREATE TABLE IF NOT EXISTS PUBLIC.TABLEINPUT\n(\n ID INT\n, COL_BOOL BOOLEAN\n, COL_STRING TEXT\n, COL_DATE DATE\n)\n;\n\nTRUNCATE TABLE PUBLIC.TABLEINPUT;\n\nINSERT INTO PUBLIC.TABLEINPUT VALUES \n(1, \u0027Y\u0027, \u0027value 01\u0027, \u00272021-01-01\u0027),\n(2, \u0027Y\u0027, \u0027value 02\u0027, \u00272022-01-01\u0027),\n(3, \u0027Y\u0027, \u0027value 03\u0027, \u00272023-01-01\u0027),\n(4, \u0027Y\u0027, \u0027value 04\u0027, \u00272024-01-01\u0027),\n(5, \u0027Y\u0027, \u0027value 05\u0027, \u00272025-01-01\u0027);\n\n",
+ "SQL_CONNECT": "CREATE TABLE IF NOT EXISTS PUBLIC.dim_sample\n(\n scd_key IDENTITY\n, version INTEGER\n, date_from TIMESTAMP\n, date_to TIMESTAMP\n, id DOUBLE\n, name VARCHAR(50)\n, street VARCHAR(50)\n, number INT\n, zip VARCHAR(50)\n, city VARCHAR(50)\n)\n;\n\nCREATE TABLE IF NOT EXISTS PUBLIC.TABLEOUTPUT_BASIC\n(\n ID INT\n, COL_BOOL BOOLEAN\n, COL_STRING TEXT\n, COL_DATE DATE\n)\n;\n\n\nCREATE TABLE IF NOT EXISTS PUBLIC.INSERTUPDATE\n(\n ID INT\n, COL_BOOL BOOLEAN\n, COL_STRING TEXT\n, COL_DATE DATE\n)\n;\n\nCREATE TABLE IF NOT EXISTS PUBLIC.DBLOOKUP \n(\nID INT,\nDESCRIPTION TEXT\n); \n\nTRUNCATE TABLE PUBLIC.DBLOOKUP; \n\nINSERT INTO PUBLIC.DBLOOKUP VALUES \n(1, \u0027value 01\u0027),\n(2, \u0027value 02\u0027),\n(3, \u0027value 03\u0027),\n(4, \u0027value 04\u0027),\n(5, \u0027value 05\u0027),\n(6, \u0027value 06\u0027),\n(7, \u0027value 07\u0027),\n(8, \u0027value 08\u0027),\n(9, \u0027value 09\u0027),\n(10, \u0027value 10\u0027);\n\nCREATE TABLE IF NOT EXISTS PUBLIC.TABLEINPUT\n(\n ID INT\n, COL_BOOL BOOLEAN\n, COL_STRING TEXT\n, COL_DATE DATE\n)\n;\n\nTRUNCATE TABLE PUBLIC.TABLEINPUT;\n\nINSERT INTO PUBLIC.TABLEINPUT VALUES \n(1, \u0027Y\u0027, \u0027value 01\u0027, \u00272021-01-01\u0027),\n(2, \u0027Y\u0027, \u0027value 02\u0027, \u00272022-01-01\u0027),\n(3, \u0027Y\u0027, \u0027value 03\u0027, \u00272023-01-01\u0027),\n(4, \u0027Y\u0027, \u0027value 04\u0027, \u00272024-01-01\u0027),\n(5, \u0027Y\u0027, \u0027value 05\u0027, \u00272025-01-01\u0027);\n\nCREATE TABLE IF NOT EXISTS PUBLIC.EMPLOYEES\n(\n ID INTEGER PRIMARY KEY\n, NAME VARCHAR(100)\n)\n;\n\nMERGE INTO PUBLIC.EMPLOYEES KEY(ID) VALUES \n(1, \u0027alice\u0027),\n(2, \u0027robert\u0027),\n(3, \u0027carol\u0027);\n\nCREATE TABLE IF NOT EXISTS PUBLIC.COLORS\n(\n COLOR_KEY INTEGER\n, COLOR VARCHAR(100)\n)\n;\n\n",
"FORCE_IDENTIFIERS_TO_UPPERCASE": "N",
"PREFERRED_SCHEMA_NAME": ""
},
diff --git a/plugins/transforms/tokenreplacement/src/main/samples/transforms/token-replacement.hpl b/plugins/transforms/tokenreplacement/src/main/samples/transforms/token-replacement.hpl
new file mode 100644
index 00000000000..c393f3bff21
--- /dev/null
+++ b/plugins/transforms/tokenreplacement/src/main/samples/transforms/token-replacement.hpl
@@ -0,0 +1,168 @@
+
+
+
+
+ token-replacement
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Replace the tokens in a field with values taken from another field.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ token replacement
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ input
+ String
+
+ -1
+ -1
+ N
+
+
+ tokenValue
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - hello ${VARIABLE1}
+ - ${VARIABLE2}
+
+
+ - hello ${VARIABLE2}
+ - awesome
+
+
+
+
+ 128
+ 160
+
+
+
+ token replacement
+ TokenReplacementPlugin
+
+ Y
+
+ 1
+
+ none
+
+
+ field
+
+ input
+
+ N
+
+ N
+ Field
+ output
+
+ N
+
+ N
+ N
+ UNIX
+ UTF-8
+ 0
+ N
+ N
+ N
+ N
+ N
+
+ N
+ ${
+ }
+
+
+ tokenValue
+ VARIABLE1
+
+
+ tokenValue
+ VARIABLE2
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/uniquerowsbyhashset/src/main/samples/transforms/unique-rows-hashset.hpl b/plugins/transforms/uniquerowsbyhashset/src/main/samples/transforms/unique-rows-hashset.hpl
new file mode 100644
index 00000000000..fed29d44482
--- /dev/null
+++ b/plugins/transforms/uniquerowsbyhashset/src/main/samples/transforms/unique-rows-hashset.hpl
@@ -0,0 +1,159 @@
+
+
+
+
+ unique-rows-hashset
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Remove duplicate rows, keeping the first occurrence of every distinct name and city.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows with duplicates
+ unique rows
+ Y
+
+
+
+ rows with duplicates
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+ city
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - alice
+ - brussels
+
+
+ - bob
+ - antwerp
+
+
+ - alice
+ - brussels
+
+
+ - carol
+ - gent
+
+
+ - bob
+ - antwerp
+
+
+ - dave
+ - bruges
+
+
+
+
+ 128
+ 160
+
+
+
+ unique rows
+ UniqueRowsByHashSet
+
+ Y
+
+ 1
+
+ none
+
+
+ duplicate
+
+
+ name
+
+
+ city
+
+
+ N
+ Y
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/update/src/main/samples/transforms/update.hpl b/plugins/transforms/update/src/main/samples/transforms/update.hpl
new file mode 100644
index 00000000000..b78798b99eb
--- /dev/null
+++ b/plugins/transforms/update/src/main/samples/transforms/update.hpl
@@ -0,0 +1,152 @@
+
+
+
+
+ update
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Update the rows of a database table with the values of every input row. Uses the hop-samples connection, an in-memory H2 database.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Update
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+
+
+ 128
+ 160
+
+
+
+ Update
+ Update
+
+ Y
+
+ 1
+
+ none
+
+
+ hop-samples
+ N
+ 100
+ N
+ N
+
+
+ public
+
+
+ id
+ id
+ =
+
+
+
+ name
+ name
+
+
+
+
+ 384
+ 112
+
+
+
+
+
+
diff --git a/plugins/transforms/validator/src/main/samples/transforms/data-validator.hpl b/plugins/transforms/validator/src/main/samples/transforms/data-validator.hpl
new file mode 100644
index 00000000000..d25a3e77021
--- /dev/null
+++ b/plugins/transforms/validator/src/main/samples/transforms/data-validator.hpl
@@ -0,0 +1,166 @@
+
+
+
+
+ data-validator
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Validate that the id field is a positive number and fail rows that are not.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ data validator
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ name
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - alice
+
+
+ - 2
+ - bob
+
+
+ - 3
+ - carol
+
+
+
+
+ 128
+ 160
+
+
+
+ data validator
+ Validator
+
+ Y
+
+ 1
+
+ none
+
+
+
+ id-positive
+ id
+
+
+ N
+ N
+ N
+ Integer
+ Y
+
+
+
+ N
+
+
+ 1
+
+
+
+
+
+
+
+ 1
+ id must be positive
+
+ Y
+ Y
+ ,
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/vcard/src/assembly/assembly.xml b/plugins/transforms/vcard/src/assembly/assembly.xml
index 602222d5f63..020e8dd6239 100644
--- a/plugins/transforms/vcard/src/assembly/assembly.xml
+++ b/plugins/transforms/vcard/src/assembly/assembly.xml
@@ -32,6 +32,13 @@
+
+
+ ${project.basedir}/src/main/samples
+ config/projects/samples/
+
+
+
${maven.multiModuleProjectDirectory}/assemblies/shared/hop-plugin-libs.xml
diff --git a/plugins/transforms/vcard/src/main/samples/files/vcard-input.txt b/plugins/transforms/vcard/src/main/samples/files/vcard-input.txt
new file mode 100644
index 00000000000..6aebd62fb15
--- /dev/null
+++ b/plugins/transforms/vcard/src/main/samples/files/vcard-input.txt
@@ -0,0 +1,12 @@
+BEGIN:VCARD
+VERSION:3.0
+FN:Alice Doe
+UID:alice-doe
+EMAIL;TYPE=INTERNET:alice@apache.org
+END:VCARD
+BEGIN:VCARD
+VERSION:3.0
+FN:Bob Smith
+UID:bob-smith
+EMAIL;TYPE=INTERNET:bob@apache.org
+END:VCARD
diff --git a/plugins/transforms/vcard/src/main/samples/transforms/vcard-input.hpl b/plugins/transforms/vcard/src/main/samples/transforms/vcard-input.hpl
new file mode 100644
index 00000000000..9f42fdcebc9
--- /dev/null
+++ b/plugins/transforms/vcard/src/main/samples/transforms/vcard-input.hpl
@@ -0,0 +1,116 @@
+
+
+
+
+ vcard-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read names and email addresses from vCard files.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ read vcards
+ VCardInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ vcard_filename
+ Y
+ N
+ UTF-8
+
+
+ ${PROJECT_HOME}/files/vcard-input.txt
+
+
+ N
+ N
+
+
+ N
+
+ N
+
+ N
+
+ fn
+ fn
+
+
+
+ uid
+ uid
+
+
+
+ email
+ email
+ INTERNET
+
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/vcard/src/main/samples/transforms/vcard-output.hpl b/plugins/transforms/vcard/src/main/samples/transforms/vcard-output.hpl
new file mode 100644
index 00000000000..8a06091e4d9
--- /dev/null
+++ b/plugins/transforms/vcard/src/main/samples/transforms/vcard-output.hpl
@@ -0,0 +1,176 @@
+
+
+
+
+ vcard-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write contact fields from rows to a vCard file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ contacts
+ vcard output
+ Y
+
+
+
+ contacts
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ fn
+ String
+
+ -1
+ -1
+ N
+
+
+ uid
+ String
+
+ -1
+ -1
+ N
+
+
+ email
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - Alice Doe
+ - alice-doe
+ - alice@apache.org
+
+
+ - Bob Smith
+ - bob-smith
+ - bob@apache.org
+
+
+
+
+ 128
+ 160
+
+
+
+ vcard output
+ VCardOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ writetofile
+ 3.0
+ vcard_text
+ N
+ N
+ N
+ N
+ vcard_filename
+ UTF-8
+
+ ${PROJECT_HOME}/output/vcard-output
+ vcf
+ Y
+ N
+ N
+ N
+ Y
+
+
+ fn
+ fn
+
+
+
+ uid
+ uid
+
+
+
+ email
+ email
+ INTERNET
+
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/webservices/src/main/samples/transforms/web-services-lookup.hpl b/plugins/transforms/webservices/src/main/samples/transforms/web-services-lookup.hpl
new file mode 100644
index 00000000000..e2641987abd
--- /dev/null
+++ b/plugins/transforms/webservices/src/main/samples/transforms/web-services-lookup.hpl
@@ -0,0 +1,145 @@
+
+
+
+
+ web-services-lookup
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Call a SOAP web service for every row and read the response. Requires network access to the web service.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ rows
+ Web services lookup
+ Y
+
+
+
+ rows
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+
+
+
+
+ 128
+ 160
+
+
+
+ Web services lookup
+ WebServiceLookup
+
+ Y
+
+ 1
+
+ none
+
+
+ http://${CASTLEMOCK_HOSTNAME}:8080/castlemock/mock/soap/project/17hLFE/BookServiceSOAP?wsdl
+ AddBook
+
+ http://www.cleverbuilder.com/BookService/
+
+
+ Book
+ Book
+
+
+ admin
+ admin
+ 1
+ N
+ N
+
+ Y
+
+
+ body
+ Book
+ Book
+
+
+
+
+
+
+ 368
+ 64
+
+
+
+
+
+
diff --git a/plugins/transforms/writetolog/src/main/samples/transforms/write-to-log-basic.hpl b/plugins/transforms/writetolog/src/main/samples/transforms/write-to-log-basic.hpl
new file mode 100644
index 00000000000..66ea80c2e2b
--- /dev/null
+++ b/plugins/transforms/writetolog/src/main/samples/transforms/write-to-log-basic.hpl
@@ -0,0 +1,145 @@
+
+
+
+
+ write-to-log-basic
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write the rows of a data grid to the log.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ sample data
+ write to log
+ Y
+
+
+
+ sample data
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ firstname
+ String
+
+ -1
+ -1
+ N
+
+
+ lastname
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - John
+ - Doe
+
+
+ - Jane
+ - Doe
+
+
+
+
+ 128
+ 160
+
+
+
+ write to log
+ WriteToLog
+
+ Y
+
+ 1
+
+ none
+
+
+ Y
+ N
+ 0
+ Writing sample rows to the log:
+ Basic
+
+
+ firstname
+
+
+ lastname
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xml-input-stream.txt b/plugins/transforms/xml/src/main/samples/files/xml-input-stream.txt
new file mode 100644
index 00000000000..b02eec44631
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xml-input-stream.txt
@@ -0,0 +1,24 @@
+
+
+
+ The Hobbit
+ J.R.R. Tolkien
+
+
+ Dune
+ Frank Herbert
+
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xml-join-comments.txt b/plugins/transforms/xml/src/main/samples/files/xml-join-comments.txt
new file mode 100644
index 00000000000..f6292c08520
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xml-join-comments.txt
@@ -0,0 +1,17 @@
+
+
+ first order comment
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xml-join-orders.txt b/plugins/transforms/xml/src/main/samples/files/xml-join-orders.txt
new file mode 100644
index 00000000000..a6cea1d9836
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xml-join-orders.txt
@@ -0,0 +1,20 @@
+
+
+
+ 1
+ alice
+
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xsd-validator.txt b/plugins/transforms/xml/src/main/samples/files/xsd-validator.txt
new file mode 100644
index 00000000000..3c818474af0
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xsd-validator.txt
@@ -0,0 +1,19 @@
+
+
+ john
+ doe
+ john@apache.org
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xsd-validator.xsd b/plugins/transforms/xml/src/main/samples/files/xsd-validator.xsd
new file mode 100644
index 00000000000..bd09f08e11b
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xsd-validator.xsd
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xsl-transformation.txt b/plugins/transforms/xml/src/main/samples/files/xsl-transformation.txt
new file mode 100644
index 00000000000..dc81196be60
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xsl-transformation.txt
@@ -0,0 +1,17 @@
+
+
+ Apache Hop pipelines and workflows
+
diff --git a/plugins/transforms/xml/src/main/samples/files/xsl-transformation.xsl b/plugins/transforms/xml/src/main/samples/files/xsl-transformation.xsl
new file mode 100644
index 00000000000..f69828ef422
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/files/xsl-transformation.xsl
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/transforms/xml-input-stream.hpl b/plugins/transforms/xml/src/main/samples/transforms/xml-input-stream.hpl
new file mode 100644
index 00000000000..8f02d4b7da1
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/transforms/xml-input-stream.hpl
@@ -0,0 +1,118 @@
+
+
+
+
+ xml-input-stream
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Stream every XML token of a document to the next transform, one token per row.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ xml input stream
+ XMLInputStream
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ ${PROJECT_HOME}/files/xml-input-stream.txt
+ N
+ 0
+ 0
+ 1024
+ UTF-8
+ N
+ Y
+ N
+ xml_filename
+ N
+ xml_row_number
+ N
+ xml_data_type_numeric
+ Y
+ xml_data_type_description
+ N
+ xml_location_line
+ N
+ xml_location_column
+ Y
+ xml_element_id
+ Y
+ xml_parent_element_id
+ Y
+ xml_element_level
+ Y
+ xml_path
+ N
+ xml_parent_path
+ Y
+ xml_data_name
+ Y
+ xml_data_value
+
+
+ 128
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/transforms/xml-join.hpl b/plugins/transforms/xml/src/main/samples/transforms/xml-join.hpl
new file mode 100644
index 00000000000..6dccf3d453e
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/transforms/xml-join.hpl
@@ -0,0 +1,220 @@
+
+
+
+
+ xml-join
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Join two XML documents: add the comments stream into the orders document.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ orders
+ xml join
+ Y
+
+
+ comments
+ xml join
+ Y
+
+
+
+ orders
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+
+ 0
+ UTF-8
+
+ N
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+
+ ${PROJECT_HOME}/files/xml-join-orders.txt
+
+
+ N
+ N
+
+
+
+
+ orders_xml
+ String
+ -1
+
+ none
+ content
+ -1
+
+
+
+ N
+
+
+
+
+ 128
+ 160
+
+
+
+ comments
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+
+ 0
+ UTF-8
+
+ N
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+
+ ${PROJECT_HOME}/files/xml-join-comments.txt
+
+
+ N
+ N
+
+
+
+
+ comments_xml
+ String
+ -1
+
+ none
+ content
+ -1
+
+
+
+ N
+
+
+
+
+ 128
+ 288
+
+
+
+ xml join
+ XMLJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+ UTF-8
+ N
+ Y
+ comments_xml
+ comments
+ //Orders
+ orders_xml
+ orders
+ result_xml
+
+
+ 400
+ 224
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/transforms/xml-output.hpl b/plugins/transforms/xml/src/main/samples/transforms/xml-output.hpl
new file mode 100644
index 00000000000..a04a807e9d4
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/transforms/xml-output.hpl
@@ -0,0 +1,201 @@
+
+
+
+
+ xml-output
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Write rows to an XML file with a main and a repeat element.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ books
+ xml output
+ Y
+
+
+
+ books
+ DataGrid
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ id
+ Integer
+
+ -1
+ -1
+ N
+
+
+ title
+ String
+
+ -1
+ -1
+ N
+
+
+ author
+ String
+
+ -1
+ -1
+ N
+
+
+
+
+ - 1
+ - The Hobbit
+ - J.R.R. Tolkien
+
+
+ - 2
+ - Dune
+ - Frank Herbert
+
+
+
+
+ 128
+ 160
+
+
+
+ xml output
+ XMLOutput
+
+ Y
+
+ 1
+
+ none
+
+
+ UTF-8
+
+
+ Element
+
+
+ id
+
+
+ -1
+ id
+
+ -1
+ Integer
+
+
+ Element
+
+
+ title
+
+
+ -1
+ title
+
+ -1
+ String
+
+
+ Element
+
+
+ author
+
+
+ -1
+ author
+
+ -1
+ String
+
+
+
+ N
+ N
+ N
+ N
+
+ N
+ xml
+ ${PROJECT_HOME}/output/xml-output
+ Y
+ N
+ 0
+ N
+
+
+ Books
+ Book
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/transforms/xsd-validator.hpl b/plugins/transforms/xml/src/main/samples/transforms/xsd-validator.hpl
new file mode 100644
index 00000000000..fc17702be66
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/transforms/xsd-validator.hpl
@@ -0,0 +1,126 @@
+
+
+
+
+ xsd-validator
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Validate an XML document against an XSD schema.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ get filename
+ xsd validator
+ Y
+
+
+
+ get filename
+ GetVariable
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+ -1
+ xml-file
+ -1
+ none
+ String
+ ${PROJECT_HOME}/files/xsd-validator.txt
+
+
+
+
+ 128
+ 160
+
+
+
+ xsd validator
+ XSDValidator
+
+ Y
+
+ 1
+
+ none
+
+
+ ${PROJECT_HOME}/files/xsd-validator.xsd
+ xml-file
+ result
+ Y
+ validation_message
+
+
+ N
+ Y
+
+ filename
+ N
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/xml/src/main/samples/transforms/xsl-transformation.hpl b/plugins/transforms/xml/src/main/samples/transforms/xsl-transformation.hpl
new file mode 100644
index 00000000000..9f00f1d0cdc
--- /dev/null
+++ b/plugins/transforms/xml/src/main/samples/transforms/xsl-transformation.hpl
@@ -0,0 +1,157 @@
+
+
+
+
+ xsl-transformation
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Transform the content of an XML field with an XSL stylesheet.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+ load xml file
+ xsl transformation
+ Y
+
+
+
+ load xml file
+ LoadFileInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+
+ 0
+ UTF-8
+
+ N
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+
+ ${PROJECT_HOME}/files/xsl-transformation.txt
+
+
+ N
+ N
+
+
+
+
+ content
+ String
+ -1
+
+ none
+ content
+ -1
+
+
+
+ N
+
+
+
+
+ 128
+ 160
+
+
+
+ xsl transformation
+ XSLT
+
+ Y
+
+ 1
+
+ none
+
+
+ ${PROJECT_HOME}/files/xsl-transformation.xsl
+ content
+ result
+
+ N
+ N
+ SAXON
+
+
+
+
+
+
+ 400
+ 160
+
+
+
+
+
+
diff --git a/plugins/transforms/yamlinput/src/main/samples/files/yaml-input.txt b/plugins/transforms/yamlinput/src/main/samples/files/yaml-input.txt
new file mode 100644
index 00000000000..9c7e0480956
--- /dev/null
+++ b/plugins/transforms/yamlinput/src/main/samples/files/yaml-input.txt
@@ -0,0 +1,5 @@
+engine: hop
+version: 2.20
+pipelines:
+ - name: yaml-input
+ type: sample
diff --git a/plugins/transforms/yamlinput/src/main/samples/transforms/yaml-input.hpl b/plugins/transforms/yamlinput/src/main/samples/transforms/yaml-input.hpl
new file mode 100644
index 00000000000..d88d5c64ebd
--- /dev/null
+++ b/plugins/transforms/yamlinput/src/main/samples/transforms/yaml-input.hpl
@@ -0,0 +1,129 @@
+
+
+
+
+ yaml-input
+ Y
+
+
+
+ Normal
+
+
+ N
+ 1000
+ 100
+ -
+ 2026/10/04 09:00:00.000
+ -
+ 2026/10/04 09:00:00.000
+
+
+
+ Read fields from a YAML file.
+ 128
+ 16
+ 400
+ 27
+ Noto Sans
+ 11
+ N
+ N
+ 14
+ 58
+ 90
+ 201
+ 232
+ 251
+ 14
+ 58
+ 90
+
+
+
+
+
+ yaml input
+ YamlInput
+
+ Y
+
+ 1
+
+ none
+
+
+ N
+
+ N
+ N
+ N
+ N
+ Y
+
+
+
+
+ ${PROJECT_HOME}/files/yaml-input.txt
+
+ N
+ N
+
+
+
+
+ engine
+ engine
+ String
+
+
+
+
+ -1
+ -1
+ none
+
+
+ version
+ version
+ String
+
+
+
+
+ -1
+ -1
+ none
+
+
+ 0
+ N
+ N
+
+
+
+ 128
+ 160
+
+
+
+
+
+