diff --git a/docs/library/forms/access_to_form_fields_with_tokens.md b/docs/library/forms/access_to_form_fields_with_tokens.md
index 233895014e5963bb342e411bdd12802597758500..063c7520b9af2b338a0da58f723275165757613c 100644
--- a/docs/library/forms/access_to_form_fields_with_tokens.md
+++ b/docs/library/forms/access_to_form_fields_with_tokens.md
@@ -16,6 +16,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0028.xml';archive='bpmn_io-eca_lib_0028.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/access_to_form_fields_with_tokens
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/access_to_form_fields_with_tokens
+```
+
 ## Purpose
 
 This model demonstrates how to access form field values during validation or submission, how to find out the proper token syntax for each form field type, and also an alternative approach by building a temporary entity from form field values to use the more transparent entity token syntax.
diff --git a/docs/library/forms/access_to_form_fields_with_tokens/bpmn_io-eca_lib_0028.tar.gz b/docs/library/forms/access_to_form_fields_with_tokens/bpmn_io-eca_lib_0028.tar.gz
index a145354dd46ce092f3be6fa7705458016a9a9d0d..83e17c56e74c3bf88a2e8a86874f979dc85c7484 100644
--- a/docs/library/forms/access_to_form_fields_with_tokens/bpmn_io-eca_lib_0028.tar.gz
+++ b/docs/library/forms/access_to_form_fields_with_tokens/bpmn_io-eca_lib_0028.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d33117b45a36e9be732adf22f369c18ab87cedc46d6da6bf9063ae45bef957f6
-size 3180
+oid sha256:fdca82a3de9670af00a97842b6c8cd51c1545aa628355d73cd57b2f64e57880f
+size 2824
diff --git a/docs/library/forms/content_validation.md b/docs/library/forms/content_validation.md
index e92158bc3261f7a968b8e0491b72271cffb49c40..2b32a014d13fdefad3bc5db9c798a165277d6832 100644
--- a/docs/library/forms/content_validation.md
+++ b/docs/library/forms/content_validation.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0009.xml';archive='bpmn_io-eca_lib_0009.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/content_validation
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/content_validation
+```
+
 ## Purpose
 
 This example model changes the behaviour when editing a content of type &quot;article&quot; in a form:
diff --git a/docs/library/forms/content_validation/bpmn_io-eca_lib_0009.tar.gz b/docs/library/forms/content_validation/bpmn_io-eca_lib_0009.tar.gz
index 33f1832a93147d1e67a8b4a80fcacfe28d84ef8b..d0a4c6f43e67f38c6b73b5725486c4310896fb7f 100644
--- a/docs/library/forms/content_validation/bpmn_io-eca_lib_0009.tar.gz
+++ b/docs/library/forms/content_validation/bpmn_io-eca_lib_0009.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:b10578603f19410613c637742a3e855c9711ba0c53c9848ecd119c031a9cb639
-size 3551
+oid sha256:17c993415e675b4d23f7298316d38f99cc8df2923a0b998427b33c591970cf49
+size 3108
diff --git a/docs/library/simple/add_role_to_inserted_or_updated_user/bpmn_io-eca_lib_0029.tar.gz b/docs/library/simple/add_role_to_inserted_or_updated_user/bpmn_io-eca_lib_0029.tar.gz
index ed05efb5d8def2d0b680dad72f223c90d2080fc7..50cf263ad25f8149a042e544ffbe7dfe6f8efb91 100644
--- a/docs/library/simple/add_role_to_inserted_or_updated_user/bpmn_io-eca_lib_0029.tar.gz
+++ b/docs/library/simple/add_role_to_inserted_or_updated_user/bpmn_io-eca_lib_0029.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:1a451abec0c07c2f935c54a1474886e14febe79106069b7bdeade9330739ff4d
-size 2748
+oid sha256:992484c83c884e4efa3adf29c8b536163c265929d0ae81e8389783b58fe2774f
+size 2681
diff --git a/docs/library/simple/asynchronous_views_export.md b/docs/library/simple/asynchronous_views_export.md
index 4f86d117869f9b379578a839815850345a027442..c01aa9b4cca8fd950682fc99bd880e9d93ea586c 100644
--- a/docs/library/simple/asynchronous_views_export.md
+++ b/docs/library/simple/asynchronous_views_export.md
@@ -17,11 +17,18 @@ Version v1
 <script>url='bpmn_io-eca_lib_0016.xml';archive='bpmn_io-eca_lib_0016.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/asynchronous_views_export
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/asynchronous_views_export
+```
+
 ## Purpose
 
 This model provides an endpoint `/eca/export/users` which can be published as a menu item or a link. When requested, it does this:
 
-- Check access and only allow users with the administrator role to cal that endpoint
+- Check access and only allow users with the administror role to cal that endpoint
 - Enqueue a task called `export-users` and forward the email address of the current user
 - Display a message to the user and redirect them back to the page where they came from
 
diff --git a/docs/library/simple/asynchronous_views_export/bpmn_io-eca_lib_0016.tar.gz b/docs/library/simple/asynchronous_views_export/bpmn_io-eca_lib_0016.tar.gz
index 0a1c61d5b0616283976118fb3878d3026e864cb3..ea140c4d721701b268753671033d88409bce422d 100644
--- a/docs/library/simple/asynchronous_views_export/bpmn_io-eca_lib_0016.tar.gz
+++ b/docs/library/simple/asynchronous_views_export/bpmn_io-eca_lib_0016.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:4671d37a82600ef9d03b8167b16ead8c38a0b30561598b068fe7eaf395075b56
-size 6891
+oid sha256:0b8c1b1bdbff0fa0daac33916a714dd78b1caef4282a4d93dce61ab521079f95
+size 6722
diff --git a/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user.md b/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user.md
index c11803f398d5da1f26d7043f69ec2fec47c9e257..e6fd08259df2dfb3457519b94ad400c25841d9d8 100644
--- a/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user.md
+++ b/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0020.xml';archive='bpmn_io-eca_lib_0020.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/auto_create_entity_with_values_from_another_one_and_the_current_user
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/auto_create_entity_with_values_from_another_one_and_the_current_user
+```
+
 ## Purpose
 
 This model reacts upon creating a new page node. It then creates a new article node, its title is populated with the page auther&#039;s name, some static text and the title of the created page.
diff --git a/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user/bpmn_io-eca_lib_0020.tar.gz b/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user/bpmn_io-eca_lib_0020.tar.gz
index 30aa6dd2cdaa2c7297f9f379258515a75b31cdd1..266300a48b9ff3fedb09cb9066dfa8ccdf6afe63 100644
--- a/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user/bpmn_io-eca_lib_0020.tar.gz
+++ b/docs/library/simple/auto_create_entity_with_values_from_another_one_and_the_current_user/bpmn_io-eca_lib_0020.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:29de44a5867eaab49cf241bbf433a650e6d7c6de624049616907c8c04f51dd81
-size 2551
+oid sha256:43f560595c4e3b938a05fdb5fd55eea3ee83c284b28f6a816cf01ba11a3b14dc
+size 2318
diff --git a/docs/library/simple/calculated_entity_field.md b/docs/library/simple/calculated_entity_field.md
index 8d324c4dc471da0b6a4dd6679767713b0d8a6f86..efa81e905ba5246287fa48e4d716f7921d48ee69 100644
--- a/docs/library/simple/calculated_entity_field.md
+++ b/docs/library/simple/calculated_entity_field.md
@@ -17,6 +17,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0022.xml';archive='bpmn_io-eca_lib_0022.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/calculated_entity_field
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/calculated_entity_field
+```
+
 ## Purpose
 
 This model calculates a field value and stores it with a node, each time that node gets either created or updated. This shows in a simple example, how the contrib module &quot;Calculated Field&quot; can be replaced with ECA models.
diff --git a/docs/library/simple/calculated_entity_field/bpmn_io-eca_lib_0022.tar.gz b/docs/library/simple/calculated_entity_field/bpmn_io-eca_lib_0022.tar.gz
index a6ee06d492b6c9b2ba2378a2dc67835833f47679..b236f75a0fb5d854c2fd0dce39dc128210c22dcb 100644
--- a/docs/library/simple/calculated_entity_field/bpmn_io-eca_lib_0022.tar.gz
+++ b/docs/library/simple/calculated_entity_field/bpmn_io-eca_lib_0022.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:b72d944afc7346b0bce1f97e61e1aba6b974e875d7e67e79db74634235c0aafb
-size 2879
+oid sha256:bda56fa02732a940ce2827db7ff5a88bf226e9fbbfdb52b06591e1d9c5487d6c
+size 2622
diff --git a/docs/library/simple/combined_conditions.md b/docs/library/simple/combined_conditions.md
index 380b5560bdec6f54aa3c8ed9515b24a0c8e3b0ce..ff4f8f961aa7e082af3990e6a4ca47c0d5dbcc7f 100644
--- a/docs/library/simple/combined_conditions.md
+++ b/docs/library/simple/combined_conditions.md
@@ -14,6 +14,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0002.xml';archive='bpmn_io-eca_lib_0002.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/combined_conditions
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/combined_conditions
+```
+
 ## Purpose
 
 This means:
diff --git a/docs/library/simple/combined_conditions/bpmn_io-eca_lib_0002.tar.gz b/docs/library/simple/combined_conditions/bpmn_io-eca_lib_0002.tar.gz
index c3cb25eaf3e5cd99e7838e29a5c4b2594ca42a99..ddb5f2487af043faae2974cce224caae8db271bf 100644
--- a/docs/library/simple/combined_conditions/bpmn_io-eca_lib_0002.tar.gz
+++ b/docs/library/simple/combined_conditions/bpmn_io-eca_lib_0002.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:1c52f82df2f9830d891731ce895f45b0df7f5d32f2301377c4ff210074610c19
-size 2061
+oid sha256:0ca3b752a4caf8a8a549a112b74a37b0f83ac42bec6d9add3dfa4f6b3fc49252
+size 2000
diff --git a/docs/library/simple/count_user_logins.md b/docs/library/simple/count_user_logins.md
index 7fe0869aeb4d9d19d1e10054edc571ca52d06083..790c8cf9d3bfad0fcde6ca4052bb397470033ff0 100644
--- a/docs/library/simple/count_user_logins.md
+++ b/docs/library/simple/count_user_logins.md
@@ -14,6 +14,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0012.xml';archive='bpmn_io-eca_lib_0012.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/count_user_logins
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/count_user_logins
+```
+
 ## Purpose
 
 This model adds a number field to the user entity with a default value 0. It then increments that value, each time that user logs into the site.
diff --git a/docs/library/simple/count_user_logins/bpmn_io-eca_lib_0012.tar.gz b/docs/library/simple/count_user_logins/bpmn_io-eca_lib_0012.tar.gz
index d30e56e9e5198c841e5f097dc9b0ceec287b9ed3..9bb00fafd7416af7bbb50a50f9637fc8304db961 100644
--- a/docs/library/simple/count_user_logins/bpmn_io-eca_lib_0012.tar.gz
+++ b/docs/library/simple/count_user_logins/bpmn_io-eca_lib_0012.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:4c498cb97cf563b13ad9001a729718ceca1829e88425358b067e2b5d2a3d0c36
-size 2349
+oid sha256:25d2e9b8df20efd2746006bae32a82fa6a5d1bfec9098c09d0a5726d4c1a9613
+size 2223
diff --git a/docs/library/simple/create_user_entity_from_json.md b/docs/library/simple/create_user_entity_from_json.md
index 265a57cca6c9c495fc15b5a2c367723911a8e71b..c893ad70f7c2ff524ca4baf1df7b198c2fd2f52a 100644
--- a/docs/library/simple/create_user_entity_from_json.md
+++ b/docs/library/simple/create_user_entity_from_json.md
@@ -16,6 +16,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0030.xml';archive='bpmn_io-eca_lib_0030.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/create_user_entity_from_json
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/create_user_entity_from_json
+```
+
 ## Purpose
 
 This model demonstrates how to create a content entity with data from a JSON string. It also shows why creating a user entity &quot;the classic way&quot; doesn&#039;t work, more about the reasons for that are explained in the video.
@@ -47,7 +54,6 @@ The creation of this module was recorded and the video with additional explanati
 - [Save the user](/plugins/eca/content/actions/eca_save_entity.md)
 - [Success message](/plugins/core/actions/action_message_action.md)
 - [Switch to user 1](/plugins/eca/user/actions/eca_switch_account.md)
-- [Switch to user 1](/plugins/eca/user/actions/eca_switch_account.md)
 - [Unserialize json for user](/plugins/eca/render/actions/eca_render_unserialize_serialization.md)
 - [Save user](/plugins/eca/content/actions/eca_save_entity.md)
 - [Success Message](/plugins/core/actions/action_message_action.md)
diff --git a/docs/library/simple/create_user_entity_from_json/bpmn_io-eca_lib_0030.tar.gz b/docs/library/simple/create_user_entity_from_json/bpmn_io-eca_lib_0030.tar.gz
index fe029e6992ed2aa6915a526f38f45d3a25dacea8..13c5579e518b795296b31351b90b9f36d317d1ed 100644
--- a/docs/library/simple/create_user_entity_from_json/bpmn_io-eca_lib_0030.tar.gz
+++ b/docs/library/simple/create_user_entity_from_json/bpmn_io-eca_lib_0030.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:e37083a93e5eff9efb83e30f7b7089bddcf30401abbb72ba12660bad69fbe127
-size 3342
+oid sha256:53db1f8988fa1474c4ce0130815b0af9741cc533128b5dd367084094091e559e
+size 3278
diff --git a/docs/library/simple/detect_user_role_changes.md b/docs/library/simple/detect_user_role_changes.md
index 9f031b0d5b9e277b7fa9ce7297c2febbb2d1a294..d11c993ed7c62375c7bbd73b866a4721ce05ae2b 100644
--- a/docs/library/simple/detect_user_role_changes.md
+++ b/docs/library/simple/detect_user_role_changes.md
@@ -16,6 +16,13 @@ Version v2
 <script>url='bpmn_io-eca_lib_0010.xml';archive='bpmn_io-eca_lib_0010.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/detect_user_role_changes
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/detect_user_role_changes
+```
+
 ## Purpose
 
 When a user entity gets saved, this model compares the list of original and current roles of that user and finds out, which ones got added and which ones got removed.
@@ -39,9 +46,6 @@ For each missing role, this model shows a message on screen.
 
 ### Conditions
 
-- [Compare number of list items](/plugins/eca/base/conditions/eca_count.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 - [Compare number of list items](/plugins/eca/base/conditions/eca_count.md)
 - [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 
@@ -52,7 +56,6 @@ For each missing role, this model shows a message on screen.
 - [Message that the role is new](/plugins/core/actions/action_message_action.md)
 - [Join original IDs](/plugins/eca/base/actions/eca_token_set_value.md)
 - [Join current IDs](/plugins/eca/base/actions/eca_token_set_value.md)
-- [Get next role](/plugins/eca/base/actions/eca_list_remove.md)
 - [Message that role has been removed](/plugins/eca/base/actions/eca_warning_message.md)
 - [Get the list of original roles](/plugins/eca/content/actions/eca_get_field_value.md)
 - [Get the list of current roles](/plugins/eca/content/actions/eca_get_field_value.md)
diff --git a/docs/library/simple/detect_user_role_changes/bpmn_io-eca_lib_0010.tar.gz b/docs/library/simple/detect_user_role_changes/bpmn_io-eca_lib_0010.tar.gz
index 077c3e21dd04f5715470024d785998d9ff08c697..2c3fc40bb5ffe50ae404a22e1b62fab95c770ac1 100644
--- a/docs/library/simple/detect_user_role_changes/bpmn_io-eca_lib_0010.tar.gz
+++ b/docs/library/simple/detect_user_role_changes/bpmn_io-eca_lib_0010.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:09230676b1f167450cb507bad05a46623bcccb6f30eee1b44c2afebbd4a5a571
-size 4250
+oid sha256:44bddcd28dabc6aaeec22d85f1a8b9a93a2a304f79c15e49e575091d3e435ed3
+size 4185
diff --git a/docs/library/simple/display_message_to_specific_user_roles_only.md b/docs/library/simple/display_message_to_specific_user_roles_only.md
index ffe2027140025b0dd606c2c1edd622f0e6774c66..0a1cc2fd357286315b22ccb6042894325fe7fc8a 100644
--- a/docs/library/simple/display_message_to_specific_user_roles_only.md
+++ b/docs/library/simple/display_message_to_specific_user_roles_only.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0015.xml';archive='bpmn_io-eca_lib_0015.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/display_message_to_specific_user_roles_only
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/display_message_to_specific_user_roles_only
+```
+
 ## Purpose
 
 This model prints a message on screen, when the user opens the user profile form for editing. The message output is limited to users that have one of the roles editor, customer or auditor.
@@ -33,8 +40,6 @@ This model prints a message on screen, when the user opens the user profile form
 
 ### Conditions
 
-- [Role of current user](/plugins/eca/user/conditions/eca_current_user_role.md)
-- [Role of current user](/plugins/eca/user/conditions/eca_current_user_role.md)
 - [Role of current user](/plugins/eca/user/conditions/eca_current_user_role.md)
 
 ### Actions
diff --git a/docs/library/simple/display_message_to_specific_user_roles_only/bpmn_io-eca_lib_0015.tar.gz b/docs/library/simple/display_message_to_specific_user_roles_only/bpmn_io-eca_lib_0015.tar.gz
index 79d14b4bd49a36e0963ac3add292814ef4c26001..e933b4d71f83fdd8d3e6f2cf3792fa28660498d4 100644
--- a/docs/library/simple/display_message_to_specific_user_roles_only/bpmn_io-eca_lib_0015.tar.gz
+++ b/docs/library/simple/display_message_to_specific_user_roles_only/bpmn_io-eca_lib_0015.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:3754c6eba88b3fc8effd0334595687b8dc4222bd3901a1a3d7767a69c91bfe02
-size 1952
+oid sha256:c771ed23e4ad6f7f6ca2e66c675a2cf90fb53237be211baa12b5495663067d18
+size 1886
diff --git a/docs/library/simple/eca_and_http_services.md b/docs/library/simple/eca_and_http_services.md
index d62988ca925da4174656a5f4afe4d1372ae3f0af..9714fcfdd53c1cfe22c2f7cba942d0b13ce72c58 100644
--- a/docs/library/simple/eca_and_http_services.md
+++ b/docs/library/simple/eca_and_http_services.md
@@ -17,12 +17,19 @@ Version v1
 <script>url='bpmn_io-eca_lib_0032.xml';archive='bpmn_io-eca_lib_0032.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/eca_and_http_services
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/eca_and_http_services
+```
+
 ## Purpose
 
 This model has 2 parts:
 
 1. It demonstrates how to use API endpoints provided by the [http_client_manager](https://www.drupal.org/project/http_client_manager) module and accessing the data they receive from remote services.
-2. It then also demonstrates how to use ECA endpoints to control the access to that endpoint and building up a response to it.
+2. It then also demonstrates how to use ECA endpoints to controll the access to that endpoint and building up a response to it.
 
 In a follow up model, we will then show how the ECA endpoint can be made available to the HTTP Client Manager, so that one Drupal sites could be offering an API endpoint controlled by ECA, and another Drupal site then requested data from that API.
 
diff --git a/docs/library/simple/eca_and_http_services/bpmn_io-eca_lib_0032.tar.gz b/docs/library/simple/eca_and_http_services/bpmn_io-eca_lib_0032.tar.gz
index cc6c3a31f9af7a3e631b25628d7b7ebd30863c12..93a379c40bb297e1ebbb6c4d2a139e0ce56caf97 100644
--- a/docs/library/simple/eca_and_http_services/bpmn_io-eca_lib_0032.tar.gz
+++ b/docs/library/simple/eca_and_http_services/bpmn_io-eca_lib_0032.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d53e843d5f5aba57418d2215c3bc3e86e42b63abacee2e1a7a8f39b06c559b35
-size 3111
+oid sha256:265ddc283c8ef836f7403646545ee0e466a7f1ac7e24f4c3457660f7f9133355
+size 3038
diff --git a/docs/library/simple/eca_and_http_services_-_part_2/bpmn_io-eca_lib_0033.tar.gz b/docs/library/simple/eca_and_http_services_-_part_2/bpmn_io-eca_lib_0033.tar.gz
index 1c181df517a0957a2de84f87b2da66f80107c2f1..a2162c0fbbb5009f38d82b67f0312cf571242623 100644
--- a/docs/library/simple/eca_and_http_services_-_part_2/bpmn_io-eca_lib_0033.tar.gz
+++ b/docs/library/simple/eca_and_http_services_-_part_2/bpmn_io-eca_lib_0033.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:9c60526bdbdc9b48be425d0a8a2107468376ee214e7e7eae60ededa77ebb04d3
-size 3072
+oid sha256:6c59bcfdc49be1476eb87534ecba5fd3b17558c756b13c81f89cfcbd664ec65f
+size 3008
diff --git a/docs/library/simple/eca_and_views.md b/docs/library/simple/eca_and_views.md
index 0c2a3affc006cd118ff57491fd6f37df6ec7728b..0454583056e89974a025734a0b41df511992b8ed 100644
--- a/docs/library/simple/eca_and_views.md
+++ b/docs/library/simple/eca_and_views.md
@@ -14,9 +14,16 @@ Version v1
 <script>url='bpmn_io-eca_lib_0034.xml';archive='bpmn_io-eca_lib_0034.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/eca_and_views
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/eca_and_views
+```
+
 ## Purpose
 
-This model shows the difference between the [Views: Execute Query](/plugins/eca/views/actions/eca_views_query.md) action and the [Render: Views](/plugins/eca/render/actions/eca_render_views_views.md) action. The first one always returns a list of entities (more about in the video, see link below) and the second one returns the rendered result.
+This model shows the difference between the [Views: Execute Query](/plugins/eca/views/actions/eca_views_query) action and the [Render: Views](/plugins/eca/render/actions/eca_render_views_views) action. The first one always returns a list of entities (more about in the video, see link below) and the second one returns the rendered result.
 
 The creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/jnzoru2XFHgpoToQB5P6AT).
 
@@ -47,7 +54,6 @@ The creation of this module was recorded and the video with additional explanati
 - [Query ECA Content Count](/plugins/eca/views/actions/eca_views_query.md)
 - [Trigger Print View Result](/plugins/eca/content/actions/eca_trigger_content_entity_custom_event.md)
 - [Message](/plugins/core/actions/action_message_action.md)
-- [Message](/plugins/core/actions/action_message_action.md)
 - [Render ECA Content Count](/plugins/eca/render/actions/eca_render_views_views.md)
 - [Trim the result](/plugins/eca/tamper/actions/eca_tamper_trim.md)
 - [Strip tags](/plugins/eca/tamper/actions/eca_tamper_strip_tags.md)
diff --git a/docs/library/simple/eca_and_views/bpmn_io-eca_lib_0034.tar.gz b/docs/library/simple/eca_and_views/bpmn_io-eca_lib_0034.tar.gz
index 3d88a2575cb4cf07db9f643bcd3d012785c03867..c37bc3e662fbc4892a724fc38b260b861ed0ab94 100644
--- a/docs/library/simple/eca_and_views/bpmn_io-eca_lib_0034.tar.gz
+++ b/docs/library/simple/eca_and_views/bpmn_io-eca_lib_0034.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:27587eb5ca89f029e56c530e4a67f13182fef0e803413fb931a55199e117190a
-size 4490
+oid sha256:ee86da2e159a769a19fdca4c8be76ea738883c39890ff3575d32099cd7548307
+size 4379
diff --git a/docs/library/simple/eca_working_with_vbo.md b/docs/library/simple/eca_working_with_vbo.md
index 938343eb5e0575b0c8c278a50997b1028f5f62a3..14d250c705d70f8e20b638de654a9b850e0e0e36 100644
--- a/docs/library/simple/eca_working_with_vbo.md
+++ b/docs/library/simple/eca_working_with_vbo.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0019.xml';archive='bpmn_io-eca_lib_0019.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/eca_working_with_vbo
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/eca_working_with_vbo
+```
+
 ## Purpose
 
 This model shows how you get Drupal views working with VBO and ECA together. The creation of this model was [recorded in a video](https://tube.tchncs.de/w/vNRrQDcmEA2QbW771acZZi) and explains a lot more detail there.
diff --git a/docs/library/simple/eca_working_with_vbo/bpmn_io-eca_lib_0019.tar.gz b/docs/library/simple/eca_working_with_vbo/bpmn_io-eca_lib_0019.tar.gz
index 773008338e90c4598416c658fe24342038c0f9c7..48beb364fb0fe7220f7de127e859b03f71b3bd1c 100644
--- a/docs/library/simple/eca_working_with_vbo/bpmn_io-eca_lib_0019.tar.gz
+++ b/docs/library/simple/eca_working_with_vbo/bpmn_io-eca_lib_0019.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:94aedd490c8900f20c29eddccc77463554e9f6725bf8e75a21a522ed52bc77f0
-size 1938
+oid sha256:4fc5f6526f9d0c4878c50733b436d48c180fc215e24b8ff39040d1928defd972
+size 1872
diff --git a/docs/library/simple/find_values_in_lists.md b/docs/library/simple/find_values_in_lists.md
index 807335b805a4c529432c67add7010b5eb9340980..bbc1999be2dcec27e349d212fb1e2a4f81e6cb06 100644
--- a/docs/library/simple/find_values_in_lists.md
+++ b/docs/library/simple/find_values_in_lists.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0013.xml';archive='bpmn_io-eca_lib_0013.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/find_values_in_lists
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/find_values_in_lists
+```
+
 ## Purpose
 
 This model defines a serialized list with all of the list items being separated by a pipe character from each other. It then defines 5 different values and verfies if they are contained in the list, displaying either a success or failure message.
@@ -35,7 +42,6 @@ The comparison requires the pipe character also surounding the values in order t
 
 ### Conditions
 
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 - [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 
 ### Actions
diff --git a/docs/library/simple/find_values_in_lists/bpmn_io-eca_lib_0013.tar.gz b/docs/library/simple/find_values_in_lists/bpmn_io-eca_lib_0013.tar.gz
index d3633a9866c812ddd862a7b2d2fcd6ddafc00ce1..3874128b694f76f1ea55d05be2ae2ed7a1df1284 100644
--- a/docs/library/simple/find_values_in_lists/bpmn_io-eca_lib_0013.tar.gz
+++ b/docs/library/simple/find_values_in_lists/bpmn_io-eca_lib_0013.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d3ce6666eec9efb45cff53048b665605140fcf01e4d4b06c744a97c91657cdc4
-size 3741
+oid sha256:250c6cbc50f284dea1fd6ffaaa8ba7ac92fb07a83a8b3c021faa6140b0132edb
+size 3678
diff --git a/docs/library/simple/get_next_incremental_id.md b/docs/library/simple/get_next_incremental_id.md
index 1ffa09e7ccf1166337aaf4e2193823c46d84ad12..2c2774b1e4ee8a534159a0a53de321c7d7aa98fe 100644
--- a/docs/library/simple/get_next_incremental_id.md
+++ b/docs/library/simple/get_next_incremental_id.md
@@ -16,9 +16,16 @@ Version v2
 <script>url='bpmn_io-eca_lib_0011.xml';archive='bpmn_io-eca_lib_0011.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/get_next_incremental_id
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/get_next_incremental_id
+```
+
 ## Purpose
 
-This model increments a side wide ID by 1 and returns that on screen. It uses Drupal&#039;s state service to store the value inbetween requests.
+This model increments a sidewide ID by 1 and returns that on screen. It uses Drupal&#039;s state service to store the value inbetween requests.
 
 ## Dependencies
 
diff --git a/docs/library/simple/get_next_incremental_id/bpmn_io-eca_lib_0011.tar.gz b/docs/library/simple/get_next_incremental_id/bpmn_io-eca_lib_0011.tar.gz
index e1f79d4cb3ed34df1d48f7fdb0464a5bcbc160c1..4efea325a03dcce707d82e093d9621b05193a3c4 100644
--- a/docs/library/simple/get_next_incremental_id/bpmn_io-eca_lib_0011.tar.gz
+++ b/docs/library/simple/get_next_incremental_id/bpmn_io-eca_lib_0011.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:bcacb783b9b46234b47d93214493fa8081e08f302370f81cd33cfd254e342af5
-size 2555
+oid sha256:7d6a74e4b5ed757382324cbdabfc7c40aa017e4bca51d1b049555dbc432dc8f9
+size 2490
diff --git a/docs/library/simple/grant_new_user_role_after_3_conditions_are_met.md b/docs/library/simple/grant_new_user_role_after_3_conditions_are_met.md
index f76ffb67df650f232ab0920ac70d2c9e50bef87a..7ebfd2f998396b874fc6d223fdcb3a3d900ef24c 100644
--- a/docs/library/simple/grant_new_user_role_after_3_conditions_are_met.md
+++ b/docs/library/simple/grant_new_user_role_after_3_conditions_are_met.md
@@ -15,6 +15,13 @@ Version v2
 <script>url='bpmn_io-eca_lib_0026.xml';archive='bpmn_io-eca_lib_0026.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/grant_new_user_role_after_3_conditions_are_met
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/grant_new_user_role_after_3_conditions_are_met
+```
+
 ## Purpose
 
 This model automatically adds or removes a role from a user, when this gets updated, depending upon 3 conditions that are stored with the user entity. Only if all 3 conditions are met, the role gets added. In all other cases the role gets removed.
@@ -38,11 +45,6 @@ The creation of this module was recorded and the video with additional explanati
 
 ### Conditions
 
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 - [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 
 ### Actions
diff --git a/docs/library/simple/grant_new_user_role_after_3_conditions_are_met/bpmn_io-eca_lib_0026.tar.gz b/docs/library/simple/grant_new_user_role_after_3_conditions_are_met/bpmn_io-eca_lib_0026.tar.gz
index a5c82ec60dfbb0f927c9349bf46e8dc556907950..adc7b4bea5ea2272d72b47484e376bb60560a31f 100644
--- a/docs/library/simple/grant_new_user_role_after_3_conditions_are_met/bpmn_io-eca_lib_0026.tar.gz
+++ b/docs/library/simple/grant_new_user_role_after_3_conditions_are_met/bpmn_io-eca_lib_0026.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:44b0e5393a5c4cb3d8def944abb1680df02c638aef795ed3afa39df3d8e99148
-size 2703
+oid sha256:df8412f40584819fb80be4898500450ffb53c4dd8dc7c464e2d6910538cddb2a
+size 2612
diff --git a/docs/library/simple/keep_2_fields_in_sync.md b/docs/library/simple/keep_2_fields_in_sync.md
index 32a1a3c35476ebd5845a60eb237dc9295c01c0cb..68e61176b67c531959a18bf4159e01d8ed954ebd 100644
--- a/docs/library/simple/keep_2_fields_in_sync.md
+++ b/docs/library/simple/keep_2_fields_in_sync.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0018.xml';archive='bpmn_io-eca_lib_0018.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/keep_2_fields_in_sync
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/keep_2_fields_in_sync
+```
+
 ## Purpose
 
 This model demonstrates how a text field in a user entity can be kept in sync with a similar field in an associated profile entity. This works in both directions. Regardless which of the entities gets updated, the other one will be updated automatically as well.
@@ -46,8 +53,6 @@ The creation of that model has been recorded: [Watch the video](https://tube.tch
 
 ### Conditions
 
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 - [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 
 ### Actions
diff --git a/docs/library/simple/keep_2_fields_in_sync/bpmn_io-eca_lib_0018.tar.gz b/docs/library/simple/keep_2_fields_in_sync/bpmn_io-eca_lib_0018.tar.gz
index e39f64983fa3f9b476c89a03c53ecb3ecf1da37b..5b605d98e99e7db602a54c1d3d1a7ecbb80a3651 100644
--- a/docs/library/simple/keep_2_fields_in_sync/bpmn_io-eca_lib_0018.tar.gz
+++ b/docs/library/simple/keep_2_fields_in_sync/bpmn_io-eca_lib_0018.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f3cd650ab2c01895e0836af8711b12520cde5f3829c5dee9ce9b5e46ed8a8f1f
-size 3485
+oid sha256:3907cf0c300c74cd044cb3537dadaccca39ee7633710fcbba81c54878459f923
+size 3277
diff --git a/docs/library/simple/notifications/bpmn_io-eca_lib_0021.tar.gz b/docs/library/simple/notifications/bpmn_io-eca_lib_0021.tar.gz
index dcaf0b77cdcaa5e1d36b8d752071db8d2f88c344..2b71990d4f28ae36152920ef6b1a240a78e4e548 100644
--- a/docs/library/simple/notifications/bpmn_io-eca_lib_0021.tar.gz
+++ b/docs/library/simple/notifications/bpmn_io-eca_lib_0021.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f2c03cb705113940635b1c74f96c84675e07cfe833e5517c83139e4f42c7d1a4
-size 3950
+oid sha256:9ad39f0b746b1205c3de7a2af76dad05da62db86d61b8a78d2caf2494b495974
+size 3885
diff --git a/docs/library/simple/processing_sequence.md b/docs/library/simple/processing_sequence.md
index b35c0e779dd9c5705b0086dd2df6b45887351cd6..4771f61e722657f8b4d430e5ca9db46c20641e2d 100644
--- a/docs/library/simple/processing_sequence.md
+++ b/docs/library/simple/processing_sequence.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0014.xml';archive='bpmn_io-eca_lib_0014.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/processing_sequence
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/processing_sequence
+```
+
 ## Purpose
 
 This model comes with 2 processes, that look similar but do behave differently. They get executed by calling `drush eca:trigger:custom_event procorder` on the console of the Drupal site.
@@ -34,7 +41,6 @@ We have recorded a video which discusses that topic alongside this model and dem
 
 ### Events
 
-- [ECA custom event (procorder)](/plugins/eca/base/events/eca_base_eca_custom.md)
 - [ECA custom event (procorder)](/plugins/eca/base/events/eca_base_eca_custom.md)
 
 ### Actions
@@ -43,7 +49,6 @@ We have recorded a video which discusses that topic alongside this model and dem
 - [Overwrite token value to 2](/plugins/eca/base/actions/eca_token_set_value.md)
 - [Print message with value](/plugins/core/actions/action_message_action.md)
 - [Set token to 5](/plugins/eca/base/actions/eca_token_set_value.md)
-- [Print message with value](/plugins/core/actions/action_message_action.md)
 - [Overwrite token value to 12](/plugins/eca/base/actions/eca_token_set_value.md)
 
 ## Changelog
diff --git a/docs/library/simple/processing_sequence/bpmn_io-eca_lib_0014.tar.gz b/docs/library/simple/processing_sequence/bpmn_io-eca_lib_0014.tar.gz
index 3f74e6d0adac47709137220446283fa7e5adac0c..dc781607ced94d39f5b3541064c0c603af5d25eb 100644
--- a/docs/library/simple/processing_sequence/bpmn_io-eca_lib_0014.tar.gz
+++ b/docs/library/simple/processing_sequence/bpmn_io-eca_lib_0014.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:0559500d95089ffa9ebf62fc661f18dcb7b37c6c47730b4fe1216bd133e5355f
-size 2829
+oid sha256:060bb3b4c9cec747350dabdae6886765b3fdb641a79bda876cb91e021a4227c8
+size 2766
diff --git a/docs/library/simple/route_test.md b/docs/library/simple/route_test.md
index fe4e3531445c3144f343a02e588378782d58d1cb..85e640917194847ca93ebed188755af6b4429b9f 100644
--- a/docs/library/simple/route_test.md
+++ b/docs/library/simple/route_test.md
@@ -16,11 +16,18 @@ Version v2
 <script>url='bpmn_io-eca_lib_0001.xml';archive='bpmn_io-eca_lib_0001.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/route_test
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/route_test
+```
+
 ## Purpose
 
 If a node page gets requested and the node is of type &quot;article&quot;, a message will be printed.
 
-This is using the event [Controller found to handle request](https://ecaguide.org/plugins/eca/misc/events/kernel_controller/?h=controller+found+handle+request) as this is working even if pages are cached.
+This is using the event [Controller found to handle request](https://ecaguide.org/plugins/eca/misc/events/kernel_controller/?h=controller+found+handle+request) as thiss is working even if pages are cached.
 
 ## Dependencies
 
diff --git a/docs/library/simple/route_test/bpmn_io-eca_lib_0001.tar.gz b/docs/library/simple/route_test/bpmn_io-eca_lib_0001.tar.gz
index 74642df966b6fac09faba4f804bd6686e69e57e2..59294494263ae9c2a77f71035c6df378a7d3f897 100644
--- a/docs/library/simple/route_test/bpmn_io-eca_lib_0001.tar.gz
+++ b/docs/library/simple/route_test/bpmn_io-eca_lib_0001.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:656ef06937e5d13863f133fec501077761e1730046863ea86191fab7f94ba1cc
-size 2197
+oid sha256:cc381a83718c6b2bc75ca3a0426acd2e83e034d62e82f51a7aaa910ee59804eb
+size 2134
diff --git a/docs/library/simple/scheduled_publishing.md b/docs/library/simple/scheduled_publishing.md
index bfa7d9a1e4f0404c5cae787f39c6a4cbd577cc65..35fc5cd85ec03b9ef4bf3e40a29bc5a527e4291a 100644
--- a/docs/library/simple/scheduled_publishing.md
+++ b/docs/library/simple/scheduled_publishing.md
@@ -16,6 +16,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0023.xml';archive='bpmn_io-eca_lib_0023.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/scheduled_publishing
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/scheduled_publishing
+```
+
 ## Purpose
 
 This model demonstrates how to automatically publish and unpublish nodes by scheduled dates and times.
@@ -54,7 +61,6 @@ The creation of this module was recorded and the video with additional explanati
 - [View: get due nodes for unpublishing](/plugins/eca/views/actions/eca_views_query.md)
 - [Trigger unpublish event](/plugins/eca/content/actions/eca_trigger_content_entity_custom_event.md)
 - [Unpublish node](/plugins/core/actions/entity_unpublish_action_node.md)
-- [Message](/plugins/core/actions/action_message_action.md)
 
 ## Changelog
 
diff --git a/docs/library/simple/scheduled_publishing/bpmn_io-eca_lib_0023.tar.gz b/docs/library/simple/scheduled_publishing/bpmn_io-eca_lib_0023.tar.gz
index 0cbfde0507e17f0bc10ef0ad7ed6a578eca59b20..4ee4ac988a3a1fc09c949ae9e38bb72f3ab2fb23 100644
--- a/docs/library/simple/scheduled_publishing/bpmn_io-eca_lib_0023.tar.gz
+++ b/docs/library/simple/scheduled_publishing/bpmn_io-eca_lib_0023.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:cfc2722a008d436e9638cdebed4e6a417701e177504daf8bf0fd570163088715
-size 4590
+oid sha256:25618d525d75f4838bc74d0b464007dc4944222e62f9591f07070330d6a00baa
+size 4518
diff --git a/docs/library/simple/send_email_on_user_registration_with_field_values.md b/docs/library/simple/send_email_on_user_registration_with_field_values.md
index 7d42da8203a5aeee559fe11fbabdbd6a89b200d8..fbd65f6b4f237f96cd02e280867368111cd0ea27 100644
--- a/docs/library/simple/send_email_on_user_registration_with_field_values.md
+++ b/docs/library/simple/send_email_on_user_registration_with_field_values.md
@@ -17,6 +17,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0025.xml';archive='bpmn_io-eca_lib_0025.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/send_email_on_user_registration_with_field_values
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/send_email_on_user_registration_with_field_values
+```
+
 ## Purpose
 
 This model sends an email to a user that has just registered on the site. That email contains field values, that the user just provided in the registration form, where one of the fields is mandatory and the other one is optional. The email message is different, depending upon the optional field being filled or not.
@@ -43,7 +50,6 @@ The creation of this model was recorded and [can be watched here](https://tube.t
 
 ### Conditions
 
-- [Entity: field value is empty](/plugins/eca/content/conditions/eca_entity_field_value_empty.md)
 - [Entity: field value is empty](/plugins/eca/content/conditions/eca_entity_field_value_empty.md)
 
 ### Actions
diff --git a/docs/library/simple/send_email_on_user_registration_with_field_values/bpmn_io-eca_lib_0025.tar.gz b/docs/library/simple/send_email_on_user_registration_with_field_values/bpmn_io-eca_lib_0025.tar.gz
index d36466bc8381221dbc09777e7481dc1ee5857c8b..ce2610afd86d4df44dcb4d9d532b5bc31123e3ee 100644
--- a/docs/library/simple/send_email_on_user_registration_with_field_values/bpmn_io-eca_lib_0025.tar.gz
+++ b/docs/library/simple/send_email_on_user_registration_with_field_values/bpmn_io-eca_lib_0025.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:14719aac8b65af0185b7af61727fb8fac412dbe33aded82de3470f04f3769188
-size 3030
+oid sha256:a4ea386056a838b1929d80aa642d06c110b32b901bec238e7b7b2fad8cbacdcd
+size 2834
diff --git a/docs/library/simple/send_email_to_users_of_a_given_role.md b/docs/library/simple/send_email_to_users_of_a_given_role.md
index a8a5a874e2f655b16144bded323df8cf55a7e100..04acd452a29edcb1db7fd861dd2ee2362c36e291 100644
--- a/docs/library/simple/send_email_to_users_of_a_given_role.md
+++ b/docs/library/simple/send_email_to_users_of_a_given_role.md
@@ -18,6 +18,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0024.xml';archive='bpmn_io-eca_lib_0024.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/send_email_to_users_of_a_given_role
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/send_email_to_users_of_a_given_role
+```
+
 ## Purpose
 
 This model sends an email to all users of a certain role. It contains a view with a contextual filter to limit the list of users to those of the given role.
diff --git a/docs/library/simple/send_email_to_users_of_a_given_role/bpmn_io-eca_lib_0024.tar.gz b/docs/library/simple/send_email_to_users_of_a_given_role/bpmn_io-eca_lib_0024.tar.gz
index 415ae443639d981b7ff9aceb0fed226bc2398704..dac68cf78a4e8338254b1584848ffaf3760eefcc 100644
--- a/docs/library/simple/send_email_to_users_of_a_given_role/bpmn_io-eca_lib_0024.tar.gz
+++ b/docs/library/simple/send_email_to_users_of_a_given_role/bpmn_io-eca_lib_0024.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c9678933592a9d85f36c88c1925330c4e4b6b1c7614eaca59ce7e340aee2a2a9
-size 5519
+oid sha256:ed768c437c0d21555fcb22ebc573bd0877ba4ece2688dd5f680a188ffb66d1d8
+size 5360
diff --git a/docs/library/simple/send_notification_including_revision_log_message_for_node_changes.md b/docs/library/simple/send_notification_including_revision_log_message_for_node_changes.md
index eb0ddf0a4ad8d5b43849f8c399ab0e2586856121..56e5c4eed5e5a8284140a50d81f47ca8c9a9465a 100644
--- a/docs/library/simple/send_notification_including_revision_log_message_for_node_changes.md
+++ b/docs/library/simple/send_notification_including_revision_log_message_for_node_changes.md
@@ -18,6 +18,13 @@ Version v2
 <script>url='bpmn_io-eca_lib_0017.xml';archive='bpmn_io-eca_lib_0017.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/send_notification_including_revision_log_message_for_node_changes
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/send_notification_including_revision_log_message_for_node_changes
+```
+
 ## Purpose
 
 This model sends an email when any node got updated. That email contains a couple of tokens, e.g. the name of the user who edited the node and the link to the node. It also contains the the revision log message that the user has left in the edit form.
@@ -50,12 +57,6 @@ The creation of this model&#039;s enhancement has also been recorded: [Watch the
 
 ### Conditions
 
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
 - [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
 
 ### Actions
diff --git a/docs/library/simple/send_notification_including_revision_log_message_for_node_changes/bpmn_io-eca_lib_0017.tar.gz b/docs/library/simple/send_notification_including_revision_log_message_for_node_changes/bpmn_io-eca_lib_0017.tar.gz
index 47358917a28f8171e1f25bf0f7a7a3aebaac682f..526c65a29fa2d4aa783e06268d1d1f15635404be 100644
--- a/docs/library/simple/send_notification_including_revision_log_message_for_node_changes/bpmn_io-eca_lib_0017.tar.gz
+++ b/docs/library/simple/send_notification_including_revision_log_message_for_node_changes/bpmn_io-eca_lib_0017.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:7cdafa4c69889d005098641baa7e1230c2767636f5c309f47a8ad7ba96d0ea45
-size 4741
+oid sha256:7cce4c8b9dadc3fad50673e7d61a48d40b50808b8873cd7466b0bed2a6f67fe7
+size 4640
diff --git a/docs/library/simple/switch_case_default.md b/docs/library/simple/switch_case_default.md
index 56dcf376b8e82932b3cd695bf978c9acb6718b80..3e966d57ec0dc7fa842b9dae9480f021e5e33d04 100644
--- a/docs/library/simple/switch_case_default.md
+++ b/docs/library/simple/switch_case_default.md
@@ -17,6 +17,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0004.xml';archive='bpmn_io-eca_lib_0004.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/switch_case_default
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/switch_case_default
+```
+
 ## Purpose
 
 Demonstrate how typical switch-case PHP constructors could be simulated in ECA models - similar to if-elsif-else statements.
diff --git a/docs/library/simple/switch_case_default/bpmn_io-eca_lib_0004.tar.gz b/docs/library/simple/switch_case_default/bpmn_io-eca_lib_0004.tar.gz
index 6f90205025cddfdf838c0860e4981a525e801834..030b11f77a909cd39a00ae71b5f8d2a59af7721a 100644
--- a/docs/library/simple/switch_case_default/bpmn_io-eca_lib_0004.tar.gz
+++ b/docs/library/simple/switch_case_default/bpmn_io-eca_lib_0004.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:e80d4b0de826e40db6f240c15f27f241639fd25fe61e0248856542c6d3484a9f
-size 2842
+oid sha256:a1ce397fd1202596cb4b3699c722eb2fda60eea68cf023ec655762a5fc80b7d2
+size 2666
diff --git a/docs/library/simple/update_user_entity_when_they_save_an_article_node.md b/docs/library/simple/update_user_entity_when_they_save_an_article_node.md
index 63f3f9a08ae696ca9bc2e04134cada52a355b3c9..62a8bde83970ad44cd58c92b3baf6b9d8c24c0bf 100644
--- a/docs/library/simple/update_user_entity_when_they_save_an_article_node.md
+++ b/docs/library/simple/update_user_entity_when_they_save_an_article_node.md
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0027.xml';archive='bpmn_io-eca_lib_0027.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/update_user_entity_when_they_save_an_article_node
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/update_user_entity_when_they_save_an_article_node
+```
+
 ## Purpose
 
 This model appends a comment to the author of a node when they create a new one or update an existing one.
diff --git a/docs/library/simple/update_user_entity_when_they_save_an_article_node/bpmn_io-eca_lib_0027.tar.gz b/docs/library/simple/update_user_entity_when_they_save_an_article_node/bpmn_io-eca_lib_0027.tar.gz
index 7c3523cd24e8ee22b09800423e25368de9786dd0..32c7dc657edc6dc2ed8eed5075a0a505b6c42cc5 100644
--- a/docs/library/simple/update_user_entity_when_they_save_an_article_node/bpmn_io-eca_lib_0027.tar.gz
+++ b/docs/library/simple/update_user_entity_when_they_save_an_article_node/bpmn_io-eca_lib_0027.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f1700a940a1904a39ab33bbab864d6c9baffb2727609996b14bae30b65babe64
-size 2580
+oid sha256:7058f87c57e38a8ed0246201d90e3ba5becd0dac80413b3ed9e20a529097c1ad
+size 2452
diff --git a/docs/library/simple/working_with_dates_and_time.md b/docs/library/simple/working_with_dates_and_time.md
index 9599e513ae77cfdeae14c26008a052596484f2de..b36a3726f6f5c0106a1ea0b98e1f0a9d1c5d3eaa 100644
--- a/docs/library/simple/working_with_dates_and_time.md
+++ b/docs/library/simple/working_with_dates_and_time.md
@@ -16,6 +16,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0031.xml';archive='bpmn_io-eca_lib_0031.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/working_with_dates_and_time
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/working_with_dates_and_time
+```
+
 ## Purpose
 
 This model works with a date and time value from a node field and does various things to it: outputting in different formats, adding some time range, changing timezone, etc.
diff --git a/docs/library/simple/working_with_dates_and_time/bpmn_io-eca_lib_0031.tar.gz b/docs/library/simple/working_with_dates_and_time/bpmn_io-eca_lib_0031.tar.gz
index 74c3318df9e7cfc2f3ff96fc3fe31b96e69f763a..76f413f26385a3fe7c9c719374ef49914c4264a8 100644
--- a/docs/library/simple/working_with_dates_and_time/bpmn_io-eca_lib_0031.tar.gz
+++ b/docs/library/simple/working_with_dates_and_time/bpmn_io-eca_lib_0031.tar.gz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:00fe58fcba229a1fc6cd39a151e04cfedaeecb0a388377f19d6b2c10c1fd8179
-size 4365
+oid sha256:bfaff905a2073b5a880628488e167ed446d3b9845a879760751ce15fee5e53c7
+size 4147
diff --git a/docs/library/test models/basic_entity_tests/bpmn_io-eca_test_0004.tar.gz b/docs/library/test models/basic_entity_tests/bpmn_io-eca_test_0004.tar.gz
index 9c48a48c4affd8228084e37d196e24d899a10cb0..259fa431a88b663dc561e7f4f1dc8cef298a0ce4 100644
--- a/docs/library/test models/basic_entity_tests/bpmn_io-eca_test_0004.tar.gz	
+++ b/docs/library/test models/basic_entity_tests/bpmn_io-eca_test_0004.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:edf63371a97fa98d64cd56d95733eeab3b3fc497b4ee9841829e55368656b9b0
-size 2871
+oid sha256:0f5cc2a74c36544ffee73b756d7579b985bf374db58dcf4cc66caa5766eb34b2
+size 2701
diff --git a/docs/library/test models/cross_references.md b/docs/library/test models/cross_references.md
index 18fd8f05b0cc5bd10f3920a0e2624cb5a8cb0c4f..ce2e1f74b54d4338264a8b4bf967f0b3ae53d791 100644
--- a/docs/library/test models/cross_references.md	
+++ b/docs/library/test models/cross_references.md	
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_test_0001.xml';archive='bpmn_io-eca_test_0001.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/cross_references
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/cross_references
+```
+
 ## Purpose
 
 Two different node types are referring each other. If one node gets saved with a reference to another node, the other node gets automatically updated to link back to the first node.
@@ -41,12 +48,9 @@ Two different node types are referring each other. If one node gets saved with a
 
 ### Conditions
 
-- [Entity type and bundle](/plugins/eca/content/conditions/eca_entity_type_bundle.md)
 - [Entity type and bundle](/plugins/eca/content/conditions/eca_entity_type_bundle.md)
 - [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
 - [Entity: field value is empty](/plugins/eca/content/conditions/eca_entity_field_value_empty.md)
-- [Entity: field value is empty](/plugins/eca/content/conditions/eca_entity_field_value_empty.md)
-- [Entity: field value is empty](/plugins/eca/content/conditions/eca_entity_field_value_empty.md)
 
 ### Actions
 
@@ -55,11 +59,7 @@ Two different node types are referring each other. If one node gets saved with a
 - [Set Cross Ref](/plugins/eca/content/actions/eca_set_field_value.md)
 - [void](/plugins/eca/base/actions/eca_void_and_condition.md)
 - [Msg](/plugins/core/actions/action_message_action.md)
-- [Msg](/plugins/core/actions/action_message_action.md)
-- [Load referenced node](/plugins/eca/content/actions/eca_token_load_entity_ref.md)
-- [void](/plugins/eca/base/actions/eca_void_and_condition.md)
 - [Empty Cross Ref](/plugins/eca/content/actions/eca_set_field_value.md)
-- [Msg](/plugins/core/actions/action_message_action.md)
 
 ## Changelog
 
diff --git a/docs/library/test models/cross_references/bpmn_io-eca_test_0001.tar.gz b/docs/library/test models/cross_references/bpmn_io-eca_test_0001.tar.gz
index 736691afb13aaf68269893ae2b615cbdf56f0ea4..18a378f34ade81e448c715129bf9d02eb0f4518b 100644
--- a/docs/library/test models/cross_references/bpmn_io-eca_test_0001.tar.gz	
+++ b/docs/library/test models/cross_references/bpmn_io-eca_test_0001.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:688851213ed15f90a06a7c305277f2d551f0f605c2eced0defa019256af7b2a5
-size 4744
+oid sha256:4b4f548bd7a378299ef4d29e706b3a1ce901c2e32b84df80517c77ceea6ef2cf
+size 4203
diff --git a/docs/library/test models/entity_events_part_1/bpmn_io-eca_test_0002.tar.gz b/docs/library/test models/entity_events_part_1/bpmn_io-eca_test_0002.tar.gz
index 2a604ff2c385037383d7fba06d0420a9e0f67c59..63e3b51bb326e2353d17ef2dbe4813c22bb2a2b0 100644
--- a/docs/library/test models/entity_events_part_1/bpmn_io-eca_test_0002.tar.gz	
+++ b/docs/library/test models/entity_events_part_1/bpmn_io-eca_test_0002.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:e7e7413dd83811297df033f7924c7814d452d6992be058fced347d72c87afb6d
-size 2821
+oid sha256:8f65f16a1416c32b638a64029266ff0438a1033c5ada36d08967ae3c0868088a
+size 2658
diff --git a/docs/library/test models/entity_events_part_2/bpmn_io-eca_test_0003.tar.gz b/docs/library/test models/entity_events_part_2/bpmn_io-eca_test_0003.tar.gz
index c13606160a9e13395292e24dc224800260cd3a4b..9f5bdad07cf5860f3360aad405735a682380b43d 100644
--- a/docs/library/test models/entity_events_part_2/bpmn_io-eca_test_0003.tar.gz	
+++ b/docs/library/test models/entity_events_part_2/bpmn_io-eca_test_0003.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:8906df35d1fb62a2cda07b50b46e4fba162e5249b27882d2dd2bb649f413b15d
-size 1791
+oid sha256:870ee4475d64ef6ed4d78ef534f9dcb53041aecc593574acc7694c4c3caa3356
+size 1624
diff --git a/docs/library/test models/forward_tokens_to_custom_event.md b/docs/library/test models/forward_tokens_to_custom_event.md
index a4def065367dac8fe436a7aac4d2abb2bf7a0394..a2c7810c456483660b95494febed3655b2989395 100644
--- a/docs/library/test models/forward_tokens_to_custom_event.md	
+++ b/docs/library/test models/forward_tokens_to_custom_event.md	
@@ -15,9 +15,16 @@ Version v1
 <script>url='bpmn_io-eca_test_0010.xml';archive='bpmn_io-eca_test_0010.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/forward_tokens_to_custom_event
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/forward_tokens_to_custom_event
+```
+
 ## Purpose
 
-Demonstrates how tokens can be forwarded to triggered custom events.
+Demonstrates how okens can be forwarded to triggered custom events.
 
 ## Dependencies
 
@@ -40,7 +47,6 @@ Demonstrates how tokens can be forwarded to triggered custom events.
 - [Trigger custom event without tokens](/plugins/eca/base/actions/eca_trigger_custom_event.md)
 - [Trigger custom event with tokens](/plugins/eca/base/actions/eca_trigger_custom_event.md)
 - [Msg](/plugins/core/actions/action_message_action.md)
-- [Msg](/plugins/core/actions/action_message_action.md)
 
 ## Changelog
 
diff --git a/docs/library/test models/forward_tokens_to_custom_event/bpmn_io-eca_test_0010.tar.gz b/docs/library/test models/forward_tokens_to_custom_event/bpmn_io-eca_test_0010.tar.gz
index 657a74ab383a924e465393a67f9f11d4fb352551..53c5d6621b70fda59f3fca86a75c2524ee2c9c9e 100644
--- a/docs/library/test models/forward_tokens_to_custom_event/bpmn_io-eca_test_0010.tar.gz	
+++ b/docs/library/test models/forward_tokens_to_custom_event/bpmn_io-eca_test_0010.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:b9eb31b8c61d7c8c2a07a2f95c371c4f42720bc094fd14cb138d9841e198edea
-size 2366
+oid sha256:0305d1e612957f9f432d2162533c811dcb9b281757dd623a1266f2f6f2d619c6
+size 2190
diff --git a/docs/library/test models/redirects_for_deleted_entities.md b/docs/library/test models/redirects_for_deleted_entities.md
index 4b2f9a78232e0c73dfb014fed0fe31513e1b1936..c6c3efa70042afd810f53c04c08af5cb37d25d97 100644
--- a/docs/library/test models/redirects_for_deleted_entities.md	
+++ b/docs/library/test models/redirects_for_deleted_entities.md	
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_test_0007.xml';archive='bpmn_io-eca_test_0007.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/redirects_for_deleted_entities
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/redirects_for_deleted_entities
+```
+
 ## Purpose
 
 When a node gets deleted, this model creates an automatic redirect config entity to redirect visitors who want to go to the deleted node to the contact form instead.
diff --git a/docs/library/test models/redirects_for_deleted_entities/bpmn_io-eca_test_0007.tar.gz b/docs/library/test models/redirects_for_deleted_entities/bpmn_io-eca_test_0007.tar.gz
index b33bcabb173261b0d169793fc899cc0872b91f6c..98173d174eab877a48d2658c3a8c014b364abeac 100644
--- a/docs/library/test models/redirects_for_deleted_entities/bpmn_io-eca_test_0007.tar.gz	
+++ b/docs/library/test models/redirects_for_deleted_entities/bpmn_io-eca_test_0007.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:045d5c69fd819a608b67ac03bbe9f9fec14e06f4781d85f066ec898f8dcacd62
-size 2420
+oid sha256:c9e20e347c28e899807afc861999d7848f487f70e255eb3e9a8251fe477fd42a
+size 2254
diff --git a/docs/library/test models/save_new_entity.md b/docs/library/test models/save_new_entity.md
index 4500b781a503c18109d9e4e74f2ed9c298a040ef..7b6c69f576b7e0d0e9026f305ada623491851dc1 100644
--- a/docs/library/test models/save_new_entity.md	
+++ b/docs/library/test models/save_new_entity.md	
@@ -14,6 +14,13 @@ Version v1
 <script>url='bpmn_io-eca_test_0008.xml';archive='bpmn_io-eca_test_0008.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/save_new_entity
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/save_new_entity
+```
+
 ## Purpose
 
 Create new tag with the same label as the triggering node.
diff --git a/docs/library/test models/save_new_entity/bpmn_io-eca_test_0008.tar.gz b/docs/library/test models/save_new_entity/bpmn_io-eca_test_0008.tar.gz
index 833e94ea880ceb32faa1f103ee184febf5b04c09..7f33ed0aa2907ea1eac4aad5e4c9961d383bbc2f 100644
--- a/docs/library/test models/save_new_entity/bpmn_io-eca_test_0008.tar.gz	
+++ b/docs/library/test models/save_new_entity/bpmn_io-eca_test_0008.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:683b80abd2dae62034e11361502b4f8bdd22ea79f0ff9f6b3e05cc556e8d40f4
-size 2105
+oid sha256:68d3f0f93c6345419209d137991b3b959775caec52e5910417edbd546d0db2d1
+size 1936
diff --git a/docs/library/test models/set_field_values.md b/docs/library/test models/set_field_values.md
index c870839a4ccd9b24e7e66936388ec11af10346d4..32295a0957e0894aceab9cb553e0aa821c107b6b 100644
--- a/docs/library/test models/set_field_values.md	
+++ b/docs/library/test models/set_field_values.md	
@@ -14,6 +14,13 @@ Version v1
 <script>url='bpmn_io-eca_test_0009.xml';archive='bpmn_io-eca_test_0009.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/set_field_values
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/set_field_values
+```
+
 ## Purpose
 
 Set single and multi value fields with values, testing different variations.
@@ -40,7 +47,6 @@ Set single and multi value fields with values, testing different variations.
 
 - [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
 - [Entity: is new](/plugins/eca/content/conditions/eca_entity_is_new.md)
-- [Entity: compare field value](/plugins/eca/content/conditions/eca_entity_field_value.md)
 
 ### Actions
 
@@ -49,8 +55,6 @@ Set single and multi value fields with values, testing different variations.
 - [Overwrite text line](/plugins/eca/content/actions/eca_set_field_value.md)
 - [Append line](/plugins/eca/content/actions/eca_set_field_value.md)
 - [Append another line](/plugins/eca/content/actions/eca_set_field_value.md)
-- [Append another line](/plugins/eca/content/actions/eca_set_field_value.md)
-- [Append line](/plugins/eca/content/actions/eca_set_field_value.md)
 - [Reset lines](/plugins/eca/content/actions/eca_set_field_value.md)
 - [Prepend line](/plugins/eca/content/actions/eca_set_field_value.md)
 
diff --git a/docs/library/test models/set_field_values/bpmn_io-eca_test_0009.tar.gz b/docs/library/test models/set_field_values/bpmn_io-eca_test_0009.tar.gz
index cf1f8c72d487363223cb36e85b229a6b0b033962..7caaf878e76e77a5ac985dd3a6ebec234b42f1e8 100644
--- a/docs/library/test models/set_field_values/bpmn_io-eca_test_0009.tar.gz	
+++ b/docs/library/test models/set_field_values/bpmn_io-eca_test_0009.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:0617a1f4ec27c5992c2fdd6853ac56be8100ca1b3d2ca6c32164e981d02f98d9
-size 4463
+oid sha256:025dcd394a45d9ee38c8e09bd5d5b6b79913a77b71db4c94f8492e0c637aaf50
+size 3928
diff --git a/docs/library/test models/views.md b/docs/library/test models/views.md
index 5a0c4eb1f9e9fd4235da4e854ff7518438d23a42..80a6c9f4f38d54bce4b0c15364bbf249ac39ae63 100644
--- a/docs/library/test models/views.md	
+++ b/docs/library/test models/views.md	
@@ -18,6 +18,13 @@ Version v1
 <script>url='bpmn_io-eca_test_0005.xml';archive='bpmn_io-eca_test_0005.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/views
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/views
+```
+
 ## Purpose
 
 During cron, this model switches the user context, queries a view to receive all user accounts and loops over all those users triggering a custom event for each of them to print their names in messages.
diff --git a/docs/library/test models/views/bpmn_io-eca_test_0005.tar.gz b/docs/library/test models/views/bpmn_io-eca_test_0005.tar.gz
index 0ea1cbd56f1a25e3a0c9a8c581b8bc8963659b63..e9d27122890cfba5d03ce376fbf52bc9065a55f9 100644
--- a/docs/library/test models/views/bpmn_io-eca_test_0005.tar.gz	
+++ b/docs/library/test models/views/bpmn_io-eca_test_0005.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:fe3fb3be51815b8030b1533091936bc8b9785f50de1b18b3576ada0627108bc1
-size 5409
+oid sha256:36f93ded72611898569daa6cbae39a26ab1fae201d873aa10854e9a69875b0d7
+size 5156
diff --git a/docs/library/test models/write_log_message.md b/docs/library/test models/write_log_message.md
index f126b1b5eb0d28bced37d3bdd0aa177470c23d99..9869bf53a3a20a77672d6e0855e76cd42aa48138 100644
--- a/docs/library/test models/write_log_message.md	
+++ b/docs/library/test models/write_log_message.md	
@@ -14,6 +14,13 @@ Version v1
 <script>url='bpmn_io-eca_test_0006.xml';archive='bpmn_io-eca_test_0006.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/write_log_message
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/write_log_message
+```
+
 ## Purpose
 
 Write log messages.
diff --git a/docs/library/test models/write_log_message/bpmn_io-eca_test_0006.tar.gz b/docs/library/test models/write_log_message/bpmn_io-eca_test_0006.tar.gz
index e6a7dcf38ec5e975b01f20e9e3c6fdedad52b386..4599dcd64b08411e7eec0ee304666da7ab94c791 100644
--- a/docs/library/test models/write_log_message/bpmn_io-eca_test_0006.tar.gz	
+++ b/docs/library/test models/write_log_message/bpmn_io-eca_test_0006.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:6d03aaf2379ff56b2f731f2e0486b8ea30d47bed159e7f96ffadb18d7606544c
-size 1636
+oid sha256:b758734ba410937836b5dad8b3138d52e5d0a5263ec04ebb19759c27b2c4fd9d
+size 1473
diff --git a/docs/library/use case/eca_feature_demo/bpmn_io-eca_lib_0007.tar.gz b/docs/library/use case/eca_feature_demo/bpmn_io-eca_lib_0007.tar.gz
index 5f235bd9fe839fbb5e19397cb214d08b7757bc8e..0b0e334a23c5dcf3ee537882569a47508a8600c3 100644
--- a/docs/library/use case/eca_feature_demo/bpmn_io-eca_lib_0007.tar.gz	
+++ b/docs/library/use case/eca_feature_demo/bpmn_io-eca_lib_0007.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:73f07b09edf0a382eb78fc040e96c7a4448cd890fb70d54f0bd2f92064a986fe
-size 8667
+oid sha256:252728f6368a67bc994942207b877b697ea73345b26315bf3c2702bafe403432
+size 8472
diff --git a/docs/library/use case/multi_value_field_loop.md b/docs/library/use case/multi_value_field_loop.md
index 81d6e44035d8f15375e289f531699ff249f8888b..df9b41c60030ed99e30be0491db952ebc52ca302 100644
--- a/docs/library/use case/multi_value_field_loop.md	
+++ b/docs/library/use case/multi_value_field_loop.md	
@@ -15,6 +15,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0006.xml';archive='bpmn_io-eca_lib_0006.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/multi_value_field_loop
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/multi_value_field_loop
+```
+
 ## Purpose
 
 This model demonstrates how to loop over all values of a multi value field without using custom events.
diff --git a/docs/library/use case/multi_value_field_loop/bpmn_io-eca_lib_0006.tar.gz b/docs/library/use case/multi_value_field_loop/bpmn_io-eca_lib_0006.tar.gz
index b707c1ae45abdcdef32b79d544693ee7d50cf92a..d1b2a37f5ca97b63db1fc866ab6120c324afb527 100644
--- a/docs/library/use case/multi_value_field_loop/bpmn_io-eca_lib_0006.tar.gz	
+++ b/docs/library/use case/multi_value_field_loop/bpmn_io-eca_lib_0006.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f82f566494449ed9a7a76243a2740a11f70abb35c1c87dd0b7b2d8592cded91b
-size 3143
+oid sha256:b17c4e6026b53d2960e3942a0e129e73013ffb38d199e9cca5435a38441df88a
+size 3001
diff --git a/docs/library/use case/redirect_403_to_login_page.md b/docs/library/use case/redirect_403_to_login_page.md
index 622c5614f624fd68aaad785932ebae39b305601f..372c88b1d73afec73f408828e62c79c6ce8ed990 100644
--- a/docs/library/use case/redirect_403_to_login_page.md	
+++ b/docs/library/use case/redirect_403_to_login_page.md	
@@ -15,9 +15,16 @@ Version v1
 <script>url='bpmn_io-eca_lib_0008.xml';archive='bpmn_io-eca_lib_0008.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/redirect_403_to_login_page
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/redirect_403_to_login_page
+```
+
 ## Purpose
 
-This module redirects page requests, that would normally respond with a &quot;403 Access denied&quot; page, to the login form. Very much like the module &quot;Redirect 403 To Login Page&quot; which can be replaced with this model.
+This module redirects page requests, that would normaly respond with a &quot;403 Access denied&quot; page, to the login form. Very much like the module &quot;Redirect 403 To Login Page&quot; which can be replaced with this model.
 
 Note: this model requires ECA 1.2, or you need to apply the patch from https://www.drupal.org/project/eca/issues/3332859 if you want to use it on ECA 1.1
 
diff --git a/docs/library/use case/redirect_403_to_login_page/bpmn_io-eca_lib_0008.tar.gz b/docs/library/use case/redirect_403_to_login_page/bpmn_io-eca_lib_0008.tar.gz
index fa2ef097714537905eb1e4f41adce927ffcb1973..efe5ca9ed9cc1d5c41bd2e622bd29ddc9e6ce9f7 100644
--- a/docs/library/use case/redirect_403_to_login_page/bpmn_io-eca_lib_0008.tar.gz	
+++ b/docs/library/use case/redirect_403_to_login_page/bpmn_io-eca_lib_0008.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:3dbff526d7725bfdfdbcd0836a2415735cf71252b5b4b799073955531a048040
-size 2089
+oid sha256:8e0eb4d0d206ffbc1e499c8d737e7e6df91179734ee3ac2c84d7aa59deace07d
+size 2029
diff --git a/docs/library/use case/redirect_unpublished.md b/docs/library/use case/redirect_unpublished.md
index 409844242a03f8e9f1cc2348b3b1bd04e65ff475..1ac89a1b0f85b25836d112a001b371a20394a978 100644
--- a/docs/library/use case/redirect_unpublished.md	
+++ b/docs/library/use case/redirect_unpublished.md	
@@ -14,6 +14,13 @@ Version v1
 <script>url='bpmn_io-eca_lib_0003.xml';archive='bpmn_io-eca_lib_0003.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/redirect_unpublished
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/redirect_unpublished
+```
+
 ## Purpose
 
 If a user requests an unpublished article node, but doesn&#039;t have the permission to view unpublished nodes, then the request gets redirected to the contact form.
diff --git a/docs/library/use case/redirect_unpublished/bpmn_io-eca_lib_0003.tar.gz b/docs/library/use case/redirect_unpublished/bpmn_io-eca_lib_0003.tar.gz
index 36c7ebed74740eb4785c5255845f1ae4305480e1..ff615dcde6799a1b0efc9e742380b109fb948ba6 100644
--- a/docs/library/use case/redirect_unpublished/bpmn_io-eca_lib_0003.tar.gz	
+++ b/docs/library/use case/redirect_unpublished/bpmn_io-eca_lib_0003.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:4c00c82103207b2667d997c0647d63772119cc4a2b5618a01f43eff868396bc3
-size 2500
+oid sha256:ca01fc66432df6d169441114a3acb487a836b5faae57654e326c246be6e9f02a
+size 2436
diff --git a/docs/library/use case/user_network_changes.md b/docs/library/use case/user_network_changes.md
index 915c932afc24e4920cbfddfc18198f07ec477e6b..1c7b5e42672c026f3bec7b23ef440fd3305afa85 100644
--- a/docs/library/use case/user_network_changes.md	
+++ b/docs/library/use case/user_network_changes.md	
@@ -15,11 +15,18 @@ Version v1
 <script>url='bpmn_io-eca_lib_0005.xml';archive='bpmn_io-eca_lib_0005.tar.gz'</script>
 {!include/library/viewer.html!}
 
+Instead of downloading the archive, you can download and apply this model as a recipe (Drupal 10.3 or later):
+
+```shell
+composer require drupal-eca-recipe/user_network_changes
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/user_network_changes
+```
+
 ## Purpose
 
 Users have references to a number of networks and when one gets added or deleted, this model recognizes the exact change and displays different messages about it.
 
-For further reading, please [go to this tutorial](/resources/tutorials/btown-1.md).
+For further reading, please [go to this tutorial](/resources/tutorials/btown-1/).
 
 ## Dependencies
 
@@ -44,11 +51,6 @@ For further reading, please [go to this tutorial](/resources/tutorials/btown-1.m
 
 ### Conditions
 
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
-- [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 - [Compare two scalar values](/plugins/eca/base/conditions/eca_scalar.md)
 
 ### Actions
@@ -64,7 +66,6 @@ For further reading, please [go to this tutorial](/resources/tutorials/btown-1.m
 new item](/plugins/core/actions/action_message_action.md)
 - [Message:
 item exists](/plugins/core/actions/action_message_action.md)
-- [Load item provided by custom event](/plugins/eca/content/actions/eca_token_load_entity.md)
 - [Message:
 deleted item](/plugins/core/actions/action_message_action.md)
 - [Message:
diff --git a/docs/library/use case/user_network_changes/bpmn_io-eca_lib_0005.tar.gz b/docs/library/use case/user_network_changes/bpmn_io-eca_lib_0005.tar.gz
index 60e86f41c22808a9c2957d000c9cec294f495032..d6344bb95974bcfbc6d045ebbbd6c09b813d453d 100644
--- a/docs/library/use case/user_network_changes/bpmn_io-eca_lib_0005.tar.gz	
+++ b/docs/library/use case/user_network_changes/bpmn_io-eca_lib_0005.tar.gz	
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:fb0706900eac96bfa1d04b36e0990bc6990ad407ac4f83c9e5edb48868b5c6f6
-size 4962
+oid sha256:42c83daa3a9abfefece72dac6c6d2cd3a584dcda5af53b6a3ededb87e22110a6
+size 4815
diff --git a/toc/library.yml b/toc/library.yml
index 0ee50796729a3bc7af069dd1296514b07abce2bf..cd2002af3409f36c51df722acc2bac5cd75c0c45 100644
--- a/toc/library.yml
+++ b/toc/library.yml
@@ -12,9 +12,9 @@ simple:
   'Create user entity from JSON': library/simple/create_user_entity_from_json.md
   'Detect user role changes': library/simple/detect_user_role_changes.md
   'Display message to specific user roles only': library/simple/display_message_to_specific_user_roles_only.md
+  'ECA and Views': library/simple/eca_and_views.md
   'ECA and http services': library/simple/eca_and_http_services.md
   'ECA and http services - part 2': library/simple/eca_and_http_services_-_part_2.md
-  'ECA and Views': library/simple/eca_and_views.md
   'ECA working with VBO': library/simple/eca_working_with_vbo.md
   'Find values in lists': library/simple/find_values_in_lists.md
   'Get next incremental ID': library/simple/get_next_incremental_id.md