diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..811277b8703b3c438e90238219711bac26ad03b6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# ECA Recipe: ECA and http services - part 2
+
+ID: eca_lib_0033
+
+This model is a follow up version of [ECA and http services](https://ecaguide.org/library/simple/eca_and_http_services) and uses a self-defined services API for the HTTP Client Manager.
+
+This module requires the services API defined in a [Custom Module](https://ecaguide.org/library/simple/eca_and_http_services_-_part_2/eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
+
+The creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/vUXqDxeKtqppRUB2MDWiJq).
+
+## Installation
+
+```shell
+composer require drupal-eca-recipe/eca_lib_0033
+cd web && php core/scripts/drupal recipe ../vendor/drupal-eca-recipe/eca_lib_0033
+```
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 1877ff1eec911e880f1e188f252d45516cae7954..bf958b136c5ca16d1492993b79c153dae260ad89 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
 {
     "name": "drupal-eca-recipe/eca_lib_0033",
     "type": "drupal-recipe",
-    "description": "This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services) and uses a self-defined services API for the HTTP Client Manager.\n\nThis module requires the services API defined in a [Custom Module](eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.\n\nThe creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/vUXqDxeKtqppRUB2MDWiJq).",
+    "description": "This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services.md) and uses a self-defined services API for the HTTP Client Manager.\n\nThis module requires the services API defined in a [Custom Module](/library/simple/eca_and_http_services_-_part_2/eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.\n\nThe creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/vUXqDxeKtqppRUB2MDWiJq).",
     "license": "GPL-2.0-or-later",
     "require": {
         "drupal/eca_access": "*",
diff --git a/config/eca.eca.eca_lib_0033.yml b/config/eca.eca.eca_lib_0033.yml
index cf14a990f7227f4f795cd578ac8a8d9abc20dd4d..3625677570724c161f76e3db87a5616b586baafc 100644
--- a/config/eca.eca.eca_lib_0033.yml
+++ b/config/eca.eca.eca_lib_0033.yml
@@ -10,7 +10,7 @@ id: eca_lib_0033
 modeller: bpmn_io
 label: 'ECA and http services - part 2'
 version: v1
-weight: null
+weight: 0
 events:
   Event_01amlwo:
     plugin: 'eca_endpoint:access'
diff --git a/config/eca.model.eca_lib_0033.yml b/config/eca.model.eca_lib_0033.yml
index 89a2b362203712b41d606107e6383f588f70aa4c..f852b774c1ba031621673e6d66838480f0c4fbce 100644
--- a/config/eca.model.eca_lib_0033.yml
+++ b/config/eca.model.eca_lib_0033.yml
@@ -12,9 +12,9 @@ tags:
   - API
   - access
 documentation: |-
-  This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services) and uses a self-defined services API for the HTTP Client Manager.
+  This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services.md) and uses a self-defined services API for the HTTP Client Manager.
 
-  This module requires the services API defined in a [Custom Module](eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
+  This module requires the services API defined in a [Custom Module](/library/simple/eca_and_http_services_-_part_2/eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
 
   The creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/vUXqDxeKtqppRUB2MDWiJq).
 filename: ''
@@ -22,21 +22,21 @@ modeldata: |
   <?xml version="1.0" encoding="UTF-8"?>
   <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:qa="http://some-company/schema/bpmn/qa" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
     <bpmn2:process id="eca_lib_0033" name="ECA and http services - part 2" isExecutable="true" camunda:versionTag="v1">
-      <bpmn2:documentation>This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services) and uses a self-defined services API for the HTTP Client Manager.
+      <bpmn2:documentation>This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services.md) and uses a self-defined services API for the HTTP Client Manager.
 
-  This module requires the services API defined in a [Custom Module](eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
+  This module requires the services API defined in a [Custom Module](/library/simple/eca_and_http_services_-_part_2/eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
 
   The creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/vUXqDxeKtqppRUB2MDWiJq).</bpmn2:documentation>
       <bpmn2:extensionElements>
         <camunda:properties>
-          <camunda:property name="Changelog v1" value="Initial version" />
-          <camunda:property name="Tags" value="simple,http,endpoint,API,access" />
+          <camunda:property name="Changelog v1" value="Initial version"/>
+          <camunda:property name="Tags" value="simple,http,endpoint,API,access"/>
         </camunda:properties>
       </bpmn2:extensionElements>
       <bpmn2:startEvent id="Event_01amlwo" name="Define API access" camunda:modelerTemplate="org.drupal.event.eca_endpoint:access">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_endpoint:access" />
+            <camunda:property name="pluginid" value="eca_endpoint:access"/>
           </camunda:properties>
           <camunda:field name="first_path_argument">
             <camunda:string>tv</camunda:string>
@@ -50,7 +50,7 @@ modeldata: |
       <bpmn2:task id="Activity_0thqpdj" name="allow access" camunda:modelerTemplate="org.drupal.action.eca_access_set_result">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_access_set_result" />
+            <camunda:property name="pluginid" value="eca_access_set_result"/>
           </camunda:properties>
           <camunda:field name="access_result">
             <camunda:string>allowed</camunda:string>
@@ -58,11 +58,11 @@ modeldata: |
         </bpmn2:extensionElements>
         <bpmn2:incoming>Flow_1dju1ly</bpmn2:incoming>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_1dju1ly" sourceRef="Event_01amlwo" targetRef="Activity_0thqpdj" />
+      <bpmn2:sequenceFlow id="Flow_1dju1ly" sourceRef="Event_01amlwo" targetRef="Activity_0thqpdj"/>
       <bpmn2:startEvent id="Event_0jcklxm" name="Define API response" camunda:modelerTemplate="org.drupal.event.eca_endpoint:response">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_endpoint:response" />
+            <camunda:property name="pluginid" value="eca_endpoint:response"/>
           </camunda:properties>
           <camunda:field name="first_path_argument">
             <camunda:string>tv</camunda:string>
@@ -76,7 +76,7 @@ modeldata: |
       <bpmn2:task id="Activity_0bbm1sg" name="Set content" camunda:modelerTemplate="org.drupal.action.eca_endpoint_set_response_content">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_endpoint_set_response_content" />
+            <camunda:property name="pluginid" value="eca_endpoint_set_response_content"/>
           </camunda:properties>
           <camunda:field name="content">
             <camunda:string>[
@@ -93,11 +93,11 @@ modeldata: |
         <bpmn2:incoming>Flow_0rrgfix</bpmn2:incoming>
         <bpmn2:outgoing>Flow_1gjyny2</bpmn2:outgoing>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_0rrgfix" sourceRef="Event_0jcklxm" targetRef="Activity_0bbm1sg" />
+      <bpmn2:sequenceFlow id="Flow_0rrgfix" sourceRef="Event_0jcklxm" targetRef="Activity_0bbm1sg"/>
       <bpmn2:task id="Activity_1thrc57" name="Set response code" camunda:modelerTemplate="org.drupal.action.eca_endpoint_set_response_status_code">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_endpoint_set_response_status_code" />
+            <camunda:property name="pluginid" value="eca_endpoint_set_response_status_code"/>
           </camunda:properties>
           <camunda:field name="code">
             <camunda:string>201</camunda:string>
@@ -106,11 +106,11 @@ modeldata: |
         <bpmn2:incoming>Flow_1gjyny2</bpmn2:incoming>
         <bpmn2:outgoing>Flow_0k6xmlh</bpmn2:outgoing>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_1gjyny2" sourceRef="Activity_0bbm1sg" targetRef="Activity_1thrc57" />
+      <bpmn2:sequenceFlow id="Flow_1gjyny2" sourceRef="Activity_0bbm1sg" targetRef="Activity_1thrc57"/>
       <bpmn2:task id="Activity_0dfz4fw" name="Set json content type" camunda:modelerTemplate="org.drupal.action.eca_endpoint_set_response_content_type">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_endpoint_set_response_content_type" />
+            <camunda:property name="pluginid" value="eca_endpoint_set_response_content_type"/>
           </camunda:properties>
           <camunda:field name="content_type">
             <camunda:string>application/json; charset=UTF-8</camunda:string>
@@ -118,11 +118,11 @@ modeldata: |
         </bpmn2:extensionElements>
         <bpmn2:incoming>Flow_0k6xmlh</bpmn2:incoming>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_0k6xmlh" sourceRef="Activity_1thrc57" targetRef="Activity_0dfz4fw" />
+      <bpmn2:sequenceFlow id="Flow_0k6xmlh" sourceRef="Activity_1thrc57" targetRef="Activity_0dfz4fw"/>
       <bpmn2:startEvent id="Event_1uuuqn6" name="Custom: http01" camunda:modelerTemplate="org.drupal.event.eca_base:eca_custom">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_base:eca_custom" />
+            <camunda:property name="pluginid" value="eca_base:eca_custom"/>
           </camunda:properties>
           <camunda:field name="event_id">
             <camunda:string>http01</camunda:string>
@@ -136,17 +136,17 @@ modeldata: |
             <camunda:string>no</camunda:string>
           </camunda:field>
           <camunda:properties>
-            <camunda:property name="pluginid" value="http_client_manager_command:eca_tv_demo_services:Get Data" />
+            <camunda:property name="pluginid" value="http_client_manager_command:eca_tv_demo_services:Get Data"/>
           </camunda:properties>
         </bpmn2:extensionElements>
         <bpmn2:incoming>Flow_11ty0xz</bpmn2:incoming>
         <bpmn2:outgoing>Flow_17tlu1o</bpmn2:outgoing>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_11ty0xz" sourceRef="Event_1uuuqn6" targetRef="Activity_0tmesph" />
+      <bpmn2:sequenceFlow id="Flow_11ty0xz" sourceRef="Event_1uuuqn6" targetRef="Activity_0tmesph"/>
       <bpmn2:task id="Activity_0v7w08m" name="Read received data into a token" camunda:modelerTemplate="org.drupal.action.eca_privatetempstore_read">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="eca_privatetempstore_read" />
+            <camunda:property name="pluginid" value="eca_privatetempstore_read"/>
           </camunda:properties>
           <camunda:field name="collection">
             <camunda:string>http_client_manager</camunda:string>
@@ -161,11 +161,11 @@ modeldata: |
         <bpmn2:incoming>Flow_17tlu1o</bpmn2:incoming>
         <bpmn2:outgoing>Flow_0ijoscf</bpmn2:outgoing>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_17tlu1o" sourceRef="Activity_0tmesph" targetRef="Activity_0v7w08m" />
+      <bpmn2:sequenceFlow id="Flow_17tlu1o" sourceRef="Activity_0tmesph" targetRef="Activity_0v7w08m"/>
       <bpmn2:task id="Activity_0hjz4c5" name="Print message" camunda:modelerTemplate="org.drupal.action.action_message_action">
         <bpmn2:extensionElements>
           <camunda:properties>
-            <camunda:property name="pluginid" value="action_message_action" />
+            <camunda:property name="pluginid" value="action_message_action"/>
           </camunda:properties>
           <camunda:field name="message">
             <camunda:string>The received data is:
@@ -178,83 +178,83 @@ modeldata: |
         </bpmn2:extensionElements>
         <bpmn2:incoming>Flow_0ijoscf</bpmn2:incoming>
       </bpmn2:task>
-      <bpmn2:sequenceFlow id="Flow_0ijoscf" sourceRef="Activity_0v7w08m" targetRef="Activity_0hjz4c5" />
+      <bpmn2:sequenceFlow id="Flow_0ijoscf" sourceRef="Activity_0v7w08m" targetRef="Activity_0hjz4c5"/>
     </bpmn2:process>
     <bpmndi:BPMNDiagram id="sid-74a503cd-2677-4039-a742-c24cecef9dff">
       <bpmndi:BPMNPlane id="sid-b3191afc-254f-4d9a-a093-0aa29bbecd00" bpmnElement="eca_lib_0033">
         <bpmndi:BPMNShape id="Event_01amlwo_di" bpmnElement="Event_01amlwo">
-          <dc:Bounds x="292" y="62" width="36" height="36" />
+          <dc:Bounds x="292" y="62" width="36" height="36"/>
           <bpmndi:BPMNLabel>
-            <dc:Bounds x="268" y="105" width="90" height="14" />
+            <dc:Bounds x="268" y="105" width="90" height="14"/>
           </bpmndi:BPMNLabel>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_0thqpdj_di" bpmnElement="Activity_0thqpdj">
-          <dc:Bounds x="380" y="40" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="380" y="40" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Event_0jcklxm_di" bpmnElement="Event_0jcklxm">
-          <dc:Bounds x="292" y="192" width="36" height="36" />
+          <dc:Bounds x="292" y="192" width="36" height="36"/>
           <bpmndi:BPMNLabel>
-            <dc:Bounds x="284" y="235" width="53" height="27" />
+            <dc:Bounds x="284" y="235" width="53" height="27"/>
           </bpmndi:BPMNLabel>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_0bbm1sg_di" bpmnElement="Activity_0bbm1sg">
-          <dc:Bounds x="380" y="170" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="380" y="170" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_1thrc57_di" bpmnElement="Activity_1thrc57">
-          <dc:Bounds x="540" y="170" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="540" y="170" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_0dfz4fw_di" bpmnElement="Activity_0dfz4fw">
-          <dc:Bounds x="700" y="170" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="700" y="170" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Event_1uuuqn6_di" bpmnElement="Event_1uuuqn6">
-          <dc:Bounds x="292" y="432" width="36" height="36" />
+          <dc:Bounds x="292" y="432" width="36" height="36"/>
           <bpmndi:BPMNLabel>
-            <dc:Bounds x="273" y="475" width="75" height="14" />
+            <dc:Bounds x="273" y="475" width="75" height="14"/>
           </bpmndi:BPMNLabel>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_0tmesph_di" bpmnElement="Activity_0tmesph">
-          <dc:Bounds x="380" y="410" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="380" y="410" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_0v7w08m_di" bpmnElement="Activity_0v7w08m">
-          <dc:Bounds x="540" y="410" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="540" y="410" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNShape id="Activity_0hjz4c5_di" bpmnElement="Activity_0hjz4c5">
-          <dc:Bounds x="700" y="410" width="100" height="80" />
-          <bpmndi:BPMNLabel />
+          <dc:Bounds x="700" y="410" width="100" height="80"/>
+          <bpmndi:BPMNLabel/>
         </bpmndi:BPMNShape>
         <bpmndi:BPMNEdge id="Flow_1dju1ly_di" bpmnElement="Flow_1dju1ly">
-          <di:waypoint x="328" y="80" />
-          <di:waypoint x="380" y="80" />
+          <di:waypoint x="328" y="80"/>
+          <di:waypoint x="380" y="80"/>
         </bpmndi:BPMNEdge>
         <bpmndi:BPMNEdge id="Flow_0rrgfix_di" bpmnElement="Flow_0rrgfix">
-          <di:waypoint x="328" y="210" />
-          <di:waypoint x="380" y="210" />
+          <di:waypoint x="328" y="210"/>
+          <di:waypoint x="380" y="210"/>
         </bpmndi:BPMNEdge>
         <bpmndi:BPMNEdge id="Flow_1gjyny2_di" bpmnElement="Flow_1gjyny2">
-          <di:waypoint x="480" y="210" />
-          <di:waypoint x="540" y="210" />
+          <di:waypoint x="480" y="210"/>
+          <di:waypoint x="540" y="210"/>
         </bpmndi:BPMNEdge>
         <bpmndi:BPMNEdge id="Flow_0k6xmlh_di" bpmnElement="Flow_0k6xmlh">
-          <di:waypoint x="640" y="210" />
-          <di:waypoint x="700" y="210" />
+          <di:waypoint x="640" y="210"/>
+          <di:waypoint x="700" y="210"/>
         </bpmndi:BPMNEdge>
         <bpmndi:BPMNEdge id="Flow_11ty0xz_di" bpmnElement="Flow_11ty0xz">
-          <di:waypoint x="328" y="450" />
-          <di:waypoint x="380" y="450" />
+          <di:waypoint x="328" y="450"/>
+          <di:waypoint x="380" y="450"/>
         </bpmndi:BPMNEdge>
         <bpmndi:BPMNEdge id="Flow_17tlu1o_di" bpmnElement="Flow_17tlu1o">
-          <di:waypoint x="480" y="450" />
-          <di:waypoint x="540" y="450" />
+          <di:waypoint x="480" y="450"/>
+          <di:waypoint x="540" y="450"/>
         </bpmndi:BPMNEdge>
         <bpmndi:BPMNEdge id="Flow_0ijoscf_di" bpmnElement="Flow_0ijoscf">
-          <di:waypoint x="640" y="450" />
-          <di:waypoint x="700" y="450" />
+          <di:waypoint x="640" y="450"/>
+          <di:waypoint x="700" y="450"/>
         </bpmndi:BPMNEdge>
       </bpmndi:BPMNPlane>
     </bpmndi:BPMNDiagram>
diff --git a/recipe.yml b/recipe.yml
index 950f35d1a4834bab8ab198d1ff2caef9fac48e33..cc65f253382ef92a5db3b28fd0772ff2e74e9590 100644
--- a/recipe.yml
+++ b/recipe.yml
@@ -1,8 +1,8 @@
 name: 'ECA and http services - part 2'
 description: |-
-  This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services) and uses a self-defined services API for the HTTP Client Manager.
+  This model is a follow up version of [ECA and http services](/library/simple/eca_and_http_services.md) and uses a self-defined services API for the HTTP Client Manager.
 
-  This module requires the services API defined in a [Custom Module](eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
+  This module requires the services API defined in a [Custom Module](/library/simple/eca_and_http_services_-_part_2/eca_tv_demo.zip). Please download, copy to your Drupal site and enable it before importing this model.
 
   The creation of this module was recorded and the video with additional explanations can be [watched here](https://tube.tchncs.de/w/vUXqDxeKtqppRUB2MDWiJq).
 type: ECA