ksef adapter added

This commit is contained in:
Ralph Soika 2025-11-17 16:49:58 +01:00
parent 7b421e0a37
commit b986f8615a
10 changed files with 695 additions and 700 deletions

View file

@ -315,6 +315,13 @@
<scope>compile</scope>
</dependency>
<!-- E-Invoice -->
<dependency>
<groupId>org.imixs.util</groupId>
<artifactId>imixs-e-invoice</artifactId>
<version>${org.imixs.e-invoice.version}</version>
</dependency>
<!-- xsl 2.0 support for Reporting / Chart Diagrams -->
<dependency>
<groupId>net.sf.saxon</groupId>

View file

@ -6,17 +6,15 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.transform.TransformerException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
@ -39,6 +37,7 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.util.XMLParser;
import com.alexanderlogistics.BusinessPartnerService;
import com.alexanderlogistics.InvoiceUtil;
import jakarta.inject.Inject;
@ -100,6 +99,9 @@ public class EInvoiceConverterAdapter implements SignalAdapter {
@Inject
SnapshotService snapshotService;
@Inject
BusinessPartnerService businessPartnerService;
/**
* This method
*
@ -126,12 +128,21 @@ public class EInvoiceConverterAdapter implements SignalAdapter {
logger.info("│ ├── Source File: " + pdfFileData.getName());
updateEInvoice(xmlFileData, workitem);
// append document
logger.info("│ ├── append new e-invoice");
workitem.addFileData(xmlFileData);
// Embedd XML.....
logger.info("│ ├── embed e-invoice into PDF");
FileData eInvoice = embeddXML(pdfFileData, xmlFileData);
workitem.removeFile(pdfFileData.getName());
// set new pdf file...
workitem.addFileData(eInvoice);
} catch (PluginException e) {
throw new AdapterException(e);
// throw new AdapterException(
// EInvoiceConverterAdapter.class.getSimpleName(), e.getErrorCode(),
// e.getMessage());
}
return workitem;
@ -241,7 +252,6 @@ public class EInvoiceConverterAdapter implements SignalAdapter {
* @param workitem
* @throws PluginException
*/
@SuppressWarnings("unchecked")
private void updateEInvoice(FileData fileDataXMLTemplate, ItemCollection workitem) throws PluginException {
try {
@ -250,51 +260,46 @@ public class EInvoiceConverterAdapter implements SignalAdapter {
model.setId(workitem.getItemValueString("invoice.number"));
// Update Rechnungssummen...
if (workitem.getItemValueDouble("invoice.vat.rate") > 0) {
if (workitem.getItemValueDouble("invoice.total.tax") > 0) {
// wir haben eine Steuer!
model.setTaxTotalAmount(InvoiceUtil.round(workitem.getItemValueDouble("invoice.amount.total")
- workitem.getItemValueDouble("invoice.amount.net")));
model.setTaxRate(workitem.getItemValueDouble("invoice.vat.rate"));
model.setTaxTotalAmount(InvoiceUtil.round(workitem.getItemValueDouble("invoice.total")
- workitem.getItemValueDouble("invoice.total.net")));
model.setTaxRate(workitem.getItemValueDouble("invoice.total.tax"));
}
// // Update Invoice Items
// List<ItemCollection> invoiceItems = explodeChildList(workitem);
// double lineTotalAmount = 0.00;
// for (ItemCollection invoiceItem : invoiceItems) {
// TradeLineItem tradeLineItem = buildTradeLineItem(invoiceItem);
// model.setTradeLineItem(tradeLineItem);
// lineTotalAmount = lineTotalAmount + tradeLineItem.getTotal();
// }
// Update Invoice Items
List<ItemCollection> invoiceItems = InvoiceUtil.explodeChildList(workitem, "_childitems");
double lineTotalAmount = 0.00;
for (ItemCollection invoiceItem : invoiceItems) {
TradeLineItem tradeLineItem = buildTradeLineItem(invoiceItem);
model.setTradeLineItem(tradeLineItem);
lineTotalAmount = lineTotalAmount + tradeLineItem.getTotal();
}
// // Summenbildung
// model.setNetTotalAmount(workitem.getItemValueDouble("invoice.amount.net"));
// model.setGrandTotalAmount(workitem.getItemValueDouble("invoice.amount.total"));
// model.setIssueDateTime(workitem.getItemValueLocalDate("invoice.date"));
model.setNetTotalAmount(workitem.getItemValueDouble("invoice.total.net"));
model.setGrandTotalAmount(workitem.getItemValueDouble("invoice.total"));
model.setIssueDateTime(workitem.getItemValueLocalDate("invoice.date"));
// // Update Addresses
// TradeParty billingAddress =
// parseAddress(workitem.getItemValue("dbtr.address"), "buyer");
// model.setTradeParty(billingAddress);
// Update Addresses
TradeParty billingAddress = buildAddress(workitem.getItemValueString("partner.id"), "buyer");
model.setTradeParty(billingAddress);
// TradeParty shippingAddress =
// parseAddress(workitem.getItemValue("dbtr.address.shipping"), "ship_to");
// model.setTradeParty(shippingAddress);
TradeParty shippingAddress = buildAddress(workitem.getItemValueString("partner.id"), "ship_to");
model.setTradeParty(shippingAddress);
// References><Reference type="cs">AB230321</Reference>
// model.setOrderReferenceId(workitem.getItemValueString("order.number"));
// // finally update the template file
// fileDataXMLTemplate.setContent(model.getContent());
// finally update the template file
fileDataXMLTemplate.setContent(model.getContent());
} catch (FileNotFoundException | EInvoiceFormatException e) {
} catch (FileNotFoundException | EInvoiceFormatException | TransformerException e) {
throw new PluginException(this.getClass().getName(), DOCUMENT_ERROR, e.getMessage(), e);
}
}
/**
* Parses a list of address lines into a TradeParty object using best-guess
* approach
*/
/**
* Erstellt ein TradeParty Objekt aus einer Liste von Adresszeilen.
*
@ -302,98 +307,28 @@ public class EInvoiceConverterAdapter implements SignalAdapter {
* @param type Der Typ der TradeParty
* @return TradeParty
*/
public static TradeParty parseAddress(List<String> addressLines, String type) {
if (addressLines == null || addressLines.isEmpty()) {
throw new IllegalArgumentException("Address lines cannot be null or empty");
public TradeParty buildAddress(String partnerID, String type) throws PluginException {
if (partnerID == null || partnerID.isEmpty()) {
throw new PluginException(this.getClass().getName(), DOCUMENT_ERROR, "Missing partnerID");
}
ItemCollection businessPartner = businessPartnerService.getBusinessPartnerByID(partnerID);
if (businessPartner == null) {
throw new PluginException(this.getClass().getName(), DOCUMENT_ERROR,
"Business Partner ID '" + partnerID + "' does not exist");
}
TradeParty tradeParty = new TradeParty(type);
// Name ist immer die erste Zeile
tradeParty.setName(addressLines.get(0).trim());
// Letzte Zeile analysieren
String lastLine = addressLines.get(addressLines.size() - 1).trim();
// Prüfen ob die letzte Zeile ein PLZ + Stadt Format hat
if (hasPostcodeAndCity(lastLine)) {
tradeParty.setCountryId("DE");
parsePostcodeAndCity(lastLine, tradeParty);
// Straßenadresse aus den Zeilen zwischen Name und PLZ/Stadt
buildStreetAddress(addressLines.subList(1, addressLines.size() - 1), tradeParty);
} else {
// Wenn die letzte Zeile kein PLZ + Stadt Format hat, dann ist es ein Land
String countryCode = resolveISOCountryCodes(lastLine.toUpperCase());
tradeParty.setCountryId(countryCode);
// Stadt und PLZ sind in der vorletzten Zeile
if (addressLines.size() > 2) {
parsePostcodeAndCity(addressLines.get(addressLines.size() - 2), tradeParty);
// Straßenadresse aus den Zeilen zwischen Name und PLZ/Stadt/Land
buildStreetAddress(addressLines.subList(1, addressLines.size() - 2), tradeParty);
}
}
tradeParty.setName(businessPartner.getItemValueString("partner.name"));
tradeParty.setCountryId(businessPartner.getItemValueString("partner.country"));
tradeParty.setCityName(businessPartner.getItemValueString("partner.city"));
tradeParty.setPostcodeCode(businessPartner.getItemValueString("partner.zip"));
tradeParty.setStreetAddress(businessPartner.getItemValueString("partner.address"));
return tradeParty;
}
/**
* Hilfemethode zum übersetzen von ISO Country codes
*
* @param country
* @return
*/
private static String resolveISOCountryCodes(String country) {
String countryCode = country.toUpperCase().substring(0, 2);
// Bulgarien -> BG
countryCode = countryCode.replace("BU", "BG");
return countryCode;
}
/**
* Baut die Straßenadresse aus den gegebenen Zeilen
*/
private static void buildStreetAddress(List<String> streetLines, TradeParty tradeParty) {
if (streetLines.isEmpty())
return;
StringBuilder streetAddress = new StringBuilder();
for (int i = 0; i < streetLines.size(); i++) {
if (i > 0) {
streetAddress.append(", ");
}
streetAddress.append(streetLines.get(i).trim());
}
tradeParty.setStreetAddress(streetAddress.toString());
}
/**
* Prüft ob eine Zeile PLZ und Stadt enthält.
* Eine PLZ wird als 4-5 stellige Zahl am Anfang der Zeile erkannt.
*/
private static boolean hasPostcodeAndCity(String line) {
String[] parts = line.trim().split("\\s+", 2);
if (parts.length < 2)
return false;
String potentialPostcode = parts[0];
return potentialPostcode.matches("\\d{4,5}");
}
/**
* Analysiert die PLZ und Stadt aus einer Zeile.
*/
private static void parsePostcodeAndCity(String line, TradeParty tradeParty) {
String[] parts = line.trim().split("\\s+", 2);
if (parts.length >= 2) {
tradeParty.setPostcodeCode(parts[0].trim());
tradeParty.setCityName(parts[1].trim());
} else {
tradeParty.setCityName(line.trim());
}
}
/**
* Parses the data list of an invoice line and returns a TradeLineItem object.
* The order of the list items must be exactly!
@ -403,80 +338,17 @@ public class EInvoiceConverterAdapter implements SignalAdapter {
return null;
}
TradeLineItem tradeLineItem = new TradeLineItem(orderItem.getItemValueString("id"));
TradeLineItem tradeLineItem = new TradeLineItem(orderItem.getItemValueString("numpos"));
tradeLineItem.setName(orderItem.getItemValueString("name"));
tradeLineItem.setQuantity(orderItem.getItemValueDouble("quantity"));
tradeLineItem.setNetPrice(orderItem.getItemValueDouble("price"));
tradeLineItem.setTotal(orderItem.getItemValueDouble("total"));
tradeLineItem.setTaxRate(orderItem.getItemValueDouble("vat"));
tradeLineItem.setName(orderItem.getItemValueString("datev.text"));
tradeLineItem.setQuantity(1);
tradeLineItem.setNetPrice(orderItem.getItemValueDouble("datev.umsatz"));
tradeLineItem.setTotal(orderItem.getItemValueDouble("datev.umsatz"));
// tradeLineItem.setTaxRate(orderItem.getItemValueDouble("vat"));
// if (orderItem.hasItem("orderid")) {
// tradeLineItem.setOrderReferenceId(orderItem.getItemValueString("orderid"));
// }
return tradeLineItem;
}
/**
* Generic method to set a item value by a regex
*
* @param text
* @param regex
* @return
*/
@SuppressWarnings("rawtypes")
private void setItemValueByRegex(ItemCollection workitem, String itemName, String content, String regex,
Class itemType) {
String value = getValueByRegex(content, regex);
logger.info(itemName + "=" + value);
if (value.isEmpty()) {
return; // no value found
}
// Parse Double?
if (itemType == Double.class) {
if (value.contains(",")) {
value = value.replace(".", "");
}
value = value.replace(",", ".");
workitem.setItemValue(itemName, Double.parseDouble(value));
} else
// Parse Integer
if (itemType == Integer.class) {
workitem.setItemValue(itemName, Integer.parseInt(value));
} else
// Parse Date
if (itemType == Date.class) {
try {
workitem.setItemValue(itemName, dateFormatter.parse(value));
} catch (ParseException e) {
logger.warning("Date value " + value + " not parsable: " + e.getMessage());
workitem.setItemValue(itemName, value);
}
} else {
workitem.setItemValue(itemName, value);
}
}
/**
* Generic method to extract a text fragment by regex
*
* @param text
* @param regex
* @return
*/
private String getValueByRegex(String text, String regex) {
String result = "";
Pattern datumPattern = Pattern.compile(regex);
Matcher datumMatcher = datumPattern.matcher(text);
if (datumMatcher.find()) {
result = datumMatcher.group(1);
}
return result;
}
/**
* This method loads a text-block for a specified ref and appends the named
* fileData object of this document.

View file

@ -1,28 +1,16 @@
package com.alexanderlogistics.einvoice;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
import javax.xml.transform.TransformerException;
import org.imixs.archive.core.SnapshotService;
import org.imixs.einvoice.EInvoiceFormatException;
import org.imixs.einvoice.EInvoiceModel;
@ -39,6 +27,7 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.util.XMLParser;
import com.alexanderlogistics.BusinessPartnerService;
import com.alexanderlogistics.InvoiceUtil;
import jakarta.inject.Inject;
@ -89,6 +78,9 @@ public class KSeFAdapter implements SignalAdapter {
@Inject
SnapshotService snapshotService;
@Inject
BusinessPartnerService businessPartnerService;
/**
* This method
*
@ -112,116 +104,20 @@ public class KSeFAdapter implements SignalAdapter {
// Load the e-invoice template....
FileData xmlFileData = loadXMLTemplate(workitem, ksefDefinition);
FileData pdfFileData = loadPDF(workitem);
logger.info("│ ├── Source File: " + pdfFileData.getName());
updateEInvoice(xmlFileData, workitem);
// append XML document
logger.info("│ ├── export KSeF e-invoice");
workitem.addFileData(xmlFileData);
if (true)
throw new AdapterException(KSeFAdapter.class.getSimpleName(), CONFIG_ERROR, "NOT YET IMPLEMENTED");
} catch (PluginException e) {
throw new AdapterException(e);
// throw new AdapterException(
// EInvoiceConverterAdapter.class.getSimpleName(), e.getErrorCode(),
// e.getMessage());
}
return workitem;
}
/**
* This helper method tries to find the pdf file matching the item
* 'cargosoft.import.filename'. If not found the method returns the first .pdf
* file form the list of attachments. The method returns null if no pdf file
* exits
*
* @param workitem
* @return the pdf FileData object
* @throws PluginException if not pdf file was found
*/
private FileData loadPDF(ItemCollection workitem) throws PluginException {
FileData pdfFileData = null;
String cargosoftFileName = workitem.getItemValueString("cargosoft.import.filename");
if (!cargosoftFileName.isEmpty()) {
cargosoftFileName = cargosoftFileName.replace(".xml", ".pdf");
// try to load filedata....
pdfFileData = snapshotService.getWorkItemFile(workitem.getUniqueID(), cargosoftFileName);
}
if (pdfFileData == null) {
// take first pdf file available
List<String> fileNames = workitem.getFileNames();
for (String filename : fileNames) {
if (filename.toLowerCase().endsWith(".pdf")) {
pdfFileData = snapshotService.getWorkItemFile(workitem.getUniqueID(), filename);
break;
}
}
}
if (pdfFileData == null) {
throw new PluginException(EInvoiceConverterAdapter.class.getSimpleName(),
DOCUMENT_ERROR,
"DOCUMENT_ERROR: no pdf file found!");
}
return pdfFileData;
}
private FileData embeddXML(FileData pdfFileData, FileData xmlFileData) throws PluginException {
try {
PDDocument document = PDDocument.load(pdfFileData.getContent());
byte[] xmlBytes = xmlFileData.getContent();
// Erstelle einen InputStream aus dem XML Content
InputStream inputStream = new ByteArrayInputStream(xmlBytes);
// Erstelle eine Datei-Spezifikation für die XML
PDComplexFileSpecification fileSpec = new PDComplexFileSpecification();
fileSpec.setFile(xmlFileData.getName());
// Erstelle einen PDEmbeddedFile mit dem InputStream
PDEmbeddedFile embeddedFile = new PDEmbeddedFile(document, inputStream);
embeddedFile.setSubtype("application/xml");
embeddedFile.setSize(xmlBytes.length);
// Schließe den InputStream
inputStream.close();
// Setze den PDEmbeddedFile
fileSpec.setEmbeddedFile(embeddedFile);
// Erstelle einen Map-Eintrag für die eingebettete Datei
Map<String, PDComplexFileSpecification> filesMap = new HashMap<>();
filesMap.put(xmlFileData.getName(), fileSpec);
// Erstelle einen Eingebettete-Dateien-Namensbaum und füge die Datei hinzu
PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();
efTree.setNames(filesMap);
// Erstelle ein Namens-Dictionary und füge den Baum hinzu
PDDocumentNameDictionary names = new PDDocumentNameDictionary(document.getDocumentCatalog());
names.setEmbeddedFiles(efTree);
document.getDocumentCatalog().setNames(names);
// Speichere das PDF-Dokument
ByteArrayOutputStream baos = new ByteArrayOutputStream();
document.save(baos);
byte[] eInvoiceData = baos.toByteArray();
document.close();
baos.close();
FileData eInvoiceFileData = new FileData(pdfFileData.getName(), eInvoiceData, pdfFileData.getContentType(),
pdfFileData.getAttributes());
return eInvoiceFileData;
} catch (IOException e) {
// TODO Auto-generated catch block
throw new PluginException(EInvoiceConverterAdapter.class.getSimpleName(), CONFIG_ERROR,
"Failed to generate e-invoice: " + e.getMessage());
}
}
/**
* THis method updates an e-invoice template with the data stored in the
* workitem.
@ -233,7 +129,6 @@ public class KSeFAdapter implements SignalAdapter {
* @param workitem
* @throws PluginException
*/
@SuppressWarnings("unchecked")
private void updateEInvoice(FileData fileDataXMLTemplate, ItemCollection workitem) throws PluginException {
try {
@ -242,51 +137,46 @@ public class KSeFAdapter implements SignalAdapter {
model.setId(workitem.getItemValueString("invoice.number"));
// Update Rechnungssummen...
if (workitem.getItemValueDouble("invoice.vat.rate") > 0) {
if (workitem.getItemValueDouble("invoice.total.tax") > 0) {
// wir haben eine Steuer!
model.setTaxTotalAmount(InvoiceUtil.round(workitem.getItemValueDouble("invoice.amount.total")
- workitem.getItemValueDouble("invoice.amount.net")));
model.setTaxRate(workitem.getItemValueDouble("invoice.vat.rate"));
model.setTaxTotalAmount(InvoiceUtil.round(workitem.getItemValueDouble("invoice.total")
- workitem.getItemValueDouble("invoice.total.net")));
model.setTaxRate(workitem.getItemValueDouble("invoice.total.tax"));
}
// // Update Invoice Items
// List<ItemCollection> invoiceItems = explodeChildList(workitem);
// double lineTotalAmount = 0.00;
// for (ItemCollection invoiceItem : invoiceItems) {
// TradeLineItem tradeLineItem = buildTradeLineItem(invoiceItem);
// model.setTradeLineItem(tradeLineItem);
// lineTotalAmount = lineTotalAmount + tradeLineItem.getTotal();
// }
// Update Invoice Items
List<ItemCollection> invoiceItems = InvoiceUtil.explodeChildList(workitem, "_childitems");
double lineTotalAmount = 0.00;
for (ItemCollection invoiceItem : invoiceItems) {
TradeLineItem tradeLineItem = buildTradeLineItem(invoiceItem);
model.setTradeLineItem(tradeLineItem);
lineTotalAmount = lineTotalAmount + tradeLineItem.getTotal();
}
// // Summenbildung
// model.setNetTotalAmount(workitem.getItemValueDouble("invoice.amount.net"));
// model.setGrandTotalAmount(workitem.getItemValueDouble("invoice.amount.total"));
// model.setIssueDateTime(workitem.getItemValueLocalDate("invoice.date"));
model.setNetTotalAmount(workitem.getItemValueDouble("invoice.total.net"));
model.setGrandTotalAmount(workitem.getItemValueDouble("invoice.total"));
model.setIssueDateTime(workitem.getItemValueLocalDate("invoice.date"));
// // Update Addresses
// TradeParty billingAddress =
// parseAddress(workitem.getItemValue("dbtr.address"), "buyer");
// model.setTradeParty(billingAddress);
// Update Addresses
TradeParty billingAddress = buildAddress(workitem.getItemValueString("partner.id"), "buyer");
model.setTradeParty(billingAddress);
// TradeParty shippingAddress =
// parseAddress(workitem.getItemValue("dbtr.address.shipping"), "ship_to");
// model.setTradeParty(shippingAddress);
TradeParty shippingAddress = buildAddress(workitem.getItemValueString("partner.id"), "ship_to");
model.setTradeParty(shippingAddress);
// References><Reference type="cs">AB230321</Reference>
// model.setOrderReferenceId(workitem.getItemValueString("order.number"));
// // finally update the template file
// fileDataXMLTemplate.setContent(model.getContent());
// finally update the template file
fileDataXMLTemplate.setContent(model.getContent());
} catch (FileNotFoundException | EInvoiceFormatException e) {
} catch (FileNotFoundException | EInvoiceFormatException | TransformerException e) {
throw new PluginException(this.getClass().getName(), DOCUMENT_ERROR, e.getMessage(), e);
}
}
/**
* Parses a list of address lines into a TradeParty object using best-guess
* approach
*/
/**
* Erstellt ein TradeParty Objekt aus einer Liste von Adresszeilen.
*
@ -294,98 +184,28 @@ public class KSeFAdapter implements SignalAdapter {
* @param type Der Typ der TradeParty
* @return TradeParty
*/
public static TradeParty parseAddress(List<String> addressLines, String type) {
if (addressLines == null || addressLines.isEmpty()) {
throw new IllegalArgumentException("Address lines cannot be null or empty");
public TradeParty buildAddress(String partnerID, String type) throws PluginException {
if (partnerID == null || partnerID.isEmpty()) {
throw new PluginException(this.getClass().getName(), DOCUMENT_ERROR, "Missing partnerID");
}
ItemCollection businessPartner = businessPartnerService.getBusinessPartnerByID(partnerID);
if (businessPartner == null) {
throw new PluginException(this.getClass().getName(), DOCUMENT_ERROR,
"Business Partner ID '" + partnerID + "' does not exist");
}
TradeParty tradeParty = new TradeParty(type);
// Name ist immer die erste Zeile
tradeParty.setName(addressLines.get(0).trim());
// Letzte Zeile analysieren
String lastLine = addressLines.get(addressLines.size() - 1).trim();
// Prüfen ob die letzte Zeile ein PLZ + Stadt Format hat
if (hasPostcodeAndCity(lastLine)) {
tradeParty.setCountryId("DE");
parsePostcodeAndCity(lastLine, tradeParty);
// Straßenadresse aus den Zeilen zwischen Name und PLZ/Stadt
buildStreetAddress(addressLines.subList(1, addressLines.size() - 1), tradeParty);
} else {
// Wenn die letzte Zeile kein PLZ + Stadt Format hat, dann ist es ein Land
String countryCode = resolveISOCountryCodes(lastLine.toUpperCase());
tradeParty.setCountryId(countryCode);
// Stadt und PLZ sind in der vorletzten Zeile
if (addressLines.size() > 2) {
parsePostcodeAndCity(addressLines.get(addressLines.size() - 2), tradeParty);
// Straßenadresse aus den Zeilen zwischen Name und PLZ/Stadt/Land
buildStreetAddress(addressLines.subList(1, addressLines.size() - 2), tradeParty);
}
}
tradeParty.setName(businessPartner.getItemValueString("partner.name"));
tradeParty.setCountryId(businessPartner.getItemValueString("partner.country"));
tradeParty.setCityName(businessPartner.getItemValueString("partner.city"));
tradeParty.setPostcodeCode(businessPartner.getItemValueString("partner.zip"));
tradeParty.setStreetAddress(businessPartner.getItemValueString("partner.address"));
return tradeParty;
}
/**
* Hilfemethode zum übersetzen von ISO Country codes
*
* @param country
* @return
*/
private static String resolveISOCountryCodes(String country) {
String countryCode = country.toUpperCase().substring(0, 2);
// Bulgarien -> BG
countryCode = countryCode.replace("BU", "BG");
return countryCode;
}
/**
* Baut die Straßenadresse aus den gegebenen Zeilen
*/
private static void buildStreetAddress(List<String> streetLines, TradeParty tradeParty) {
if (streetLines.isEmpty())
return;
StringBuilder streetAddress = new StringBuilder();
for (int i = 0; i < streetLines.size(); i++) {
if (i > 0) {
streetAddress.append(", ");
}
streetAddress.append(streetLines.get(i).trim());
}
tradeParty.setStreetAddress(streetAddress.toString());
}
/**
* Prüft ob eine Zeile PLZ und Stadt enthält.
* Eine PLZ wird als 4-5 stellige Zahl am Anfang der Zeile erkannt.
*/
private static boolean hasPostcodeAndCity(String line) {
String[] parts = line.trim().split("\\s+", 2);
if (parts.length < 2)
return false;
String potentialPostcode = parts[0];
return potentialPostcode.matches("\\d{4,5}");
}
/**
* Analysiert die PLZ und Stadt aus einer Zeile.
*/
private static void parsePostcodeAndCity(String line, TradeParty tradeParty) {
String[] parts = line.trim().split("\\s+", 2);
if (parts.length >= 2) {
tradeParty.setPostcodeCode(parts[0].trim());
tradeParty.setCityName(parts[1].trim());
} else {
tradeParty.setCityName(line.trim());
}
}
/**
* Parses the data list of an invoice line and returns a TradeLineItem object.
* The order of the list items must be exactly!
@ -395,80 +215,17 @@ public class KSeFAdapter implements SignalAdapter {
return null;
}
TradeLineItem tradeLineItem = new TradeLineItem(orderItem.getItemValueString("id"));
TradeLineItem tradeLineItem = new TradeLineItem(orderItem.getItemValueString("numpos"));
tradeLineItem.setName(orderItem.getItemValueString("name"));
tradeLineItem.setQuantity(orderItem.getItemValueDouble("quantity"));
tradeLineItem.setNetPrice(orderItem.getItemValueDouble("price"));
tradeLineItem.setTotal(orderItem.getItemValueDouble("total"));
tradeLineItem.setTaxRate(orderItem.getItemValueDouble("vat"));
tradeLineItem.setName(orderItem.getItemValueString("datev.text"));
tradeLineItem.setQuantity(1);
tradeLineItem.setNetPrice(orderItem.getItemValueDouble("datev.umsatz"));
tradeLineItem.setTotal(orderItem.getItemValueDouble("datev.umsatz"));
// tradeLineItem.setTaxRate(orderItem.getItemValueDouble("vat"));
// if (orderItem.hasItem("orderid")) {
// tradeLineItem.setOrderReferenceId(orderItem.getItemValueString("orderid"));
// }
return tradeLineItem;
}
/**
* Generic method to set a item value by a regex
*
* @param text
* @param regex
* @return
*/
@SuppressWarnings("rawtypes")
private void setItemValueByRegex(ItemCollection workitem, String itemName, String content, String regex,
Class itemType) {
String value = getValueByRegex(content, regex);
logger.info(itemName + "=" + value);
if (value.isEmpty()) {
return; // no value found
}
// Parse Double?
if (itemType == Double.class) {
if (value.contains(",")) {
value = value.replace(".", "");
}
value = value.replace(",", ".");
workitem.setItemValue(itemName, Double.parseDouble(value));
} else
// Parse Integer
if (itemType == Integer.class) {
workitem.setItemValue(itemName, Integer.parseInt(value));
} else
// Parse Date
if (itemType == Date.class) {
try {
workitem.setItemValue(itemName, dateFormatter.parse(value));
} catch (ParseException e) {
logger.warning("Date value " + value + " not parsable: " + e.getMessage());
workitem.setItemValue(itemName, value);
}
} else {
workitem.setItemValue(itemName, value);
}
}
/**
* Generic method to extract a text fragment by regex
*
* @param text
* @param regex
* @return
*/
private String getValueByRegex(String text, String regex) {
String result = "";
Pattern datumPattern = Pattern.compile(regex);
Matcher datumMatcher = datumPattern.matcher(text);
if (datumMatcher.find()) {
result = datumMatcher.group(1);
}
return result;
}
/**
* This method loads a text-block for a specified ref and appends the named
* fileData object of this document.
@ -488,7 +245,7 @@ public class KSeFAdapter implements SignalAdapter {
debug = Boolean.parseBoolean(config.getItemValueString("debug"));
} catch (Exception e) {
}
String targetName = "factur-x.xml";
String targetName = "ksef.xml";
// adapt text....
sourceName = workflowService.adaptText(sourceName, workitem);

View file

@ -33,6 +33,7 @@
<org.imixs.adapters.version>3.0.3</org.imixs.adapters.version>
<org.imixs.melman.version>2.1.1-SNAPSHOT</org.imixs.melman.version>
<org.imixs.data.version>1.0.2-SNAPSHOT</org.imixs.data.version>
<org.imixs.e-invoice.version>1.0.3-SNAPSHOT</org.imixs.e-invoice.version>
<microprofile.version>6.0</microprofile.version>
<net.sf.saxon.version>9.9.1-4</net.sf.saxon.version>
<apache.pdfbox.version>2.0.26</apache.pdfbox.version>

Binary file not shown.

Binary file not shown.

View file

@ -17,28 +17,20 @@
<udt:DateTimeString format="102"></udt:DateTimeString>
</ram:IssueDateTime>
<ram:IncludedNote>
<ram:Content>Wir berechnen heute unter Zugrundelegung unserer allgemeinen
Geschäftsbedingungen, die Ihnen bereits
übersendet wurden oder die Sie unter www.mueller-ahlhorn.com nachlesen können, wie
folgt:</ram:Content>
<ram:Content>Payment Instructions:</ram:Content>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Bitte zahlen Sie ab sofort alle Rechnungen auf unser Konto bei der
Landessparkasse zu Oldenburg, BIC
SLZODE22XXX, IBAN DE04 2805 0100 0092 2828 70. Etwaig anfallende Bankspesen gehen zu
Ihren Lasten.</ram:Content>
<ram:Content>Please ensure that the payment reference includes the invoice number, BL or
AWB number, container or shipment number and place of loading and discharge.
The full invoice amount must be transferred without any deductions and all bank charges
must be covered by the sender.
Otherwise, the beneficiarys bank will be unable to process the incoming payment.</ram:Content>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Dr. Dietrich Müller GmbH</ram:Content>
<ram:Content>Alexander Global Logistics</ram:Content>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Geschäftsführer: Dr. Michael Müller </ram:Content>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Amtsgericht Oldenburg HRB 209026</ram:Content>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>info@mueller-ahlhorn.com</ram:Content>
<ram:Content>Numer NIP: PL9552521552</ram:Content>
</ram:IncludedNote>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
@ -46,27 +38,27 @@
<ram:ApplicableHeaderTradeAgreement>
<ram:BuyerReference />
<ram:SellerTradeParty>
<ram:Name>Dr. Dietrich Müller GmbH</ram:Name>
<ram:Name>Alexander Global Logistics</ram:Name>
<ram:DefinedTradeContact>
<ram:PersonName>Müller, Michael</ram:PersonName>
<ram:PersonName></ram:PersonName>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>+4944359710261</ram:CompleteNumber>
<ram:CompleteNumber></ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>info@mueller-ahlhorn.com</ram:URIID>
<ram:URIID></ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>26197</ram:PostcodeCode>
<ram:LineOne>Zeppelinring 18</ram:LineOne>
<ram:CityName>Ahlhorn</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
<ram:PostcodeCode>70-660</ram:PostcodeCode>
<ram:LineOne>Gdanska 36</ram:LineOne>
<ram:CityName>Szczecin</ram:CityName>
<ram:CountryID>PL</ram:CountryID>
</ram:PostalTradeAddress>
<ram:URIUniversalCommunication>
<ram:URIID schemeID="EM">info@mueller-ahlhorn.com</ram:URIID>
<ram:URIID schemeID="EM">info@alexander-logistics.com</ram:URIID>
</ram:URIUniversalCommunication>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">DE295969093</ram:ID>
<ram:ID schemeID="VA">PL9552521552</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
@ -80,10 +72,10 @@
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>30</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<ram:IBANID>DE04 2805 0100 0092 2828 70</ram:IBANID>
<ram:IBANID>PL79116022020000000654306674</ram:IBANID>
</ram:PayeePartyCreditorFinancialAccount>
<ram:PayeeSpecifiedCreditorFinancialInstitution>
<ram:BICID>SLZODE22XXX</ram:BICID>
<ram:BICID>BIGBPLPWXXX</ram:BICID>
</ram:PayeeSpecifiedCreditorFinancialInstitution>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
@ -94,9 +86,7 @@
<ram:RateApplicablePercent>0.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Wir berechnen heute unter Zugrundelegung unserer allgemeinen
Geschäftsbedingungen, die Ihnen bereits
übersendet wurden oder die Sie unter www.mueller-ahlhorn.com nachlesen können.</ram:Description>
<ram:Description></ram:Description>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>0.00</ram:LineTotalAmount>

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<Faktura
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/"
xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/">
<Naglowek>
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-06-05T02:45:33.422866Z</DataWytworzeniaFa>
<SystemInfo>Generator Imixs</SystemInfo>
</Naglowek>
<Podmiot1>
<DaneIdentyfikacyjne>
<NIP>#nip#</NIP>
<Nazwa>Bogusz - Sienkiewicz</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>al. Różycki 7594</AdresL1>
<AdresL2>87-607 Środa Śląska</AdresL2>
</Adres>
<DaneKontaktowe>
<Email>Lucja17@example.net</Email>
<Telefon>86-588-03-53</Telefon>
</DaneKontaktowe>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>3861610227</NIP>
<Nazwa>Błaszczak - Lenart</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>al. Szewczyk 7247</AdresL1>
<AdresL2>84-642 Żelechów</AdresL2>
</Adres>
<DaneKontaktowe>
<Email>Jakubina82@gmail.com</Email>
<Telefon>75-461-31-12</Telefon>
</DaneKontaktowe>
<NrKlienta>KL-2936</NrKlienta>
<JST>2</JST>
<GV>2</GV>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>#invoicing_date#</P_1>
<P_1M>Lidzbark</P_1M>
<P_2>FA/GRQMB-#invoice_number#/05/2025</P_2>
<P_6>2025-07-11</P_6>
<P_13_1>10652.38</P_13_1>
<P_14_1>2450.05</P_14_1>
<P_15>13102.43</P_15>
<Adnotacje>
<P_16>2</P_16>
<P_17>2</P_17>
<P_18>2</P_18>
<P_18A>2</P_18A>
<Zwolnienie>
<P_19N>1</P_19N>
</Zwolnienie>
<NoweSrodkiTransportu>
<P_22N>1</P_22N>
</NoweSrodkiTransportu>
<P_23>2</P_23>
<PMarzy>
<P_PMarzyN>1</P_PMarzyN>
</PMarzy>
</Adnotacje>
<RodzajFaktury>VAT</RodzajFaktury>
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<UU_ID>66465935-48e0-b7d9-ea88-d9d7ff4c6023</UU_ID>
<P_7>Refined Concrete Pants</P_7>
<P_8A>szt.</P_8A>
<P_8B>8</P_8B>
<P_9A>295.81</P_9A>
<P_11>2366.48</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>2</NrWierszaFa>
<UU_ID>16d35141-c43f-98fc-5249-27d7b2845cf7</UU_ID>
<P_7>Sleek Steel Pants</P_7>
<P_8A>szt.</P_8A>
<P_8B>10</P_8B>
<P_9A>402.96</P_9A>
<P_11>4029.60</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>3</NrWierszaFa>
<UU_ID>8647a6b5-f12a-3817-869e-010e4353686a</UU_ID>
<P_7>Incredible Steel Salad</P_7>
<P_8A>szt.</P_8A>
<P_8B>8</P_8B>
<P_9A>11.13</P_9A>
<P_11>89.04</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>4</NrWierszaFa>
<UU_ID>6a9b993d-33c1-eba2-f06c-7d8f22e7430b</UU_ID>
<P_7>Ergonomic Soft Fish</P_7>
<P_8A>szt.</P_8A>
<P_8B>8</P_8B>
<P_9A>34.03</P_9A>
<P_11>272.24</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>5</NrWierszaFa>
<UU_ID>05e42590-9bfb-10c2-a946-fd1641f705e7</UU_ID>
<P_7>Intelligent Frozen Cheese</P_7>
<P_8A>szt.</P_8A>
<P_8B>3</P_8B>
<P_9A>501.86</P_9A>
<P_11>1505.58</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>6</NrWierszaFa>
<UU_ID>dbb7aed5-fedb-96d7-0afd-c3d0c23740a7</UU_ID>
<P_7>Ergonomic Metal Bike</P_7>
<P_8A>szt.</P_8A>
<P_8B>6</P_8B>
<P_9A>398.24</P_9A>
<P_11>2389.44</P_11>
<P_12>23</P_12>
</FaWiersz>
<Platnosc>
<Zaplacono>1</Zaplacono>
<DataZaplaty>2025-07-17</DataZaplaty>
<FormaPlatnosci>7</FormaPlatnosci>
</Platnosc>
</Fa>
</Faktura>

View file

@ -117,6 +117,11 @@ th { font-weight: bold;}
<bpmn2:flowNodeRef>gateway_k00hrA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_AujEAA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_FYxkhQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_7H4Aaw</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_NT60FA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_S9HJ1A</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_qIhyWA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>gateway_utXBiw</bpmn2:flowNodeRef>
</bpmn2:lane>
<bpmn2:lane id="Lane_6" name="Buchhaltung">
<bpmn2:documentation id="documentation_N3gEbw"/>
@ -1400,6 +1405,7 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmn2:documentation id="documentation_ixT4KQ"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_4IITzA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_sO35Dg</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_jpNRMg</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_2BSFNw</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:intermediateCatchEvent id="event_sGMk3g" imixs:activityid="200" name="[create E-Invoice]">
@ -1779,7 +1785,7 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Restart E-Invoicing]]></imixs:value>
<imixs:value><![CDATA[Restart E-Invoicing processing]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
@ -1902,6 +1908,7 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmn2:incoming>sequenceFlow_4IITzA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_UOahyg</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_BaNbmQ</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_ATB00A</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_nrxqhg</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_6VjCnQ</bpmn2:outgoing>
</bpmn2:task>
@ -1928,11 +1935,11 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmn2:conditionExpression id="formalExpression_xuVaxQ" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_AujEAA" name="EINVOICE">
<bpmn2:incoming>sequenceFlow_6VjCnQ</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_0cMadw</bpmn2:incoming>
<bpmn2:linkEventDefinition id="linkEventDefinition_m4W1vg" name="Link Event Definition 5"/>
<bpmn2:documentation id="documentation_L9kG1w"/>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_6VjCnQ" sourceRef="task_iWUeSw" targetRef="event_AujEAA">
<bpmn2:sequenceFlow id="sequenceFlow_6VjCnQ" sourceRef="task_iWUeSw" targetRef="gateway_utXBiw">
<bpmn2:documentation id="documentation_KVoZgg"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_FYxkhQ" imixs:activityid="300" name="[API Error]">
@ -2015,6 +2022,178 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmn2:documentation id="documentation_rMMN9g"/>
<bpmn2:conditionExpression id="formalExpression_T8H5NQ" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_7H4Aaw" imixs:activityid="10" name="Save">
<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_0RzG3g"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
<bpmn2:outgoing>sequenceFlow_ATB00A</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_ATB00A" sourceRef="event_7H4Aaw" targetRef="task_iWUeSw">
<bpmn2:documentation id="documentation_cLX1eQ"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_NT60FA" imixs:activityid="95" name="Restart KSeF">
<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><![CDATA[Restart KSeF processing]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_WdJ7RQ"/>
<bpmn2:incoming>sequenceFlow_VI5qMw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_jpNRMg</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:intermediateCatchEvent id="event_S9HJ1A" name="KSEF">
<bpmn2:outgoing>sequenceFlow_VI5qMw</bpmn2:outgoing>
<bpmn2:linkEventDefinition id="linkEventDefinition_eZUQ9g" name="Link Event Definition 6"/>
<bpmn2:documentation id="documentation_0eiXkg"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_jpNRMg" sourceRef="event_NT60FA" targetRef="task_nKKaIg">
<bpmn2:documentation id="documentation_JcFBXQ"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_VI5qMw" sourceRef="event_S9HJ1A" targetRef="event_NT60FA">
<bpmn2:documentation id="documentation_0NQ21A"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_qIhyWA" name="KSEF">
<bpmn2:incoming>sequenceFlow_sNNdbA</bpmn2:incoming>
<bpmn2:linkEventDefinition id="linkEventDefinition_t13Hkw" name="Link Event Definition 5"/>
<bpmn2:documentation id="documentation_KCHfYg"/>
</bpmn2:intermediateThrowEvent>
<bpmn2:exclusiveGateway gatewayDirection="Diverging" id="gateway_utXBiw" name="">
<bpmn2:documentation id="documentation_U9EeXA"/>
<bpmn2:incoming>sequenceFlow_6VjCnQ</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_0cMadw</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_sNNdbA</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow_0cMadw" sourceRef="gateway_utXBiw" targetRef="event_AujEAA">
<bpmn2:documentation id="documentation_Ua0UGQ"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_sNNdbA" sourceRef="gateway_utXBiw" targetRef="event_qIhyWA">
<bpmn2:documentation id="documentation_xI1BUA"/>
</bpmn2:sequenceFlow>
</bpmn2:process>
<bpmn2:process id="process_2" name="Default Process" processType="Public">
<bpmn2:documentation id="documentation_J67Rkw"/>
@ -2032,27 +2211,27 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<dc:Bounds height="1575.0" width="2236.0" x="120.0" y="150.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Lane_1" id="BPMNShape_Lane_1" isHorizontal="true">
<dc:Bounds height="447.0" width="2206.0" x="150.0" y="150.0"/>
<dc:Bounds height="530.0" width="2206.0" x="150.0" y="150.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Lane_6" id="BPMNShape_Lane_6" isHorizontal="true">
<dc:Bounds height="628.0" width="2206.0" x="150.0" y="597.0"/>
<dc:Bounds height="545.0" width="2206.0" x="150.0" y="680.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_StartEvent_1">
<dc:Bounds height="36.0" width="36.0" x="247.0" y="347.0"/>
<dc:Bounds height="36.0" width="36.0" x="247.0" y="437.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="216.5" y="389.0"/>
<dc:Bounds height="20.0" width="100.0" x="216.5" y="479.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_5000-20" id="BPMNShape_IntermediateCatchEvent_2">
<dc:Bounds height="36.0" width="36.0" x="1167.0" y="867.0"/>
<dc:Bounds height="36.0" width="36.0" x="1167.0" y="917.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_10" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1140.5" y="913.0"/>
<dc:Bounds height="20.0" width="100.0" x="1140.5" y="963.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ExclusiveGateway_1" id="BPMNShape_ExclusiveGateway_1" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="860.0" y="750.0"/>
<dc:Bounds height="50.0" width="50.0" x="860.0" y="800.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_60" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="835.0" y="803.0"/>
<dc:Bounds height="20.0" width="100.0" x="835.0" y="853.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_TextAnnotation_1">
@ -2062,7 +2241,7 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_5">
<dc:Bounds height="50.0" width="110.0" x="1130.0" y="750.0"/>
<dc:Bounds height="50.0" width="110.0" x="1130.0" y="800.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="DataObject_2" id="BPMNShape_DataObject_1">
<dc:Bounds height="50.0" width="35.0" x="513.0" y="655.0"/>
@ -2071,18 +2250,18 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_5" id="BPMNShape_Task_11">
<dc:Bounds height="50.0" width="110.0" x="2010.0" y="850.0"/>
<dc:Bounds height="50.0" width="110.0" x="2010.0" y="900.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_2" id="BPMNShape_EndEvent_2">
<dc:Bounds height="36.0" width="36.0" x="2167.0" y="857.0"/>
<dc:Bounds height="36.0" width="36.0" x="2167.0" y="907.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_110" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="2136.5" y="897.0"/>
<dc:Bounds height="20.0" width="100.0" x="2136.5" y="947.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_6" id="BPMNShape_IntermediateCatchEvent_11">
<dc:Bounds height="36.0" width="36.0" x="357.0" y="347.0"/>
<dc:Bounds height="36.0" width="36.0" x="357.0" y="437.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_57" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="327.0" y="389.0"/>
<dc:Bounds height="20.0" width="100.0" x="327.0" y="479.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_1" id="BPMNShape_Task_3">
@ -2095,15 +2274,15 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EventBasedGateway_1" id="BPMNShape_EventBasedGateway_1" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="1320.0" y="750.0"/>
<dc:Bounds height="50.0" width="50.0" x="1320.0" y="800.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_106" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1295.0" y="803.0"/>
<dc:Bounds height="20.0" width="100.0" x="1295.0" y="853.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_23" id="BPMNShape_IntermediateCatchEvent_28">
<dc:Bounds height="36.0" width="36.0" x="2047.0" y="757.0"/>
<dc:Bounds height="36.0" width="36.0" x="2047.0" y="807.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_115" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="2021.0" y="798.0"/>
<dc:Bounds height="20.0" width="100.0" x="2021.0" y="848.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ExclusiveGateway_3" id="BPMNShape_ExclusiveGateway_3" isMarkerVisible="true">
@ -2113,42 +2292,42 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_17" id="BPMNShape_IntermediateCatchEvent_21">
<dc:Bounds height="36.0" width="36.0" x="1737.0" y="757.0"/>
<dc:Bounds height="36.0" width="36.0" x="1737.0" y="807.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_55" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1712.5" y="796.0"/>
<dc:Bounds height="20.0" width="100.0" x="1712.5" y="846.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_18" id="BPMNShape_IntermediateCatchEvent_23">
<dc:Bounds height="36.0" width="36.0" x="1607.0" y="757.0"/>
<dc:Bounds height="36.0" width="36.0" x="1607.0" y="807.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_80" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1585.5" y="797.0"/>
<dc:Bounds height="20.0" width="100.0" x="1585.5" y="847.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ExclusiveGateway_5" id="BPMNShape_ExclusiveGateway_5" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="1840.0" y="750.0"/>
<dc:Bounds height="50.0" width="50.0" x="1840.0" y="800.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_13" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1815.0" y="803.0"/>
<dc:Bounds height="20.0" width="100.0" x="1815.0" y="853.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_2" id="BPMNShape_IntermediateCatchEvent_4">
<dc:Bounds height="36.0" width="36.0" x="1847.0" y="857.0"/>
<dc:Bounds height="36.0" width="36.0" x="1847.0" y="907.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_16" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1824.0" y="897.0"/>
<dc:Bounds height="20.0" width="100.0" x="1824.0" y="947.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_3" id="BPMNShape_IntermediateCatchEvent_5">
<dc:Bounds height="36.0" width="36.0" x="1917.0" y="757.0"/>
<dc:Bounds height="36.0" width="36.0" x="1917.0" y="807.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_26" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1892.0" y="797.0"/>
<dc:Bounds height="20.0" width="100.0" x="1892.0" y="847.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="TextAnnotation_1" id="BPMNShape_TextAnnotation_2">
<dc:Bounds height="53.0" width="201.0" x="1543.0" y="835.0"/>
<dc:Bounds height="53.0" width="201.0" x="1550.0" y="880.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateThrowEvent_8" id="BPMNShape_IntermediateThrowEvent_8">
<dc:Bounds height="36.0" width="36.0" x="1427.0" y="757.0"/>
<dc:Bounds height="36.0" width="36.0" x="1427.0" y="807.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_41" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1401.5" y="797.0"/>
<dc:Bounds height="20.0" width="100.0" x="1401.5" y="847.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_1" id="BPMNShape_IntermediateCatchEvent_3">
@ -2206,24 +2385,24 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateThrowEvent_11" id="BPMNShape_IntermediateThrowEvent_11">
<dc:Bounds height="36.0" width="36.0" x="1427.0" y="687.0"/>
<dc:Bounds height="36.0" width="36.0" x="1427.0" y="737.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_149">
<dc:Bounds height="20.0" width="100.0" x="1399.5" y="730.0"/>
<dc:Bounds height="20.0" width="100.0" x="1399.5" y="780.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_5" id="BPMNShape_IntermediateCatchEvent_7">
<dc:Bounds height="36.0" width="36.0" x="1327.0" y="957.0"/>
<dc:Bounds height="36.0" width="36.0" x="1327.0" y="1007.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_7">
<dc:Bounds height="20.0" width="100.0" x="1296.5" y="1001.0"/>
<dc:Bounds height="20.0" width="100.0" x="1296.5" y="1051.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_6" id="BPMNShape_Task_1">
<dc:Bounds height="50.0" width="110.0" x="2010.0" y="950.0"/>
<dc:Bounds height="50.0" width="110.0" x="2010.0" y="1000.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_3" id="BPMNShape_EndEvent_3">
<dc:Bounds height="36.0" width="36.0" x="2167.0" y="957.0"/>
<dc:Bounds height="36.0" width="36.0" x="2167.0" y="1007.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_34">
<dc:Bounds height="20.0" width="100.0" x="2135.5" y="1001.0"/>
<dc:Bounds height="20.0" width="100.0" x="2135.5" y="1051.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="participant_Xo4z7A" id="BPMNShape_bLWUbw">
@ -2239,45 +2418,45 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<dc:Bounds height="500.0" width="2206.0" x="150.0" y="1225.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_nKKaIg" id="BPMNShape_ksu2zQ">
<dc:Bounds height="50.0" width="110.0" x="840.0" y="340.0"/>
<dc:Bounds height="50.0" width="110.0" x="840.0" y="430.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_sGMk3g" id="BPMNShape_FQY1bQ">
<dc:Bounds height="36.0" width="36.0" x="647.0" y="347.0"/>
<dc:Bounds height="36.0" width="36.0" x="647.0" y="437.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_KK5ZGg">
<dc:Bounds height="20.0" width="100.0" x="613.0" y="387.0"/>
<dc:Bounds height="20.0" width="100.0" x="613.0" y="477.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_rhD89g" id="BPMNShape_m48YQQ">
<dc:Bounds height="50.0" width="110.0" x="1270.0" y="340.0"/>
<dc:Bounds height="50.0" width="110.0" x="1270.0" y="430.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_chRsuA" id="BPMNShape_0KkpmA">
<dc:Bounds height="36.0" width="36.0" x="997.0" y="347.0"/>
<dc:Bounds height="36.0" width="36.0" x="1007.0" y="437.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_4Dntpw">
<dc:Bounds height="20.0" width="100.0" x="965.0" y="386.0"/>
<dc:Bounds height="20.0" width="100.0" x="975.0" y="476.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_nQBQjw" id="BPMNShape_093C9Q">
<dc:Bounds height="36.0" width="36.0" x="537.0" y="317.0"/>
<dc:Bounds height="36.0" width="36.0" x="537.0" y="397.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_OMsueg">
<dc:Bounds height="20.0" width="100.0" x="505.0" y="356.0"/>
<dc:Bounds height="20.0" width="100.0" x="505.0" y="436.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_0YONsg" id="BPMNShape_PuiuLA">
<dc:Bounds height="36.0" width="36.0" x="887.0" y="317.0"/>
<dc:Bounds height="36.0" width="36.0" x="887.0" y="397.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_wi6IGg">
<dc:Bounds height="20.0" width="100.0" x="855.0" y="356.0"/>
<dc:Bounds height="20.0" width="100.0" x="855.0" y="436.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_NIn1DQ" id="BPMNShape_rAwIzQ">
<dc:Bounds height="36.0" width="36.0" x="1447.0" y="347.0"/>
<dc:Bounds height="36.0" width="36.0" x="1437.0" y="437.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_bdYofw">
<dc:Bounds height="20.0" width="100.0" x="1415.0" y="386.0"/>
<dc:Bounds height="20.0" width="100.0" x="1405.0" y="476.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_IkxO0Q" id="BPMNShape_HhaYGw">
<dc:Bounds height="36.0" width="36.0" x="357.0" y="457.0"/>
<dc:Bounds height="36.0" width="36.0" x="357.0" y="537.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_HwRJHg">
<dc:Bounds height="20.0" width="100.0" x="325.0" y="496.0"/>
<dc:Bounds height="20.0" width="100.0" x="325.0" y="576.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_w96sOg" id="BPMNShape_EVzthA">
@ -2287,61 +2466,91 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_o1nouw" id="BPMNShape_Aggi0A">
<dc:Bounds height="36.0" width="36.0" x="447.0" y="457.0"/>
<dc:Bounds height="36.0" width="36.0" x="447.0" y="537.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_XvFbXA">
<dc:Bounds height="20.0" width="100.0" x="415.0" y="496.0"/>
<dc:Bounds height="20.0" width="100.0" x="415.0" y="576.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_iAvEHw" id="BPMNShape_2RIfjA">
<dc:Bounds height="36.0" width="36.0" x="657.0" y="457.0"/>
<dc:Bounds height="36.0" width="36.0" x="657.0" y="537.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_3zctow">
<dc:Bounds height="20.0" width="100.0" x="625.0" y="496.0"/>
<dc:Bounds height="20.0" width="100.0" x="625.0" y="576.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_iWUeSw" id="BPMNShape_96LTfg">
<dc:Bounds height="50.0" width="110.0" x="1270.0" y="200.0"/>
<dc:Bounds height="50.0" width="110.0" x="1270.0" y="220.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="gateway_DjDNAA" id="BPMNShape_M9ebrA">
<dc:Bounds height="50.0" width="50.0" x="740.0" y="340.0"/>
<dc:Bounds height="50.0" width="50.0" x="740.0" y="430.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_mmqVgw">
<dc:Bounds height="20.0" width="100.0" x="715.0" y="393.0"/>
<dc:Bounds height="20.0" width="100.0" x="715.0" y="483.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="gateway_k00hrA" id="BPMNShape_tX90mw">
<dc:Bounds height="50.0" width="50.0" x="1120.0" y="340.0"/>
<dc:Bounds height="50.0" width="50.0" x="1120.0" y="430.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_x21c1A">
<dc:Bounds height="20.0" width="100.0" x="1095.0" y="393.0"/>
<dc:Bounds height="20.0" width="100.0" x="1095.0" y="483.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_AujEAA" id="BPMNShape_5nfbLA">
<dc:Bounds height="36.0" width="36.0" x="1447.0" y="207.0"/>
<dc:Bounds height="36.0" width="36.0" x="1557.0" y="157.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_8mHQ8Q">
<dc:Bounds height="20.0" width="100.0" x="1415.0" y="246.0"/>
<dc:Bounds height="20.0" width="100.0" x="1525.0" y="196.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_FYxkhQ" id="BPMNShape_FyHOYw">
<dc:Bounds height="36.0" width="36.0" x="1127.0" y="207.0"/>
<dc:Bounds height="36.0" width="36.0" x="1127.0" y="227.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_nz1QuQ">
<dc:Bounds height="20.0" width="100.0" x="1095.0" y="246.0"/>
<dc:Bounds height="20.0" width="100.0" x="1095.0" y="266.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_7H4Aaw" id="BPMNShape_li5tUg">
<dc:Bounds height="36.0" width="36.0" x="1307.0" y="307.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_QknWFw">
<dc:Bounds height="20.0" width="100.0" x="1275.0" y="346.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_NT60FA" id="BPMNShape_X9ihig">
<dc:Bounds height="36.0" width="36.0" x="877.0" y="537.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_VsTevQ">
<dc:Bounds height="20.0" width="100.0" x="845.0" y="576.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_S9HJ1A" id="BPMNShape_3dfQgA">
<dc:Bounds height="36.0" width="36.0" x="787.0" y="537.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_FuP0Vg">
<dc:Bounds height="20.0" width="100.0" x="755.0" y="576.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_qIhyWA" id="BPMNShape_zK5Xhg">
<dc:Bounds height="36.0" width="36.0" x="1557.0" y="287.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_RPuXsQ">
<dc:Bounds height="20.0" width="100.0" x="1525.0" y="326.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="gateway_utXBiw" id="BPMNShape_wUSzdg">
<dc:Bounds height="50.0" width="50.0" x="1440.0" y="220.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_S3rhxw">
<dc:Bounds height="20.0" width="100.0" x="1415.0" y="273.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_33" id="BPMNEdge_SequenceFlow_34" sourceElement="BPMNShape_ExclusiveGateway_1">
<di:waypoint x="910.0" y="775.0"/>
<di:waypoint x="1130.0" y="775.0"/>
<di:waypoint x="910.0" y="825.0"/>
<di:waypoint x="1130.0" y="825.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_61"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_47" id="BPMNEdge_SequenceFlow_48" sourceElement="BPMNShape_Task_11" targetElement="BPMNShape_EndEvent_2">
<di:waypoint x="2120.0" y="875.0"/>
<di:waypoint x="2167.0" y="875.0"/>
<di:waypoint x="2120.0" y="925.0"/>
<di:waypoint x="2167.0" y="925.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_111"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_52" id="BPMNEdge_SequenceFlow_53" sourceElement="BPMNShape_IntermediateCatchEvent_28" targetElement="BPMNShape_Task_11">
<di:waypoint x="2065.0" y="793.0"/>
<di:waypoint x="2065.0" y="850.0"/>
<di:waypoint x="2065.0" y="843.0"/>
<di:waypoint x="2065.0" y="900.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_130"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_27" id="BPMNEdge_SequenceFlow_28" sourceElement="BPMNShape_IntermediateCatchEvent_2" targetElement="BPMNShape_Task_3">
<di:waypoint x="1185.0" y="903.0"/>
<di:waypoint x="1185.0" y="953.0"/>
<di:waypoint x="1185.0" y="1340.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_42"/>
</bpmndi:BPMNEdge>
@ -2351,53 +2560,54 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmndi:BPMNLabel id="BPMNLabel_46"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_39" id="BPMNEdge_SequenceFlow_40" sourceElement="BPMNShape_Task_5" targetElement="BPMNShape_EventBasedGateway_1">
<di:waypoint x="1240.0" y="775.0"/>
<di:waypoint x="1320.0" y="775.0"/>
<di:waypoint x="1240.0" y="825.0"/>
<di:waypoint x="1320.0" y="825.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_58"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_8" id="BPMNEdge_SequenceFlow_9" sourceElement="BPMNShape_IntermediateCatchEvent_21" targetElement="BPMNShape_ExclusiveGateway_5">
<di:waypoint x="1773.0" y="775.0"/>
<di:waypoint x="1840.0" y="775.0"/>
<di:waypoint x="1773.0" y="825.0"/>
<di:waypoint x="1840.0" y="825.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_15"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_10" id="BPMNEdge_SequenceFlow_10" sourceElement="BPMNShape_ExclusiveGateway_5" targetElement="BPMNShape_IntermediateCatchEvent_4">
<di:waypoint x="1865.0" y="800.0"/>
<di:waypoint x="1865.0" y="857.0"/>
<di:waypoint x="1865.0" y="850.0"/>
<di:waypoint x="1865.0" y="907.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_18"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_11" id="BPMNEdge_SequenceFlow_12" sourceElement="BPMNShape_IntermediateCatchEvent_4" targetElement="BPMNShape_Task_11">
<di:waypoint x="1883.0" y="875.0"/>
<di:waypoint x="2010.0" y="875.0"/>
<di:waypoint x="1883.0" y="925.0"/>
<di:waypoint x="2010.0" y="925.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_25"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_12" id="BPMNEdge_SequenceFlow_13" sourceElement="BPMNShape_ExclusiveGateway_5" targetElement="BPMNShape_IntermediateCatchEvent_5">
<di:waypoint x="1890.0" y="775.0"/>
<di:waypoint x="1917.0" y="775.0"/>
<di:waypoint x="1890.0" y="825.0"/>
<di:waypoint x="1917.0" y="825.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_27"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_14" id="BPMNEdge_SequenceFlow_15" sourceElement="BPMNShape_IntermediateCatchEvent_5" targetElement="BPMNShape_Task_5">
<di:waypoint x="1935.0" y="757.0"/>
<di:waypoint x="1935.0" y="661.0"/>
<di:waypoint x="1188.0" y="661.0"/>
<di:waypoint x="1188.0" y="750.0"/>
<di:waypoint x="1935.0" y="807.0"/>
<di:waypoint x="1935.0" y="710.0"/>
<di:waypoint x="1190.0" y="710.0"/>
<di:waypoint x="1190.0" y="800.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_29"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Association_1" id="BPMNEdge_Association_1" sourceElement="BPMNShape_TextAnnotation_2" targetElement="BPMNShape_IntermediateCatchEvent_21">
<di:waypoint x="1744.0" y="867.0"/>
<di:waypoint x="1758.0" y="867.0"/>
<di:waypoint x="1758.0" y="798.0"/>
<di:waypoint x="1755.0" y="798.0"/>
<di:waypoint x="1755.0" y="793.0"/>
<di:waypoint x="1751.0" y="916.0"/>
<di:waypoint x="1760.0" y="916.0"/>
<di:waypoint x="1760.0" y="847.0"/>
<di:waypoint x="1755.0" y="847.0"/>
<di:waypoint x="1755.0" y="843.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_37"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_17" id="BPMNEdge_SequenceFlow_18" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateThrowEvent_8">
<di:waypoint x="1370.0" y="775.0"/>
<di:waypoint x="1427.0" y="775.0"/>
<di:waypoint x="1370.0" y="825.0"/>
<di:waypoint x="1427.0" y="825.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_45"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_15" id="BPMNEdge_SequenceFlow_16" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_ExclusiveGateway_1">
<di:waypoint x="885.0" y="1347.0"/>
<di:waypoint x="885.0" y="800.0"/>
<di:waypoint x="885.0" y="1098.0"/>
<di:waypoint x="885.0" y="850.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_32"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_25" id="BPMNEdge_SequenceFlow_26" sourceElement="BPMNShape_ExclusiveGateway_3" targetElement="BPMNShape_IntermediateThrowEvent_9">
@ -2427,39 +2637,39 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<bpmndi:BPMNLabel id="BPMNLabel_148"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_65" id="BPMNEdge_SequenceFlow_66" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateThrowEvent_11">
<di:waypoint x="1343.0" y="752.0"/>
<di:waypoint x="1343.0" y="705.0"/>
<di:waypoint x="1427.0" y="705.0"/>
<di:waypoint x="1345.0" y="800.0"/>
<di:waypoint x="1345.0" y="755.0"/>
<di:waypoint x="1427.0" y="755.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_150"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_5" id="BPMNEdge_SequenceFlow_6" sourceElement="BPMNShape_IntermediateCatchEvent_7" targetElement="BPMNShape_Task_1">
<di:waypoint x="1363.0" y="975.0"/>
<di:waypoint x="2010.0" y="975.0"/>
<di:waypoint x="1363.0" y="1025.0"/>
<di:waypoint x="2010.0" y="1025.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_21"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_9" id="BPMNEdge_SequenceFlow_11" sourceElement="BPMNShape_ExclusiveGateway_3" targetElement="BPMNShape_IntermediateCatchEvent_7">
<di:waypoint x="1345.0" y="1340.0"/>
<di:waypoint x="1345.0" y="993.0"/>
<di:waypoint x="1345.0" y="1043.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_22"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_13" id="BPMNEdge_SequenceFlow_14" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_7">
<di:waypoint x="1345.0" y="800.0"/>
<di:waypoint x="1345.0" y="957.0"/>
<di:waypoint x="1345.0" y="850.0"/>
<di:waypoint x="1345.0" y="1007.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_23"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_19" id="BPMNEdge_SequenceFlow_20" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_EndEvent_3">
<di:waypoint x="2120.0" y="975.0"/>
<di:waypoint x="2167.0" y="975.0"/>
<di:waypoint x="2120.0" y="1025.0"/>
<di:waypoint x="2167.0" y="1025.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_44"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_22" id="BPMNEdge_SequenceFlow_22" sourceElement="BPMNShape_Task_5" targetElement="BPMNShape_IntermediateCatchEvent_2">
<di:waypoint x="1185.0" y="800.0"/>
<di:waypoint x="1185.0" y="867.0"/>
<di:waypoint x="1185.0" y="850.0"/>
<di:waypoint x="1185.0" y="917.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_56"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_42" id="BPMNEdge_XKttkA">
<di:waypoint x="1643.0" y="775.0"/>
<di:waypoint x="1737.0" y="775.0"/>
<di:waypoint x="1643.0" y="825.0"/>
<di:waypoint x="1737.0" y="825.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_zhcE7Q" id="BPMNEdge_oQt4SA" sourceElement="BPMNShape_IntermediateCatchEvent_8" targetElement="BPMNShape_Task_3">
<di:waypoint x="1133.0" y="1465.0"/>
@ -2472,27 +2682,25 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<di:waypoint x="1087.0" y="1565.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="task_LqbtSQ" id="BPMNShape_PXTHfw">
<dc:Bounds height="50.0" width="110.0" x="480.0" y="340.0"/>
<dc:Bounds height="50.0" width="110.0" x="480.0" y="430.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_hq5k3w" id="BPMNEdge_os6esw" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_PXTHfw">
<di:waypoint x="531.0" y="655.0"/>
<di:waypoint x="531.0" y="498.0"/>
<di:waypoint x="535.0" y="498.0"/>
<di:waypoint x="535.0" y="390.0"/>
<di:waypoint x="535.0" y="480.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_iUSXSg" id="BPMNShape_bjEhrQ">
<dc:Bounds height="36.0" width="36.0" x="1217.0" y="667.0"/>
<dc:Bounds height="36.0" width="36.0" x="1097.0" y="917.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_8ccrcw">
<dc:Bounds height="20.0" width="100.0" x="1188.0" y="711.0"/>
<dc:Bounds height="20.0" width="100.0" x="1068.0" y="961.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_OttgXA" id="BPMNEdge_a9WVEA" sourceElement="BPMNShape_bjEhrQ" targetElement="BPMNShape_Task_5">
<di:waypoint x="1235.0" y="703.0"/>
<di:waypoint x="1235.0" y="708.0"/>
<di:waypoint x="1238.0" y="708.0"/>
<di:waypoint x="1238.0" y="732.0"/>
<di:waypoint x="1188.0" y="732.0"/>
<di:waypoint x="1188.0" y="750.0"/>
<di:waypoint x="1115.0" y="917.0"/>
<di:waypoint x="1115.0" y="884.0"/>
<di:waypoint x="1163.0" y="884.0"/>
<di:waypoint x="1163.0" y="850.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_xVkeww" id="BPMNEdge_dHIjPw" sourceElement="BPMNShape_FsnqGQ" targetElement="BPMNShape_Task_3">
<di:waypoint x="1018.0" y="1299.0"/>
@ -2500,24 +2708,24 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<di:waypoint x="1148.0" y="1340.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="textAnnotation_ru52BA" id="BPMNShape_2sFGZg">
<dc:Bounds height="50.0" width="75.0" x="1413.0" y="1035.0"/>
<dc:Bounds height="50.0" width="75.0" x="1420.0" y="1080.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_mi59Kg" id="BPMNEdge_3G0Qlg" sourceElement="BPMNShape_2sFGZg" targetElement="BPMNShape_IntermediateCatchEvent_7">
<di:waypoint x="1413.0" y="1057.0"/>
<di:waypoint x="1387.0" y="1057.0"/>
<di:waypoint x="1387.0" y="980.0"/>
<di:waypoint x="1366.0" y="980.0"/>
<di:waypoint x="1366.0" y="975.0"/>
<di:waypoint x="1363.0" y="975.0"/>
<di:waypoint x="1420.0" y="1106.0"/>
<di:waypoint x="1389.0" y="1106.0"/>
<di:waypoint x="1389.0" y="1029.0"/>
<di:waypoint x="1368.0" y="1029.0"/>
<di:waypoint x="1368.0" y="1025.0"/>
<di:waypoint x="1363.0" y="1025.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_sN9AQQ" id="BPMNEdge_gcK0kw" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_IntermediateCatchEvent_11">
<di:waypoint x="283.0" y="365.0"/>
<di:waypoint x="357.0" y="365.0"/>
<di:waypoint x="283.0" y="455.0"/>
<di:waypoint x="357.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_k82Wqw" id="BPMNEdge_e0OoXA" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_5">
<di:waypoint x="548.0" y="693.0"/>
<di:waypoint x="1145.0" y="693.0"/>
<di:waypoint x="1145.0" y="750.0"/>
<di:waypoint x="1145.0" y="800.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_V0KVQg" id="BPMNShape_FsnqGQ">
<dc:Bounds height="50.0" width="35.0" x="983.0" y="1275.0"/>
@ -2532,93 +2740,115 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
<di:waypoint x="1188.0" y="1390.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_4IITzA" id="BPMNEdge_1Xv9Bw" sourceElement="BPMNShape_IntermediateCatchEvent_11" targetElement="BPMNShape_PXTHfw">
<di:waypoint x="393.0" y="365.0"/>
<di:waypoint x="480.0" y="365.0"/>
<di:waypoint x="393.0" y="455.0"/>
<di:waypoint x="480.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_nrxqhg" id="BPMNEdge_6Tzg4g" sourceElement="BPMNShape_PXTHfw" targetElement="BPMNShape_FQY1bQ">
<di:waypoint x="590.0" y="365.0"/>
<di:waypoint x="647.0" y="365.0"/>
<di:waypoint x="590.0" y="455.0"/>
<di:waypoint x="647.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gjnUAA" id="BPMNEdge_fa04Qw" sourceElement="BPMNShape_FQY1bQ" targetElement="BPMNShape_M9ebrA">
<di:waypoint x="683.0" y="365.0"/>
<di:waypoint x="740.0" y="365.0"/>
<di:waypoint x="683.0" y="455.0"/>
<di:waypoint x="740.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_2BSFNw" id="BPMNEdge_dBPq8Q" sourceElement="BPMNShape_ksu2zQ" targetElement="BPMNShape_0KkpmA">
<di:waypoint x="950.0" y="365.0"/>
<di:waypoint x="997.0" y="365.0"/>
<di:waypoint x="950.0" y="455.0"/>
<di:waypoint x="1007.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_F90iWQ" id="BPMNEdge_TMEpLg" sourceElement="BPMNShape_0KkpmA" targetElement="BPMNShape_tX90mw">
<di:waypoint x="1033.0" y="365.0"/>
<di:waypoint x="1120.0" y="365.0"/>
<di:waypoint x="1043.0" y="455.0"/>
<di:waypoint x="1120.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_0A0wqQ" id="BPMNEdge_qTengg" sourceElement="BPMNShape_093C9Q" targetElement="BPMNShape_FQY1bQ">
<di:waypoint x="555.0" y="317.0"/>
<di:waypoint x="555.0" y="292.0"/>
<di:waypoint x="665.0" y="292.0"/>
<di:waypoint x="665.0" y="347.0"/>
<di:waypoint x="555.0" y="397.0"/>
<di:waypoint x="555.0" y="378.0"/>
<di:waypoint x="665.0" y="378.0"/>
<di:waypoint x="665.0" y="437.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_JNYd0A" id="BPMNEdge_ejZylQ" sourceElement="BPMNShape_PuiuLA" targetElement="BPMNShape_0KkpmA">
<di:waypoint x="905.0" y="317.0"/>
<di:waypoint x="905.0" y="290.0"/>
<di:waypoint x="1015.0" y="290.0"/>
<di:waypoint x="1015.0" y="347.0"/>
<di:waypoint x="905.0" y="397.0"/>
<di:waypoint x="905.0" y="376.0"/>
<di:waypoint x="1025.0" y="376.0"/>
<di:waypoint x="1025.0" y="437.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_0aNMvQ" id="BPMNEdge_Qyl0GA" sourceElement="BPMNShape_m48YQQ" targetElement="BPMNShape_rAwIzQ">
<di:waypoint x="1380.0" y="365.0"/>
<di:waypoint x="1447.0" y="365.0"/>
<di:waypoint x="1380.0" y="455.0"/>
<di:waypoint x="1437.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_nPTjjw" id="BPMNEdge_yaBFPQ" sourceElement="BPMNShape_rAwIzQ" targetElement="BPMNShape_ExclusiveGateway_1">
<di:waypoint x="1483.0" y="365.0"/>
<di:waypoint x="1526.0" y="365.0"/>
<di:waypoint x="1526.0" y="539.0"/>
<di:waypoint x="885.0" y="539.0"/>
<di:waypoint x="885.0" y="750.0"/>
<di:waypoint x="1473.0" y="455.0"/>
<di:waypoint x="1526.0" y="455.0"/>
<di:waypoint x="1526.0" y="640.0"/>
<di:waypoint x="885.0" y="640.0"/>
<di:waypoint x="885.0" y="800.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_UQnJtA" id="BPMNEdge_eR32rw" sourceElement="BPMNShape_HhaYGw" targetElement="BPMNShape_Aggi0A">
<di:waypoint x="393.0" y="475.0"/>
<di:waypoint x="447.0" y="475.0"/>
<di:waypoint x="393.0" y="555.0"/>
<di:waypoint x="447.0" y="555.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_I5jpvQ" id="BPMNEdge_4TZnVw" sourceElement="BPMNShape_Task_3" targetElement="BPMNShape_EVzthA">
<di:waypoint x="1185.0" y="1340.0"/>
<di:waypoint x="1185.0" y="1312.0"/>
<di:waypoint x="1211.0" y="1340.0"/>
<di:waypoint x="1211.0" y="1312.0"/>
<di:waypoint x="1255.0" y="1312.0"/>
<di:waypoint x="1255.0" y="1283.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_1xQ7aA" id="BPMNEdge_WZVSNg" sourceElement="BPMNShape_Aggi0A" targetElement="BPMNShape_PXTHfw">
<di:waypoint x="465.0" y="457.0"/>
<di:waypoint x="465.0" y="423.0"/>
<di:waypoint x="506.0" y="423.0"/>
<di:waypoint x="506.0" y="390.0"/>
<di:waypoint x="465.0" y="537.0"/>
<di:waypoint x="465.0" y="509.0"/>
<di:waypoint x="505.0" y="509.0"/>
<di:waypoint x="505.0" y="480.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_UOahyg" id="BPMNEdge_umpL4A" sourceElement="BPMNShape_2RIfjA" targetElement="BPMNShape_PXTHfw">
<di:waypoint x="657.0" y="475.0"/>
<di:waypoint x="577.0" y="475.0"/>
<di:waypoint x="577.0" y="390.0"/>
<di:waypoint x="657.0" y="555.0"/>
<di:waypoint x="576.0" y="555.0"/>
<di:waypoint x="576.0" y="480.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_eadkWg" id="BPMNEdge_f6pP0w" sourceElement="BPMNShape_tX90mw" targetElement="BPMNShape_m48YQQ">
<di:waypoint x="1170.0" y="365.0"/>
<di:waypoint x="1270.0" y="365.0"/>
<di:waypoint x="1170.0" y="455.0"/>
<di:waypoint x="1270.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_sO35Dg" id="BPMNEdge_A81i0Q" sourceElement="BPMNShape_M9ebrA" targetElement="BPMNShape_ksu2zQ">
<di:waypoint x="790.0" y="365.0"/>
<di:waypoint x="840.0" y="365.0"/>
<di:waypoint x="790.0" y="455.0"/>
<di:waypoint x="840.0" y="455.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_79GZ8w" id="BPMNEdge_fHWhwA" sourceElement="BPMNShape_M9ebrA" targetElement="BPMNShape_FyHOYw">
<di:waypoint x="766.0" y="341.0"/>
<di:waypoint x="766.0" y="225.0"/>
<di:waypoint x="1127.0" y="225.0"/>
<di:waypoint x="766.0" y="431.0"/>
<di:waypoint x="766.0" y="245.0"/>
<di:waypoint x="1127.0" y="245.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_6VjCnQ" id="BPMNEdge_3aUBGg" sourceElement="BPMNShape_96LTfg" targetElement="BPMNShape_5nfbLA">
<di:waypoint x="1380.0" y="225.0"/>
<di:waypoint x="1447.0" y="225.0"/>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_6VjCnQ" id="BPMNEdge_3aUBGg" sourceElement="BPMNShape_96LTfg" targetElement="BPMNShape_wUSzdg">
<di:waypoint x="1380.0" y="245.0"/>
<di:waypoint x="1440.0" y="245.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_BaNbmQ" id="BPMNEdge_u5n0EQ" sourceElement="BPMNShape_FyHOYw" targetElement="BPMNShape_96LTfg">
<di:waypoint x="1163.0" y="225.0"/>
<di:waypoint x="1270.0" y="225.0"/>
<di:waypoint x="1163.0" y="245.0"/>
<di:waypoint x="1270.0" y="245.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_DCA0Tw" id="BPMNEdge_ZC2wqQ" sourceElement="BPMNShape_tX90mw" targetElement="BPMNShape_FyHOYw">
<di:waypoint x="1145.0" y="340.0"/>
<di:waypoint x="1145.0" y="243.0"/>
<di:waypoint x="1145.0" y="430.0"/>
<di:waypoint x="1145.0" y="263.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ATB00A" id="BPMNEdge_I0mFFg" sourceElement="BPMNShape_li5tUg" targetElement="BPMNShape_96LTfg">
<di:waypoint x="1325.0" y="307.0"/>
<di:waypoint x="1325.0" y="270.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_jpNRMg" id="BPMNEdge_qg6dpA" sourceElement="BPMNShape_X9ihig" targetElement="BPMNShape_ksu2zQ">
<di:waypoint x="895.0" y="537.0"/>
<di:waypoint x="895.0" y="480.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_VI5qMw" id="BPMNEdge_U7uMiQ" sourceElement="BPMNShape_3dfQgA" targetElement="BPMNShape_X9ihig">
<di:waypoint x="823.0" y="555.0"/>
<di:waypoint x="877.0" y="555.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_0cMadw" id="BPMNEdge_rqrc0g" sourceElement="BPMNShape_wUSzdg" targetElement="BPMNShape_5nfbLA">
<di:waypoint x="1464.0" y="221.0"/>
<di:waypoint x="1464.0" y="175.0"/>
<di:waypoint x="1557.0" y="175.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_sNNdbA" id="BPMNEdge_NBGbyA" sourceElement="BPMNShape_wUSzdg" targetElement="BPMNShape_zK5Xhg">
<di:waypoint x="1467.0" y="268.0"/>
<di:waypoint x="1467.0" y="305.0"/>
<di:waypoint x="1557.0" y="305.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">