Compare commits

..

No commits in common. "master" and "office-alexander-logistics-1.4" have entirely different histories.

20 changed files with 281 additions and 1828 deletions

View file

@ -1,7 +1,11 @@
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17
FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
#FROM imixs/imixs-office-workflow:5.1.0
# Setup debug configuration
# COPY ./docker/configuration/standalone-debug.xml /opt/jboss/wildfly/standalone/configuration/
COPY ./docker/lucene-core-7.7.3.jar /opt/jboss/
# Deploy artefact
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
# Deploy artefact
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/

View file

@ -1,8 +1,10 @@
FROM imixs/imixs-office-workflow:5.1.5-wildfly-29.0.1.Final-jdk17
FROM imixs/imixs-office-workflow:5.1.1-wildfly-27.0.1.Final-jdk17
#FROM imixs/imixs-office-workflow:5.1.0
# Deploy artefact
RUN rm -r /opt/jboss/wildfly/standalone/deployments/*
COPY ./target/*.war /opt/jboss/wildfly/standalone/deployments/
COPY ./*-app/target/*.war /opt/jboss/wildfly/standalone/deployments/
# Run in Debug Mode
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "--debug", "*:8787"]

View file

@ -3,26 +3,15 @@
## 1.4.0 (Development)
- neuer AGLAIInvoiceAdapter
der Adapter `com.alexanderlogistics.AGLAIInvoiceAdapter` muss künftig in das Import Event der Rechnungseingangs Modelle. Dieser Adapter Findet den Space und den Mandanten.
der Adapter `AGLAIInvoiceAdapter` muss künftig in das Import Event der Rechnungseingangs Modelle. Dieser Adapter Findet den Space und den Mandanten.
Neue Modelle:
- Posteingang
- posteingang-en-3.0
- Brazil
- rechnungseingang-br-1.0.0.bpmn
- posteingang-de-3.0
- AMS
- rechnungseingang-ams-1.1.0.bpmn
### MIGRATION
1. Neues Posteingangs modell einspielen
2. Prozess Front-Desk in "Global Inbox" umbeneennen
3. Text Baustein anlegen (aus AGL BR)
4. Document Import Konfiguration für IMAP auf neuen Posteingang 3.0 Ändern!
## 1.3.6 (Development)
**KSeF Produktiname II.**

2
devi
View file

@ -59,7 +59,7 @@ fi
if [[ "$(strip_dash $1)" == "deploy" ]]; then
echo " Deploy to Imixs-Cloud..."
mvn clean install -Pimixs-cloud -DskipTests
mvn clean install -Pkubernetes -DskipTests
fi

View file

@ -1,204 +0,0 @@
# Eigenes Backup-System (Backup-Mirror)
## Architektur, Einrichtung und Disaster-Recovery-Konzept
---
## 1. Idee und Architektur
### 1.1 Ausgangslage
Imixs-Office-Workflow wird von uns als eine transaktionale, hochverfügbare
Geschäftsprozessmanagement-Suite betrieben. Die Basis ist ein Open Source Kernel,
der frei zugänglich ist ([https://github.com/imixs/](https://github.com/imixs/)).
Unabhängig vom gewählten Betriebsmodell (SaaS, Public Cloud, Private Cloud, On
Premise) sind und bleiben Sie Eigentümer Ihrer Geschäftsdaten. Über den
Backup-Service haben Sie die Möglichkeit, jederzeit eigenständig auf eine
vollständige Kopie Ihrer Daten zuzugreifen unabhängig davon, wie und wo Ihre
Instanz aktuell betrieben wird.
### 1.2 Architektur Own your Data
Auch wenn wir den Betrieb Ihrer Instanz übernehmen, bedeutet das nicht, dass Sie
von uns abhängig sind. Über den Backup-Mirror betreiben Sie bei sich einen eigenen,
unabhängigen Backup-Dienst. Dieser Dienst wird von Ihnen selbst eingerichtet,
verwaltet und überwacht und läuft vollständig autark wir müssen ihn technisch
weder kennen noch verwalten. Dadurch gilt:
> **Sie verfügen über eine eigenständige, vollständige Kopie Ihrer
> Geschäftsdaten unabhängig von unserer Infrastruktur. Mit dieser Kopie kann
> Ihr System bei Bedarf komplett neu aufgebaut werden.**
Das ist ein bewusst einfaches und robustes Prinzip: Es kommt nicht darauf an, *wo*
Ihre Daten zusätzlich liegen, sondern *wer* die Kontrolle über diesen zusätzlichen
Sicherungsort hat. Nur wenn diese Kontrolle bei Ihnen liegt, sind Sie wirklich
unabhängig.
### 1.3 Wie es funktioniert
Technisch basiert das Konzept auf dem Open-Source-Projekt
[Imixs-Archive](https://github.com/imixs/imixs-archive), konkret auf dem Baustein
*Imixs-Archive-Backup*. Der Ablauf im Überblick:
1. Bei jeder Änderung an einem Geschäftsvorgang erzeugt Ihre Workflow-Instanz
automatisch einen unveränderlichen Snapshot (eine vollständige Kopie des
Vorgangs inkl. aller angehängten Dokumente).
2. Diese Snapshots werden über die REST-Schnittstelle Ihrer Workflow-Instanz
bereitgestellt.
3. Ein bei Ihnen installierter Backup-Dienst (siehe Abschnitt 2) ruft diese
Snapshots eigenständig ab und speichert sie auf einem Speicherort Ihrer Wahl
(z. B. eigener FTP-/Storage-Server).
Wichtig: Die Verbindung erfolgt **von Ihrem System zu unserer Workflow-Instanz**
(„Pull-Prinzip"). Sie benötigen dafür lediglich einen Netzwerkzugriff auf die
REST-Schnittstelle Ihrer Instanz wir müssen keinen Zugriff auf Ihre Infrastruktur
haben und erhalten auch keinen.
---
## 2. Technische Einrichtung
Der Backup-Dienst kann als Docker-Container in unterschiedlichen Umgebungen betrieben werden:
- **Local**: lokal über Docker oder Docker Compose,
- **Private Cloud**: in einer Private Cloud (z.b. Kubernetes, OpenShift)
- **Public Cloud**: in einer Public Cloud Umgebung (z.b. AWS, Microsoft Azure)
### 2.1 Voraussetzungen
- Eine eigene Server- bzw. Container-Umgebung (Docker) auf Ihrer Seite
- Ein eigener Speicherort für die Backup-Daten (z. B. FTP-Storage, NAS mit
FTP-Anbindung)
- Eine sogenannte **Mirror-ID**, die wir Ihnen bereitstellen
### 2.2 Mirror-ID anfragen
Die Mirror-ID ist eine organisatorische Kennung, mit der wir Ihre eigene
Backup-Verbindung für Ihre Instanz freischalten. Sie ist kein Sicherheitsmerkmal im
engeren Sinn, sondern eine Vereinbarung zwischen uns: *„Kunde X betreibt ein eigenes
Backup."* Bitte fordern Sie diese ID formlos bei uns an.
### 2.3 Backup-Nutzer in Ihrer eigenen Instanz anlegen
Ein zentraler Punkt für die Autarkie des Systems: **Sie legen den technischen
Benutzer für den Backup-Zugriff selbst in Ihrer Imixs-Instanz an.** Dieser Nutzer
gehört ausschließlich Ihnen wir kennen weder das Passwort noch verwalten wir
dieses Konto. Vergeben Sie dem Nutzer ausreichende Leserechte, damit er alle
relevanten Vorgänge und Dokumente sichern kann.
### 2.4 Docker-Compose Beispielkonfiguration
Das folgende Beispiel zeigt eine Docker Compose Konfiguraiton für den Betrieb des Backup-Dienstes:
```yaml
version: "3.6"
services:
backup:
image: imixs/imixs-archive-backup:latest
environment:
TZ: "Europe/Berlin"
WORKFLOW_SERVICE_ENDPOINT: "https://<ihre-instanz>.office-workflow.de/api/"
WORKFLOW_SERVICE_USER: "<ihr-backup-nutzer>"
WORKFLOW_SERVICE_PASSWORD: "<ihr-passwort>"
WORKFLOW_SERVICE_AUTHMETHOD: "form"
BACKUP_FTP_HOST: "<ihr-storage-host>"
BACKUP_FTP_PATH: "<ihr-zielverzeichnis>"
BACKUP_FTP_PORT: "21"
BACKUP_FTP_USER: "<ihr-ftp-nutzer>"
BACKUP_FTP_PASSWORD: "<ihr-ftp-passwort>"
BACKUP_MIRROR_ID: "<ihre-mirror-id>"
ports:
- "8084:8080"
- "9990:9990"
```
**Erläuterung der wichtigsten Parameter:**
| Parameter | Bedeutung |
|---|---|
| `WORKFLOW_SERVICE_ENDPOINT` | Die REST-API-Adresse Ihrer bei uns gehosteten Workflow-Instanz |
| `WORKFLOW_SERVICE_USER/PASSWORD` | Der von Ihnen selbst angelegte Backup-Nutzer |
| `BACKUP_FTP_*` | Ihr eigener Speicherort für die Backup-Daten |
| `BACKUP_MIRROR_ID` | Die von uns bereitgestellte Freischalt-ID |
Nach dem Start prüft der Dienst regelmäßig auf neue zu sichernde Vorgänge und
überträgt diese automatisch auf Ihren Speicherort.
### 2.5 Monitoring des eigenen Backup-Dienstes
Da der Dienst vollständig in Ihrer Verantwortung läuft, sollten Sie ihn aktiv
überwachen. Ein einfacher Ping-Check zeigt zwar, dass der Container erreichbar
ist sagt aber nichts darüber aus, ob der Dienst tatsächlich funktionsfähig ist
und Backups erfolgreich durchführt.
Der Imixs-Archive-Backup-Service stellt hierfür standardisierte **MicroProfile-Endpunkte** mit, die auf Port `9990`
bereitgestellt werden:
| Endpunkt | Beschreibung |
|---|---|
| `/health` | Liefert den Health-Status des Dienstes nach dem MicroProfile-Health-Standard inklusive Readiness (ist der Dienst betriebsbereit, z. B. Verbindung zur Workflow-API und zum FTP-Storage vorhanden?) und Liveness (läuft der Prozess korrekt?) |
| `/metrics` | Liefert Betriebskennzahlen im MicroProfile-Metrics-Format (Prometheus-kompatibel), z. B. Anzahl verarbeiteter Backups, Fehlerzähler, Laufzeiten |
Damit lässt sich der Dienst professionell überwachen:
- **Health-Checks** binden Sie direkt in gängige Monitoring-Systeme ein (z. B.
Kubernetes Liveness-/Readiness-Probes, Uptime-Kuma, Nagios, Icinga) und erkennen
so nicht nur einen abgestürzten Container, sondern auch einen Dienst, der zwar
läuft, aber z. B. keine Verbindung mehr zu Ihrer Workflow-Instanz oder zum
FTP-Ziel herstellen kann.
- **Metrics** lassen sich direkt von Prometheus abgegriffen und in Grafana
visualisiert werden so erkennen Sie auf einen Blick, ob regelmäßig Backups
durchgeführt werden, oder ob z. B. die Fehlerrate ansteigt.
**Voraussetzung:** Sie müssen Port `9990` in Ihrer Docker-Umgebung entsprechend
freigeben bzw. mappen, damit Ihr Monitoring-System auf die Endpunkte zugreifen kann
(siehe Port-Mapping im Beispiel aus Abschnitt 2.4).
Ein Backup, das unbemerkt seit Wochen nicht mehr funktioniert, bietet keinen Schutz.
Die Überwachung über Health- und Metrics-Endpunkte ist daher ein integraler
Bestandteil des Konzepts, nicht optional.
---
## 3. Notfall- und Wiederherstellungsfall (Disaster Recovery)
Im Falle eines Disaster-Recovery-Prozesses stellen Sie uns Ihr Backup zur Verfügung, damit Ihr System auf dessen Basis wiederhergestellt werden kann. Dieser Abschnitt beschreibt das Vorgehen nur in Stichpunkten.
Die vollständige technische Dokumentation der
Imixs-Workflow-Architektur ist Open Source und öffentlich einsehbar unter
[github.com/imixs](https://github.com/imixs).
**Grundprinzip der Wiederherstellung:**
- Ihre gesicherten Snapshot-Daten liegen vollständig und unverändert in Ihrem
eigenen Speicher (FTP/Storage) vor.
- Diese Daten liegen in einem offenen, plattformunabhängigen XML-Format vor und
sind nicht an unsere konkrete Infrastruktur gebunden.
- Auf Basis dieser Daten kann eine neue Imixs-Workflow-Instanz (bei Ihnen oder bei
einem anderen Dienstleister) aufgesetzt werden.
- Über die Restore-Funktion der Imixs-Archive-Komponenten werden die Snapshots in
die neue Instanz zurückgespielt jeder Geschäftsvorgang wird dabei inklusive
seiner Historie und aller Dokumente wiederhergestellt.
**Wichtige Stichpunkte für den Ernstfall:**
- Backup-Daten sind vollständig bei Ihnen vorhanden → keine Abhängigkeit von uns
- Wiederherstellung erfordert eine lauffähige Imixs-Workflow-Umgebung (Open Source,
frei verfügbar)
- Die technische Vorgehensweise zum Restore ist Teil der öffentlichen
Imixs-Archive-Dokumentation
- Wir unterstützen Sie im Ernstfall selbstverständlich gerne beim Wiederaufbau
diese Unterstützung ist jedoch **keine Voraussetzung**, da die Daten und das
Wiederherstellungsverfahren vollständig unabhängig von uns nutzbar sind
---
## 4. Zusammenfassung
Mit dem Backup-Mirror bleiben Sie jederzeit Eigentümer Ihrer Geschäftsdaten unabhängig
davon, wie und wo Ihre Instanz betrieben wird. Sie richten den Dienst selbst ein, verwalten
ihn eigenständig und behalten so die volle Kontrolle über Ihre zusätzliche Datenkopie. Genau
diese Unabhängigkeit ist es, die Ihnen im Bedarfsfall den vollständigen Wiederaufbau Ihres
Systems ermöglicht.
Bei Fragen zur Einrichtung oder zur Anforderung Ihrer Mirror-ID kontaktieren Sie uns
gerne.

View file

@ -1,4 +0,0 @@
# LLM Config
LLM_API_ENDPOINT=https://api.llama.cpp.imixs.com/
LLM_API_KEY=7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321

View file

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
imixs-llm.xml - LLM Model Registry
======================================
Place this file in your deployment so it is available on the classpath,
e.g. in src/main/resources/ for a Maven project.
Each <model> element defines one logical LLM service endpoint.
A model is either a completion model OR an embedding model - never both.
The BPMN configuration references them separately by their id:
<imixs-ai name="CONDITION">
<endpoint>my-llm</endpoint>
...
</imixs-ai>
<imixs-ai name="RAG_INDEX">
<endpoint-completion>my-llm</endpoint-completion>
<endpoint-embeddings>my-embeddings</endpoint-embeddings>
...
</imixs-ai>
Environment variable placeholders are supported via ${env.VAR_NAME}.
-->
<imixs-llm>
<!--
Completion model used for chat completions, conditions, analysis etc.
This example connects to a local llama.cpp server.
-->
<endpoint id="api.llama.cpp.imixs.com">
<url>https://api.llama.cpp.imixs.com/</url>
<apikey>7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321</apikey>
<options>{
"temperature": 0.2,
"max_tokens": 1024
}
</options>
</endpoint>
<!--
Embedding model used for RAG indexing and retrieval.
This example connects to a separate embedding server.
No apikey needed for a locally hosted instance.
-->
<endpoint id="embeddings.llama.cpp.imixs.com">
<url>https://embeddings.llama.cpp.imixs.com/</url>
<apikey>7fdb663fa87ea16731c1e0ece8ad3214e358423eabf2403188110c731ce07321</apikey>
<options>{
"max_tokens": 512
}
</options>
</endpoint>
</imixs-llm>

Binary file not shown.

View file

@ -1,5 +0,0 @@
# secrets used by junit tests
TENANT_ID=51e2f038-0a96-41be-801d-bb4118aa018e
CLIENT_ID=39e9eec5-6939-47dc-9729-3438a9898e63
CLIENT_SECRET=0lG8Q~UigK0f7n-cR8SSiSXhVChkBD3Qm1CqvbID

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:15.008412928Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.498746084Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:15.058655095Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.565274539Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:14.990608361Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.473274636Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:15.043150699Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.549495260Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:15.020009542Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.514998809Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:15.084962950Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.586373483Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -7,7 +7,7 @@
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-08-20T21:54:15.066882675Z</DataWytworzeniaFa>
<DataWytworzeniaFa>2026-08-20T11:01:10.574896691Z</DataWytworzeniaFa>
<SystemInfo>Imixs eInvoice</SystemInfo>

View file

@ -1189,7 +1189,6 @@ workitem.getItemValueString('payment.type')=="credit"]]></bpmn2:conditionExpress
<bpmn2:outputSet id="OutputSet_1" name="Output Set 1"/>
<bpmn2:linkEventDefinition id="LinkEventDefinition_7" name="Link Event Definition 7"/>
<bpmn2:incoming>SequenceFlow_0</bpmn2:incoming>
<bpmn2:signalEventDefinition id="signalEventDefinition_aNnJwg" signalRef="signal_2"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_12" name="BEENDEN">
<bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing>
@ -4612,7 +4611,6 @@ if (workitem.getItemValueString('txtcomment')=='') {
<bpmn2:documentation id="documentation_PIebCA"/>
</bpmn2:message>
<bpmn2:signal id="signal_1" name="org.imixs.workflow.sepa.adapter.SEPARefAddAdapter"/>
<bpmn2:signal id="signal_2" name="com.alexanderlogistics.AGLAIInvoiceAdapter"/>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_Process_1">
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true">

File diff suppressed because it is too large Load diff

View file

@ -39,12 +39,12 @@
<bpmn2:signal id="Signal_1" name="org.imixs.archive.documents.OCRDocumentAdapter"/>
<bpmn2:signal id="Signal_2" name="org.imixs.ml.workflow.MLAdapter"/>
<bpmn2:collaboration id="Collaboration_1" name="Default Collaboration">
<bpmn2:participant id="Participant_1" name="Document Import" processRef="Process_1">
<bpmn2:participant id="Participant_1" name="Inbox" processRef="Process_1">
<bpmn2:documentation id="documentation_m9vQ5g"/>
</bpmn2:participant>
<bpmn2:participant id="participant_GUMWGQ" name="Default Process" processRef="process_2"/>
</bpmn2:collaboration>
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Document Import" processType="Private">
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Inbox" processType="Private">
<bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
<bpmn2:lane id="Lane_2" name="Team">
<bpmn2:flowNodeRef>BoundaryEvent_1</bpmn2:flowNodeRef>
@ -83,7 +83,7 @@
<bpmn2:flowNodeRef>event_Xk1mPA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_a1P5WQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_UIvZkA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_0ossfw</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_BbVs7w</bpmn2:flowNodeRef>
</bpmn2:lane>
</bpmn2:laneSet>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_2" imixs:activityid="10" name="Start">
@ -135,7 +135,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item>
<item name="process">Global Inbox</item>
<item name="process">Empfang</item>
]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
@ -145,21 +145,21 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Document imported]]></imixs:value>
<imixs:value><![CDATA[Rechnungseingang]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_6"><![CDATA[Digitalisierung einer neuen Eingangsrechnung]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_ShggfA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_fRPOrw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_4gpPgw</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:startEvent id="StartEvent_1" name="Start">
<bpmn2:documentation id="documentation_MhefQQ"/>
<bpmn2:outgoing>sequenceFlow_fRPOrw</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:task id="Task_2" imixs:processid="110" name="Anaylse Document">
<bpmn2:task id="Task_2" imixs:processid="100" name="Import">
<bpmn2:extensionElements>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic]]></imixs:value>
@ -185,7 +185,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmn2:documentation id="Documentation_13"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_4gpPgw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_CbkmwA</bpmn2:outgoing>
<bpmn2:incoming>association_w5HwVg</bpmn2:incoming>
</bpmn2:task>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" imixs:activityid="20" name="OCR">
<bpmn2:extensionElements>
@ -240,6 +239,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/>
<item name="process">Empfang</item>
<imixs-ocr name="RMETA">
<filepattern>(pdf|PDF|eml|msg)$</filepattern>
@ -315,6 +315,9 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
<bpmn2:documentation id="documentation_gepcjg"/>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_12" sourceRef="Task_4" targetRef="EndEvent_1">
<bpmn2:documentation id="documentation_pphZ2A"/>
</bpmn2:sequenceFlow>
<bpmn2:boundaryEvent attachedToRef="Task_2" id="BoundaryEvent_1" name="">
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
<bpmn2:timerEventDefinition id="TimerEventDefinition_1">
@ -361,7 +364,13 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
Assign invoice to process 'Front Desk']]></bpmn2:text>
<bpmn2:documentation id="documentation_vNKNMA"/>
</bpmn2:textAnnotation>
<bpmn2:association id="association_hnK1FQ" sourceRef="dataObject_FS1r0Q" targetRef="task_0ossfw">
<bpmn2:sequenceFlow id="sequenceFlow_fRPOrw" sourceRef="StartEvent_1" targetRef="IntermediateCatchEvent_2">
<bpmn2:documentation id="documentation_0j4j6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_4gpPgw" sourceRef="IntermediateCatchEvent_2" targetRef="Task_2">
<bpmn2:documentation id="documentation_AbaSMw"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_hnK1FQ" sourceRef="dataObject_FS1r0Q" targetRef="Task_2">
<bpmn2:documentation id="documentation_jpgiPw"/>
</bpmn2:association>
<bpmn2:task id="task_PsBytg" imixs:processid="130" name="Analyse Summary">
@ -542,8 +551,9 @@ Company: <itemvalue>document.company</itemvalue><br />]]></imixs:value>
<bpmn.form />
Note:
- invoice.positions is the Reference Number only in the format AA-BBB-YYMM-SSS (2 uppercase letters + hyphen + 3 uppercase letters + hyphen + 6-digit date (YYYYMM) + hyphen + 3-digit sequence). No deviations allowed! Example: 'KL-MNO-202605-456'. If no reference number is found leave the field blank
- invoice.period is the posting period of the invoice date in the format [YYYYMM] . Example '202605'
- The Reference Number in the format [2 letters][3 letters][4-digit booking period YYMM][3-digit sequence number] ==> "invoice.positions"
- The posting period is the period of the invoice date [YYYYMM] ==> "invoice.period"
<<EXAMPLES_XML>>
@ -555,7 +565,7 @@ Note:
<bpmn2:association id="association_Xrb1Cg" sourceRef="event_yQLmNA" targetRef="dataObject_HHM58Q">
<bpmn2:documentation id="documentation_8W4nQw"/>
</bpmn2:association>
<bpmn2:intermediateCatchEvent id="event_xOeBKg" imixs:activityid="103" name="Analysis completed">
<bpmn2:intermediateCatchEvent id="event_xOeBKg" imixs:activityid="103" name="Start Invoicing">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
@ -613,7 +623,7 @@ Note:
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Document analysis completed.]]></imixs:value>
<imixs:value><![CDATA[Starte Rechnungseingang]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
@ -708,6 +718,7 @@ Note:
<endpoint>api.llama.cpp.imixs.com</endpoint>
<result-event>XML</result-event>
</imixs-ai>
<item name="process">Empfang</item>
]]></imixs:value>
@ -1101,6 +1112,13 @@ first one that appears in the document. Do not add any comments or explanation a
<bpmn2:incoming>sequenceFlow_d0zSHA</bpmn2:incoming>
<bpmn2:errorEventDefinition id="errorEventDefinition_oTILNw"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_tcjWAA" name="PROMPT Error" sourceRef="gateway_qDAhHw" targetRef="event_9mJrhQ">
<bpmn2:documentation id="documentation_jE0MLA"/>
<bpmn2:conditionExpression id="formalExpression_fidF0g" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_I8o4DA" sourceRef="gateway_qDAhHw" targetRef="task_PsBytg">
<bpmn2:documentation id="documentation_NJDLLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway default="sequenceFlow_bh4DIw" gatewayDirection="Diverging" id="gateway_gd9zQQ" name="">
<bpmn2:documentation id="documentation_0rgWkA"/>
<bpmn2:outgoing>sequenceFlow_I8o4DA</bpmn2:outgoing>
@ -1108,7 +1126,7 @@ first one that appears in the document. Do not add any comments or explanation a
<bpmn2:outgoing>sequenceFlow_bh4DIw</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_d0zSHA</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:association id="association_w5HwVg" sourceRef="dataObject_UIvZkA" targetRef="Task_2">
<bpmn2:association id="association_w5HwVg" sourceRef="dataObject_UIvZkA" targetRef="task_0YaQ2w">
<bpmn2:documentation id="documentation_Z1YkeA"/>
</bpmn2:association>
<bpmn2:textAnnotation id="TextAnnotation_1">
@ -1141,21 +1159,39 @@ Possible ImageTypes are:
<bpmn2:outgoing>sequenceFlow_eccehA</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_p0asUQ</bpmn2:incoming>
</bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow_3YcMGQ" sourceRef="event_Zxhr0w" targetRef="event_wmNwPA">
<bpmn2:documentation id="documentation_hoWA6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_p0asUQ" sourceRef="event_wmNwPA" targetRef="gateway_MgL04w">
<bpmn2:documentation id="documentation_zd0qsw"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_DdWK6A" sourceRef="task_0YaQ2w" targetRef="event_tFxV0w">
<bpmn2:documentation id="documentation_ypSiLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_VEvZRQ" name="TIMEOUT">
<bpmn2:documentation id="documentation_xBrycw"/>
<bpmn2:linkEventDefinition id="linkEventDefinition_rtH39g"/>
<bpmn2:incoming>sequenceFlow_KKWo0w</bpmn2:incoming>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_KKWo0w" sourceRef="task_PsBytg" targetRef="event_VEvZRQ">
<bpmn2:documentation id="documentation_D6p3aA"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_Xk1mPA" name="TIMEOUT">
<bpmn2:documentation id="documentation_Ck9Khw"/>
<bpmn2:linkEventDefinition id="linkEventDefinition_nYz0NQ"/>
<bpmn2:incoming>sequenceFlow_ofQKHg</bpmn2:incoming>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_ofQKHg" sourceRef="task_uB6BGQ" targetRef="event_Xk1mPA">
<bpmn2:documentation id="documentation_O5Xb6g"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_a1P5WQ" name="TIMEOUT">
<bpmn2:documentation id="documentation_QVYmog"/>
<bpmn2:linkEventDefinition id="linkEventDefinition_K9M65g"/>
<bpmn2:incoming>sequenceFlow_CbkmwA</bpmn2:incoming>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_CbkmwA" sourceRef="Task_2" targetRef="event_a1P5WQ">
<bpmn2:documentation id="documentation_FDT0AA"/>
</bpmn2:sequenceFlow>
<bpmn2:dataObject id="dataObject_UIvZkA" imixs:datatype="form-data" name="Form">
<bpmn2:documentation id="documentation_bNoo3Q"><![CDATA[<?xml version="1.0"?>
<imixs-form>
@ -1184,104 +1220,71 @@ Possible ImageTypes are:
</imixs-form>]]></bpmn2:documentation>
<bpmn2:outgoing>association_w5HwVg</bpmn2:outgoing>
</bpmn2:dataObject>
<bpmn2:association id="association_Uc6nuQ" sourceRef="task_PsBytg" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_bxoEjA"/>
</bpmn2:association>
<bpmn2:association id="association_ApEaCQ" sourceRef="task_uB6BGQ" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_WAiEfQ"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_tcjWAA" name="PROMPT Error" sourceRef="gateway_qDAhHw" targetRef="event_9mJrhQ">
<bpmn2:documentation id="documentation_jE0MLA"/>
<bpmn2:conditionExpression id="formalExpression_fidF0g" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
<bpmn2:dataObject id="dataObject_BbVs7w" imixs:datatype="prompt-data" name="Prompt Extract">
<bpmn2:documentation id="documentation_X7T0uA"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<PromptDefinition>
<prompt_options>{"n_predict": 4096, "temperature": 0 }</prompt_options>
<prompt role="system"><![CDATA[You are a clerk at the logistic company 'Alexander Global Logistics'. Your task is to check incoming invoices.
Transfer the invoice data into an XML object with the following structure:
<invoice>
<cdtr.name>...</cdtr.name>
<invoice.number>...</invoice.number>
<invoice.date type="date">2024-12-31</invoice.date>
<invoice.duedate type="date">2024-12-31</invoice.duedate>
<invoice.total type="double">1234.00</invoice.total>
<cdtr.iban>...</cdtr.iban>
<cdtr.bic>...</cdtr.bic>
<invoice.positions>...</invoice.positions>
</invoice>
Transfer the individual invoice data to the XML tags, taking into account the following suggestions for mapping:
- Company name ==> "cdtr.name" (the name of the company that issued the invoice document, not the recipient)
- Invoice number ==> "invoice.number"
- Invoice Date ==> "invoice.date"
- Total ==> "invoice.total" (in EUR or if not available in USD or PLN)
- IBAN ==> "cdtr.iban"
- BIC or SWIFT ==> "cdtr.bic"
- Payment date / Due date ==> "invoice.duedate"
- The Reference Number in the format [2 letters][3 letters][4-digit booking period YYMM][3-digit sequence number] ==> "invoice.positions"
Note: Output only the XML object! Don't add explanations or comments. Use only the XML structure specified in this example and do not create any other XML tags. If you don't have data for some fields, leave the corresponding XML tags blank. Format date values (type="date") into the ISO 8601 format (YYYY-MM-DD). Format numbers and amounts (type="double") according to ISO 4217.
<<EXAMPLES_XML>>
]]]]><![CDATA[></prompt>
<prompt role="user"><itemvalue>invoice.summary</itemvalue></prompt>
</PromptDefinition> ]]></bpmn2:documentation>
</bpmn2:dataObject>
<bpmn2:sequenceFlow id="sequenceFlow_naZnAA" sourceRef="event_pDFoXg" targetRef="gateway_qDAhHw">
<bpmn2:documentation id="documentation_8TapMg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_I8o4DA" sourceRef="gateway_qDAhHw" targetRef="task_PsBytg">
<bpmn2:documentation id="documentation_NJDLLQ"/>
<bpmn2:sequenceFlow id="sequenceFlow_PgyOMw" sourceRef="event_88sCAA" targetRef="event_pDFoXg">
<bpmn2:documentation id="documentation_8vVNCA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_d0zSHA" name="DOCUMENT Error" sourceRef="gateway_gd9zQQ" targetRef="event_9mJrhQ">
<bpmn2:documentation id="documentation_AJkXtg"/>
<bpmn2:conditionExpression id="formalExpression_WutmBw" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_naZnAA" sourceRef="event_pDFoXg" targetRef="gateway_qDAhHw">
<bpmn2:documentation id="documentation_8TapMg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_3YcMGQ" sourceRef="event_Zxhr0w" targetRef="event_wmNwPA">
<bpmn2:documentation id="documentation_hoWA6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_12" sourceRef="Task_4" targetRef="EndEvent_1">
<bpmn2:documentation id="documentation_pphZ2A"/>
<bpmn2:sequenceFlow id="sequenceFlow_bh4DIw" sourceRef="gateway_gd9zQQ" targetRef="task_uB6BGQ">
<bpmn2:documentation id="documentation_0EzFwA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_A62nqQ" sourceRef="event_4DNGzg" targetRef="task_0YaQ2w">
<bpmn2:documentation id="documentation_IIBe3g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_VlPVJg" sourceRef="IntermediateCatchEvent_3" targetRef="gateway_gd9zQQ">
<bpmn2:documentation id="documentation_mCzUDA"/>
</bpmn2:sequenceFlow>
<bpmn2:task id="task_0ossfw" imixs:processid="100" name="Import">
<bpmn2:extensionElements>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Rechnung erhalten]]></imixs:value>
</imixs:item>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-printer]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[Analysis....]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitem]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_13"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_fRPOrw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_ShggfA</bpmn2:outgoing>
<bpmn2:incoming>association_hnK1FQ</bpmn2:incoming>
</bpmn2:task>
<bpmn2:sequenceFlow id="sequenceFlow_fRPOrw" sourceRef="StartEvent_1" targetRef="task_0ossfw">
<bpmn2:documentation id="documentation_0j4j6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_ShggfA" sourceRef="task_0ossfw" targetRef="IntermediateCatchEvent_2">
<bpmn2:documentation id="documentation_lRzkXA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_4gpPgw" sourceRef="IntermediateCatchEvent_2" targetRef="Task_2">
<bpmn2:documentation id="documentation_AbaSMw"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_KKWo0w" sourceRef="task_PsBytg" targetRef="event_VEvZRQ">
<bpmn2:documentation id="documentation_D6p3aA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_DdWK6A" sourceRef="task_0YaQ2w" targetRef="event_tFxV0w">
<bpmn2:documentation id="documentation_ypSiLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_PgyOMw" sourceRef="event_88sCAA" targetRef="event_pDFoXg">
<bpmn2:documentation id="documentation_8vVNCA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_bh4DIw" sourceRef="gateway_gd9zQQ" targetRef="task_uB6BGQ">
<bpmn2:documentation id="documentation_0EzFwA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_Di4BQA" sourceRef="event_T901Jg" targetRef="event_4DNGzg">
<bpmn2:documentation id="documentation_SYe0IA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_ofQKHg" sourceRef="task_uB6BGQ" targetRef="event_Xk1mPA">
<bpmn2:documentation id="documentation_O5Xb6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_CbkmwA" sourceRef="Task_2" targetRef="event_a1P5WQ">
<bpmn2:documentation id="documentation_FDT0AA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_2" sourceRef="BoundaryEvent_1" targetRef="IntermediateCatchEvent_3">
<bpmn2:documentation id="documentation_yRaNRg"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_gxPFSg" sourceRef="dataObject_UIvZkA" targetRef="task_0YaQ2w">
<bpmn2:documentation id="documentation_JX90Qg"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_p0asUQ" sourceRef="event_wmNwPA" targetRef="gateway_MgL04w">
<bpmn2:documentation id="documentation_zd0qsw"/>
<bpmn2:sequenceFlow id="sequenceFlow_VlPVJg" sourceRef="IntermediateCatchEvent_3" targetRef="gateway_gd9zQQ">
<bpmn2:documentation id="documentation_mCzUDA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_YMtfiw" sourceRef="event_yQLmNA" targetRef="gateway_MgL04w">
<bpmn2:documentation id="documentation_t74new"/>
@ -1292,12 +1295,18 @@ Possible ImageTypes are:
<bpmn2:sequenceFlow id="sequenceFlow_gXJm0w" sourceRef="event_xOeBKg" targetRef="Task_4">
<bpmn2:documentation id="documentation_9d0URg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_eccehA" sourceRef="gateway_MgL04w" targetRef="event_xOeBKg">
<bpmn2:documentation id="documentation_0XAjOQ"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_gpPDLg" sourceRef="event_9mJrhQ" targetRef="event_xOeBKg">
<bpmn2:documentation id="documentation_ykXPyg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_eccehA" sourceRef="gateway_MgL04w" targetRef="event_xOeBKg">
<bpmn2:documentation id="documentation_0XAjOQ"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_Uc6nuQ" sourceRef="task_PsBytg" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_bxoEjA"/>
</bpmn2:association>
<bpmn2:association id="association_ApEaCQ" sourceRef="task_uB6BGQ" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_WAiEfQ"/>
</bpmn2:association>
</bpmn2:process>
<bpmn2:process id="process_2" name="Imixs AI" processType="Public">
<bpmn2:documentation id="documentation_dDLFbw"/>
@ -1309,10 +1318,10 @@ Possible ImageTypes are:
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Collaboration Diagram">
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_1">
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_1" isHorizontal="true">
<dc:Bounds height="970.0" width="2510.0" x="100.0" y="100.0"/>
<dc:Bounds height="970.0" width="2220.0" x="100.0" y="100.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Lane_2" id="BPMNShape_Lane_2" isHorizontal="true">
<dc:Bounds height="970.0" width="2480.0" x="130.0" y="100.0"/>
<dc:Bounds height="970.0" width="2190.0" x="130.0" y="100.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_7">
<dc:Bounds height="50.0" width="110.0" x="0.0" y="0.0"/>
@ -1321,9 +1330,9 @@ Possible ImageTypes are:
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_2" id="BPMNShape_IntermediateCatchEvent_2">
<dc:Bounds height="36.0" width="36.0" x="477.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="297.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_5" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="452.0" y="569.0"/>
<dc:Bounds height="20.0" width="100.0" x="272.0" y="569.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_StartEvent_1">
@ -1333,343 +1342,335 @@ Possible ImageTypes are:
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_2">
<dc:Bounds height="50.0" width="110.0" x="560.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="390.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_3" id="BPMNShape_IntermediateCatchEvent_3">
<dc:Bounds height="36.0" width="36.0" x="727.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="547.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_14" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="698.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="518.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_4" id="BPMNShape_Task_4">
<dc:Bounds height="50.0" width="110.0" x="2110.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="1920.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_1" id="BPMNShape_EndEvent_1">
<dc:Bounds height="36.0" width="36.0" x="2297.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="2117.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_26" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="2266.0" y="569.0"/>
<dc:Bounds height="20.0" width="100.0" x="2086.0" y="569.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="BoundaryEvent_1" id="BPMNShape_BoundaryEvent_1">
<dc:Bounds height="36.0" width="36.0" x="647.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="477.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_11" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="615.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="445.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="TextAnnotation_1" id="BPMNShape_TextAnnotation_1">
<dc:Bounds height="321.0" width="541.0" x="360.0" y="730.0"/>
<dc:Bounds height="321.0" width="541.0" x="170.0" y="730.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_UIvZkA" id="BPMNShape_OyWydw">
<dc:Bounds height="50.0" width="35.0" x="780.0" y="640.0"/>
<dc:Bounds height="50.0" width="35.0" x="1450.0" y="710.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_uBpUdg">
<dc:Bounds height="20.0" width="100.0" x="747.5" y="695.0"/>
<dc:Bounds height="20.0" width="100.0" x="1417.5" y="765.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_0ossfw" id="BPMNShape_9TVBWQ">
<dc:Bounds height="50.0" width="110.0" x="310.0" y="520.0"/>
<bpmndi:BPMNShape bpmnElement="dataObject_BbVs7w" id="BPMNShape_Y0zosA">
<dc:Bounds height="50.0" width="35.0" x="1724.0" y="686.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_Qcfy9Q">
<dc:Bounds height="20.0" width="100.0" x="1691.5" y="741.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_12" id="BPMNEdge_SequenceFlow_12" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_1">
<di:waypoint x="2220.0" y="545.0"/>
<di:waypoint x="2297.0" y="545.0"/>
<di:waypoint x="2030.0" y="545.0"/>
<di:waypoint x="2117.0" y="545.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_27"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_2" id="BPMNEdge_SequenceFlow_2" sourceElement="BPMNShape_BoundaryEvent_1" targetElement="BPMNShape_IntermediateCatchEvent_3">
<di:waypoint x="683.0" y="545.0"/>
<di:waypoint x="727.0" y="545.0"/>
<di:waypoint x="513.0" y="545.0"/>
<di:waypoint x="547.0" y="545.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_20"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_FS1r0Q" id="BPMNShape_Cn1HMQ">
<dc:Bounds height="50.0" width="35.0" x="350.0" y="410.0"/>
<dc:Bounds height="50.0" width="35.0" x="340.0" y="420.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_he9OHg">
<dc:Bounds height="20.0" width="100.0" x="317.5" y="465.0"/>
<dc:Bounds height="20.0" width="100.0" x="307.5" y="475.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_uB6BGQ" id="BPMNShape_027JKQ">
<dc:Bounds height="50.0" width="110.0" x="920.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="740.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="textAnnotation_CtU05A" id="BPMNShape_b8pQXg">
<dc:Bounds height="107.0" width="403.0" x="190.0" y="190.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_fRPOrw" id="BPMNEdge_MS80cw" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_9TVBWQ">
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_fRPOrw" id="BPMNEdge_MS80cw" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_IntermediateCatchEvent_2">
<di:waypoint x="243.0" y="545.0"/>
<di:waypoint x="310.0" y="545.0"/>
<di:waypoint x="297.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_4gpPgw" id="BPMNEdge_ZiIsnA" sourceElement="BPMNShape_IntermediateCatchEvent_2" targetElement="BPMNShape_Task_2">
<di:waypoint x="513.0" y="545.0"/>
<di:waypoint x="560.0" y="545.0"/>
<di:waypoint x="333.0" y="545.0"/>
<di:waypoint x="390.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_VlPVJg" id="BPMNEdge_RLNCCQ" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_PyGqlg">
<di:waypoint x="763.0" y="545.0"/>
<di:waypoint x="820.0" y="545.0"/>
<di:waypoint x="583.0" y="545.0"/>
<di:waypoint x="630.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_hnK1FQ" id="BPMNEdge_d0BSMg" sourceElement="BPMNShape_Cn1HMQ" targetElement="BPMNShape_9TVBWQ">
<di:waypoint x="368.0" y="460.0"/>
<di:waypoint x="368.0" y="490.0"/>
<di:waypoint x="365.0" y="490.0"/>
<di:waypoint x="365.0" y="520.0"/>
<bpmndi:BPMNEdge bpmnElement="association_hnK1FQ" id="BPMNEdge_d0BSMg" sourceElement="BPMNShape_Cn1HMQ" targetElement="BPMNShape_Task_2">
<di:waypoint x="375.0" y="447.0"/>
<di:waypoint x="423.0" y="447.0"/>
<di:waypoint x="423.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="task_PsBytg" id="BPMNShape_AJWuJw">
<dc:Bounds height="50.0" width="110.0" x="1290.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="1100.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_Zxhr0w" id="BPMNShape_tDdvzQ">
<dc:Bounds height="36.0" width="36.0" x="1777.0" y="447.0"/>
<dc:Bounds height="36.0" width="36.0" x="1597.0" y="447.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_n8dGow">
<dc:Bounds height="20.0" width="100.0" x="1745.0" y="486.0"/>
<dc:Bounds height="20.0" width="100.0" x="1565.0" y="486.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_vVKXIg" id="BPMNShape_xQVfDw">
<dc:Bounds height="50.0" width="35.0" x="2150.0" y="410.0"/>
<dc:Bounds height="50.0" width="35.0" x="1960.0" y="410.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_UK80dg">
<dc:Bounds height="20.0" width="100.0" x="2117.5" y="465.0"/>
<dc:Bounds height="20.0" width="100.0" x="1927.5" y="465.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_NqDnFA" id="BPMNEdge_Hu80mg" sourceElement="BPMNShape_xQVfDw" targetElement="BPMNShape_Task_4">
<di:waypoint x="2168.0" y="460.0"/>
<di:waypoint x="2168.0" y="490.0"/>
<di:waypoint x="2165.0" y="490.0"/>
<di:waypoint x="2165.0" y="520.0"/>
<di:waypoint x="1978.0" y="460.0"/>
<di:waypoint x="1978.0" y="491.0"/>
<di:waypoint x="1969.0" y="491.0"/>
<di:waypoint x="1969.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_yQLmNA" id="BPMNShape_sGRa6w">
<dc:Bounds height="36.0" width="36.0" x="1717.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1537.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_csHjuw">
<dc:Bounds height="20.0" width="100.0" x="1688.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1508.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_0YaQ2w" id="BPMNShape_bynHqw">
<dc:Bounds height="50.0" width="110.0" x="1540.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="1350.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_YMtfiw" id="BPMNEdge_aaVXOw" sourceElement="BPMNShape_sGRa6w" targetElement="BPMNShape_3dBYIA">
<di:waypoint x="1753.0" y="545.0"/>
<di:waypoint x="1860.0" y="545.0"/>
<di:waypoint x="1573.0" y="545.0"/>
<di:waypoint x="1680.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_HHM58Q" id="BPMNShape_hIerPQ">
<dc:Bounds height="50.0" width="35.0" x="1720.0" y="620.0"/>
<dc:Bounds height="50.0" width="35.0" x="1520.0" y="620.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_QgYnNw">
<dc:Bounds height="20.0" width="100.0" x="1692.5" y="676.0"/>
<dc:Bounds height="20.0" width="100.0" x="1492.5" y="676.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_Xrb1Cg" id="BPMNEdge_fjQJbw" sourceElement="BPMNShape_sGRa6w" targetElement="BPMNShape_hIerPQ">
<di:waypoint x="1735.0" y="563.0"/>
<di:waypoint x="1735.0" y="592.0"/>
<di:waypoint x="1738.0" y="592.0"/>
<di:waypoint x="1738.0" y="620.0"/>
<di:waypoint x="1555.0" y="563.0"/>
<di:waypoint x="1555.0" y="592.0"/>
<di:waypoint x="1538.0" y="592.0"/>
<di:waypoint x="1538.0" y="620.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_xOeBKg" id="BPMNShape_nEe3Fw">
<dc:Bounds height="36.0" width="36.0" x="1977.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1797.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_NaFTwg">
<dc:Bounds height="20.0" width="100.0" x="1948.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1768.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gXJm0w" id="BPMNEdge_bgxhaA" sourceElement="BPMNShape_nEe3Fw" targetElement="BPMNShape_Task_4">
<di:waypoint x="2013.0" y="545.0"/>
<di:waypoint x="2110.0" y="545.0"/>
<di:waypoint x="1833.0" y="545.0"/>
<di:waypoint x="1920.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_pDFoXg" id="BPMNShape_g0M0zg">
<dc:Bounds height="36.0" width="36.0" x="1087.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="907.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_j0UwmA">
<dc:Bounds height="20.0" width="100.0" x="1060.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="880.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_ZhBiZg" id="BPMNShape_z0cKCQ">
<dc:Bounds height="50.0" width="35.0" x="1080.0" y="620.0"/>
<dc:Bounds height="50.0" width="35.0" x="890.0" y="620.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_YDv9UQ">
<dc:Bounds height="20.0" width="100.0" x="1047.5" y="675.0"/>
<dc:Bounds height="20.0" width="100.0" x="857.5" y="675.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_zuMlDA" id="BPMNEdge_Lx0Sxw" sourceElement="BPMNShape_z0cKCQ" targetElement="BPMNShape_g0M0zg">
<di:waypoint x="1098.0" y="620.0"/>
<di:waypoint x="1098.0" y="592.0"/>
<di:waypoint x="1105.0" y="592.0"/>
<di:waypoint x="1105.0" y="563.0"/>
<di:waypoint x="908.0" y="620.0"/>
<di:waypoint x="908.0" y="592.0"/>
<di:waypoint x="927.0" y="592.0"/>
<di:waypoint x="927.0" y="563.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_naZnAA" id="BPMNEdge_p0VSbQ" sourceElement="BPMNShape_g0M0zg" targetElement="BPMNShape_UxYL0A">
<di:waypoint x="1123.0" y="545.0"/>
<di:waypoint x="1170.0" y="545.0"/>
<di:waypoint x="943.0" y="545.0"/>
<di:waypoint x="980.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_4DNGzg" id="BPMNShape_JQcpbg">
<dc:Bounds height="36.0" width="36.0" x="1457.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1277.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_V5YzNw">
<dc:Bounds height="20.0" width="100.0" x="1428.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1248.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_A62nqQ" id="BPMNEdge_l84nPQ" sourceElement="BPMNShape_JQcpbg" targetElement="BPMNShape_bynHqw">
<di:waypoint x="1493.0" y="545.0"/>
<di:waypoint x="1540.0" y="545.0"/>
<di:waypoint x="1313.0" y="545.0"/>
<di:waypoint x="1350.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_KPUiiw" id="BPMNShape_PoxSHA">
<dc:Bounds height="50.0" width="35.0" x="1450.0" y="620.0"/>
<dc:Bounds height="50.0" width="35.0" x="1260.0" y="620.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_pIkcsA">
<dc:Bounds height="20.0" width="100.0" x="1417.5" y="675.0"/>
<dc:Bounds height="20.0" width="100.0" x="1227.5" y="675.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_IKW0SQ" id="BPMNEdge_yt0pwA" sourceElement="BPMNShape_PoxSHA" targetElement="BPMNShape_JQcpbg">
<di:waypoint x="1468.0" y="620.0"/>
<di:waypoint x="1468.0" y="592.0"/>
<di:waypoint x="1475.0" y="592.0"/>
<di:waypoint x="1475.0" y="563.0"/>
<di:waypoint x="1278.0" y="620.0"/>
<di:waypoint x="1278.0" y="592.0"/>
<di:waypoint x="1295.0" y="592.0"/>
<di:waypoint x="1295.0" y="563.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_wmNwPA" id="BPMNShape_miMI9A">
<dc:Bounds height="36.0" width="36.0" x="1867.0" y="447.0"/>
<dc:Bounds height="36.0" width="36.0" x="1687.0" y="447.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_g8YExg">
<dc:Bounds height="20.0" width="100.0" x="1834.0" y="488.0"/>
<dc:Bounds height="20.0" width="100.0" x="1654.0" y="488.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_tFxV0w" id="BPMNShape_gfaqCg">
<dc:Bounds height="36.0" width="36.0" x="1577.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="1387.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_m00hIA">
<dc:Bounds height="20.0" width="100.0" x="1545.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="1355.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_88sCAA" id="BPMNShape_0FB0cg">
<dc:Bounds height="36.0" width="36.0" x="1007.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="827.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_OSIhZg">
<dc:Bounds height="20.0" width="100.0" x="975.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="795.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_T901Jg" id="BPMNShape_Jc5h4g">
<dc:Bounds height="36.0" width="36.0" x="1377.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1187.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_Y0hU4w">
<dc:Bounds height="20.0" width="100.0" x="1345.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1155.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_PgyOMw" id="BPMNEdge_kptDVQ" sourceElement="BPMNShape_0FB0cg" targetElement="BPMNShape_g0M0zg">
<di:waypoint x="1043.0" y="545.0"/>
<di:waypoint x="1087.0" y="545.0"/>
<di:waypoint x="863.0" y="545.0"/>
<di:waypoint x="907.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_Di4BQA" id="BPMNEdge_07rOoQ" sourceElement="BPMNShape_Jc5h4g" targetElement="BPMNShape_JQcpbg">
<di:waypoint x="1413.0" y="545.0"/>
<di:waypoint x="1457.0" y="545.0"/>
<di:waypoint x="1223.0" y="545.0"/>
<di:waypoint x="1277.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_7rbeVA" id="BPMNShape_ShOR1w">
<dc:Bounds height="36.0" width="36.0" x="1627.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1437.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_8q5sXA">
<dc:Bounds height="20.0" width="100.0" x="1585.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1405.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_PWXjog" id="BPMNEdge_0u97cA" sourceElement="BPMNShape_ShOR1w" targetElement="BPMNShape_sGRa6w">
<di:waypoint x="1663.0" y="545.0"/>
<di:waypoint x="1717.0" y="545.0"/>
<di:waypoint x="1473.0" y="545.0"/>
<di:waypoint x="1537.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="gateway_qDAhHw" id="BPMNShape_UxYL0A">
<dc:Bounds height="50.0" width="50.0" x="1170.0" y="520.0"/>
<dc:Bounds height="50.0" width="50.0" x="980.0" y="520.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_DNxqOQ">
<dc:Bounds height="20.0" width="100.0" x="1145.0" y="573.0"/>
<dc:Bounds height="20.0" width="100.0" x="955.0" y="573.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_9mJrhQ" id="BPMNShape_JG1UQQ">
<dc:Bounds height="36.0" width="36.0" x="1977.0" y="407.0"/>
<dc:Bounds height="36.0" width="36.0" x="1797.0" y="407.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_2BxNjg">
<dc:Bounds height="20.0" width="100.0" x="1948.5" y="446.0"/>
<dc:Bounds height="20.0" width="100.0" x="1768.5" y="446.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_tcjWAA" id="BPMNEdge_fIE5pg" sourceElement="BPMNShape_UxYL0A" targetElement="BPMNShape_JG1UQQ">
<di:waypoint x="1189.0" y="526.0"/>
<di:waypoint x="1189.0" y="425.0"/>
<di:waypoint x="1977.0" y="425.0"/>
<di:waypoint x="1004.0" y="521.0"/>
<di:waypoint x="1004.0" y="425.0"/>
<di:waypoint x="1657.0" y="425.0"/>
<di:waypoint x="1797.0" y="425.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gpPDLg" id="BPMNEdge_oi9YWw" sourceElement="BPMNShape_JG1UQQ" targetElement="BPMNShape_nEe3Fw">
<di:waypoint x="1995.0" y="443.0"/>
<di:waypoint x="1995.0" y="527.0"/>
<di:waypoint x="1815.0" y="443.0"/>
<di:waypoint x="1815.0" y="527.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_I8o4DA" id="BPMNEdge_kd3F1g" sourceElement="BPMNShape_UxYL0A" targetElement="BPMNShape_AJWuJw">
<di:waypoint x="1220.0" y="545.0"/>
<di:waypoint x="1290.0" y="545.0"/>
<di:waypoint x="1030.0" y="545.0"/>
<di:waypoint x="1100.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="gateway_gd9zQQ" id="BPMNShape_PyGqlg">
<dc:Bounds height="50.0" width="50.0" x="820.0" y="520.0"/>
<dc:Bounds height="50.0" width="50.0" x="630.0" y="520.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_B6j38A">
<dc:Bounds height="20.0" width="100.0" x="795.0" y="573.0"/>
<dc:Bounds height="20.0" width="100.0" x="605.0" y="573.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_bh4DIw" id="BPMNEdge_cjFGmA" sourceElement="BPMNShape_PyGqlg" targetElement="BPMNShape_027JKQ">
<di:waypoint x="870.0" y="545.0"/>
<di:waypoint x="920.0" y="545.0"/>
<di:waypoint x="680.0" y="545.0"/>
<di:waypoint x="740.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_d0zSHA" id="BPMNEdge_YVrWMA" sourceElement="BPMNShape_PyGqlg" targetElement="BPMNShape_JG1UQQ">
<di:waypoint x="845.0" y="520.0"/>
<di:waypoint x="845.0" y="374.0"/>
<di:waypoint x="1995.0" y="374.0"/>
<di:waypoint x="1995.0" y="407.0"/>
<di:waypoint x="655.0" y="520.0"/>
<di:waypoint x="655.0" y="374.0"/>
<di:waypoint x="1815.0" y="374.0"/>
<di:waypoint x="1815.0" y="407.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_w5HwVg" id="BPMNEdge_ia3uKg" sourceElement="BPMNShape_OyWydw" targetElement="BPMNShape_Task_2">
<di:waypoint x="780.0" y="665.0"/>
<di:waypoint x="661.0" y="665.0"/>
<di:waypoint x="661.0" y="570.0"/>
<bpmndi:BPMNEdge bpmnElement="association_w5HwVg" id="BPMNEdge_ia3uKg" sourceElement="BPMNShape_OyWydw" targetElement="BPMNShape_bynHqw">
<di:waypoint x="1468.0" y="710.0"/>
<di:waypoint x="1468.0" y="650.0"/>
<di:waypoint x="1405.0" y="650.0"/>
<di:waypoint x="1405.0" y="570.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="gateway_MgL04w" id="BPMNShape_3dBYIA">
<dc:Bounds height="50.0" width="50.0" x="1860.0" y="520.0"/>
<dc:Bounds height="50.0" width="50.0" x="1680.0" y="520.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_RW5mkw">
<dc:Bounds height="20.0" width="100.0" x="1845.0" y="573.0"/>
<dc:Bounds height="20.0" width="100.0" x="1655.0" y="573.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_eccehA" id="BPMNEdge_iW26sQ" sourceElement="BPMNShape_3dBYIA" targetElement="BPMNShape_nEe3Fw">
<di:waypoint x="1910.0" y="545.0"/>
<di:waypoint x="1977.0" y="545.0"/>
<di:waypoint x="1730.0" y="545.0"/>
<di:waypoint x="1797.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_3YcMGQ" id="BPMNEdge_15lqUQ" sourceElement="BPMNShape_tDdvzQ" targetElement="BPMNShape_miMI9A">
<di:waypoint x="1813.0" y="465.0"/>
<di:waypoint x="1867.0" y="465.0"/>
<di:waypoint x="1633.0" y="465.0"/>
<di:waypoint x="1687.0" y="465.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_p0asUQ" id="BPMNEdge_RDBP5A" sourceElement="BPMNShape_miMI9A" targetElement="BPMNShape_3dBYIA">
<di:waypoint x="1885.0" y="483.0"/>
<di:waypoint x="1885.0" y="520.0"/>
<di:waypoint x="1705.0" y="483.0"/>
<di:waypoint x="1705.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_DdWK6A" id="BPMNEdge_0id0Ug" sourceElement="BPMNShape_bynHqw" targetElement="BPMNShape_gfaqCg">
<di:waypoint x="1595.0" y="570.0"/>
<di:waypoint x="1595.0" y="627.0"/>
<di:waypoint x="1405.0" y="570.0"/>
<di:waypoint x="1405.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_VEvZRQ" id="BPMNShape_n6wDrA">
<dc:Bounds height="36.0" width="36.0" x="1327.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="1137.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_sbsk8Q">
<dc:Bounds height="20.0" width="100.0" x="1295.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="1105.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_KKWo0w" id="BPMNEdge_1nWehg" sourceElement="BPMNShape_AJWuJw" targetElement="BPMNShape_n6wDrA">
<di:waypoint x="1345.0" y="570.0"/>
<di:waypoint x="1345.0" y="627.0"/>
<di:waypoint x="1155.0" y="570.0"/>
<di:waypoint x="1155.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_Xk1mPA" id="BPMNShape_KxJPww">
<dc:Bounds height="36.0" width="36.0" x="947.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="777.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_5QL8XA">
<dc:Bounds height="20.0" width="100.0" x="915.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="745.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ofQKHg" id="BPMNEdge_7aqcbA" sourceElement="BPMNShape_027JKQ" targetElement="BPMNShape_KxJPww">
<di:waypoint x="975.0" y="570.0"/>
<di:waypoint x="975.0" y="599.0"/>
<di:waypoint x="965.0" y="599.0"/>
<di:waypoint x="965.0" y="627.0"/>
<di:waypoint x="795.0" y="570.0"/>
<di:waypoint x="795.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_a1P5WQ" id="BPMNShape_PPgTzA">
<dc:Bounds height="36.0" width="36.0" x="597.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="427.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_h9IxUg">
<dc:Bounds height="20.0" width="100.0" x="565.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="395.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_CbkmwA" id="BPMNEdge_9uuZpA" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_PPgTzA">
<di:waypoint x="615.0" y="570.0"/>
<di:waypoint x="615.0" y="627.0"/>
<di:waypoint x="445.0" y="570.0"/>
<di:waypoint x="445.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_Uc6nuQ" id="BPMNEdge_j0l7hQ" sourceElement="BPMNShape_AJWuJw" targetElement="BPMNShape_OyWydw">
<di:waypoint x="1312.0" y="570.0"/>
<di:waypoint x="1312.0" y="712.0"/>
<di:waypoint x="798.0" y="712.0"/>
<di:waypoint x="798.0" y="690.0"/>
<di:waypoint x="1110.0" y="570.0"/>
<di:waypoint x="1110.0" y="735.0"/>
<di:waypoint x="1450.0" y="735.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_ApEaCQ" id="BPMNEdge_Sz93tQ" sourceElement="BPMNShape_027JKQ" targetElement="BPMNShape_OyWydw">
<di:waypoint x="945.0" y="570.0"/>
<di:waypoint x="945.0" y="665.0"/>
<di:waypoint x="815.0" y="665.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ShggfA" id="BPMNEdge_zMQtIQ" sourceElement="BPMNShape_9TVBWQ" targetElement="BPMNShape_IntermediateCatchEvent_2">
<di:waypoint x="420.0" y="545.0"/>
<di:waypoint x="477.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_gxPFSg" id="BPMNEdge_WaemZQ" sourceElement="BPMNShape_OyWydw" targetElement="BPMNShape_bynHqw">
<di:waypoint x="798.0" y="690.0"/>
<di:waypoint x="798.0" y="714.0"/>
<di:waypoint x="1595.0" y="714.0"/>
<di:waypoint x="1595.0" y="570.0"/>
<di:waypoint x="766.0" y="570.0"/>
<di:waypoint x="766.0" y="800.0"/>
<di:waypoint x="1468.0" y="800.0"/>
<di:waypoint x="1468.0" y="760.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">

View file

@ -1,5 +0,0 @@
>\n <invoice.currency>...</invoice.currency>\n <cdtr.iban>...</cdtr.iban>\n <cdtr.bic>...</cdtr.bic>\n <invoice.period>...</invoice.period>\n <invoice.positions>...</invoice.positions>\n</data>\n\nField mapping:\n- document.company (text): Company\n- document.type (text): Document Type\n- document.language (text): Language\n- cdtr.name (text): Supplier\n- invoice.number (text): Invoice Number\n- invoice.date (date, format YYYY-MM-DD): Invoice Date\n- invoice.duedate (date, format YYYY-MM-DD): Due Date\n- invoice.total (text): Invoice Total\n- invoice.currency (text): Currency\n- cdtr.iban (text): IBAN\n- cdtr.bic (text): BIC\n- invoice.period (text): Posting period\n- invoice.positions (text): Reference Number\n\nOutput only the XML object above! Do not add explanations or comments, and do not create any XML tags other than those shown. The example values (e.g. \"...\", \"2024-12-31\", \"1234.00\") only illustrate the expected format - if you don't have data for a field, leave the corresponding tag empty.\n\n\nNote: \n- The Reference Number in the format [2 letters][3 letters][4-digit booking period YYMM][3-digit sequence number] ==> \"invoice.positions\"\n- The posting period is the period of the invoice date [YYYYMM] ==> \"invoice.period\"\n\n\n\n\n"
},
{
"role": "user",
"content":"### **Invoice Summary**\n\n#### **1. Vendor Information**\n- **Company Name:** Maersk A/S\n- **Agent for Carrier:** Maersk Deutschland A/S & Co. KG\n- **Address:**\n - Maersk A/S: Esplanaden 50, 1263 Copenhagen K, Denmark\n - Maersk Deutschland A/S & Co. KG: Johanniswall 7, 20095 Hamburg, Germany\n- **Tax ID:** DK53139655\n- **Commercial Register No.:** 32345794\n- **Contact:** Devi Ravichandran\n\n---\n\n#### **2. General Billing Data**\n- **Invoice Type:** Export Invoice\n- **Invoice Number:** 7554697016\n- **Invoice Date:** 2026-08-11\n- **Due Date:** 2026-09-02\n- **Payment Terms:** 21 Days Net\n- **Customer Code:** 10307608\n- **Customer Address:** Alexander Global Logistics GmbH, 2-6 Museumstr., 28195 Bremen, Germany\n- **Vessel/Voyage Reference:** MAERSK MONTE LINZOR/632S\n- **Sailing Date:** 2026-08-12\n- **Arrival Date:** 2026-09-03\n- **Port of Loading:** Bremerhaven, DE\n- **Port of Discharge:** Cartagena, CO\n- **Place of Delivery:** Cartagena, CO\n- **Bill of Lading:** 274378263\n- **Product ID:** MAERSK SPOT\n- **Price Calculation Date (PCD):** 2026-07-15\n\n---\n\n#### **3. Invoice Total Information**\n- **Total Net Amount (EUR):** 1,741.66\n- **Total Taxes (EUR):** 0.00\n- **Total Payable Amount (EUR):** 1,741.66\n- **Total Net Amount (DKK):** 13,181.58 *(Tax specification for reporting only)*\n\n---\n\n#### **4. Payment Summary (Including Bank Data)**\n- **Payment Reference:** 7554697016 / 10307608\n- **Payment Instructions:** Pay without deduction\n\n**EUR Payments:**\n- **Bank:** BNP Paribas\n- **Account No.:** 8027000011\n- **IBAN:** NL06BNPA8027000011\n- **SWIFT/BIC:** BNPANL2A\n\n**US