update zoho interface

This commit is contained in:
Ralph Soika 2025-05-07 13:12:45 +02:00
parent 0f7627419a
commit 4b9da4d98a
6 changed files with 288 additions and 27 deletions

View file

@ -2,22 +2,7 @@
AGL Dubai nutzt Zoho als Platform zusammen mit einer lokalen Steuerkanzlei AGL Dubai nutzt Zoho als Platform zusammen mit einer lokalen Steuerkanzlei
## Test/Prod Account Imixs Testaccount - siehe [SECRETS.md](SECRETS.md)
https://api-console.zoho.eu/
https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN
```
zoho.accesstoken 1000.18f5fbeaf572425b8062d015d541aad5.a704efa994774ef33d7af75106468a13
zoho.apidomain https://www.zohoapis.eu
zoho.clientid 1000.GR5FTPZYB06HEWSFSSX4DJU3OBD4EJ
zoho.clientsecret 3f3e74c5212bbc924a7ebf77f887c6296db1106c47
zoho.code 1000.c184c7592a218fee58f7b7855b56eb77.7b533ff9f570fd6ab3296784caeec072
zoho.organization 20105697367
zoho.refreshtoken 1000.98fe4d0c4f676237b400bf8a3dc219f3.03d6bacf5b988d339eb788c4ecff440e
zoho.scope ZohoBooks.contacts.ALL ZohoBooks.invoices.CREATE ZohoBooks.invoices.READ ZohoBooks.invoices.UPDATE
```
# API Dokumentation # API Dokumentation

View file

@ -8,9 +8,15 @@ https://api-console.zoho.eu/
https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN
``` ```
OrganizationID=20105697367 zoho.accesstoken 1000.18f5fbeaf572425b8062d015d541aad5.a704efa994774ef33d7af75106468a13
client ID= 1000.NLTM2KUEHI696MSLGEIANATVGGX7IN zoho.apidomain https://www.zohoapis.eu
client secret= ee9ba49f16e77c64abb89cea13542d2326d8d03ce8 zoho.clientid 1000.GR5FTPZYB06HEWSFSSX4DJU3OBD4EJ
zoho.clientsecret 3f3e74c5212bbc924a7ebf77f887c6296db1106c47
zoho.code 1000.c184c7592a218fee58f7b7855b56eb77.7b533ff9f570fd6ab3296784caeec072
zoho.organization 20105697367
zoho.refreshtoken 1000.98fe4d0c4f676237b400bf8a3dc219f3.03d6bacf5b988d339eb788c4ecff440e
zoho.scope ZohoBooks.contacts.ALL ZohoBooks.invoices.CREATE ZohoBooks.invoices.READ ZohoBooks.invoices.UPDATE
``` ```
# API Dokumentation # API Dokumentation
@ -24,3 +30,10 @@ https://books.zoho.eu/app/20105697367
https://accounts.zoho.eu/home# https://accounts.zoho.eu/home#
Base API URI= https://accounts.zoho.eu/ Base API URI= https://accounts.zoho.eu/
# AGL Organisation
https://api-console.zoho.com
info@imixs.com
password imixs4zoho

View file

@ -180,12 +180,17 @@ public class ZohoAPIService {
zohoInvoice = createResponse.getInvoice(); zohoInvoice = createResponse.getInvoice();
// now add attachments (optional) // now add attachments (optional)
if (files != null) { try {
for (FileData file : files) { if (files != null) {
attacheFileData(zohoInvoice.getInvoiceId(), file, "invoices", accessToken); for (FileData file : files) {
attacheFileData(zohoInvoice.getInvoiceId(), file, "invoices", accessToken);
}
} }
// now mark the invoice as send
markInvoiceAsSend(zohoInvoice.getInvoiceId(), "invoices", accessToken);
} catch (PluginException e) {
logger.warning("Failed to export Invoice: " + e.getMessage());
} }
logger.info("│ ├── Invoice Export successful."); logger.info("│ ├── Invoice Export successful.");
return zohoInvoice; return zohoInvoice;
} else { } else {
@ -344,4 +349,56 @@ public class ZohoAPIService {
} }
} }
/**
* This method marks an invoice as send
*
*
* curl --request POST \ --url
* 'https://www.zohoapis.com/books/v3/invoices/982000000567114/status/sent?organization_id=10234695'
* \ --header 'Authorization: Zoho-oauthtoken
* 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'
*
*
* @param invoiceId The Zoho invoice ID
* @param uriPattern The API endpoint pattern (e.g., "invoices")
* @param accessToken The OAuth access token
* @throws PluginException If the API call fails
*/
public void markInvoiceAsSend(String invoiceId, String uriPattern, String accessToken) throws PluginException {
String uri = zohoOAuthManager.getBaseURI() + uriPattern + "/" + //
invoiceId + //
"/status/sent" + //
"?organization_id=" + zohoOAuthManager.getOrganization();
logger.fine("│ ├── mark invoice as sent '" + invoiceId + "'...");
logger.fine("│ ├── ...uri: " + uri + "...");
try {
// JSON serialisieren
String requestBody = "";
logger.fine("│ ├── " + requestBody);
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(uri))
.header("Authorization", "Zoho-oauthtoken " + accessToken)
.header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
logger.fine("├── Zoho Response:");
logger.fine("│ ├── Status Code: " + response.statusCode());
logger.fine("│ ├── Response Body: " + response.body());
if (response.statusCode() >= 300) {
throw new PluginException(this.getClass().getName(), "Zoho API error",
"Failed to create invoice. Status code: " + response.statusCode() + ", Response: "
+ response.body());
}
logger.info("│ ├── OK - status update 'send' successfully");
} catch (IOException | InterruptedException e) {
throw new PluginException(this.getClass().getName(), "Zoho API error",
"Failed to add attachment: " + e.getMessage(), e);
}
}
} }

View file

@ -0,0 +1,89 @@
package com.alexanderlogistics.zoho.dto;
import java.time.LocalDate;
import java.util.List;
import jakarta.json.bind.annotation.JsonbDateFormat;
import jakarta.json.bind.annotation.JsonbProperty;
public class ZohoExpense {
@JsonbProperty("expense_id")
private String expenseId;
@JsonbProperty("customer_id")
private String customerId;
@JsonbDateFormat("yyyy-MM-dd")
private LocalDate date;
@JsonbProperty("due_date")
@JsonbDateFormat("yyyy-MM-dd")
private LocalDate dueDate;
@JsonbProperty("reference_number")
private String invoiceNumber;
@JsonbProperty("line_items")
private List<ZohoInvoiceItem> lineItems;
private double total;
// Getter und Setter
public String getInvoiceId() {
return invoiceId;
}
public void setInvoiceId(String invoiceId) {
this.invoiceId = invoiceId;
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
public LocalDate getDueDate() {
return dueDate;
}
public void setDueDate(LocalDate duedate) {
this.dueDate = duedate;
}
public String getInvoiceNumber() {
return invoiceNumber;
}
public void setInvoiceNumber(String invoiceNumber) {
this.invoiceNumber = invoiceNumber;
}
public List<ZohoInvoiceItem> getLineItems() {
return lineItems;
}
public void setLineItems(List<ZohoInvoiceItem> lineItems) {
this.lineItems = lineItems;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
}

View file

@ -143,6 +143,7 @@ th { font-weight: bold;}
<bpmn2:flowNodeRef>TextAnnotation_2</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>TextAnnotation_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_D2TmxA</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>event_D2TmxA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_orShLw</bpmn2:flowNodeRef>
</bpmn2:lane> </bpmn2:lane>
</bpmn2:laneSet> </bpmn2:laneSet>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Due date]"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Due date]">
@ -474,6 +475,7 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
<bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_6zqWyg</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_6zqWyg</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_0D6BEw</bpmn2:incoming>
</bpmn2:task> </bpmn2:task>
<bpmn2:endEvent id="EndEvent_1" name="Ende"> <bpmn2:endEvent id="EndEvent_1" name="Ende">
<bpmn2:incoming>SequenceFlow_61</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_61</bpmn2:incoming>
@ -1507,6 +1509,79 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmn2:sequenceFlow id="sequenceFlow_mdGzDQ" sourceRef="event_07fo0g" targetRef="Task_2"> <bpmn2:sequenceFlow id="sequenceFlow_mdGzDQ" sourceRef="event_07fo0g" targetRef="Task_2">
<bpmn2:documentation id="documentation_NV1xfg"/> <bpmn2:documentation id="documentation_NV1xfg"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_orShLw" imixs:activityid="10" name="testSave">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string">
<imixs:value><![CDATA[$creator]]></imixs:value>
<imixs:value><![CDATA[$editor]]></imixs:value>
<imixs:value><![CDATA[process.manager]]></imixs:value>
<imixs:value><![CDATA[process.team]]></imixs:value>
</imixs:item>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string">
<imixs:value><![CDATA[$editor]]></imixs:value>
<imixs:value><![CDATA[$creator]]></imixs:value>
</imixs:item>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5000]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_L08SPA"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
<bpmn2:outgoing>sequenceFlow_0D6BEw</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_0D6BEw" sourceRef="event_orShLw" targetRef="Task_1">
<bpmn2:documentation id="documentation_STlpCw"/>
</bpmn2:sequenceFlow>
</bpmn2:process> </bpmn2:process>
<bpmn2:process id="process_2" name="Default Process" processType="Public"> <bpmn2:process id="process_2" name="Default Process" processType="Public">
<bpmn2:documentation id="documentation_J67Rkw"/> <bpmn2:documentation id="documentation_J67Rkw"/>
@ -1942,8 +2017,8 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_6zqWyg" id="BPMNEdge_IsC5BA" sourceElement="BPMNShape_PrZ78w" targetElement="BPMNShape_Task_3"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_6zqWyg" id="BPMNEdge_IsC5BA" sourceElement="BPMNShape_PrZ78w" targetElement="BPMNShape_Task_3">
<di:waypoint x="493.0" y="697.0"/> <di:waypoint x="493.0" y="695.0"/>
<di:waypoint x="708.0" y="697.0"/> <di:waypoint x="708.0" y="695.0"/>
<di:waypoint x="708.0" y="730.0"/> <di:waypoint x="708.0" y="730.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="textAnnotation_u7Q3HQ" id="BPMNShape_biZYAw"> <bpmndi:BPMNShape bpmnElement="textAnnotation_u7Q3HQ" id="BPMNShape_biZYAw">
@ -1979,6 +2054,18 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<di:waypoint x="775.0" y="364.0"/> <di:waypoint x="775.0" y="364.0"/>
<di:waypoint x="775.0" y="330.0"/> <di:waypoint x="775.0" y="330.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_orShLw" id="BPMNShape_Gm3gkg">
<dc:Bounds height="36.0" width="36.0" x="777.0" y="817.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_3YjJZA">
<dc:Bounds height="20.0" width="100.0" x="745.0" y="856.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_0D6BEw" id="BPMNEdge_oxlHKQ" sourceElement="BPMNShape_Gm3gkg" targetElement="BPMNShape_Task_3">
<di:waypoint x="795.0" y="817.0"/>
<di:waypoint x="795.0" y="799.0"/>
<di:waypoint x="745.0" y="799.0"/>
<di:waypoint x="745.0" y="780.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1"> <bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
<dc:Font name="arial" size="9.0"/> <dc:Font name="arial" size="9.0"/>

View file

@ -165,6 +165,7 @@
<bpmn2:flowNodeRef>TextAnnotation_2</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>TextAnnotation_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_62</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_62</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>gateway_Al0gGg</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>gateway_Al0gGg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_vjVWqA</bpmn2:flowNodeRef>
</bpmn2:lane> </bpmn2:lane>
</bpmn2:laneSet> </bpmn2:laneSet>
<bpmn2:task id="Task_5000" imixs:processid="5300" name="Approval"> <bpmn2:task id="Task_5000" imixs:processid="5300" name="Approval">
@ -1461,6 +1462,7 @@ if (workitem.getItemValueString('payment.type')!="direct_debit" && workitem.get
<bpmn2:incoming>SequenceFlow_41</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_41</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_y2ISGw</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_y2ISGw</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_BQWujA</bpmn2:incoming>
</bpmn2:task> </bpmn2:task>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_14" imixs:activityid="300" name="[Close SEPA]"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_14" imixs:activityid="300" name="[Close SEPA]">
<bpmn2:extensionElements> <bpmn2:extensionElements>
@ -4900,11 +4902,28 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
<bpmn2:sequenceFlow id="sequenceFlow_9rYDHA" sourceRef="gateway_Al0gGg" targetRef="Task_5"> <bpmn2:sequenceFlow id="sequenceFlow_9rYDHA" sourceRef="gateway_Al0gGg" targetRef="Task_5">
<bpmn2:documentation id="documentation_0y1bvw"/> <bpmn2:documentation id="documentation_0y1bvw"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_vjVWqA" imixs:activityid="400" name="ZOHO Test">
<bpmn2:extensionElements>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Zoho export]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_eZfxLg"/>
<bpmn2:signalEventDefinition id="signalEventDefinition_TBI0Lg" signalRef="signal_9"/>
<bpmn2:outgoing>sequenceFlow_BQWujA</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_BQWujA" sourceRef="event_vjVWqA" targetRef="Task_6">
<bpmn2:documentation id="documentation_YUR2fQ"/>
</bpmn2:sequenceFlow>
</bpmn2:process> </bpmn2:process>
<bpmn2:process id="process_2" name="Invoice receipt" processType="Public"> <bpmn2:process id="process_2" name="Invoice receipt" processType="Public">
<bpmn2:documentation id="documentation_yUm3kA"/> <bpmn2:documentation id="documentation_yUm3kA"/>
</bpmn2:process> </bpmn2:process>
<bpmn2:signal id="signal_8" name="com.alexanderlogistics.RenameFilenamesAdapter"/> <bpmn2:signal id="signal_8" name="com.alexanderlogistics.RenameFilenamesAdapter"/>
<bpmn2:signal id="signal_9" name="com.alexanderlogistics.zoho.ZohoExportAdapter"/>
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_Process_1"> <bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_Process_1">
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true"> <bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true">
@ -5552,8 +5571,8 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_23" id="BPMNEdge_SequenceFlow_23" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_6"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_23" id="BPMNEdge_SequenceFlow_23" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_6">
<bpmndi:BPMNLabel id="BPMNLabel_48"/> <bpmndi:BPMNLabel id="BPMNLabel_48"/>
<di:waypoint x="1732.0" y="1760.0"/> <di:waypoint x="1733.0" y="1755.0"/>
<di:waypoint x="1865.0" y="1760.0"/> <di:waypoint x="1865.0" y="1755.0"/>
<di:waypoint x="1865.0" y="1820.0"/> <di:waypoint x="1865.0" y="1820.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_25" id="BPMNEdge_SequenceFlow_26" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_YcLGng"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_25" id="BPMNEdge_SequenceFlow_26" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_YcLGng">
@ -6065,6 +6084,17 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
<di:waypoint x="2350.0" y="1615.0"/> <di:waypoint x="2350.0" y="1615.0"/>
<di:waypoint x="2410.0" y="1615.0"/> <di:waypoint x="2410.0" y="1615.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_vjVWqA" id="BPMNShape_06TPWQ">
<dc:Bounds height="36.0" width="36.0" x="1977.0" y="1737.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_Mz9hSQ">
<dc:Bounds height="20.0" width="100.0" x="1945.0" y="1776.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_BQWujA" id="BPMNEdge_SE1dgg" sourceElement="BPMNShape_06TPWQ" targetElement="BPMNShape_Task_6">
<di:waypoint x="1977.0" y="1755.0"/>
<di:waypoint x="1897.0" y="1755.0"/>
<di:waypoint x="1897.0" y="1820.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1"> <bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
<dc:Font name="arial" size="9.0"/> <dc:Font name="arial" size="9.0"/>