From 18cfa86ed471dc914bd6679725a2e7ae5222f11b Mon Sep 17 00:00:00 2001
From: Martin Groppe <m.groppe@adito.de>
Date: Mon, 19 Jul 2021 14:35:26 +0000
Subject: [PATCH] 1078578 anmelde webservice

---
 .../Registration_Webservice/changelog.xml     |   7 +
 ...sert_DocumentTemplateKeywordAttributes.xml |  26 ++++
 .../insert_DocumentTemplateKeywords.xml       |  34 +++++
 .../Data_alias/basic/2021.1.2/changelog.xml   |   3 +-
 .../Data_alias/basic/workflows/blob/DOI.png   | Bin 0 -> 3658 bytes
 .../Data_alias/basic/workflows/blob/DOI.xml   |  41 ++++++
 .../blob/allowEmailCommunication.png          | Bin 0 -> 4954 bytes
 .../blob/allowEmailCommunication.xml          |  41 ++++++
 .../Data_alias/basic/workflows/changelog.xml  |   3 +
 .../Data_alias/basic/workflows/insert_DOI.xml |  15 +++
 .../workflows/insert_DOI_DOCUMENTTEMPLATE.xml |  16 +++
 .../insert_allowEmailCommunication.xml        |  15 +++
 .../asys_binaries_doiDocumenttemplate.xml     |  21 +++
 .../blob/newsletter_confirmation.html         | 121 ++++++++++++++++++
 .../basic/Workflow/changelog.xml              |   7 +
 .liquibase/_____SYSTEMALIAS/changelog.xml     |   2 +-
 entity/Weblink_entity/Weblink_entity.aod      |   1 +
 .../children/weblinkid_param/valueProcess.js  |   4 +
 process/KeywordRegistry_basic/process.js      |   1 +
 process/SendEmail_workflowService/process.js  |  61 +++++++--
 .../serviceTaskParameterProcess.js            |   3 +-
 process/landingPage_rest/landingPage_rest.aod |  15 +++
 process/landingPage_rest/process.js           |  39 ++++++
 process/register_rest/process.js              | 121 ++++++++++++++++++
 process/register_rest/register_rest.aod       |  16 +++
 25 files changed, 602 insertions(+), 11 deletions(-)
 create mode 100644 .liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/changelog.xml
 create mode 100644 .liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywordAttributes.xml
 create mode 100644 .liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywords.xml
 create mode 100644 .liquibase/Data_alias/basic/workflows/blob/DOI.png
 create mode 100644 .liquibase/Data_alias/basic/workflows/blob/DOI.xml
 create mode 100644 .liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.png
 create mode 100644 .liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.xml
 create mode 100644 .liquibase/Data_alias/basic/workflows/insert_DOI.xml
 create mode 100644 .liquibase/Data_alias/basic/workflows/insert_DOI_DOCUMENTTEMPLATE.xml
 create mode 100644 .liquibase/Data_alias/basic/workflows/insert_allowEmailCommunication.xml
 create mode 100644 .liquibase/_____SYSTEMALIAS/basic/Workflow/asys_binaries_doiDocumenttemplate.xml
 create mode 100644 .liquibase/_____SYSTEMALIAS/basic/Workflow/blob/newsletter_confirmation.html
 create mode 100644 .liquibase/_____SYSTEMALIAS/basic/Workflow/changelog.xml
 create mode 100644 entity/Weblink_entity/entityfields/clicks/children/weblinkid_param/valueProcess.js
 create mode 100644 process/landingPage_rest/landingPage_rest.aod
 create mode 100644 process/landingPage_rest/process.js
 create mode 100644 process/register_rest/process.js
 create mode 100644 process/register_rest/register_rest.aod

diff --git a/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/changelog.xml
new file mode 100644
index 0000000000..c6f521d06e
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/changelog.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="insert_DocumentTemplateKeywords.xml"/>
+    <include relativeToChangelogFile="true" file="insert_DocumentTemplateKeywordAttributes.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywordAttributes.xml b/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywordAttributes.xml
new file mode 100644
index 0000000000..6715e2bdb5
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywordAttributes.xml
@@ -0,0 +1,26 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="m.groppe" id="76054c9d-97aa-4bc1-bba7-c0f78f508556">
+      <insert tableName="AB_KEYWORD_ATTRIBUTE">
+          <column name="AB_KEYWORD_ATTRIBUTEID" value="2dd3727b-08d2-46a7-927e-2180b7a1745c"/>
+          <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/>
+          <column name="CONTAINER" value=""/>
+          <column name="KIND" value="BOOL_VALUE"/>
+          <column name="NAME" value="HTML"/>
+      </insert>
+      <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+          <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="e9633142-35e5-46bf-a0e8-1ec3f1ad4949"/>
+          <column name="AB_KEYWORD_ATTRIBUTE_ID" value="14c2d515-a42f-4618-b534-7a23369d2002"/>
+          <column name="AB_KEYWORD_ENTRY_ID" value="d56c5fe5-9f68-48d7-9631-c1140fa89cce"/>
+          <column name="BOOL_VALUE" value="1"/>
+      </insert>
+      <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+          <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="4e57a45e-2f5e-4b73-99c2-7738b33026a5"/>
+          <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2dd3727b-08d2-46a7-927e-2180b7a1745c"/>
+          <column name="AB_KEYWORD_ENTRY_ID" value="48c2c678-9725-4b54-be31-92f4152315bc"/>
+          <column name="BOOL_VALUE" value="1"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywords.xml b/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywords.xml
new file mode 100644
index 0000000000..da57d44ac5
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.2/Registration_Webservice/insert_DocumentTemplateKeywords.xml
@@ -0,0 +1,34 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="m.groppe" id="8a201365-ec2e-49cf-937e-80e2558ddb40">
+    <insert tableName="AB_KEYWORD_ENTRY">
+        <column name="AB_KEYWORD_ENTRYID" value="12780ba9-8009-4257-b4b2-d6ff66f481a7"/>
+        <column name="AB_KEYWORD_CATEGORY_ID" value="b5afd40b-bfa7-4aee-89ea-06b8c7deb304"/>
+        <column name="KEYID" value="HTML"/>
+        <column name="TITLE" value="HTML"/>
+        <column name="SORTING" valueNumeric="4"/>
+        <column name="ISACTIVE" valueNumeric="1"/>
+        <column name="ISESSENTIAL" valueNumeric="1"/>
+    </insert>
+    <insert tableName="AB_KEYWORD_ENTRY">
+        <column name="AB_KEYWORD_ENTRYID" value="d56c5fe5-9f68-48d7-9631-c1140fa89cce"/>
+        <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/>
+        <column name="KEYID" value="8"/>
+        <column name="TITLE" value="Workflow"/>
+        <column name="SORTING" valueNumeric="8"/>
+        <column name="ISACTIVE" valueNumeric="1"/>
+        <column name="ISESSENTIAL" valueNumeric="1"/>
+    </insert>
+    <insert tableName="AB_KEYWORD_ENTRY">
+        <column name="AB_KEYWORD_ENTRYID" value="48c2c678-9725-4b54-be31-92f4152315bc"/>
+        <column name="AB_KEYWORD_CATEGORY_ID" value="e23c8316-d43a-4606-803e-d4488823cc52"/>
+        <column name="KEYID" value="9"/>
+        <column name="TITLE" value="Landingpage"/>
+        <column name="SORTING" valueNumeric="9"/>
+        <column name="ISACTIVE" valueNumeric="1"/>
+        <column name="ISESSENTIAL" valueNumeric="1"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
index 0d2d913b1a..a1edbff54e 100644
--- a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
@@ -2,4 +2,5 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
     <include relativeToChangelogFile="true" file="Bulkmail/changelog.xml"/>
-</databaseChangeLog>
\ No newline at end of file
+    <include relativeToChangelogFile="true" file="Registration_Webservice/changelog.xml"/>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/workflows/blob/DOI.png b/.liquibase/Data_alias/basic/workflows/blob/DOI.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e98a046e0e272558391e2f6fd2fdee665e534e8
GIT binary patch
literal 3658
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

literal 0
HcmV?d00001

diff --git a/.liquibase/Data_alias/basic/workflows/blob/DOI.xml b/.liquibase/Data_alias/basic/workflows/blob/DOI.xml
new file mode 100644
index 0000000000..9227bfea26
--- /dev/null
+++ b/.liquibase/Data_alias/basic/workflows/blob/DOI.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
+  <process id="DOI" name="DOI" isExecutable="true">
+    <documentation>Workflow to send a doi to a user</documentation>
+    <startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent>
+    <serviceTask id="sid-BFEEA045-E2FE-4B9E-B37D-E8C5A1165A97" name="Send DOI" flowable:class="de.adito.aditoweb.server.neon.workflow.WorkflowServiceTask">
+      <extensionElements>
+        <flowable:field name="jditoProcess">
+          <flowable:string><![CDATA[SendEmail_workflowService]]></flowable:string>
+        </flowable:field>
+        <flowable:field name="taskVariables">
+          <flowable:string><![CDATA[{"documentTemplateId":{"value":"000f7e94-3d82-4581-b529-4ece0e7ddf4e"},"recipientContactId":{"value":""},"linkActionType":{"value":""}}]]></flowable:string>
+        </flowable:field>
+      </extensionElements>
+    </serviceTask>
+    <endEvent id="sid-9F607B6F-D910-4081-AE9C-8C37CD90FFE3"></endEvent>
+    <sequenceFlow id="sid-9340EBEB-CC67-4ED3-8E77-9C0331FF64CB" sourceRef="startEvent1" targetRef="sid-BFEEA045-E2FE-4B9E-B37D-E8C5A1165A97"></sequenceFlow>
+    <sequenceFlow id="sid-EB34CA9A-50B1-44B9-825C-ACF8B6CD66C8" sourceRef="sid-BFEEA045-E2FE-4B9E-B37D-E8C5A1165A97" targetRef="sid-9F607B6F-D910-4081-AE9C-8C37CD90FFE3"></sequenceFlow>
+  </process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_DOI">
+    <bpmndi:BPMNPlane bpmnElement="DOI" id="BPMNPlane_DOI">
+      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
+        <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="sid-BFEEA045-E2FE-4B9E-B37D-E8C5A1165A97" id="BPMNShape_sid-BFEEA045-E2FE-4B9E-B37D-E8C5A1165A97">
+        <omgdc:Bounds height="80.0" width="100.0" x="210.0" y="138.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="sid-9F607B6F-D910-4081-AE9C-8C37CD90FFE3" id="BPMNShape_sid-9F607B6F-D910-4081-AE9C-8C37CD90FFE3">
+        <omgdc:Bounds height="28.0" width="28.0" x="390.0" y="164.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="sid-9340EBEB-CC67-4ED3-8E77-9C0331FF64CB" id="BPMNEdge_sid-9340EBEB-CC67-4ED3-8E77-9C0331FF64CB">
+        <omgdi:waypoint x="129.94999913076796" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="209.99999999998067" y="178.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="sid-EB34CA9A-50B1-44B9-825C-ACF8B6CD66C8" id="BPMNEdge_sid-EB34CA9A-50B1-44B9-825C-ACF8B6CD66C8">
+        <omgdi:waypoint x="309.94999999998265" y="178.0"></omgdi:waypoint>
+        <omgdi:waypoint x="390.0" y="178.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</definitions>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.png b/.liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee6a4a4c79bda85b0b2c969d7d3ab25fb08f1eb1
GIT binary patch
literal 4954
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

literal 0
HcmV?d00001

diff --git a/.liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.xml b/.liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.xml
new file mode 100644
index 0000000000..4937c55902
--- /dev/null
+++ b/.liquibase/Data_alias/basic/workflows/blob/allowEmailCommunication.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
+  <process id="allowEmailCommunication" name="Allow email communication" isExecutable="true">
+    <documentation>Sets the communication setting for email to allowed</documentation>
+    <startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent>
+    <serviceTask id="sid-81F27FC6-FB34-404B-8AA8-84384A1CFAED" name="Allow email communication" flowable:class="de.adito.aditoweb.server.neon.workflow.WorkflowServiceTask">
+      <extensionElements>
+        <flowable:field name="jditoProcess">
+          <flowable:string><![CDATA[SetCommunicationSetting_workflowService]]></flowable:string>
+        </flowable:field>
+        <flowable:field name="taskVariables">
+          <flowable:string><![CDATA[{"channelType":{"value":"COMMUNICATIONCHANNEL_COMMUNICATION"},"medium":{"value":"CAMPAIGNEMAIL"},"status":{"value":"COMMUNICATION_ALLOWED"}}]]></flowable:string>
+        </flowable:field>
+      </extensionElements>
+    </serviceTask>
+    <endEvent id="sid-A28ACC77-98D5-418A-B2DA-70EED93C00AD"></endEvent>
+    <sequenceFlow id="sid-D6DD7380-3B51-4F31-B5BC-41EFAD3B02E4" sourceRef="startEvent1" targetRef="sid-81F27FC6-FB34-404B-8AA8-84384A1CFAED"></sequenceFlow>
+    <sequenceFlow id="sid-5EC260F6-7456-4576-92C5-5C536D14E339" sourceRef="sid-81F27FC6-FB34-404B-8AA8-84384A1CFAED" targetRef="sid-A28ACC77-98D5-418A-B2DA-70EED93C00AD"></sequenceFlow>
+  </process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_allowEmailCommunication">
+    <bpmndi:BPMNPlane bpmnElement="allowEmailCommunication" id="BPMNPlane_allowEmailCommunication">
+      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
+        <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="sid-81F27FC6-FB34-404B-8AA8-84384A1CFAED" id="BPMNShape_sid-81F27FC6-FB34-404B-8AA8-84384A1CFAED">
+        <omgdc:Bounds height="80.0" width="100.0" x="210.0" y="136.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="sid-A28ACC77-98D5-418A-B2DA-70EED93C00AD" id="BPMNShape_sid-A28ACC77-98D5-418A-B2DA-70EED93C00AD">
+        <omgdc:Bounds height="28.0" width="28.0" x="375.0" y="164.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="sid-D6DD7380-3B51-4F31-B5BC-41EFAD3B02E4" id="BPMNEdge_sid-D6DD7380-3B51-4F31-B5BC-41EFAD3B02E4">
+        <omgdi:waypoint x="129.94860715897664" y="177.7931227241285"></omgdi:waypoint>
+        <omgdi:waypoint x="209.9999999999986" y="176.6889655172414"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="sid-5EC260F6-7456-4576-92C5-5C536D14E339" id="BPMNEdge_sid-5EC260F6-7456-4576-92C5-5C536D14E339">
+        <omgdi:waypoint x="309.95000000000005" y="176.77441860465117"></omgdi:waypoint>
+        <omgdi:waypoint x="375.00104904016473" y="177.78297128864668"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</definitions>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/workflows/changelog.xml b/.liquibase/Data_alias/basic/workflows/changelog.xml
index a44bbdf97a..dbdfa18ba9 100644
--- a/.liquibase/Data_alias/basic/workflows/changelog.xml
+++ b/.liquibase/Data_alias/basic/workflows/changelog.xml
@@ -6,4 +6,7 @@
     <include relativeToChangelogFile="true" file="insert_unsubscribeInterest.xml"/>
     <include relativeToChangelogFile="true" file="insert_advertisingShipment.xml"/>
     <include relativeToChangelogFile="true" file="insert_approveOffer.xml"/>
+    <include relativeToChangelogFile="true" file="insert_allowEmailCommunication.xml"/>
+    <include relativeToChangelogFile="true" file="insert_DOI.xml"/>
+    <include relativeToChangelogFile="true" file="insert_DOI_DOCUMENTTEMPLATE.xml"/>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/workflows/insert_DOI.xml b/.liquibase/Data_alias/basic/workflows/insert_DOI.xml
new file mode 100644
index 0000000000..1975c6a203
--- /dev/null
+++ b/.liquibase/Data_alias/basic/workflows/insert_DOI.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="m.groppe" id="e3f266c1-368d-412e-aedc-3aa15dc1dc0c">
+      <insert tableName="STANDARD_WORKFLOW">
+          <column name="STANDARD_WORKFLOWID" value="00dc24eb-a757-43c5-b8ca-889fd2b55da2"/>
+          <column name="PROCESSKEY" value="DOI"/>
+          <column name="NAME" value="DOI"/>
+          <column name="DESCRIPTION" value="Workflow to send a doi to a user"/>
+          <column name="PROCESSXML" valueBlobFile="blob/DOI.xml"/>
+          <column name="DIAGRAM" valueBlobFile="blob/DOI.png"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/workflows/insert_DOI_DOCUMENTTEMPLATE.xml b/.liquibase/Data_alias/basic/workflows/insert_DOI_DOCUMENTTEMPLATE.xml
new file mode 100644
index 0000000000..fd734f69a4
--- /dev/null
+++ b/.liquibase/Data_alias/basic/workflows/insert_DOI_DOCUMENTTEMPLATE.xml
@@ -0,0 +1,16 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="" id="3b5bde37-b68d-4a1f-a840-c1b896fcbcee">
+      <insert tableName="DOCUMENTTEMPLATE">
+          <column name="DOCUMENTTEMPLATEID" value="000f7e94-3d82-4581-b529-4ece0e7ddf4e"/>
+          <column name="NAME" value="newsletter_confirmation"/>
+          <column name="KIND" value="MAI"/>
+          <column name="CLASSIFICATION" value="8"/>
+          <column name="ISOLANGUAGE" value="deu"/>
+          <column name="USER_NEW" value="Admin"/>
+          <column name="DATE_NEW" valueDate="2021-07-13T12:19:02"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/workflows/insert_allowEmailCommunication.xml b/.liquibase/Data_alias/basic/workflows/insert_allowEmailCommunication.xml
new file mode 100644
index 0000000000..445fc8c0fa
--- /dev/null
+++ b/.liquibase/Data_alias/basic/workflows/insert_allowEmailCommunication.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="m.groppe" id="106839d5-6914-4731-b735-0bd3865a3376">
+      <insert tableName="STANDARD_WORKFLOW">
+          <column name="STANDARD_WORKFLOWID" value="715c2cfb-b60d-49b4-bc55-64479c1ef66d"/>
+          <column name="PROCESSKEY" value="allowEmailCommunication"/>
+          <column name="NAME" value="Allow email communication"/>
+          <column name="DESCRIPTION" value="Sets the communication setting for email to allowed"/>
+          <column name="PROCESSXML" valueBlobFile="blob/allowEmailCommunication.xml"/>
+          <column name="DIAGRAM" valueBlobFile="blob/allowEmailCommunication.png"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/Workflow/asys_binaries_doiDocumenttemplate.xml b/.liquibase/_____SYSTEMALIAS/basic/Workflow/asys_binaries_doiDocumenttemplate.xml
new file mode 100644
index 0000000000..0cb30dc513
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/Workflow/asys_binaries_doiDocumenttemplate.xml
@@ -0,0 +1,21 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="m.groppe" id="6f63d9cd-7702-42c8-86b9-a72da9a238f9">
+    <insert tableName="ASYS_BINARIES">
+      <column name="CONTAINERNAME" value="DOCUMENT"/>
+      <column name="USER_EDIT" value="Admin"/>
+      <column name="USER_NEW" value="Admin"/>
+      <column name="DATE_NEW" valueDate="2021-07-13T09:42:38"/>
+      <column name="FILENAME" value="newsletter_confirmation.html"/>
+      <column name="DATE_EDIT" valueDate="2019-21-13T09:42:38"/>
+      <column name="MIMETYPE" value="application/xhtml+xml"/>
+      <column name="ID" value="3486df51-5cce-48a0-8b74-28f1ffcf31d8"/>
+      <column name="DATASIZE" valueNumeric="7132"/>
+      <column name="TABLENAME" value="DOCUMENTTEMPLATE"/>
+      <column name="ROW_ID" value="000f7e94-3d82-4581-b529-4ece0e7ddf4e"/>
+      <column name="BINDATA" valueBlobFile="blob/newsletter_confirmation.html"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/Workflow/blob/newsletter_confirmation.html b/.liquibase/_____SYSTEMALIAS/basic/Workflow/blob/newsletter_confirmation.html
new file mode 100644
index 0000000000..fbe67eaa13
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/Workflow/blob/newsletter_confirmation.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office"><head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta name="viewport" content="initial-scale=1.0">
+  <meta name="format-detection" content="telephone=no">
+  <title>TITLE</title>
+<style>
+	/* custom google fonts, be aware of design problems in different mail clients */
+	@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&family=Zilla+Slab+Highlight:wght@400;700&family=Zilla+Slab:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap');
+</style>
+
+  
+  <style type="text/css">
+    body{ margin: 0; padding: 0; }
+    img{ border: 0px; display: block; }
+
+    .socialLinks{ font-size: 6px; }
+    .socialLinks a{
+      display: inline-block;
+    }
+
+    .long-text p{ margin: 1em 0px; }
+    .long-text p:last-child{ margin-bottom: 0px; }
+    .long-text p:first-child{ margin-top: 0px; }
+  </style>
+  <style type="text/css">
+    /* yahoo, hotmail */
+    .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div{ line-height: 100%; }
+    .yshortcuts a{ border-bottom: none !important; }
+    .vb-outer{ min-width: 0 !important; }
+    .RMsgBdy, .ExternalClass{
+      width: 100%;
+      background-color: #3f3f3f;
+      background-color: #3f3f3f}
+
+    /* outlook/office365 add buttons outside not-linked images and safari have 2px margin */
+    [o365] button{ margin: 0 !important; }
+
+    /* outlook */
+    table{ mso-table-rspace: 0pt; mso-table-lspace: 0pt; }
+    #outlook a{ padding: 0; }
+    img{ outline: none; text-decoration: none; border: none; -ms-interpolation-mode: bicubic; }
+    a img{ border: none; }
+
+    @media screen and (max-width: 600px) {
+      table.vb-container, table.vb-row{
+        width: 95% !important;
+      }
+
+      .mobile-hide{ display: none !important; }
+      .mobile-textcenter{ text-align: center !important; }
+
+      .mobile-full{ 
+        width: 100% !important;
+        max-width: none !important;
+      }
+    }
+    /* previously used also screen and (max-device-width: 600px) but Yahoo Mail doesn't support multiple queries */
+  </style>
+  <style type="text/css">
+    
+    #ko_textBlock_3 .links-color a, #ko_textBlock_3 .links-color a:link, #ko_textBlock_3 .links-color a:visited, #ko_textBlock_3 .links-color a:hover{
+      color: #3f3f3f;
+      color: #ED1652;
+      text-decoration: underline
+    }
+    
+    #ko_footerBlock_2 .links-color a, #ko_footerBlock_2 .links-color a:link, #ko_footerBlock_2 .links-color a:visited, #ko_footerBlock_2 .links-color a:hover{
+      color: #cccccc;
+      color: #cccccc;
+      text-decoration: underline
+    }
+    </style>
+  
+</head>
+<!--[if !(gte mso 16)]-->
+<body bgcolor="#3f3f3f" text="#919191" alink="#cccccc" vlink="#cccccc" style="margin: 0; padding: 0; background-color: #3f3f3f; color: #919191;"><!--<![endif]--><center>
+
+  
+
+  <table role="presentation" class="vb-outer" width="100%" cellpadding="0" border="0" cellspacing="0" bgcolor="#0B2D3A" style="background-color: #0B2D3A;" id="ko_spacerBlock_5">
+      <tbody><tr><td class="vb-outer" align="center" valign="top" height="24" style="padding-left: 9px; padding-right: 9px; font-size: 0; font-size: 1px; height: 1px; height: 24px;">
+      
+      &nbsp;
+    </td></tr>
+    </tbody></table><table role="presentation" class="vb-outer" width="100%" cellpadding="0" border="0" cellspacing="0" bgcolor="#0B2D3A" style="background-color: #0B2D3A;" id="ko_textBlock_3">
+      <tbody><tr><td class="vb-outer" align="center" valign="top" style="padding-left: 9px; padding-right: 9px; font-size: 0;">
+      <!--[if (gte mso 9)|(lte ie 8)]><table role="presentation" align="center" border="0" cellspacing="0" cellpadding="0" width="600"><tr><td align="center" valign="top"><![endif]--><!--
+      --><div style="margin: 0 auto; max-width: 600px; -mru-width: 0px;"><table role="presentation" border="0" cellpadding="0" cellspacing="18" bgcolor="#ffffff" width="600" class="vb-container" style="border-collapse: separate; width: 100%; background-color: #ffffff; mso-cellspacing: 18px; border-spacing: 18px; max-width: 600px; -mru-width: 0px;">
+        
+        <tbody><tr><td class="long-text links-color" width="100%" valign="top" align="left" style="font-weight: normal; color: #0B2D3A; font-size: 13px; font-family: Arial, Helvetica, sans-serif; text-align: left; line-height: normal; font-style: normal;"><p style="margin: 1em 0px; margin-top: 0px;"><br data-mce-bogus="1"></p><p style="margin: 1em 0px;">Vielen Dank für Ihr Interesse an unserem Newsletter.</p><p style="margin: 1em 0px;">&nbsp;</p><p style="margin: 1em 0px;">Bitte bestätigen Sie Ihre Anmeldung, indem Sie <a title="Newsletter Bestätigung" href="{@newsletter_confirmation@}" target="_blank" rel="noopener noreferrer" style="color: #3f3f3f; color: #ED1652; text-decoration: underline;">hier klicken</a>.</p><p style="margin: 1em 0px;">&nbsp;</p><p style="margin: 1em 0px; margin-bottom: 0px;"></p></td></tr>
+      
+      </tbody></table></div><!--
+    --><!--[if (gte mso 9)|(lte ie 8)]></td></tr></table><![endif]-->
+    </td></tr>
+    </tbody></table><table role="presentation" class="vb-outer" width="100%" cellpadding="0" border="0" cellspacing="0" bgcolor="#0B2D3A" style="background-color: #0B2D3A;" id="ko_spacerBlock_4">
+      <tbody><tr><td class="vb-outer" align="center" valign="top" height="24" style="padding-left: 9px; padding-right: 9px; font-size: 0; font-size: 1px; height: 1px; height: 24px;">
+      
+      &nbsp;
+    </td></tr>
+    </tbody></table>
+
+  
+    <!-- footerBlock -->
+    <table role="presentation" class="vb-outer" width="100%" cellpadding="0" border="0" cellspacing="0" bgcolor="#3f3f3f" style="background-color: #3f3f3f;" id="ko_footerBlock_2">
+      <tbody><tr><td class="vb-outer" align="center" valign="top" style="padding-left: 9px; padding-right: 9px; font-size: 0;">
+    <!--[if (gte mso 9)|(lte ie 8)]><table role="presentation" align="center" border="0" cellspacing="0" cellpadding="0" width="600"><tr><td align="center" valign="top"><![endif]--><!--
+      --><div style="margin: 0 auto; max-width: 600px; -mru-width: 0px;"><table role="presentation" border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; width: 100%; mso-cellspacing: 0px; border-spacing: 0px; max-width: 600px; -mru-width: 0px;" width="600" class="vb-row">
+      <tbody><tr>
+	  <td valign="top" align="left" width="600" height="1" style="vertical-align: top; font-size: 0; line-height: 0px;">
+		<img src="{@pixel@}" alt="" width="1" height="1" border="0" hspace="0" vspace="0" align="top" style="border: 0px; display: block;">
+	  </td>
+    </tr>
+    
+      </tbody></table></div><!--
+    --><!--[if (gte mso 9)|(lte ie 8)]></td></tr></table><![endif]-->
+  </td></tr>
+    </tbody></table>
+    <!-- /footerBlock -->
+    
+</center><!--[if !(gte mso 16)]--></body><!--<![endif]--></html>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/Workflow/changelog.xml b/.liquibase/_____SYSTEMALIAS/basic/Workflow/changelog.xml
new file mode 100644
index 0000000000..e8e8314a1a
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/Workflow/changelog.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="webserviceUser_flowableIdmService.xml" context="workflow"/>
+    <include relativeToChangelogFile="true" file="asys_binaries_doiDocumenttemplate.xml" context="workflow"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/changelog.xml b/.liquibase/_____SYSTEMALIAS/changelog.xml
index b7d047b86d..4151fc0b14 100644
--- a/.liquibase/_____SYSTEMALIAS/changelog.xml
+++ b/.liquibase/_____SYSTEMALIAS/changelog.xml
@@ -5,5 +5,5 @@
 
     <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>
     
-    <include relativeToChangelogFile="true" file="basic/Workflow/webserviceUser_flowableIdmService.xml" context="workflow"/>
+    <include relativeToChangelogFile="true" file="basic/Workflow/changelog.xml" context="workflow"/>
 </databaseChangeLog>
diff --git a/entity/Weblink_entity/Weblink_entity.aod b/entity/Weblink_entity/Weblink_entity.aod
index 433b65f149..5b1af63a87 100644
--- a/entity/Weblink_entity/Weblink_entity.aod
+++ b/entity/Weblink_entity/Weblink_entity.aod
@@ -108,6 +108,7 @@
       <children>
         <entityParameter>
           <name>WeblinkId_param</name>
+          <valueProcess>%aditoprj%/entity/Weblink_entity/entityfields/clicks/children/weblinkid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Weblink_entity/entityfields/clicks/children/weblinkid_param/valueProcess.js b/entity/Weblink_entity/entityfields/clicks/children/weblinkid_param/valueProcess.js
new file mode 100644
index 0000000000..2733992025
--- /dev/null
+++ b/entity/Weblink_entity/entityfields/clicks/children/weblinkid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.WEBLINKID"));
\ No newline at end of file
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index b71e5b84d7..0aac5d31d4 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -192,6 +192,7 @@ $KeywordRegistry.documentTemplateTypeCategory = function(){return "DocumentTempl
 $KeywordRegistry.documentTemplateTypeCategory$single = function(){return "1";};
 $KeywordRegistry.documentTemplateTypeCategory$serial = function(){return "2";};
 $KeywordRegistry.documentTemplateTypeCategory$htmlTemplate = function(){return "7";};
+$KeywordRegistry.documentTemplateTypeCategory$workflow = function(){return "8";};
 
 $KeywordRegistry.classificationType = function(){return "ClassificationType";};
 $KeywordRegistry.classificationType$salesproject = function(){return "Salesproject";};
diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js
index bdc3aab5db..5744b91578 100644
--- a/process/SendEmail_workflowService/process.js
+++ b/process/SendEmail_workflowService/process.js
@@ -1,3 +1,6 @@
+import("Contact_lib");
+import("system.util");
+import("Sql_lib");
 import("Util_lib");
 import("Communication_lib");
 import("system.tools");
@@ -7,6 +10,7 @@ import("system.vars");
 import("Email_lib");
 import("Placeholder_lib");
 import("Workflow_lib");
+import("KeywordRegistry_basic");
 
 var processInstanceId = vars.get("$local.uid");
 var variables = JSON.parse(vars.get("$local.value"));
@@ -15,19 +19,33 @@ var documentTemplateId = variables.documentTemplateId;
 var senderName = variables.senderName;
 var mailSubject = variables.mailSubject;
 var aditoUrl = variables.originUrl;
+var recipientEmail = variables.recipientEmail||CommUtil.getStandardMail(recipientContactId);
 
 var actionParams = Utils.clone(variables);
 actionParams.processInstanceId = processInstanceId;
-var additionalPlaceholders = [];
-if (aditoUrl)
-{
-    var linkPlaceholder = WorkflowLinkActions.getActionLinkPlaceholder(actionParams.linkActionType, actionParams, actionParams.redirectLink, aditoUrl);
-    additionalPlaceholders.push(linkPlaceholder);
-}
+
+var mail_logid = util.getNewUUID();
+var baseUrl = aditoUrl + "/services/rest/redirect_rest?";
+var linkPlaceholders = newSelect(["PLACEHOLDER", "WEBLINKID", "URL", "ISREDIRECT"])
+        .from("WEBLINK")
+        .table()
+        .map(function ([placeholder, weblinkId, url, isRedirect])
+        {
+            if (Utils.toBoolean(isRedirect))
+            {
+                return new Placeholder(placeholder, Placeholder.types.FIXEDVALUE, baseUrl + "link=" + weblinkId + "&log=" + mail_logid);
+            }
+            return new Placeholder(placeholder, Placeholder.types.FIXEDVALUE, url);
+        });
+
+var webviewPlaceholder = new Placeholder("webview", Placeholder.types.FIXEDVALUE, aditoUrl+"/services/rest/webview_rest?" + "log=" + mail_logid);   
+
+var additionalPlaceholders = [webviewPlaceholder].concat(linkPlaceholders);
 
 var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, additionalPlaceholders);
 email.subject = mailSubject;
-email.toRecipients = [CommUtil.getStandardMail(recipientContactId)];
+
+email.toRecipients = [recipientEmail];
 
 //if we use @@instanceId in the mail body to track the user interaction, we replace it here with the instance id
 email.body = email.body.replace("@@instanceId", processInstanceId);    
@@ -43,4 +61,31 @@ if(senderName)
 else
 {
     sendResult = email.send();  
-}
\ No newline at end of file
+}
+//create entrys in mail_log and mail_run for linktracking and because its needed for redirect webservice.
+var object_type = ContactUtils.getContextByContactId(recipientContactId);
+var mail_runid = util.getNewUUID();
+
+new SqlBuilder()
+    .tableName("MAIL_RUN")
+    .insertFields({
+            "MAIL_RUNID": mail_runid,
+            "OBJECT_ROWID": recipientContactId,
+            "OBJECT_TYPE": object_type,
+            "STATUS": $KeywordRegistry.bulkMailStatus$sent(),
+            "DATE_RUN_START":vars.get("$sys.date"),
+            "DATE_RUN_FINISHED":vars.get("$sys.date")});
+
+var status = sendResult? $KeywordRegistry.bulkMailRecipientStatus$sent():$KeywordRegistry.bulkMailRecipientStatus$failed();
+
+new SqlBuilder()
+    .tableName("MAIL_LOG")
+    .insertFields({
+        "MAIL_RUN_ID":mail_runid,
+        "MAIL_LOGID": mail_logid,
+        "CONTACT_ID":recipientContactId,
+        "DATE_SEND":vars.get("$sys.date"),
+        "STATUS":status,
+        "MAILING_SUBJECT":mailSubject,
+        "RECIPIENT_EMAIL":recipientEmail
+    });
\ No newline at end of file
diff --git a/process/SendEmail_workflowService/serviceTaskParameterProcess.js b/process/SendEmail_workflowService/serviceTaskParameterProcess.js
index b581232fe5..97c747ce1a 100644
--- a/process/SendEmail_workflowService/serviceTaskParameterProcess.js
+++ b/process/SendEmail_workflowService/serviceTaskParameterProcess.js
@@ -8,6 +8,7 @@ import("Sql_lib");
 var templates = newSelect("DOCUMENTTEMPLATEID, NAME")
     .from("DOCUMENTTEMPLATE")
     .where("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$mail())
+    .and("DOCUMENTTEMPLATE.CLASSIFICATION",$KeywordRegistry.documentTemplateTypeCategory$workflow())
     .table()
     .map(function (item) {return {id : item[0], name : item[1]};});
 
@@ -33,7 +34,7 @@ var parameters = [
     new WorkflowServiceTaskParameter("linkActionType", "Link action", WorkflowServiceTaskParameter.ENUM(), workflowLinkActionTypes, true)
 ];
 
-var currentValues = JSON.parse(vars.get("$local.value"));
+var currentValues = vars.get("$local.value");
 if (currentValues.linkActionType && currentValues.linkActionType.value)
 {
     parameters.push(new WorkflowServiceTaskParameter("redirectLink", "Link", WorkflowServiceTaskParameter.STRING()));
diff --git a/process/landingPage_rest/landingPage_rest.aod b/process/landingPage_rest/landingPage_rest.aod
new file mode 100644
index 0000000000..9b97d8d39b
--- /dev/null
+++ b/process/landingPage_rest/landingPage_rest.aod
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>landingPage_rest</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/landingPage_rest/process.js</process>
+  <publishAsWebservice v="true" />
+  <style>REST</style>
+  <loginTypeId>
+    <element>internal.none</element>
+  </loginTypeId>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
diff --git a/process/landingPage_rest/process.js b/process/landingPage_rest/process.js
new file mode 100644
index 0000000000..0e6474f4b4
--- /dev/null
+++ b/process/landingPage_rest/process.js
@@ -0,0 +1,39 @@
+import("DocumentTemplate_lib");
+import("Email_lib");
+import("Sql_lib");
+import("Workflow_lib");
+import("Util_lib");
+import("system.util");
+import("Bulkmail_lib");
+
+function restget (pRequest)
+{
+    var request = JSON.parse(pRequest);
+    var documentTemplateId = request.query.documenttemplate;
+   
+   
+    if (documentTemplateId)
+    {
+        try 
+        {
+            var documentTemplate = DocumentTemplate.loadTemplate(documentTemplateId);
+
+            request.response.httpStatusCode = 200; //Ok
+            request.response.header["Content-Type"] = "text/html";
+            request.response.body = util.decodeBase64String(documentTemplate.content);
+   
+        } 
+        catch (ex) 
+        { 
+            request.response.httpStatusCode = 404; //not found
+        }   
+    }
+    else
+    {
+        request.response.httpStatusCode = 400; //bad request
+    }
+    
+    return JSON.stringify(request);
+}
+
+
diff --git a/process/register_rest/process.js b/process/register_rest/process.js
new file mode 100644
index 0000000000..9c9ae2bebd
--- /dev/null
+++ b/process/register_rest/process.js
@@ -0,0 +1,121 @@
+import("system.translate");
+import("system.workflow");
+import("system.vars");
+import("system.util");
+import("Sql_lib");
+import("system.entities");
+import("KeywordRegistry_basic");
+
+
+function restget (pRequest)
+{
+    var request = JSON.parse(pRequest);
+    var firstname = request.query.firstname;
+    var lastname = request.query.lastname;
+    var salutation = request.query.salutation;
+    var mailAddress = request.query.mailaddress;
+    var workflowKey = request.query.workflow;
+    
+    
+    if (mailAddress)
+    {
+        var contactid = _findPerson(firstname, lastname, mailAddress);
+        if (!contactid)
+        {
+           contactid = _insertPerson(firstname, lastname, mailAddress, salutation);       
+        }
+
+        if(workflowKey)
+        {
+            var origin =request.header["X-forwarded-proto"]+"://"+request.header["X-forwarded-host"]
+            var variables = {
+                "targetId":contactid,
+                "senderName" : "admin",
+                "recipientEmail":mailAddress,
+                "originUrl":origin.toString(),
+                "mailSubject":translate.text("Your newsletter registration")};
+            
+            workflow.startProcessByKey(workflowKey, variables);
+        }
+    }
+    return JSON.stringify(request);
+}
+
+
+function _findPerson(pFirstname, pLastname, pMailAddress)
+{
+
+    var contactId = newSelect("CONTACT.CONTACTID")
+    .from("CONTACT")
+    .join("PERSON","CONTACT.PERSON_ID = PERSON.PERSONID")
+    .join("COMMUNICATION","COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
+    .whereIfSet("PERSON.FIRSTNAME",pFirstname)
+    .andIfSet("PERSON.LASTNAME",pLastname)
+    .and("COMMUNICATION.MEDIUM_ID",$KeywordRegistry.communicationMedium$mail())
+    .and("COMMUNICATION.ADDR",pMailAddress)
+    .cell();
+    
+    if (!contactId){
+        contactId = newSelect("CONTACT.CONTACTID")
+        .from("CONTACT")
+        .join("COMMUNICATION","COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
+        .where("COMMUNICATION.MEDIUM_ID",$KeywordRegistry.communicationMedium$mail())
+        .and("COMMUNICATION.ADDR",pMailAddress)
+        .and("CONTACT.PERSON_ID is not null")
+        .cell();
+    }
+    
+    return contactId
+}
+
+
+function _insertPerson(pFirstname, pLastname, pMailAddress, pSalutation)
+{
+
+    var gender = newSelect("SEX")
+    .from("SALUTATION")
+    .whereIfSet("SALUTATION.SALUTATION", pSalutation)
+    .cell(true);
+
+    var organisationId = "0";
+    var contactId = util.getNewUUID();
+    var personId = util.getNewUUID();
+    
+    new SqlBuilder()
+        .tableName("CONTACT")
+        .insertFields({
+                "PERSON_ID": personId,
+                "CONTACTID": contactId,
+                "ORGANISATION_ID": organisationId,
+                "STATUS": $KeywordRegistry.contactStatus$active(),
+                "ISOLANGUAGE":"deu",
+                "DATE_NEW": vars.get("$sys.date"),
+                "USER_NEW": "register_rest"
+            });
+    
+    new SqlBuilder()
+        .tableName("PERSON")
+        .insertFields({
+            "PERSONID": personId,
+            "FIRSTNAME": pFirstname || "",
+            "LASTNAME" : pLastname,
+            "SALUTATION": pSalutation || "",
+            "GENDER": gender,
+            "USER_NEW": "register_rest",
+            "DATE_NEW": vars.get("$sys.date")
+        });
+        
+     new SqlBuilder()
+        .tableName("COMMUNICATION")
+        .insertFields({
+            "COMMUNICATIONID": util.getNewUUID(),
+            "CONTACT_ID" : contactId,
+            "MEDIUM_ID": $KeywordRegistry.communicationMedium$mail(),
+            "ADDR": pMailAddress,
+            "ISSTANDARD" : "1",
+            "USER_NEW": "register_rest",
+            "DATE_NEW": vars.get("$sys.date")
+        });
+        
+        return contactId;
+}
\ No newline at end of file
diff --git a/process/register_rest/register_rest.aod b/process/register_rest/register_rest.aod
new file mode 100644
index 0000000000..ada26f240e
--- /dev/null
+++ b/process/register_rest/register_rest.aod
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>register_rest</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/register_rest/process.js</process>
+  <publishAsWebservice v="true" />
+  <style>REST</style>
+  <loginTypeId>
+    <element>internal.none</element>
+  </loginTypeId>
+  <jditoWebserviceUser>Admin</jditoWebserviceUser>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
-- 
GitLab