# SQUEEZE 2 Admin-Handbuch # Systemvoraussetzungen Systemvoraussetzungen für Server und Clients # Systemvoraussetzungen des Servers ## Hardware / Virtual Maschine

Die Hardwarevoraussetzungen von Squeeze richten sich stark nach dem Verwendungszweck. Die Anzahl der täglich zu verarbeitenden Dokumente, der Menge an vorgehaltenen Daten vor endgültiger Lösung und eventuelle Kundenanpassungen haben alle Einfluss auf die Vorraussetzungen an die Hardware.

Grundsätzlich gilt: - Die Anzahl gleichzeitig zu verarbeitender Dokumente hängt davon ab wie viele Worker eingesetzt werden. - Für jeden Worker sollte 1 CPU Kern und 2 GB RAM reserviert werden.

Die Verwendung von Squeeze mit unausreichender Hardware (insbesondere CPU und RAM) kann zu Performance-Problemen führen.

MinimumEmpfehlung
BetriebssystemLinux/WindowsLinux/Windows
CPU Takt2.2 GHz3.0 GHz
CPU Kerne6 Cores8 Cores
RAM8 GB16 GB
FestplatteHDD 7200 rpmSSD
Festplattenspeicher200 GB500 GB
Netzwerk100 Mbit1000 Mbit
## Betriebssysteme ### Windows
OSVersionAnmerkung
Windows7Uneingeschränkt unterstützt
Windows10Uneingeschränkt unterstützt
Windows11Uneingeschränkt unterstützt
WindowsServer 2008 R2Uneingeschränkt unterstützt
WindowsServer 2012Uneingeschränkt unterstützt
WindowsServer 2012 R2Uneingeschränkt unterstützt
WindowsServer 2016Uneingeschränkt unterstützt
WindowsServer 2019Uneingeschränkt unterstützt
WindowsServer 2022Uneingeschränkt unterstützt
### Linux
OSVersionAnmerkung
Ubuntu14.04
Ubuntu16.04Uneingeschränkt unterstützt
Ubuntu18.04Uneingeschränkt unterstützt
Ubuntu20.04Uneingeschränkt unterstützt
Ubuntu22.04Uneingeschränkt unterstützt
Debian8
Debian9Uneingeschränkt unterstützt
Debian10Uneingeschränkt unterstützt
Debian11Uneingeschränkt unterstützt
Debian12Uneingeschränkt unterstützt

Wir empfehlen die Verwendung von Docker. Zu diesem Zweck können wir Images und Konfigurationen auf Anfrage bereitstellen, falls Sie diese für On-Premise Installationen einsetzen möchten. Diese Verwenden wir bereits für eine Vielzahl an Kundensystemen.

## Datenbanksysteme

Squeeze wird primär auf Basis von MariaDB eingesetzt und getestet. Microsoft SQL Server wird ebenfalls unterstützt und durch die selben Test-Automatisierungen getestet wie MariaDB und MySQL, allerdings empfehlen wir aufgrund des höheren Betriebsaufwandes eher die Verwendung einer MariaDB.

HerstellerVersion
MicrosoftSQL Server 2012
MicrosoftSQL Server 2014
MicrosoftSQL Server 2016
MicrosoftSQL Server 2019
MicrosoftSQL Server 2022
MySQL5.5 - 5.7
MariaDB5.5.7
MariaDB10.0 - 10.11
## Network ### Eingehender Netzwerkverkehr
PortBeschreibung
80HTML Frontend und API
443HTML Frontend und API (mit SSL)
### Ausgehender Netzwerkverkehr
PortBeshreibung
25SMTP für das versenden von Emails
587SMTP für das versenden von Emails (mit Verschlüsselung)
143IMAP um Email abzuholen
993IMAP um Email abzuholen (mit Verschlüsselung)
443EWS um Email abzuholen (mit Verschlüsselung)
33??SAP RFC Verbindung (?? = SAP Instanznummer)
## Runtimes Squeeze und dessen Komponenten benötigen einige Bibliotheken und Anwendungen die installiert sein müssen. Sollten Sie den [Windows installer](file:///C:/SQUEEZE/htdocs/doc/docs/docs/intro/installation-win.md) nutzen, so befinden sich alle erforderlichen Anwendungen und Bibliotheken bereits im Setup und werden mit installiert und grundsätzlich eingerichtet. Der Installer ist so erstellt worden, dass ein Out-of-the-Box System installiert wird, welches sofort nutzbar ist. Die Anwendungen und Bibliotheken werden dabei unterteilt. Es gibt direkte und indirekte Abhängigkeiten Ein Beispiel ist das Message Queue System (RabbitMQ). In Komplexeren Umgebungen kann es erforderlich sein, diese Komponenten auf verschiedene Systeme zu verteilen. In diesem Fall müssen Sie sich selber um die Bereitstellung der Anwendungen kümmern. ### Direkte Abhängigkeiten
RuntimeVersionBenötigt von
PHP7.4.xServer, Worker
PHP8.1.xServer, Worker
Java8Server, Worker
*"Server" meint den Squeeze Server.* ### Indirekte Abhängigkeiten
RuntimeVersionBenötigt von
Erlang10.5RabbitMQ
Erlang25.3RabbitMQ
JavaIn Abhängigkeit der Elasticsearch VersionElasticsearch
# Systemvoraussetzungen des Webclients ## Betriebssystem Grundsätzlich werden alle gängigen Betriebssysteme unterstützt. Das Betriebssystem selbst ist nicht sonderlich entscheidend, da es sich bei Squeeze um eine reine Webanwendung handelt. ## Browser Grundsätzlich werden alle gängigen Browser unterstützt, jedoch sind nicht immer alle unsererseits aktuell mit allen Funktionen getestet. Folgend eine Übersicht der aktuell getesteten Browser. Der Webclient wird in der Entwicklung auf Microsoft, Google Chrome und Safari eingesetzt.
HerstellerVersionAnmerkung
MicrosoftInternet Explorer 11Uneingeschränkt unterstützt (bis Squeeze Version 1.12.9)
MicrosoftEdgeUneingeschränkt unterstützt
MozillaFirefoxUneingeschränkt unterstützt
GoogleChromeUneingeschränkt unterstützt
AppleSafariUneingeschränkt unterstützt
# Installation Installation von Squeeze auf Windows und Linux & Aufsetzen eines nutzbaren Mandanten. # Serverinstallation Linux

Wir haben die Dokumentation für die Installation unter Linux temporär entfernt, weil sie veraltet war. Falls Sie Squeeze auf Linux installlieren möchten, was wir sehr begrüßen, dann melden Sie sich bitte bei oder im Forum, um Hilfe. Dabei möchten Wir Sie gern unterstützen.

# Serverinstallation Windows

Der für die Squeeze-Server Installation notwendige Installer wird von der Firma Dexpro-Solutions GmbH auf Anfrage zur Verfügung gestellt.

In Zukunft wird es ein entsprechendes Download-Portal geben, wo sowohl der Server - Installer als auch die Dateien für das Update auf die neueste Squeeze - Version heruntergeladen werden können.

##### Installation Squeeze - Server Squeeze kann auf jeder Partition eines Rechners installiert werden. Im Setup sind einige Pfade voreingestellt (D:.\\Squeeze). Für die Installations-Dokumentation wird die Server-Installation mit Version 2.0.0 auf der C:\\ Partition durchgeführt.
Die Installation wird mit Doppelklick auf die Installer.exe gestartet und muss mit administrativen Benutzer-Rechten durchgeführt werden.
[![image-1658234478472.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658234478472.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658234478472.png) [![image-1648202116377.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648202116377.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648202116377.png) [![image-1648202162250.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648202162250.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648202162250.png) [![image-1648202236165.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648202236165.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648202236165.png) [![image-1648202272745.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648202272745.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648202272745.png) Nachdem der Server-Installer die erforderlichen Dateien in das angegebene Verzeichnis (C:\\Squeeze) entpackt hat, startet die Installation automatisch. [![image-1648202696031.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648202696031.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648202696031.png) Nachdem das initiale Setup abgeschlossen ist, sollten geprüft werden ob alle Dienste installiert worden sind und diese bereits gestartet wurden. [![image-1648202772478.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648202772478.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648202772478.png)
DienstnameStaus
01\_SQUEEZE\_WebServerWird ausgeführt
02\_SQUEEZE\_DB\_ServerWird ausgeführt
03\_SQUEEZE\_SearchEngineWird ausgeführt
04\_SQUEEZE\_MessageQueueWird ausgeführt
05\_SQUEEZE\_Workernicht gestartet

Die Dienste 01 bis 04 sollten gestartet sein. Der Dienst 05 ist zu diesem Zeitpunkt nicht gestartet, dieser Dienst muss nach Abschluss der Server und - Mandanten-Konfiguration erst konfiguriert werden bis er gestartet werden kann.

##### Konfiguration Squeeze - Server Nachdem das eigentliche Server-Setup abgeschlossen ist, wird der Server konfiguriert. Dazu wird der Browser gestartet und in der Adresszeile des Browsers der gewünschte Mandanten-Name eingegeben.

Es können mehrere technische Mandanten auf einem Squeeze Server konfiguriert werden. Jeder Mandant hat sein eigenes Repository und eine eigene Datenbank.

Im ausgelieferten Server-Setup ist bereits eine Lizenz für 300 Dokumente für den Mandanten localhost enthalten.

Die Mandanten-Installation für localhost wird für diese Dokumentation verwendet. Dazu wird im Browser in der Adresszeile [http://localhost](http://localhost/) eingegeben. Daraufhin startet die Konfiguration des Squeeze-Servermandanten:
[![image-1584627329054.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584627329054.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584627329054.png) Mit dem Button Next wird der nächste Dialog zur Konfiguration der Datenbank geöffnet, hier kann wahlweise zwischen MYSQL (MariaDB) und Microsoft SQL Server entschieden werden.

Wenn MS SQL gewählt wird dann ist der Port 1433, sollte eine Instanz von MS SQL genutzt werden, dann muss der Port leer bleiben (dynamischer Port), bei MYSQL ist der Port 3306.

[![image-1584634060002.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584634060002.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634060002.png) In diesem Beispiel wird die ausgelieferte MariaDB genutzt. Die Felder können entsprechend angepasst werden. Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584627831788.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584627831788.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584627831788.png) Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584634320436.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584634320436.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634320436.png) - Admin Password: guest - Worker Password: squeeze Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584628226160.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584628226160.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628226160.png) Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584634381073.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584634381073.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634381073.png) - Password: squeeze Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584628360769.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584628360769.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628360769.png) Mit dem Button Next öffnet sich der nächste Dialog: Für die Demo-Installation wird kein SMTP Versand konfiguriert, da die verwendete Sandbox für die Installation keinen Internetzugang hat. Dazu wird im Feld "Use SMTP Zugang" der Wert auf False gesetzt [![image-1584634465227.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584634465227.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634465227.png) Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584628602957.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584628602957.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628602957.png) Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584628656559.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584628656559.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628656559.png) Mit dem Button Next öffnet sich der nächste Dialog: [![image-1584628693425.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584628693425.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628693425.png)
Mit dem Button Zur Startseite öffnet sich der nächste Dialog:
[![image-1648203059804.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203059804.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203059804.png) Mit dem Button Anlegen öffnet sich der nächste Dialog: [![image-1648203115139.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203115139.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203115139.png) [![image-1648203235370.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203235370.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203235370.png) [![image-1648203317804.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203317804.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203317804.png) Mit dem Button Jetzt Einrichten öffnet sich der nächste Dialog: [![image-1648203470583.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203470583.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203470583.png) Den Worker-API-Key aufschreiben bzw. Kopieren. [![image-1648203621842.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203621842.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203621842.png) Mit dem Button Weiter öffnet sich der nächste Dialog: [![image-1584634925708.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584634925708.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634925708.png) Mit dem Button Weiter öffnet sich der nächste Dialog: [![image-1584635004808.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584635004808.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584635004808.png) Mit dem Button Weiter öffnet sich der nächste Dialog: [![image-1584635045050.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584635045050.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584635045050.png)
Mit dem Button Weiter öffnet sich der nächste Dialog:
[![image-1648203722428.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203722428.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203722428.png) [![image-1648203787379.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648203787379.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203787379.png) ##### Konfiguration des Workers C:\\SQUEEZE\\htdocs\\worker\\config [![image-1648205632179.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648205632179.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648205632179.png) Im markierten Feld den kopierten Worker-Api-Key eintragen und speichern. [![image-1658299816020.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658299816020.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658299816020.png) In den oben markierten Feldern wird "localhost" durch den "FQDN" des Servers ersetzt. Die Angabe des Servernames (FQDN) ist Case-Sensitiv. Wir empfehlen den Servernamen generell in Kleinbuchstaben zu schreiben. Windows Systeme: Pfad zur PHP.exe wie hier im Screenshot anpassen. Ggf. das squeezeRoot anpassen. Nun muss der Worker-Dienst gestartet werden um Dokumente verarbeiten zu können. [![image-1648204309276.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648204309276.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648204309276.png)
# Mandanten hinzufügen Der Mandant benötigt einen Mandantennamen. Abweichend vom bisherigen Namen der bei der initialen Installation verwendet worden ist. Beispiel : suqeeze.kunde.local neuer Name squeeze-test.kunde.local Dieser DNS-Name muss auf dem Squeeze-Server, auf dem der neue Mandant eingerichtet werden soll, aufgelöst werden können. Dazu sollte entweder der Kunde diese URL in seinem DNS-Server mit der IP-Adresse des Squeeze-Servers einrichten oder wenn man die Installation des neuen Mandanten durchführen möchte (bevor dieser DNS-Eintrag vom Kunden bereitgestellt worden ist) könnte man in der Host-Datei des Windows-Servers einen neuen Eintrag für diese URL mit der IP-Adresse des Squeeze-Servers setzen. Dann würde man die Installation durchführen können, aber die URL wäre nur lokal (auf dem Squeeze-Server) erreichbar. Um den neuen Mandanten anzulegen geben Sie in der im Browser die gewünschte URL ein um in die Mandanteneinrichtung zu gelangen. [![image-1651069606265.squeeze.one_main.php.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1651069606265-squeeze-one-main-php.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1651069606265-squeeze-one-main-php.png) Danach befolgen Sie bitte die Anweisungen zum Anlegen eines neuen Mandanten auf der Seite "Serverinstallation-Windows" im Kapitel "Installation". # Lizenzierung Bitten Sie das Dexpro-Team um die Erstellung einer Lizenz für einen neuen Mandanten. Sobald Sie diese erhalten haben kopieren Sie die Dateien in das Verzeichnis "C:\\DEXPRO\\SQUEEZE\\repository\\config\\worker\\data\\licences". [![image-1651071950258.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1651071950258.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1651071950258.png) Im Anschluss muss die local.yml-Datei im Verzeichnis "C:\\DEXPRO\\SQUEEZE\\repository\\config\\worker\\config" modifiziert werden. [![image-1651072003758.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1651072003758.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1651072003758.png) In der local.yml müssen nun die markierten Werte angepasst werden. Im Bereich Worker muss der Wert "localhost" (wie hier im Beispiel) durch den Mandantennamen ersetzt werden. Das Gleiche gilt für den Eintrag unter "Authentication -> keys". Zum Schluss wird im letzten markierten Feld der Api-Key eingetragen. [![image-1651072301334.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1651072301334.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1651072301334.png) # Update/Upgrade Anleitungen zum Durchführen von Updates und damit verbundenen Tätigkeiten. # Chromium unter Windows # Update auf Linux Um Squeeze auf einem Linux System upzudaten kann wie folgt vorgegangen werden: #### Datenbanksicherung durchführen ```shell # Alle Datenbanken mysqldump --user=root -p --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --routines --events --all-databases --result-file="/var/www/html/2021-01-01_all_databases.bak" # Eine bestimmte Datenbank mysqldump --user=root -p --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --routines --events "databasename" --result-file="/var/www/html/2021-01-01_databasename.bak" ``` #### Cronjobs stoppen ```shell # Liste der Cronjobs öffnen crontab -e -u www-data # z.B. folgenden cronjob mit einen vorangestellten # deaktivieren #*/5 * * * * php /var/www/html/Squeeze/jobs/EmailProcessing.php client.server.net ``` #### Services stoppen ```shell systemctl stop squeeze-worker@1.timer systemctl stop squeeze-worker@1.service systemctl stop rabbitmq-server.service systemctl stop elasticsearch.service systemctl stop mariadb.service systemctl stop apache2.service ``` #### Ab Version 1.10.0 Repository verschieben Ab der Version 1.10.0 muss das Repository verschoben werden. Wenn eine Version kleiner 1.10.0 ein Update erhalten soll, kann das Repository mit folgendem Befehl verschoben werden: ```shell mv /var/www/html/Squeeze/repository/ /var/www/html/ mkdir /var/www/html/repository/config mkdir /var/www/html/repository/config/clients mv /var/www/html/Squeeze/config/server.json /var/www/html/repository/config/server.json mv /var/www/html/Squeeze/config/server.installed /var/www/html/repository/config/server.installed mv /var/www/html/Squeeze/config/clients/*.json /var/www/html/repository/config/clients/ mv /var/www/html/Squeeze/config/clients/*.installed /var/www/html/repository/config/clients/ ``` Die `*.json` Konfigurationsdateien müssen editiert werden, da das Repository der Mandanten verschoben wurde. #### [](#backup-der-aktuellen-squeeze-version)Backup der aktuellen Squeeze Version Um eventuell wieder auf die letzte aktive Version zurückzukommen muss der aktuelle Stand gesichert werden. ```shell cd /var/www/html tar cfvz "$(date '+%Y-%m-%d')_Squeeze.tar.gz" Squeeze/ ``` #### Update per git fetch und pull ```shell # enter the Squeeze directory cd /var/www/html/Squeeze # ggf. git clone git clone https://langer@dev.azure.com/DEXPRO/DEXPRO%20Platform/_git/SQUEEZE . # fetch the available branches git fetch # pull the branch (hard reset) git reset --hard origin/develop_or_another_branch ``` #### Worker Konfiguration übernehmen #### Rechte aktualisieren ```shell cd /var/www/html chown -R www-data Squeeze/ chmod -R 755 Squeeze/ ``` #### Services starten ```shell systemctl start mariadb.service systemctl start apache2.service systemctl start rabbitmq-server.service systemctl start elasticsearch.service systemctl start squeeze-worker@1.timer systemctl start squeeze-worker@1.service ``` #### System Migration per API ausführen Die Datenbank Migrationen müssen noch manuell über die API geprüft bzw. ausgeführt werden. [http://client.server.net/api/migrationStatus](http://client.server.net/api/migrationStatus) # Update auf Windows Diese Seite dokumentiert, wie Updates von Squeeze auf Windows durchzuführen sind. Die Update-Schritte sind i. d. R. gleich, je nach Produktversion können allerdings einzelne Sonder-Tätigkeiten wie z. B. das aktivieren einer PHP-Extension notwendig sein. ### Grundsätzliches Vorgehen #### 1. Update des htdocs Ordners Der htdocs enthält den Programmcode von Squeeze und stellt i. d. R. die einzige zu aktualisierende Komponente dar. [![image-1658235368553.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658235368553.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658235368553.png) ##### Schritte 1. Datenbankbackup erstellen! 2. SQUEEZE Dienste beenden 3. htdocs Verzeichnis sichern 4. neues htdocs Verzeichnis im SQUEEZE Verzeichnis entpacken 5. Im htdocs\\Worker-Verzeichnis muss die umzug.json enthalten sein, sie muss aus dem gesicherten htdocs Verzeichnis kopiert werden. 6. Ggf. sicherstellen ob Jobs aus dem alten htdocs\\jobs Verzeichnis in das neue htdocs\\jobs Verzeichnis kopiert werden müssen. 7. SQUEEZE Dienste wieder starten 8. Datenbankmigration über die Web-Oberfläche ausführen: [![image-1658235122650.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658235122650.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658235122650.png) Zur Durchführung einer Datenbankmigration muss unter dem Reiter Migrationen das Symbol "Migration Ausführen" angeklickt werden. [![image-1650887454008.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650887454008.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650887454008.png) Tragen Sie nun den Mandantennamen in das angegebene Feld ein und klicken Sie auf "Speichern" um die Migration auszuführen. [![image-1650887530401.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650887530401.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650887530401.png) Nun kann über den Reiter "System" die aktuelle Version des Systems angezeigt werden. [![image-1658235236599.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658235236599.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658235236599.png)
[![image-1641982910834.png](https://docs.squeeze.one/uploads/images/gallery/2022-01/scaled-1680-/image-1641982910834.png)](https://docs.squeeze.one/uploads/images/gallery/2022-01/image-1641982910834.png)
#### 2. Update von anderen Komponenten

Die folgenden Schritte sind nicht bei jedem Update notwendig. Sie müssen nur beachtet werden, falls eine der vermerkten Versionen zum Einsatz kommt und die notwendigen Voraussetzen nicht erfüllt sind.

##### PHP Extension - sodium (ab Squeeze Version 2.3.0) Ab Squeeze 2.3.0 wird die PHP Extension Sodium benötigt. Die Datei kann unter **\\Squeeze\\php\\php.ini** gefunden werden. In der Datei nach "Sodium" suchen und in der entsprechenden Zeile das Semikolon entfernen: [![image-1671027876113.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1671027876113.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1671027876113.png)

Auf manchen Windows Systemen reicht es nicht aus die sodium Extension hinzuzufügen. In diesem Fall muss zusätzlich das PHP Verzeichnis z.B. D:\\SQUEEZE\\php in die PATH Umgebungsvariable aufgenommen werden.

Anschließend muss der Webserver einmal neu gestartet werden. ##### OpCache deaktivieren (jede Squeeze Version) 1. opcache für CLI Prozesse deaktivieren (opcache.enable\_cli=0 in der php.ini) ##### Chromium (ab Squeeze Version 1.7.0) **Ab Squeeze 1.7.0** wird Chromium für das PDF-Rendering von E-Mails verwendet. \[[Download](https://github.com/macchrome/winchrome/releases/download/v111.5563.71-M111.0.5563.71-r1097615-Win64/ungoogled-chromium-111.0.5563.71-1_Win64.7z)\] Der Inhalt des [Downloads](https://github.com/macchrome/winchrome/releases/download/v111.5563.71-M111.0.5563.71-r1097615-Win64/ungoogled-chromium-111.0.5563.71-1_Win64.7z) muss in den Ordner **htdocs\\lib\\chromium** kopiert werden. Hierbei handelt es sich um eine "google-freie" Version von Chromium in der Version **111.0.5563.71**. Die Funktionalität wurde mit dieser Chromium-Version getestet und nur in dieser Version kann eine fehlerfreie Ausführung gewährleistet werden. **Ab Squeeze 2.4.0**: Wenn Chromium erfolgreich eingebunden ist, kann dies in der in der Systemprüfung unter dem Punkt "**CLI Services - Health Checks for availability**" eingesehen werden. Ansonsten wird hier ein Fehler angezeigt. [![image-1678891393061.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1678891393061.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1678891393061.png) # Datenbankmigration nach Update ## Migration eines einzelnes Mandanten via UI Zur Durchführung einer Datenbankmigration muss unter dem Reiter Migrationen das Symbol "Migration Ausführen" angeklickt werden. [![image-1650887454008.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650887454008.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650887454008.png) Tragen Sie nun den Mandantennamen in das angegebene Feld ein und klicken Sie auf "Speichern" um die Migration auszuführen. [![image-1650887530401.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650887530401.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650887530401.png) ## Migration aller Mandanten via CLI Im Squeeze-Ordner (htdocs unter Windows) befindet sich ein Ordner `cli` mit Skripten für die Administration. Hier kann das PHP-Skript `migrate-tenant.php` ausgeführt werden um einen einzelnen Mandanten zu aktualisieren. Mit dem Skript `migrate-server.php` werden alle Kommandozeilenbefehle gelistete, die benötigt sind, um alle Mandanten eines Servers zu aktualisieren. ### Beispiele `php migrate-tenant.php mein-mandant.local.intern` führt die Migrationen für einene Mandanten aus. `php migrate-server.php` listet alle Befehle auf, die alle installierten Mandanten migrieren würden. (Linux) `php migrate-server.php | bash` migriert sequentiell alle Mandanten. # Suchindex nach Update reindizieren ## Reindizierung einer einzelnen Dokumentenklasse Um den Suchindex einer einzelnen Dokumentenklasse wiederzuerstellen, kann dieser Button genutzt werden: [![image-1660716212811.png](https://docs.squeeze.one/uploads/images/gallery/2022-08/scaled-1680-/image-1660716212811.png)](https://docs.squeeze.one/uploads/images/gallery/2022-08/image-1660716212811.png)

Aktuell Q2 2023 ist diese Funktion noch synchron. D. h., dass bei einer Dokumentenklasse mit vielen Dokumenten eine lange Wartezeit entsteht und der User, der diesen Knopf drückt, entsprechend lang warten muss.

## Migration via CLI / Konsole ### Ab Squeeze 2.5 Mit dem [Squeezer CLI](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/chapter/squeezer-cli "Squeezer CLI") ist die Indizierung eines einzelnen Mandanten mittels `tenant:reindex` und des gesamten Servers mittels `server:reindex` möglich. ```shell # Hilfe für Mandanten-Reindizierung anzeigen: ./squeezer tenant:reindex --help Description: Reindex documents of all document classes Usage: tenant:reindex Arguments: tenant Tenant identifier (host / domain) of the tenant to run the command for. Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ``` ### Vor Squeeze 2.5 Im Squeeze-Ordner (htdocs unter Windows) befindet sich ein Ordner `cli` mit Skripten für die Administration. Hier kann das PHP-Skript `reindex-tenant.php` ausgeführt werden um alle Dokumentenklassen eines einzelnen Mandanten zu aktualisieren. Mit dem Skript `reindex-server.php` werden alle Kommandozeilenbefehle gelistete, die benötigt sind, um dies für alle Mandanten eines Servers durchzuführen.

Diese Migrationsskripte reindizieren Dokumente aller Dokumentenklassen.

#### Beispiele `php reindex-tenant.php mein-mandant.local.intern` reindiziert einen Mandanten. `php reindex-server.php` listet alle Befehle auf, die alle installierten Mandanten reindizieren würden. (Linux) `php reindex-server.php | bash` reindiziert sequentiell alle Mandanten. # Upgrade Leitfaden von älteren Versionen

Diese Dokumentation ist aktuell nur für den internen Gebraucht gedacht.

### Bekannte Probleme bei Updates Die folgenden Sektionen dokumentieren bisher gefundene Probleme bei Updates von älteren Squeeze Versionen. #### 1.10 -> 2.2 ##### Falsche Feldfilterbedingungen

Aufgetreten bei Updates von: - 1.10

Bei einigen Installationen kam es vor, dass in die Feldbedingungen von Rollenfiltern inkompatibel sind. Symptom: Die Dokumentensuche in der neuen Benutzeroberfläche funktioniert nicht. Lösung: - In Squeeze 2.3 werden die fehlerhaften Feldbedingungen via SQL Migration automatisch gefixt. - In der SQL Tabelle **rolefilterfields** folgende Werte korrigieren:
SpalteWert vorherWert nachher
operator=eq
### Update von z. B. 1.9 auf 2.2.2 via Neuinstallation: 1\. Alle Dienste Beenden 2\. repository und Datenbank sichern 3\. SQUEEZE Deinstallieren \[Ordner umbennen, Dienste löschen, Umgebungsvariablen löschen\] 4\. Neue, saubere SQUEEZE Installation mit aktuellen htdocs herstellen und Lizenz einspielen und schauen das es rennt. 5\. Dienste beenden 6\. DB und Repository wiederherstellen 7\. Dienste wieder starten 8\. Migration durchführen >> php.exe E:\\SQUEEZE\\htdocs\\cli\\migrate-tenant.php srvtesocr01.cdcdomain.local 9\. Index neu aufbauen >> php.exe E:\\SQUEEZE\\htdocs\\cli\\reindex-tenant.php srvtesocr01.cdcdomain.local Wenn Fehler " failed: Array invalid to create xDocValue" auftritt muss man in der E:\\SQUEEZE\\htdocs\\app\\Squeeze\\xDocValue.php in Zeile 306 einkommentieren: if ($dbValues\['value'\] === null) $dbValues\['value'\] = ''; # PHP Update unter Windows Aktuell wird von Squeeze nur die **PHP Version 7.4.x** unterstützt. Da in regelmäßigen Abständen neue Hotfixes für PHP erscheinen wird hier der Updateprozess beschrieben.

Aktuell prüfen wir die Umstellung auf die php Version 8.1.x. Im Moment sind die Versionen 8.x.x jedoch noch nicht freigegeben.

## Was ist zu tun? 1. [Herunterladen der aktuellen PHP Version aus unserem Forum ](https://discuss.dexpro-solutions.de/uploads/short-url/rmHrVCgJhNNImSGyaJDkkBQB5wm.zip)(Anmeldung erforderlich) 2. Stoppen der Dienste **01\_SQUEEZE\_WebServer** und **05\_SQUEEZE\_Worker** 3. Backup des aktuellen PHP Verzeichnisses **C:\\SQUEEZE\\php** verschieben nach **C:\\SQUEEZE\\backup\\php** 4. Entpacken der heruntergeladenen Zip-Datei in das Squeeze Basisverzeichnis [![image-1674517672847.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674517672847.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674517672847.png) 5. Squeeze Basisverzeichnis auswählen ![image](https://discuss.dexpro-solutions.de/uploads/default/original/1X/b0e19f90b8f651ed34d9c36b3e3ac79f23693aab.png) 6. Anschließend die php.ini aus dem Ursprungsverzeichnis in das neue Verzeichnis kopieren **C:\\SQUEEZE\\backup\\php\\php.ini** kopieren nach **C:\\SQUEEZE\\php\\php.ini** 7. Dienst **01\_SQUEEZE\_WebServer** starten 8. In SQUEEZE anmelden und unter System Prüfung die PHP Version kontrollieren [![image-1671459520643.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1671459520643.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1671459520643.png) 9. Dienst **05\_SQUEEZE\_Worker starten** # Apache Update unter Windows Aktuell wird von Squeeze nur die **Apache/2.4.x** unterstützt. Da in regelmäßigen Abständen neue Hotfixes für Apache erscheinen wird hier der Updateprozess beschrieben. ## Was ist zu tun? 1. [Herunterladen der aktuellen Apache Version aus unserem Forum](https://discuss.dexpro-solutions.de/uploads/short-url/p7YL2aCtAa7AilCGaMAVbULPMT9.zip) (Anmeldung erforderlich) 2. Stoppen der Dienste **01\_SQUEEZE\_WebServer** und **05\_SQUEEZE\_Worker** 3. Backup der aktuellen Version für einen eventuellen Rollback z.B. **C:\\SQUEEZE\\apache** verschieben nach **C:\\SQUEEZE\\backup\\apache** 4. Entpacken der Zip-Datei in das Squeeze Basisverzeichnis (z.B. C:\\Squeeze\\) [![image-1674517464004.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674517464004.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674517464004.png) 5. Squeeze Basisverzeichnis auswählen ![image](https://discuss.dexpro-solutions.de/uploads/default/original/1X/b0e19f90b8f651ed34d9c36b3e3ac79f23693aab.png) 6. Anschließend den Ordner **conf** aus dem Ursprungsverzeichnis in das neue Verzeichnis kopieren **C:\\SQUEEZE\\backup\\apache\\conf** kopieren nach **C:\\SQUEEZE\\apache\\conf** 7. Eventuell konfigurierte SSL Zertifikate müssen ebenfalls übernommen werden. In der Regel liegen diese Zertifikate unter D:\\SQUEEZE\\apache\\conf\\ssl\* und werden daher schon durch den vorherigen Schritt berücksichtigt. 8. Dienst **01\_SQUEEZE\_WebServer** starten # Logging & Debugging Anleitungen zur Konfiguration und Verwendung von Logging & Debugging-Möglichkeiten. # System-Information und -Prüfungen ## System-Information In der Administration können Sie sich in dem dargestellten Bereich Informationen über Ihr System anzeigen lassen. Dazu gehören bspw. die Produktversion, Build-Informationen, Informationen über das Betriebssystem des Servers usw. Zudem können die System-Informationen über den [Einstellungen-Dialog](https://docs.squeeze.one/books/squeeze-2-anwender-handbuch/page/benutzereinstellungen) aufgerufen werden. Mit einem Klick auf "Alles Kopieren" können Sie die System-Informationen gesammelt in ihre Zwischenablage kopieren und bei Support-Tickets mitsenden, um die Bearbeitung von Support-Fällen zu unterstützen. [![image-1669892488240.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1669892488240.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1669892488240.png) ## System-Prüfungen Die System-Prüfungen sind ein Mittel um schnell zu testen, ob sich eine Installation in einem korrekten Zustand befindet. Bei diesen Prüfungen werden diverse Dinge getestet wie z. B. die installierte PHP Version, Schreibberechtigungen auf dem Dateisystem, aber auch inhaltliche Prüfungen der Konfigurationen von Squeeze. Die Prüfung kann 3 Ergebnisse haben: - **Grün -** Das System ist in einem fehlerfreien Zustand und kann genutzt werden. - **Gelb -** Das System ist nutzbar, hat allerdings Warnungen, die behoben werden sollten. Es könnte bei Behebung dieser Fehler langfristig zu Problemen kommen. - **Rot -** Das System ist in einem fehlerhaften Zustand und sollte nicht genutzt werden, bevor die Fehler behoben sind.

Der Support eines Systems mit Fehlern (rotes Prüfungsergebnis) kann je nach Wartungsvereinbarung unterschiedlich ausfallen. Grundsätzlich ist es ratsam Fehler in dieser Prüfung so schnell wie möglich zu lösen.

[![image-1669892663199.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1669892663199.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1669892663199.png) # Stapelklassen Konfigurations-Anleitungen im Kontext von Stapelklassen. # Stapelklassen Stapelklassen erfüllen in Squeeze mehrere Funktionen. **1. Stapelklassen sind Gruppierungen von Dokumentenklassen** In einer Stapelklasse können mehrere Dokumentenklassen eingerichtet werden und für die Klassifizierung zusammengefasst werden. Z.B bei der Einrichtung eines Mailrooms. **2. Stapelklassen für Barcode-Erkennung** Die Barcode-Erkennung wird zum Trennen nach Barcode oder zur Erkennung von Anhängen nach Barcode verwendet. Die Definition der Barcodes und ihrer Eigenschaften finden Sie auf der Seite Stapelklassen-Eigenschaften. **3. Stapelklasse für OCR-Sprache** Im Standard werden Deutsch und Englisch verwendet. Dies kann erweitert werden, da es in manchen Sprachen bestimmte Sonderzeichen bzw. andere Buchstabensätze gibt. Die Definition der OCR-Sprachen und ihrer Eigenschaften finden Sie auf der Seite Stapelklassen-Eigenschaften. # Stapelklassen anlegen Nach der Anmeldung in Squeeze können Benutzer mit administrativen Berechtigungen die Konfiguration für Stapelklassen aufrufen. ### Liste der Stapelklassen [![image-1648213723359.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648213723359.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648213723359.png) Nach dem Klick auf den Reiter Stapelklassen öffnet sich die Stapelklassenübersicht. Hier werden alle aktuell konfigurierten Stapelklassen angezeigt. Die Stapelklasse Invoice wird zusammen mit dem Invoice Template ausgeliefert. In der Liste der Stapelklassen kann man die Konfiguration mit einem **Klick** auf den Eintrag öffnen. [![image-1648213795525.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648213795525.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648213795525.png) ### Neue Stapelklasse anlegen Neue Stapelklassen können mithilfe des Symbols "Neuer Eintrag" angelegt werden. Daraufhin öffnet sich ein Dialog in dem der technische Namen und der Anzeigenamen eingegeben werden kann. [![image-1648213901141.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648213901141.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648213901141.png) Ab hier können folgende Konfigurationen durchgeführt werden: 1. OCR 2. Klassifikationen 3. Eigenschaften **OCR** Eine Stapelklasse enthält eine OCR-Konfigurationsoberfläche, welche spezifische Eigenschaften enthält, die konfiguriert werden können. Die vorhandenen Einstellungen der OCR werden ebenfalls unter den Eigenschaften einer Stapelklasse aufgelistet. [![Bildschirmfoto 2024-01-22 um 15.28.49.png](https://docs.squeeze.one/uploads/images/gallery/2024-01/scaled-1680-/bildschirmfoto-2024-01-22-um-15-28-49.png)](https://docs.squeeze.one/uploads/images/gallery/2024-01/bildschirmfoto-2024-01-22-um-15-28-49.png) **Klassifikationen** Mit einem Klick auf "Neuer Eintrag" können der Stapelklasse Dokumentenklassen zugeordnet werden. [![Bildschirmfoto 2024-01-22 um 15.31.27.png](https://docs.squeeze.one/uploads/images/gallery/2024-01/scaled-1680-/bildschirmfoto-2024-01-22-um-15-31-27.png)](https://docs.squeeze.one/uploads/images/gallery/2024-01/bildschirmfoto-2024-01-22-um-15-31-27.png) **Eigenschaften** Über das Symbol " Neuer Eintrag" können der Stapelklasse spezifische Eigenschaften hinzugefügt werden. ![image-1658311433264.png](https://docs.squeeze.one/uploads/images/gallery/2024-01/bildschirmfoto-2024-01-22-um-15-28-58.png) [![image-1648214417143.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648214417143.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648214417143.png) # Stapelklassen-Eigenschaften Mit Stapelklasseneigenschaften lassen sich allgemeine Konfigurationen pflegen, welche sich auf die Verarbeitung der Dokumente auswirken, die zu der jeweiligen Stapelklasseneigenschaft gehören. ## Eigenschaften ##### AttachmentBarcodePattern und SplitBarcodePattern RegEx zum Erkennen von Barcodenummern für Folgendes Beispiel: [![image-1654164644226.png](https://docs.squeeze.one/uploads/images/gallery/2022-06/scaled-1680-/image-1654164644226.png)](https://docs.squeeze.one/uploads/images/gallery/2022-06/image-1654164644226.png) Hier wäre ein RegEx zum Erkennen von 10 Nummern nötig. (\[0-9\]{10}) Folgen die Nummern jedoch einem bestimmten Muster kann man die Suche eingrenzen. Z.B. 0000012345, 0000012346, 00000123457, etc... (00000\[0-9\]{5}) ##### AttachmentBarcodeType Unter AttachmentBarcodeType versteht man die möglichen Barcode-Typen, die verwendet werden können um Anhänge zu erkennen. Z.B. : Typ CODE\_128 Die unterstützen Barcode-Typen werden in der UI angezeigt. Für ältere Systeme finden Sie weiter unten eine Liste. ##### BarcodeEngine [Informationen zur Datenverarbeitung mit Barcodes](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/barcodeverarbeitung "Barcodeverarbeitung")
ZXINGWird als Standard verwendet. Liefert aktuell die Besten Ergebnisse.
ZBARKann als Alternative benutzt werden, falls ZXING kein Ergebnis liefert.
[SOFTEK](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/softek-barcode-engine "Softek Barcode-Engine")Engine, die ab Squeeze 2.4 verfügbar ist und eine separate gültiger Lizenz erfordert.
ALLEs werden beide Engines nacheinander verwendet (führt zu längerer Laufzeit). Verfügbar ab Version 2.0
##### BarcodeImageColor
originalDas Originalbild wird unverändert verwendet.
grayscaleDas Bild wird in Graustufen konvertiert.
blackDas Bild wird in Schwarz/Weiß konvertiert.
##### EasAllowDocumentWithoutAttachment Im Regelfall wird die Archivierung nur zugelassen, wenn am Vorgang auch ein Dokument vorhanden ist. Sollten auch Dokumente archiviert werden können muss diese Eigenschaft auf `true` gesetzt werden. Standard ist hier der Wert `false`. ##### ExportAfterExtraction Hier kann festgelegt werden ob Dokumente in die Validierung gelangen oder direkt exportiert werden sollen. Für den direkten Export wird `true` eingetragen. Soll das nicht passieren tragen Sie `false` ein. Standard ist hier der Wert `false`. ##### FilterDuplicateEmailAttachments Beim Import wird für jedes Vorgangsdokument ein Hashwert erstellt und geprüft. Sollte in einer neuen Email das exakt gleiche Dokument erneut importiert werden, wird geprüft ob es diesen Hash bereits gibt. Wenn ja und die Stapelklasseneigenschaft gesetzt ist wird dieses Dokument nicht importiert. Wert `true` gilt als Standard für aktiviert und `false` für Deaktiviert. ##### FilterDublicateEmails Beim Import wird für jede EML-Datei ein Hashwert erstellt und geprüft. Sollte eine neue exakt gleiche Email erneut importiert werden, wird geprüft ob es diesen Hash bereits gibt. Wenn ja und die Stapelklasseneigenschaft ist gesetzt, wird diese Email nicht importiert. Wert `true` gilt als Standard für aktiviert und `false` für Deaktiviert. ##### IgnoreMandatoryFieldCheckForExport Wenn der Automatische Export konfiguriert worden ist ( ExportAfterExtraction ) und diese Stapelklasseneigenschaft ist gesetzt, dann wird beim automatischen Export die Pflichtfeldprüfung ignoriert. Im Standard ist das Ignorieren der Felder deaktiviert. (Wert `false`). Um die Pflichtfeldprüfung beim automatischen Export zu deaktivieren ist diese Eigenschaft auf `true` zu setzen. ##### OCR Einstellungen bzgl. der OCR / Texterkennung werden hier näher dokumentiert: [OCR-Stapelklasseneigenschaften in Squeeze ](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stepelklasseneigenschaften-ocr-texterkennung "Stepelklasseneigenschaften OCR-Texterkennung") ##### SoapAllowIncomingDocumentWithoutAttachment Ist diese Eigenschaft auf "`true`" gesetzt können über den Soap-Server Dokumente angelegt werden ohne das ein Bild übergeben werden muss. ##### SoapIncomingFileTypeFilter Mit dieser Eigenschaft kann entschieden werden welche Dateitypen (PDF,TIF,JPEG,etc...) zugelassen werden. Ist diese Eigenschaft nicht gesetzt, werden nur PDF-Dateien zugelassen. Die Trennung erfolgt durch Semikolon. Die Dateiendungen sind Case-Insensitiv. ##### SpaceMaxWidth Bis zu welcher Anzahl an Pixeln soll ein Leerzeichen erkannt werden. Ein Beispiel im Standard wären 55 Pixel. Als Wert ist hier die Anzahl an Pixeln einzutragen. ##### SplitBarcodeType Unter SplitBarcodeType versteht man die möglichen Barcode-Typen, die verwendet werden können um ein neues Dokument zu erkennen. Z.B. : Typ CODE\_128 Die unterstützen Barcode-Typen werden in der UI angezeigt. Für ältere Systeme finden Sie weiter unten eine Liste. ##### SplitFixPages Hierbei wird eine fixe Seitentrennung nach der angegebenen Seite konfiguriert. Z.B.: Trenne Jedes Dokument nach der zweiten (2) Seite. ##### SkipXmlExtraction Diese Stapelklasseneigenschaft kann mit `true` oder `false` bzw. mit `ja` oder `nein` konfiguriert werden. Diese Eigenschaft steuert das Überspringen der Werte-Extraktion von XML-Information. Ist diese Eigenschaft mit `true` belegt so überspringt der Extraktions-Schritt die Verarbeitung der XML-Information. Ist diese Eigenschaft mit `false` belegt, wird die Verarbeitung wie gewohnt durchgeführt. Ist die Eigenschaft nicht konfiguriert so geht der Extraktions-Schritt davon aus, dass alle XML-Informationen nach Möglichkeit ausgewertet werden.

Diese Eigenschaft hat einen Effekt wenn das Dokument ein reines XML-Dokument ist. Sollte die Eigenschaft auf "ja"/"false" stehen, so werden reine XML-Dokumente wie XRechnung mit einer entsprechenden Fehlermeldung im 1. Verarbeitungschritt abgelegt.

##### XmlValidationReport Diese Einstellung steuert ob im ersten Schritt der Dokumentenverarbeitung(Initsialisierung-Schritt) ein KoSIT-Validierungs-Report erzeugt werden soll und kann mit `true` oder `false` bzw. mit `ja` oder `nein` konfiguriert werden.

Erfordert die Server/Mandanten-Konfiguration des Digivoice-Dienstes

##### AI-Extraction Mit dieser Stapelklasseneigenschaft kann die KI gestützte Extraktion und OCR aktiviert werden. Diese Stapelklasseneigenschaft kann mit `true` oder `false` bzw. mit `ja` oder `nein` konfiguriert werden. Zusätzlich zu dieser Eigenschaft muss noch das AI-Extraction-Model angegeben werden, mit der die Extraktion und OCR durchgeführt werden soll.

Diese Eigenschaft benötigt gültige Zugangsdaten zur Autorisierung. Diese können bei der DEXPRO beauftragt werden.

##### AI-Extraction-Model Mit dieser Stapelklasseneigenschaft kann das Model der KI gestützten Extraktion und OCR ausgewählt werden. Zur Auswahl stehen: `invoice` Dieses Modell ist speziell für Eingangsrechnungen trainiert. Dabei kann ein vom Standard abweichendes Mapping in dem UserExit `BeforeAiMapping` angegeben werden. Dieses Modell überspringt den OCR Schritt und liefert all seine Ergebnisse im Extraktionsschritt. Die OCR wird jedoch nur übersprungen, wenn die Dokumentenklasse bereits feststeht. Andernfalls wird erst die standardmäßig hinterlegte OCR genutzt um den Vorgang als Eingangsrechnung zu klassifizieren. `legacy` Dieses Modell kann mehrere Dokumententypen auslesen. Dazu gehören neben Eingangsrechnungen auch Liefer- und Bestellscheine.

Diese Eigenschaft benötigt gültige Zugangsdaten zur Autorisierung. Diese können bei der DEXPRO beauftragt werden.

##### AsyncExportAfterValidation Wenn diese Eigenschaft aktiviert wird, werden Dokumente nach der manuellen Validierung im Hintergrund exportiert. Dieses Feature ist nützlich bei Export-Schnittstellen, die sehr langsam sind und erlaubt es Validierern das nächste Dokument zu validieren, während im Hintergrund das vorher validierte exportiert wird. Fehler, die während des Exports auftreten, sorgen dafür, dass das Dokument erneut im Validierungs-Schritt angezeigt wird, damit eine manuelle Fehlerbehandlung / Support möglich ist. ## Barcodetypen

Der Wert für den Barcode Typ ist case-sensitiv (Groß-Kleinschreibung beachten!).

- AZTEC - CODABAR - CODE\_39 - CODE\_93 - CODE\_128 - COMPOSITE - DATABAR - DATA\_MATRIX - DATABAR\_EXP - EAN\_2 - EAN\_5 - EAN\_8 - EAN\_13 - ITF - ISBN\_10 - ISBN\_13 - MAXICODE - PDF\_417 - QR\_CODE - RSS\_14 - RSS\_EXPANDED - UPC\_A - UPC\_E - UPC\_EAN\_EXTENSION # Stapelklasseneigenschaften OCR-Texterkennung ## Allgemeines Die OCR Extraktion ist ein elementarer Teil der Squeeze Software. Dieser Kernbereich der Software ist mit verschiedenen Einstellungen versehen, die das Ergebnis der Extraktion tangieren. Im folgenden Artikel gehen wir auf die Besonderheiten und die Anforderungen der unterschiedlichen Eigenschaften ein. #### Welche Arten der OCR unterstützt Squeeze? Grundsätzlich unterscheiden wir im Kontext von Squeeze zwischen dem Einsatz einer OCR basierend auf den Ressourcen der lokalen Maschine und dem Einsatz eines Remote-OCR-Dienstes. #### Was beinhaltet meine Standardversion von Squeeze? Im Auslieferungszustand ist Squeeze mit einer lokal verfügbaren OCR-Engine ausgestattet. Auf Kundenwunsch können unsere Berater bei einer Squeeze Installation ab der Version 2.4 eine Remote-OCR aktivieren, die mithilfe von AI bessere Ergebnisse liefern kann. ## Allgemeine Stapelklassen-Eigenschaften #### OCREngine (ab Squeeze 2.4) Wird diese Stapelklassen-Eigenschaft nicht konfiguriert greift automatisch die lokale OCR-Engine `ocrmypdf`. Je nach Spezifikation und Lizensierung ihres Squeeze-Systems können folgende Optionen für die OCREngine verwendet werden:
Squeeze VersionOptionen
ab 2.4.0`default`
ab 2.4.0`ai-ocr`
ab 2.5.0`maxocr`
ab 2.6.0`proxy-ocr`
##### Voraussetzungen: - default: - keine - ai-ocr: - um die Remote-AI-OCR zu verwenden ist es notwendig dass eine Internetverbindung auf dem System existiert und dass die Anmeldedaten von Ihrem Squeeze Berater konfiguriert werden. - maxocr - die konfigurierte Mandanten-Konfiguration/Server-Konfiguration für die [Dexpro Platform Integration](https://docs.squeeze.one/books/dexpro-platform/page/integration-in-squeeze "Integration in Squeeze"). - die[ MaxOCR konfiguration](https://docs.squeeze.one/books/dexpro-platform/page/maxai-ocr "MaxOCR"). - proxy-ocr - die [KI Proxy Konfiguration](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/ki-proxy-konfiguration "KI Proxy Konfiguration") ## Stapelklassen-Eigenschaften für die lokale OCR Engine #### OCRForce Im Standard wird bei digitalen PDF´s der Textlayer genutzt und die Felderkennung darauf angewendet (`false`). Um aber eine OCR zu erzwingen ist dieser Schalter auf `true` zu setzen. #### OCRLanguage Im Standard werden die Sprachpakete Deutsch und Englisch verwendet. Für die deutsche Detektion wird der Wert `deu` eingetragen und für die englische Detektion der Wert `eng` eingetragen. Hier können projektspezifisch auch weitere Sprachen oder abgewandelte Sprachpaket-Varianten angegeben werden, bei denen die OCR schneller/langsamer bzw. mit niedriger/höherer Qualität Ergebnisse liefert. Im folgenden eine Übersicht über die im Standard enthaltenen Sprachpakete:
Squeeze VersionOptionen
vor 2.4.0- deu - eng
ab 2.4.0- deu, deu\_best, deu\_fast, deu\_std - lat\_best, lat\_fast, lat\_std - eng - osd
#### OCRPageLimit Anzahl der auszulesenden Seiten im Dokument. Syntax n-m Beispiel für Auslesung der ersten 3 Seiten: 1-3 #### PDFA-Conversion Es wird ein PDFA kompatibles Dokument erzeugt. Eingabe 1|0 (`true`|`false`) #### PDFProcessor Hier gilt `PDFBox` als Standard. `PDFMiner` ist die Alternative . #### PSM-Modes Im Project bietet es sich an, die Modi 3, 4, 6 und 11 zu verwenden. Dabei gilt 3 als Standard.
3Standardeinstellung liefert gute Ergebnisse.
4Wortweise Segmentierung. Es wird nicht nach Zeilen geschaut sondern Worten. (verfügbar ab Version 2.0)
6Gut für Positionsdaten. Hat aber Probleme bei Linien die sehr dicht am Text sind.
11Gut bei vielen Grafiken auf den Dokumenten.
#### OCRRotationThreshold Mit dieser Eigenschaft können Sie beeinflussen wie *agressiv* Seiten in der OCR gedreht werden. Nutzen Sie diesen Wert, wenn Dokumente falsch gedreht werden. Geringe Werte führen dazu, dass mehr Dokumente gedreht werden. Die Software muss sich also nicht sehr sicher sein, dass eine Seite rotiert werden muss. Hohe Werte führen dazu, dass Dokumente seltener gedreht werden, also nur wenn sich die Software sehr sicher ist, dass eine Seite rotiert werden muss. Im Standard ist dieser Wert `9.0` ## Stapelklassen-Eigenschaften für die Remote-AI-OCR/MaxOCR/KI-Proxy Engine

Aktuell gibt es keine Möglichkeiten die Remote-AI-OCR zu beeinflussen.

## Fragen und Antworten? 1. Ich habe die `ai-ocr/maxocr` als OCREngine Eigenschaft ausgewählt, jedoch funktioniert die Texterkennung nicht mehr ? - Gehen Sie bitte Sicher das Ihr Squeeze Berater die notwendigen Anmeldedaten zur Aktivierung der Remote OCR hinterlegt hat. 2. Ich habe mit der Remote-AI-OCR ein Dokument verarbeitet, mehrere Dokumente liefen erfolgreich durch, jedoch bleibt dieses Dokument hängen. - Aufgrund der begrenzten Ressourcen kann die AI-Remote-OCR maximal 100 Seiten pro Dokument verarbeiten. Überprüfen Sie daher die Anzahl der Seiten und nutzen bei nicht erfolgreicher Verarbeitung die lokale OCR. 3. Ich nutze die Remote-AI-OCR und und mein Dokument hat mehrere Seiten jedoch nicht mehr als 100 Seiten trotzdem hängt das Dokument in der Verarbeitungskette fest. - Squeeze wartet insgesamt 3 Minuten auf die Verarbeitung des Dokumentes. Konnte der entfernte Dienst innerhalb dieser 3 Minuten das Dokument nicht verarbeiten, wird Squeeze eine Fehlermeldung mit einem Timeout Hinweis liefern. Schieben Sie das Dokument erneut über die technische Warteschlange in den Schritt "Texterkennung" Squeeze prüft in dem Fall ob das bereits hochgeladene Dokument verarbeitet wurde. # Dokumentenklassen Konfigurations-Anleitungen im Kontext von Dokumentenklassen. # Dokumentenklassen #### Einführung Dokumentenklassen beschreiben jeweils einen spezifischen Dokumententyp. Innerhalb einer Dokumentenklasse können für den jeweiligen Dokumententyp, spezifische Konfigurationen angelegt werden: **1. Felder und Tabellen** - Lieferantennummer - Lieferanten-Name - Bestellnummer - ID im ERP - ... **2. Feldgruppen (auf getrennten Reitern befindliche Felder)** - Kopfdaten - Metadaten - ... **3. Verlinkung zu Lokatoren (Wie werden Werte für ein Feld gefunden?)** - reguläre Ausdrücke - Datenbank-Link, - Key-Value - ... **4. Export-Schnittstellen (Wie werden validierte Dokumente in das Folgesystem gebracht?)** - Documents Soap - XML-Datei - Webservice - ... **5. Eigenschaften (allgemeine Konfigurationen für eine Dokumentenklasse)** Alle möglichen Eigenschaften sind unter der Dokumentationseite der [Stapelklassen-Eigenschaften](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften) aufgelistet.

Die Eigenschaften an einer Dokumentenklasse überschreiben die Eigenschaften an einer Stapelklasse.

#### Dokumentenklasse anlegen Dokumentenklassen können mit einem Klick auf den Reiter Dokumentenklassen konfiguriert werden [![image-1648136421456.de - Outlook.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648136421456-de-outlook.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648136421456-de-outlook.png) Die Invoice Dokumentenklasse wird mit dem Invoice Template ausgeliefert. [![image-1648136538260.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648136538260.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648136538260.png) Mit dem + Symbol können neuen Dokumentenklassen angelegt werden. Hier wird der technische Name und die Beschreibung der Dokumentenklasse gefüllt. Mit einem Klick auf den Eintrag in der Liste öffnet sich der Konfigurationsdialog für die Dokumentenklasse. [![Bildschirmfoto 2024-10-17 um 08.35.56.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/bildschirmfoto-2024-10-17-um-08-35-56.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/bildschirmfoto-2024-10-17-um-08-35-56.png) # Dokumenten- und Tabellenfelder #### Allgemeines **Dokumentenfelder werden in Squeeze für unterschiedliche Funktionen benötigt:** - Informationen aus der Extraktion aufnehmen - Für die Dokumentensuche indiziert werden - Informationen aus der Extraktion im Validierungsclient darstellen - Validierte Extraktionsergebnisse in den Exportschnittstellen bereitstellen **Felder und Tabellen sind als Teil einer Dokumentenklasse zu konfigurieren:** [![image-1667925377844.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667925377844.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667925377844.png) ##### Allgemeine Konfiguration
Feld-KonfigurationBedeutung
Nametechnischer Feldname
BeschreibungName des Feldes, welcher auf Kopfebene angezeigt wird
LokatorAuswahlfeld für bereits konfigurierte Lokatoren, die dem Feld zugewiesen werden können
Subfieldrelevant für die Endbeträge bei Eingangsrechnungen (NetAmount, TaxAmount, TotalAmount, TaxRate)
GruppeAuswahlfeld mit den Gruppen dieser Dokumentenklasse (Feldgruppen -> Groups)
Name im ZielsystemTechnischer Name für die Exportschnittstelle für dieses Feld. Wird nicht durch alle Export-Schnittstellen berücksichtigt.
##### Feldtypen In Squeeze werden verschiedene Arten von Feldern verarbeitet. Diese Feldtypen haben Einfluss auf die Anzeige in der UI und ggf. die Extraktion sowie das Handling bei Export-Schnittstellen.
Feld-TypBedeutung
TextTextfeld das z.B. für Belegnummern, Vorgangsarten oder Mandanten verwendet werden kann.
DateDatumsfeld das z.B. für das Belegdatum oder das Leistungsdatum verwendet wird.
AmountBetragsfeld (numerisch, 2 Nachkommastellen. Wird z.B. für Netto, Steuer und Brutto verwendet.
TableTabellenfeld (Wurde nur in der v1 UI so dargestellt. In der neuen UI werden Tabellen seperat behandelt und daher ist dieser Typ nicht auswählbar.)

Datum- und Betragsfelder bringen in der Praxis komplexe Formatierungs- & Lokalisierungs-Anforderungen mit sich.

##### #### Feldtypen bedingte Funktionalitäten Die Feld-Typen bedingten Funktionalitäten greifen, wie der Name schon sagt, nur wenn der zugehörige Feld-Typ ausgewählt wurde. Dabei werden in der Konfigurations-Oberfläche, je nach Feld-Typ, die bestimmten zugehörigen Eingabe-Elemente angezeigt oder ausgeblendet. Folgende Funktionalitäten werden Feld-Typen bedingt bereitgestellt:
Feld-Typ VersionBedeutung
Text>=2.6.xFeld-Längenbegrenzung mit Abschneide-Funktion: - nicht abschneiden - Anfang abschneiden - Ende abschneiden
Betrag>=2.6.x[Betragsformatierung für Anzeige-Werte innerhalb der Dokument-Validierungsoberfläche:](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/features-verwalten "Features verwalten") - Tausendseperator - Dezimalseperator - Nachkommastellen
#### **Feld-Längenbegrenzung:** Die Feld-Längenbegrenzung lässt sich für Tabellen-Felder als auch für die Dokumenten-Felder konfigurieren. Dabei erweitert sich die Eingabe-Oberfläche, wenn der Daten-Typ "Text" ausgewählt wird. [![image-1705313861736.png](https://docs.squeeze.one/uploads/images/gallery/2024-01/scaled-1680-/image-1705313861736.png)](https://docs.squeeze.one/uploads/images/gallery/2024-01/image-1705313861736.png) Wählt man den Date-Typen "Text" kann man: - die Feldlänge bearbeiten 1. Standardwert = 0 (keine Feld-Längenbegrenzung) - den Inhalt abschneiden lassen auf die gewünschte Feldlänge 1. Nicht abschneiden - Feldlänge wird nicht abgeschnitten, jedoch wird das Feld in der Validierung als fehlerhaft mit einem entsprechendem Hinweis bzgl. der Feldlänge versehen. 2. Feldanfang abschneiden - Feldlänge wird vom Anfang auf die gewünschte Feldlänge abgeschnitten. 3. Feldende abschneiden - Feldlänge wird vom Ende auf die gewünschte Feldlänge abgeschnitten [![image-1705314957653.png](https://docs.squeeze.one/uploads/images/gallery/2024-01/scaled-1680-/image-1705314957653.png)](https://docs.squeeze.one/uploads/images/gallery/2024-01/image-1705314957653.png) #### **Betragsformatierung:** Die Betragsformatierung gilt für Kopffelder und Tabellenfelder und kann innerhalb der Feld-Konfiguration konfiguriert werden. Sobald der Feld-Typ auf Betrag steht wird ein neuer Tab "Darstellung" eingeblendet. In diesem Tab lassen sich dann alle Konfigurationen konfigurieren: [![image-1708004976680.png](https://docs.squeeze.one/uploads/images/gallery/2024-02/scaled-1680-/image-1708004976680.png)](https://docs.squeeze.one/uploads/images/gallery/2024-02/image-1708004976680.png)

Wenn kein Format angegeben wurde, dann wird immer wie bisher auch das Deutsche-Format(Standard) Tausendertrennzeichen(".") und Dezimalstellentrennzeichen(",") mit zwei Nachkommastellen verwendet.

Die Formatierungsoptionen Tausendertrennzeichen und Dezimaltrennzeichen sind ausschließlich Optionen für die Anzeige. Die Daten werden von der Anwendung trotzdem immer im Standard-Format (Deutsch) gespeichert Nachkommastellen werden jedoch übernommen. Dies bedeutet, dass nach dem Validieren die Dezimalstellen erhalten bleiben aber die Trennzeichen wieder, wie im Standardformat erhalten bleiben.

##### Validierungsspezifische Eigenschaften Diese Einstellungen steuern, wie sich ein Feld in der Validierung verhält.
Feld-EigenschaftBedeutung
Pflichtfeldleere Felder werden im Webclient rot dargestellt, die Validierung ist nicht möglich solange das Feld nicht gefüllt ist
Nur LesenIm Webclient kann das Feld nicht bearbeitet werden, Lokatoren können das Feld im Hintergrund füllen
Verstecktdas Feld wird im Webclient nicht dargestellt
Bestätigendas Feld wird im Webclient blau dargestellt und muss vor der Validierung mit Enter bestätigt werden
#### **Tabellenfelder (kurz "Tabellen")** Für Tabellenfelder, in der UI nur als "Tabellen" bezeichnet, gelten die selben Kriterien, die auch für Dokumentenfelder gelten. Mit einer Ausnahme: [![image-1654268333787.png](https://docs.squeeze.one/uploads/images/gallery/2022-06/scaled-1680-/image-1654268333787.png)](https://docs.squeeze.one/uploads/images/gallery/2022-06/image-1654268333787.png) Für die Tabellenfelder ist es wichtig, dass sowohl ein Überschrift- als auch ein Wert-Lokator definiert werden. Mit Hilfe des Überschrift-Lokators wird die Spalte definiert in der per Wert-Lokator, wie im oberen Beispiel, der zu suchende Wert pro Zeile ausgelesen wird. #### Eingabehilfen ##### Konfiguration Eingabehilfen auf Feldern oder Tabellenspalten untersützen Validierer beim Auswählen von vordefinierten Werten auf Basis von Stammdatentabellen. [![image-1667925495049.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667925495049.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667925495049.png)
Feld-KonfigurationBedeutung
Aktiv?Hier kann ausgewählt werden, ob die Eingabehilfe aktiviert oder deaktiviert werden soll
Freitext erlauben?Wenn Freitext erlauben aktiviert ist, dann können auch Werte in dem Feld eingetragen werden, die nicht in der Datenbank stehen.
Suche ab ZeichenHier kann eingetragen werden, ab welcher Anzahl an Zeichen gesucht werden soll.
TabelleHier kann ausgewählt werden, welche Stammdatentabelle als Grundlage für eine Suche dienen soll.
ErgebnisspalteHier kann angegeben werden, aus welcher Spalte der Stammdatentabelle das Ergebnis ausgegeben werden soll.
Suche in Spalte(n)Hier wird angegeben in welchen Datenbankspalten der eingegebene Wert gesucht werden soll.
InformationsspaltenSollten ein oder mehrere Treffer gefunden werden, wird hier angegeben welche Spalteninformationen zur Anzeige der Treffer verwendet werden sollen.
Eingabewert ignorierenFalls aktiv, wird bei der Eingabehilfe der aktuelle Feldwert ignoriert. Das führt dazu, dass mehr Ergebnisse angezeigt werden.
Max. Anzahl SuchergebnisseSteuert, wie viele Ergebnisse gesucht und angezeigt werden sollen.
Zusätzliche Filter, um die Ergebnisse der Eingabehilfe einzuschränkens. unten
**Die Ergebnisse der Eingabehilfe können mit weiteren zur Verfügung stehenden Kopffeldern gefiltert werden. Filter anlegen.:**
TabellenspalteHier wird die Tabellenspalte angegeben, mit der der Feldwert verglichen werden soll.
OperantHier wird der Operator angegeben mit dessen Hilfe der Datenbankwert und Feldwert verglichen werden sollen.
FeldHier wird das Fed ausgewählt in dem der Wert steht, der mit dem Datenbankwert verglichen werden soll.
##### Verhalten

Die Eingabehilfe wird beeinflusst durch den aktuellen Feldwerte. Auch die Extraktions-Alternativen werden bei der Eingabehilfe berücksichtigt.

Die Dokumentation der Eingabehilfe ist noch nicht vollständig, da ihre Funktion aktiv erweitert wird. Wir bitten diese Dokumentation zukünftig erneut aufzusuchen und um Feedback.

1. Wenn das Feld ein **vor erkannten Wert** durch die Extraktion erhalten **(gilt auch für Alternativen)** hat und das Feld aber durch den Nutzer geleert wurde um eine listen artige Selektion der Stammdaten-Werte zu erzeugen - dann wird die Eingabehilfe dennoch durch den **vor erkannten Wert gefiltert** (auch wenn das Feld geleert wurde), das bedeutet das man nie ein anderes Ergebnis erhält bis man den ersten Buchstaben in das Feld eintippt. # E-Mail-Import Anleitungen zur Konfiguration von Mail-Importen und der Integration mit anderen Features. # Funktionsbeschreibung

TODO: Dokumentieren, wie Mail-Importing im Allgemeinen funktioniert.

## Funktionalitäten der E-Mail-Integration von Squeeze #### Worum dreht sich dieser Artikel ? In diesem Artikel wird Ihnen die E-Mail-Verarbeitung innerhalb von Squeeze vorgestellt, dabei fokussieren wir uns auf die Funktionalitäten die zu verschiedenen Momenten in der Prozess-Kette stattfinden. Das bedeutet im genauen : "Wann und wie kann ich, welche Funktionalität benutzen um meine Verarbeitung von E-Mails zu verbessern ?". Dieser Artikel wird Ihnen nicht erklären wie der E-Mail-Import zu konfigurieren ist, dafür können Sie sich den Artikel [E-mail-Konfiguration anschauen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/allgemeine-konfiguration "Allgemeine Konfiguration"). ##### Email Body Conversion Was benötige ich ? - Zugang zur Administrationsoberfläche. - Zugang zur Stammdatenoberfläche - Lese- und Schreibrechte für die Stammdaten-Tabelle emailbodyconversion. Squeeze kann Ihren E-Mail Inhalt zu einer PDF konvertieren. Ein Anwendungsbeispiel wäre, dass einer Ihrer Kreditoren Ihnen ihre Rechnung zwar per E-Mail zukommen lässt, jedoch keine PDF im Anhang zu finden ist. Statt dessen stehen die Abrechnungsinformationen im Inhalt der E-Mail selbst. Mit folgenden Schritten können Sie für ihren bestimmten Kreditor die Konvertierung des E-Mail-Bodys aktivieren. Öffnen Sie die Administration und navigieren Sie zu der Stammdatentabelle "emailbodyconversion" [![image-1674479924749.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674479924749.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674479924749.png) Nun sehen Sie die Konfigurationsoberfläche der Tabelle "emailbodyconversion", öffnen Sie als nächstes den Reiter "Daten". [![image-1674480174164.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674480174164.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674480174164.png) Sie können nun einen neuen Eintrag [![image-1674480644755.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674480644755.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674480644755.png) in die Tabelle einpflegen. Folgende Auswirkungen haben die Spalten-Informationen Pro Zeile: - Batch Class Id - hier tragen Sie ein, für welche Stapelklasse der neue Eintrag gelten soll. - Sender 1. hier tragen Sie die gewünschte Absenderadresse ein auf die diese Regel wirken soll. Es gibt hierbei folgende Möglichkeiten: 1. die Prüfung auf die gesamte Absenderadresse zum Beispiel : "invoice@dexpro.de" 2. die Prüfung auf die Domäne der Absenderadresse zum Beispiel: "dexpro.de" 3. Wenn sie die Absenderadresse nicht spezifizieren wollen und eine globale Konvertierung aller E-mail Inhalte bevorzugen, dann setzen Sie ein "\*" als Absender. - Convert to PDF (X) - Erst wenn das X gesetzt ist, ist die definierte Regel aktiv. # Allgemeine Konfiguration Je Stapelklasse ist es möglich 1-n Emailkonten zu konfigurieren, um Emails automatisiert aus den konfigurierten Postfächern abzurufen und die angehängten Dokumente zu verarbeiten. Es werden drei Verfahren unterstützt, um Emails aus den Postfächern abzuholen. - Abruf via **EWS** (Exchange Web Services) - Abruf via **IMAP** (Internet Message Access Protocol) - Abruf via **Microsoft Graph API** (Graph API mit OAuth2.0) ### Allgemeine Konfiguration Über Importe -> E-Mail gelangen Sie zur Übersicht der Email-Konten. Über das Feld Stapelklasse kann die Stapelklasse ausgewählt werden für die ein neues Email-Konto eingerichtet werden soll. Über "+ Neuer Eintrag kann nun ein neues Konto angelegt werden. [![image-1650967282966.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650967282966.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650967282966.png) #### Ordner konfigurieren Die drei Ordner "Posteingang", "Verarbeitet" und "Fehler" sind die Postfach-Ordner, mit welchen SQUEEZE interagiert.

**Warnung: Diese Ordner müssen sich auf oberster Ebene des Postfachs befinden.** Das Abgreifen von Unterordnern (welches vereinzelt bei Kunden im Einsatz war/ist) ist eine Projektlösung. Bei Updates bitten wir das zu berücksichtigen und darum, die Ordner entsprechend zu verschieben.

### Shared Mailboxes abfragen #### Besonderheit EWS / Graph API Wenn Sie mit einem Benutzer auf ein geteiltes Postfach zuzugreifen, tragen sie im Feld Benutzer zuerst den User ein, mit dem sie zugreifen und danach den Benutzer des geteilten Postfachs, getrennt durch `/`: Beispiel: **[benutzername@domain.de/shared-benutzername@domain.de](mailto:benutzername@domain.de/shared-benutzername@domain.de)** Beispiel mit NTLM Anmeldung: **[local.domain.net\\benutzername/mailbox@domain.de](mailto:benutzername@domain.de/shared-benutzername@domain.de)** ### Verbindung Testen [![image-1658326121521.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658326121521.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658326121521.png) [![image-1658326159869.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658326159869.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658326159869.png) Mit einem Klick auf dieses Symbol kann die Mail-Verbindung getestet werden. [![image-1658326555376.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658326555376.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658326555376.png) Sollte es zu einem Problem bei der Verbindung gekommen sein, wird in der linken unteren Ecke eine Fehlermeldung angezeigt in der der Fehler beschrieben wird. [![image-1658326295680.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658326295680.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658326295680.png) Mit einem Klick auf dieses Symbol wird der Email-Abruf getriggert. ### Provider - EWS

[Im Oktober 2022 wird durch Microsoft die Authentifizierung mittels Basic-Auth bei Exchange Online flächendeckend abgeschaltet.](https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online) Für die Anbindung von Exchange Online Postfächern empfehlen wir die Verwendung der Graph API.

Die BasicAuth für die Exchange Web Services wird im Oktober 2022 abgeschaltet. Wenn der zu einrichtende Dienst nur noch OAuth2.0 mit Verbindung zur Microsoft Graph API unterstütz dann siehe [Abschnitt Besonderheit Microsoft Graph API](#bkmrk-%C2%A0-3 "Klicke hier direkt"). Um zu prüfen, ob die BasicAuth für ein System noch verfügbar ist, kann die folgende URL (ggf. Server durch den eigenen Exchange Server ersetzen) genutzt werden: ``` https://outlook.office365.com/EWS/Exchange.asmx ``` Nach dem Aufruf dieser URL erscheint ein Dialog zur Eingabe des Benutzernamens und des Passworts. Sofern diese Anmeldung erfolgreich ist und eine entsprechende Webseite angezeigt wird, ist BasicAuth verfügbar. #### EWS Verbindungstest Im Falle einer EWS Verbindung kann es hilfreich sein vorab einen Verbindungstest durchzuführen. Das gilt besonders dann, wenn es sich um einen eignen Exchange Server handelt. Der Verbindungstest kann mit der folgenden Seite durchgeführt werden:
``` https://testconnectivity.microsoft.com/tests/EwsTask/input ```
Auf der Seite müssen die Verbindungsdaten angegeben werden, die getestet werden sollen:
[![image-1617708831461.png](https://docs.squeeze.one/uploads/images/gallery/2021-04/scaled-1680-/image-1617708831461.png)](https://docs.squeeze.one/uploads/images/gallery/2021-04/image-1617708831461.png)
Sofern ein AutoDiscover für den Exchange Server eingerichtet wurde kann die Option **(1)** genutzt werden.
Sollte es sich um einen eignen Exchange Server handeln für den kein AutoDiscover eingerichtet ist, dann muss die EWS Adresse manuell angegeben werden **(2)**. - - - - - - ### Provider - Microsoft Graph API

Die Anmeldung durch Squeeze geschieht unter Verwendung von OAuth. Microsoft unterstützt zwar mehrere OAuth-Flows, aktuell unterstützt Squeeze nur den Client Credential Flow und den Authentication Code Flow. Diese unterscheiden sich darin, welche Permissions Squeeze erhält.

Die Graph API wird seit Squeeze 2.1 unterstützt.

### [Authentication Code Flow](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-authentication-code-flow-delegated-ms-graph-api "Konfiguration Authentication Code Flow (delegated) MS Graph API") ##### [(Microsoft delegated)](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-authentication-code-flow-delegated-ms-graph-api "Konfiguration Authentication Code Flow (delegated) MS Graph API") ### [Client Credentials Flow](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-client-credentials-flow-application-ms-graph-api "Konfiguration Client Credentials Flow (application) MS Graph API") ##### [(Microsoft application)](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-client-credentials-flow-application-ms-graph-api "Konfiguration Client Credentials Flow (application) MS Graph API") # Verarbeitung von Anlagen Diese Dokumentation beschreibt, wie Anlagen ("Attachments") bei Mail-Importen gehandhabt werden. Das dokumentierte Verhalten ist unabhängig vom verwendeten Mail-Protokoll, es spielt also keine Rolle, ob Mails mittels IMAP, EWS, usw. importiert werden sollen. ### Anlagen mit Passwörtern Im täglichen Geschäft können über die digitalen Eingangskanäle ihres Unternehmens, eine Vielzahl von verschlüsselten Anlagen erreichen. In folgenden Abschnitt gehen wir auf die zur Verfügung stehenden Möglichkeiten in Squeeze ein. #### Komprimierte Archive(.zip) Erhalten Sie verschlüsselte ZIP-Archive von ihren Absendern so bietet Squeeze Ihnen ab der Version >=2.4.1 eine Möglichkeit Passwörter für die eindeutigen Email-Adressen zu hinterlegen. Für die Konfiguration müssen Sie als Admin die Email-Registerkarte öffnen: [![image-1680602758167.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680602758167.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680602758167.png) im nächsten Schritt gibt es nun eine weitere Registerkarte innerhalb der Email-Konfigurationsoberfläche. Dort können sie die Registerkarte Passwörter auswählen. [![image-1680683167960.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680683167960.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680683167960.png) im Unteren Teil der Oberfläche finden Sie nun ein Button um ein neuen Eintrag hinzuzufügen. [![image-1680607856057.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680607856057.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680607856057.png) Nun können Sie mit der Verwendung einer eindeutigen E-Mail und durch die Eingabe eines Passwort die Daten speichern. [![image-1680608140076.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680608140076.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680608140076.png) - - - - - - Achten Sie bitte auf folgende **Hinweise** in der Handhabung dieser Funktionalität: 1. Sie müssen vollwertige E-Mails angeben, dass bedeutet Sie müssen immer ganze Email-Adressen angeben ansonsten schlägt der Speichervorgang fehl 2. Um eventuell mehrere Passwörter einer E-Mail zuzuordnen legen Sie einfach mehrere Einträge an. 3. Wenn Emails Anhänge enthalten die nicht entschlüsselt werden können, werden diese Emails in den spezifizierten Error E-Mail Ordner verschoben.

Die hinterlegten Passwörter werden nicht für passwortgeschützte PDF-Datein verwendet.

Eine eindeutige E-Mail Adresse ist zum Beispiel: und nicht Konstrukte wie: \*pro@test.com

### Anlagen-Filter #### Funktionsweise Für jede Mail werden die Anlagen auf Basis von Import-Regeln geprüft. Die erste Regel deren Sender und Dateimuster zu einem Anhang passen entscheidet was mit dem Anhang geschieht. Dabei erhalten die Regeln die am nicht global sind die höchste Priorität. ##### Beispiel:
PrioritätenBeispiel
Erste Prioritätspezifscher Sender(support@dexpro.de) + spezifisches Dateimuster(Rechnung.pdf)
Zweite Prioritätspezifische Domäne(dexpro.de) + unspezifisches Dateimuster (\*.pdf)
usw.-

Wenn keine der Regeln passen, wird die Anlage ignoriert.

Für die Ausführung der PDF-Zusammenführung oder PDF-Trennung verwendet Squeeze die Software-Bibliothek "PDFBox". Die Verfügbarkeit der Bibliothek ist für die Anlagen-Filterung dringend notwendig. Ab der Squeeze Version 2.3.4 wird diese Bibliothek mit in die [System-Prüfungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/system-information-und-prufungen "System-Information und -Prüfungen") aufgenommen. Dies ermöglicht Ihnen eine schnelle Identifikation von möglichen Fehlerursachen.

Die Stammdatentabelle `emailattachmentfilters` wird verwendet um SQUEEZE mitzuteilen, ob und wie Anlagen für die Erkennung relevant sind. Die Tabelle hat folgende Struktur:
**Name****Beschreibung****Bedeutung**
idIDEindeutige technische ID
batchclassid Stapelklassen IDID der Stapelklasse für die die Regel definiert wird
senderSenderAbsender der Email (Wildcards erlaubt)
filenamepatternDateimusterDateinamenfilter (Wildcards erlaubt)
typeTypRelevantes **D**okument für die Extraktion oder begleitende **A**nlage
singledocumentEinzeldokumentKennzeichen, ob die Datei ein eigenständiges Dokument werden soll (**X**)
newbatchclassidNeue Stapelklassen IDSofern das Dokument in eine andere Stapelklasse verschoben werden soll, ist hier die Stapelklassen-ID der neuen Stapelklasse anzugeben.
newdocumentclassidNeue Dokumentenklassen IDSofern auch eine neue Dokumentenklasse gesetzt werden soll, ist hier die ID der Dokumentenklasse anzugeben.
#### Beispiel-Konfigurationen ##### Beispiel
**ID****Stapel-klasse****Sender****Muster****Typ****Einzel-Dokument****neue Stapelklasse****neue Dokumentenklasse**
**1**1\*\*.pdfD
**2**1\*AGB.pdfA
**3**1dexpro.deINV\*.pdfDX
**4**1payment@dexpro.deAvis\*.pdfDX22
**5**1dexpro.de\*.xmlA
**6**1invoice@squeeze.one\*.xmlD
**7**1invoice@squeeze.one\*.pdfA
##### Erklärung der Regeln **Regel ID 1:** Diese Regel bedeutet, dass für jeden Absender jedes PDF einer Email als Dokument für die Extraktion behandelt wird und alle PDFs zu einem Dokument zusammengefasst werden. **Regel ID 2:** Diese Regel bedeutet dass für jeden Absender die PDF mit dem Namen **AGB.pdf** als Anlage beibehalten wird. **Regel ID 3:** Diese Regel greift nur bei Absendern der Domain **dexpro.de** und bedeutet, dass PDFs die dem Dateinamenmuster **INV\*.pdf** entsprechen als **D**okument erhalten bleiben. Dabei gilt zusätzlich, dass jede Datei, die diesem Muster entspricht, zu einem eigenständigen Dokument werden. **Regel ID 4:** Diese Regel greift nur bei dem Absender payment@dexpro.de und bedeutet, dass PDFs die dem Dateinamenmuster **Avis\*.pdf** entsprechen als **D**okument erhalten bleiben. Dabei gilt zusätzlich, dass jede Datei, die diesem Muster entspricht, zu einem eigenständigen Dokument einer neuen Stapel- und Dokumentenklasse werden. **Regel ID 5:** Diese Regel greift nur bei Absendern der Domain **dexpro.de** und bedeutet, dass XML Dateien (bspw. eine XRechnungen) als **A**nlagen beibehalten werden. Dabei wird vorausgesetzt, dass es eine gültige PDF in der E-Mail gibt (z.B. aus Regel ID 3), die den Hauptvorgang bildet. **Regel ID 6 & 7:** Diese Regel greift nur bei dem Absender **invoice@squeeze.one** und bedeutet, dass XML Dateien (bspw. eine XRechnung) als **D**okument erhalten bleibt. Alle zusätzlich angehangenen PDF-Dokumente werden als **A**nlagen weitergeführt.

Für die Steuerung der Verarbeitung von E-Mails, die sowohl XRechnungs-Dokumente als auch ZUGFeRD Belege enthalten, können entsprechende Regeln definiert werden.

### Update-Hinweis #### Trennung von Anlagen und Dokument ab Squeeze 1.10 In den Squeeze 1.9 (und älter) wurden Dokumente und Anlagen beim Import zwar unterschiedlich behandelt, allerdings in den Folge-Schritten der Verarbeitung als eine Datei behandelt. Ergebniss war, dass primär zu verarbeitendes Dokument und die Anlagen als eine PDF zusammengeführt und dann auch so extrahiert wurden, als wäre eine einzelne Datei importiert worden. Ab Squeeze 1.10 werden die Anlagen getrennt behandelt und sind somit nicht Teil des Dokumentes, welches extrahiert wird. Zusätzlich kann dies Export-Schnittstellen betreffen, die nur eine Datei pro Dokument exportieren können (Bspw. NavisionSoap). Diese exportieren in der neueren Version nur noch das Hauptdokument, Anlagen werden nicht exportiert.

Falls das Verhalten vor Squeeze 1.10 beibehalten werden soll, dann sind in den Anlagenfiltern alle Anlagen als Dokument zu markieren.

# Verarbeitung unter Windows konfigurieren Um regelmäßig auf neue Emails zu prüfen, muss eine geplante Aufgabe eingerichtet werden. Unter Windows können dafür die geplanten Tasks genutzt werden. Unter Linux erfolgt die Einrichtung mit Hilfe von cron Jobs. ### Einrichtung unter Windows Unter Windows kann ein geplanter Task zur Regelmäßigen Prüfung der konfigurierten Postfächer genutzt werden. Um einen neuen Task einzurichten müssen folgende Schritte durchgeführt werden: #### 1. Aufgabenplanung öffnen Es kann eine eigener Unterordner für Squeeze aufgaben erstellt werden, wenn dies gewünscht ist [![image-1584346136560.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584346136560.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584346136560.png) Auf der rechten Seite kann über den Menüpunkt "Aufgabe erstellen..." die Aufgabe für den Import der Emails angelegt werden. #### 2. Aufgabe erstellen [![image-1584346394020.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584346394020.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584346394020.png) Der Name und die Beschreibung ist natürlich frei wählbar. Damit die Aufgabe unabhängig von der Anmeldung eines Benutzers ausgeführt wird und auch unabhängig von eventuellen Passwortänderungen ist, hat sich bewährt, das **System Konto** auszuwählen. Die Aufgabe "mit höchsten Privilegien" zu starten hat sich ebenfalls bewährt. #### 3. Trigger/Zeitpunkt festlegen [![image-1584346802279.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584346802279.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584346802279.png) Das Intervall in dem die Emails abgerufen werden sollen ist ebenfalls frei definierbar. Bewährt hat sich ein Intervall von 5 Minuten im Produktivsystem. Für Testsysteme kann dieser Intervall natürlich auch kleiner gewählt werden, wenn schnell und viel getestet werden soll. #### 4. Aktion festlegen [![image-1584347128210.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584347128210.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584347128210.png) Als Programm muss die php.exe der Squeeze Installation ausgewählt werden. Als Argumente müssen zwei Werte angegeben werden: - - Pfad zur EmailProcessing.php z.B. **C:\\SQUEEZE\\htdocs\\jobs\\EmailProcessing.php** - - Mandant für den die Emails abgerufen werden sollen z.B. **client.squeeze.net**
Die vollständige Angabe der Argumente lautet also wie folgt:
**C:\\SQUEEZE\\htdocs\\jobs\\EmailProcessing.php client.squeeze.net** # Filterung mittels Black- und Whitelisting

Whitelist und Blacklist sind nacheinander geschalten und stehen daher in Verbindung. Bei aktiver Whitelist muss der Absender erst auf der Whitelist stehen, damit eine aktive Blacklist geprüft wird!

## Validierung eintreffender E-Mails Kurzgesagt (TLDR): 1. **Whitelist Prüfung:** Absender der E-Mail wird mittels Whitelist geprüft. 2. **Blacklist Prüfung:** Betreff der E-Mail des Absenders wird mittels Blacklist geprüft. #### Fall 1 - Absender nicht auf der Whitelist Ist eine Whitelist gepflegt und der Absender nicht auf dieser enthalten sein, dann wird der Betreff gar nicht erst geprüft und die E-Mail nicht importiert. #### Fall 2 - Absender ist auf der Whitelist Ist eine Whitelist gepflegt und der Absender ist auf dieser enthalten, dann wird anschließend der Betreff des Absenders per Blacklist geprüft. #### Fall 2a - Absender Betreff ist nicht auf der Blacklist Ist der Betreff nicht auf der Blacklist, so wird die E-Mail anschließend importiert. #### Fall 2b - Absender Betreff ist auf der Blacklist Ist der Betreff "blacklisted", dann wird die E-Mail nicht importiert. ## Whitelisting Im folgenden Abschnitt wird die Einrichtung der Whitelist beschrieben.

Eine aktive Blacklist wird nach der Whitelist-Prüfung ausgeführt. Steht der Betreff des Absenders in der Blacklist und gilt als gesperrt, wird die E-Mail nicht importiert, obwohl der Absender in der Whitelist steht!

### Whitelist erstellen Die Whitelist Tabelle `emailsenderwhitelist` ist unter den Stammdaten zu finden: [![image-1663601724772.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663601724772.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663601724772.png) Unter der Spalte "Sender" können Absenderadressen (auch mit Wildcard `*`) eingetragen werden. Eine Stapelklasse ist notwendig. Beispielsweise: - `*@dexpro.de` für `hans@dexpro.de` oder `hanna@dexpro.de` - `someone@dexpro.*.de` für `someone@dexpro.beispiel.de` oder `someone@dexpro.anderes.beispiel.de` - `department.*@dexpro.de` für `department.vertrieb@dexpro.de` oder `department.entwicklung@dexpro.de` - `*@dexpro.*` für `hans@dexpro.de` oder `hans.mustermann@dexpro.beispiel.de` Ungültige Einträge mit Sonderzeichen werden bei der Validierung der E-Mail nicht berücksichtigt - ungültige Einträge werden geloggt. ### Whitelist aktivieren Die Whitelist ist aktiv, sobald die Whitelist Tabelle existiert und mindestens ein Eintrag vorhanden ist. Wenn die Tabelle fehlt oder leer ist, ist die Whitelist Funktion inaktiv. Wenn die Whitelist inaktiv ist, wird direkt zur Blacklist-Prüfung gesprungen. Voraussetzung ist außerdem die SQUEEZE Version 2.X.X ### E-Mails von Absendern die nicht gelistet sind E-Mails von nicht gelisteten Absenderadressen, werden nicht importiert. Dies wird geloggt. ## Blacklisting Im folgenden Abschnitt wird die Einrichtung der Blacklist beschrieben.

Eine aktive Whitelist wird vor der Blacklist-Prüfung ausgeführt. Steht der Absender nicht auf der Whitelist, wird die E-Mail bereits nicht importiert und entsprechend nicht weiter geprüft.

### Blacklist erstellen Die Blacklist Tabelle `emailsubjectsblacklist` ist unter den Stammdaten zu finden: [![image-1663602225079.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663602225079.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663602225079.png) Unter der Spalte "Sender" können Absenderadressen eingetragen und unter der Spalte "Subject Pattern" der Wert im Betreff der E-Mail angegeben werden, welche nicht importiert werden sollen. Eine Stapelklasse ist notwendig. ### Blacklist aktivieren Die Blacklist ist aktiv, sobald die Blacklist Tabelle existiert und mindestens ein Eintrag vorhanden ist. Wenn die Tabelle fehlt oder leer ist, ist die Blacklist Funktion inaktiv. Voraussetzung ist außerdem die SQUEEZE Version 1.X.X ### E-Mails mit Betreffen von Absendern die gelistet sind E-Mails von Absendern, deren Betreff als gesperrt (bzw. "blacklisted") eingetragen wurden, werden nicht importiert. Dies wird geloggt. # Leitfaden: Zugriff auf Exchange Online Postfächer einschränken

Dieser Leitfaden wurde bisher mit der Azure-Active-Directory-Cloud getestet.

Dieser Leitfaden bezieht ausschließlich auf die Verwendung der Microsoft Graph-API.

#### Welches Problem lösen wir ? Wir verhindern, dass die Graph API zu viele Berechtigungen auf die Azure-Active-Directory Postfächer der verschiedenen Abteilungen erhält. #### Was benötigen wir ? Um diese Anforderung zu erfüllen benötigen wir folgende softwareseitig -Komponenten: - Eine Powershell +7.0.0 - [Wie installiere ich die Powershell ?](https://docs.microsoft.com/de-de/powershell/scripting/install/installing-powershell?view=powershell-7.2 "How-To-Install Powershell +7.0.0") - Azure-Active-Directory(AAD) - das EXO-V2 Moduler Powershell 7 in der Version 2.0.4 oder höher. - [Wie installiere ich das EXO-V2-Module in der Powershell 7](https://docs.microsoft.com/de-de/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#supported-operating-systems-for-the-exo-v2-module "How-To-Install Exo-Modul V2 for Powershell +7.0.0") - [Ich habe ein Problem beim ausführen von EXO-V2 !](https://docs.microsoft.com/de-de/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#prerequisites-for-the-exo-v2-module "Requirements for EXO-V2-Module") - [Eine Email-Zugriffsberechtige-Gruppe](#bkmrk-erstellen-einer-e-ma) #### Vorwort Diese Dokumentation umfasst nicht die Einrichtung der Graph API für das Abholen der Emails durch Squeeze. Die Anleitung der Einrichtung des Email-Import findest du **[hier](https://docs.squeeze.one/link/378#bkmrk-%C2%A0-3 "Klicke hier um zu erfahren wie man ein Postfach einrichtet.").** Zudem dient dieser Artikel zur Unterstützung der Admins, die Informationen können sich im laufe der Zeit auf den referenzierten Beiträgen ändern. Das ausführen der nachfolgenden Schritte muss **unbedingt** von einem **Admin** des AAD´s durchgeführt werden. #### Was muss ich jetzt als nächstes tun ? Um eine App in seinen Berechtigungen zu beschränken, bietet die Azure-Active-Directory das Anlegen von E-Mail-aktivierten Sicherheitsgruppen. Diese Sicherheitsgruppen können je nach Verwendung zum restriktiven Zugriff auf eine App genutzt werden. Desweiteren sind diese Gruppen in der AAD-Admin-Oberfläche im Standart nicht zu einer App hinzugefügt. Diese Einstellungen kann man nur durch die Verwendung durch die Powershell in Verbindung mit dem EXO-V2 Modul und eines **Admin AAD Accounts** tätigen. ##### Erstellen einer E-Mail aktivierten Sicherheitsgruppe Wenn du bereits eine Sicherheitsgruppe erstellt hast springe zu: [Verbinden der App mit der E-Mail Sicherheitsgruppe](#bkmrk-verbinde-sicherheits) Um eine E Mail Aktivierte Sicherheitsgruppe zu erstellen wollen wir erst einmal auf [die Admin-Oberfläche des AAD´s](https://admin.microsoft.com/AdminPortal/Home#/homepage "Klicke hier um zur Admin Oberfläche zu springen."). Dort klicken wir auf die drei angegebenen Punkte (s. Screenshot) : [![image-1663166911584.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663166911584.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663166911584.png)Im nachfolgenden sind diese weiteren dokumentierten Schritte auszuführen. [![image-1663167010638.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663167010638.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167010638.png)Name und Beschreibung festlegen: [![image-1663167136655.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663167136655.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167136655.png)Wähle den Besitzer (Admin-Account): [![image-1663167249728.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663167249728.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167249728.png)Wähle nun Mitglieder/Email-Accounts die auf die App durch diese Gruppe berechtigt werden soll: [![image-1663167469042.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663167469042.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167469042.png)Nun vergeben wir der Gruppe eine eigene Email-Address:

Die Gruppen-Email Adresse wird für später verwendet, daher sollte man sich diese Email ablegen.

[![image-1663167596925.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663167596925.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167596925.png) Im letzen Fenster bestätigt ihr eure Einstellung und erstellt die Gruppe. - - - - - - ##### Verbinde Sicherheitsgruppe mit Application durch Powershell Da wir nun eine E-Mail aktivierte Sicherheitsgruppe besitzen, müssen wir diese Gruppe der Application (die [zuvor erstellt wurde](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/allgemeine-konfiguration "Allgemeine Konfiguration")) zuordnen. Aktuell haben wir nur die Möglichkeit über die Powershell in Verbindung mit EXO-V2 eine Gruppe, einer App hinzu zufügen. Im ersten Schritt verbinden wir uns mit unserem AAD-Remote Cmdlet, dafür öffnen wir unsere Powershell als Administrator und geben folgenden Befehl ein. [Für weitere Information...](https://docs.microsoft.com/de-de/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps&preserve-view=true#connect-to-exchange-online-powershell-using-modern-authentication-with-or-without-mfa "Hot-To Connect to Exchange Remote Cmdlet") ```Powershell Connect-ExchangeOnline -UserPrincipalName ``` Nun sollte sich ein Pop-Up öffnen, dass einen durch die Authentifizierung bei Microsoft führt.

Unter manchen Linux oder MacOS Distributionen wird kein Pop-Up geöffnet. Um das Problem zu lösen muss über den Device-Code Flow die Authentifizierung durchgeführt werden. Der folgende Befehl muss für den Device-Code Flow ausgeführt werden:

```Powershell Connect-ExchangeOnline -device ``` Nach der erfolgreichen Authentifizierung, erhält man alle Remote-Cmdlets des Exchange-Servers auf die man Berechtigungen hat. Um nun eine App-Berechtigungsgruppe einer App zu zuordnen muss folgender Befehl ausgeführt werden. ```Powershell New-ApplicationAccessPolicy -AppId -PolicyScopeGroupId deineGruppenEmail@deineFirma.com -AccessRight RestrictAccess -Description "Restrict this app to members of distribution group ...." ``` Ist der Befehl erfolgreich ausgeführt worden, dann kann mann seine Anpassungen mit diesem Befehl testen: ```Powershell Test-ApplicationAccessPolicy -Identity deineGruppenEmail@deineFirma.com -AppId ``` Das Ergebnis des Befehls sollte so aussehen: [![image-1663169623801.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663169623801.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663169623801.png) Nun solltest du die App auf die ausgewählten Nutzer der E-Mail aktivierten Sicherheitsgruppe beschränkt haben.

Bis die Änderungen im AAD greifen, kann es bis zu einer Stunde laut Microsoft dauern.

# Konfiguration Client Credentials Flow (application) MS Graph API ### Client Credential Flow Microsoft Graph API ##### Konfiguration in Squeeze [![image-1727850873614.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1727850873614.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1727850873614.png)

Bei den ersten Versionen dieses Features musste die Konfiguration mittels der Felder "Benutzername" und "Passwort" gepflegt werden. Wir empfehlen ein Update. Erwarteter Wert im Feld Benutzername: **maxMustermann@mustermann.de/{client\_id}/{tenant\_id}** Erwarteter Wert im Feld Passwort: **{client\_secret}**

#### Ordner - Konfiguration Bei der Ordnerkonfiguration müssen Sie drei Ordner angeben 1. **Posteingang** Dieser Ordner wird regelmäßig überprüft, um die enthaltenen Emails zu importieren. 2. **Verarbeitet** In diesen Ordner werden die erfolgreich importieren Emails verschoben. 3. **Fehler** In diesen Ordner werden, die Emails abgelegt, die nicht importiert werden konnten (z.B. fehlende Anlagen) [![image-1674472601295.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674472601295.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674472601295.png)

Bei der Definition der Ordner achten Sie bitte darauf, dass die Namen der Ordner eindeutig sein müssen, da die Ordner in der Verzeichnisstruktur des Postfachs gesucht werden. Ist ein konfigurierter Ordner nicht eindeutig kann es dies dazu führen, dass ein anderer Ordner genutzt wird, als der gewünschte.

#### Konfiguration in Entra ID (vormals Azure Active Directory) Weitere notwendige Schritte für ein reibungslosen Ablauf sind die Einrichtung einer Entra ID Application mit einem Client Secret. Die Globale Registrierung eines Mail-Dienstes der "Dexpro" im Entra ID-Directory des Kunden, wird vorerst nicht angeboten. Zudem muss darauf geachtet werden dass die Applikation folgende Scopes besitzt. [![image-1663665552831.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663665552831.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663665552831.png)

Im Standard hat diese Application nun Zugriff auf alle Postfächer. Falls Sie diesen Zugriff auf einzelne Postfächer beschränken möchten, müssen zusätzliche Konfigurationen in Exchange Online, in Entra ID und mittels PowerShell getätigt werden. In dieser Dokumentation von Microsoft wird beschrieben, wie Sie dies mittels Gruppenrichtlinien einrichten: [Verwaltung der Gruppenrichtlinien in der Azure-AD](https://docs.microsoft.com/de-de/graph/auth-limit-mailbox-access) Wenn der Microsoft Artikel nicht ausreichend unterstützend ist, haben wir ein [Leitfaden angefertigt](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/leitfaden-zugriff-auf-exchange-online-postfacher-einschranken "Leitfaden: Zugriff auf Exchange Online Postfächer einschränken") der genauer beschrieben ist.

# Konfiguration Authentication Code Flow (delegated) MS Graph API ### Konfiguration in Squeeze

Diese Konfigurationsoberfläche wird ab der Version 2.3.0 bereitgestellt.

Wenn Sie diese Authentifizierungsmethode nutzen möchten, stellen Sie sicher, dass der Interne Job **refresh-tokens** aktiviert ist. Dies ist weiter unten im Artikel dokumentiert.

[![image-1667829176140.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667829176140.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667829176140.png) - - - - - - Wie man nun erkennt, kann man in der Konfigurations-Oberfläche unter Protokoll zwei Arten der Anbindung zu Microsoft(MS) Graph API wählen: [![image-1667829730505.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667829730505.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667829730505.png) Für den delegierten Autorisierungsprozess wählen wir **Microsoft Graph API Delegated.** Im nächsten Schritt füllen wir die Felder Client ID, Client Secret die Tenant ID und die restlichen Felder. #### Ordner - Konfiguration Bei der Ordnerkonfiguration müssen Sie drei Ordner angeben [![image-1674472601295.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674472601295.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674472601295.png) 1. **Posteingang** Dieser Ordner wird regelmäßig überprüft, um die enthaltenen Emails zu importieren. 2. **Verarbeitet** In diesen Ordner werden die erfolgreich importieren Emails verschoben. 3. **Fehler** In diesen Ordner werden, die Emails abgelegt, die nicht importiert werden konnten (z.B. fehlende Anlagen)

Bei der Definition der Ordner achten Sie bitte darauf, dass die Namen der Ordner eindeutig sein müssen, da die Ordner in der Verzeichnisstruktur des Postfachs gesucht werden. Ist ein konfigurierter Ordner nicht eindeutig kann es dies dazu führen, dass ein anderer Ordner genutzt wird, als der gewünschte.

#### Konfiguration in Entra ID (vormals Azure Active Directory) Weitere notwendige Schritte für ein reibungslosen Ablauf sind die Einrichtung einer Entra ID Application mit einem Client Secret. Die Globale Registrierung eines Mail-Dienstes der "Dexpro" im Entra ID-Directory des Kunden, wird vorerst nicht angeboten. Zudem muss darauf geachtet werden dass die Applikation folgende Scopes besitzt. [![image-1667831638945.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667831638945.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667831638945.png) Anders als in den Permission für den Client Credential Flow ist jegliche Permission hier beschränkt auf den autorisierenden User.

**Merke:** Wenn auf ein Shared-Mailbox Postfach zugegriffen werden soll, muss das Shared-Mailbox Postfach unter Postfach eingetragen werden und die Application Permission Mail.Read.Write.Shared muss konfiguriert werden.

Denken Sie daran, dass die Shared-Mailbox auch Ihrer Email-Aktivierten Sicherheitsgruppe hinzugefügt wird, wenn Sie eine eingerichtet haben.

- - - - - - Ebenfalls ein maßgebender Unterschied zum Client Credential Flow ist hier die Verwendung einer **Redirect URI**. Diese Redirect URI wird in der Entra ID unter der Applikation im Reiter Authentication angelegt: [![image-1667834984266.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834984266.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834984266.png)

Schema Redirect URI: https://Ihr.vollwertiger.DomainName/api/v2/importers/email/authenticate/end

**Merke:** Ein Squeeze Mandant benötigt immer eine Entra ID Applikation mit einer Redirect URI. Das bedeutet Sie müssen für jeden Mandanten eine Applikation anlegen. #### Autorisierungsprozess Authentication Code Flow hat man nun seine Application in Entra ID konfiguriert und alle notwendigen Daten in die Konfigurationsoberfläche getippt kann man nun seine Konfiguration abspeichern. [![image-1667832067117.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667832067117.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667832067117.png) Nun öffnet sich ein weiteres Dialog Feld : [![image-1667832557714.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667832557714.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667832557714.png) Das System hat Ihre Konfiguration gespeichert, den Prozess der Authentifizierung müssen Sie jedoch separat über einen Button in der Email Konfiguration starten. Hierfür wählen Sie bitte den folgenden Button: [![image-1667832766364.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667832766364.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667832766364.png) Nach einem Klick auf diesen Button werden Sie nun zur Oberfläche von Microsoft weitergeleitet. Dort beginnt der Authentifizierungsprozess befolgen Sie die Anweisungen von Microsoft: Geben Sie ihre Email-Adresse an. [![image-1667834432799.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834432799.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834432799.png) Geben Sie Ihr Passwort ein: [![image-1667834456501.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834456501.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834456501.png) Je nach Unternehmen werden Sie ebenfalls aufgefordert eine 2-Faktor-Authentifizierung durchzuführen.: [![image-1667834490358.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834490358.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834490358.png) Sobald Sie Authentifiziert sind, werden die Berechtigungen abgefragt und Sie werden aufgefordert diese Berechtigungen zu bestätigen. Nach Ihrer Bestätigung leitet Microsoft umgehend zurück zur Squeeze-Oberfläche. Die Oberfläche wird Ihnen nun anzeigen ob Squeeze nun Autorisiert ist oder ob ein Fehler aufgetreten ist: [![image-1667834259123.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834259123.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834259123.png) Nun können Sie die Mail Verbindung testen Indem Sie den Mail Verbindungstest Button in der Oberfläche bedienen. #### Job-Konfiguration Die Verwendung dieses Authentifizierungsverfahrens erfordert, dass ein seperater Job aktiviert ist, welcher im Hintergrund die Zugriffsdaten für die Graph API aktuell hält. Hierfür finden wir in der Administration unter "Skripte" das neue Skript mit den Namen **refresh-tokens**: [![image-1667905655850.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667905655850.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667905655850.png) Dieses Skript kann man zu jedem Zeitpunkt manuell ausführen.

Sie müssen für dieses Skript einen Job einrichten, der häufig genug ausgeführt wird, um ein Ablaufen der Zugriffsdaten zu verhindern. [Im Standard sind Refresh-Token von Microsoft 1 Tag lang gültig](https://learn.microsoft.com/en-us/azure/active-directory/develop/refresh-tokens), es sollte also mehrmals am Tag versucht werden die Zugriffsdaten zu aktualisieren. Wir empfehlen den Job jede Stunde auszuführen: Cron-Ausdruck für den Job: **\*/50** \* \* \* \*

Wie Jobs zu konfigurieren sind, ist hier dokumentiert: - [ Artikel über Job Ausführungen in Squeeze](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/einrichten-der-jobverwaltung-squeeze-2 "Einrichten der Jobverwaltung SQUEEZE 2") - [Artikel über Job Steuerungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/jobs-uber-benutzeroberflache-steuern "Jobs über Benutzeroberfläche steuern") #### Fragen und Antworten
##### Was passiert wenn der Job ausfällt ? Ist der Job durch unvorhersehbare Gründe nicht gelaufen so müssen Sie sich neu Authentifizieren mit dem Authentifizierung-Button in der Email-Konfiguration
##### Kann ich einfach meine Postfach in der Konfiguration ändern und muss ich danach was tun ? Sobald Sie die Konfiguration ändern oder abspeichern, weist die Anwendung Sie darauf hin, ein neuen Authentifizierungsprozess einzuleiten. Lehnen Sie dieses Aufforderung ab, haben Sie immer noch die Möglichkeit den Authentifizierungsbutton zu betätigen.
##### Kann ich meine Entra ID Applikation für mehrere Squeeze Mandanten nutzen ? Nein, die Verwendung einer Entra ID Applikation für mehrere Mandanten ist nicht Möglich, solange die Mandanten unter anderen Domänen erreichbar sind. **Beispiel:** 1 Mandant: test.mandant.squeeze.one 2 Mandant: test2.mandant.squeeze.one In diesem Beispiel kann man keine Application verwenden, da wir pro Application nur einen Mandanten ansprechen können. Ein Authentifizierung bei Microsoft würde ggf. immer nur auf einen Mandanten laufen.

Du hast die Möglichkeit mehrere Postfächer mit der selben Applikation zu nutzen, dort gibt es keine Begrenzungen.

##### Meine Zugriff durch die AzureTokens laufen ständig ab, obwohl ich den Job richtig konfiguriert habe. Es kann vorkommen, dass die Server Zeit und die konfigurierte Zeit der Squeeze Applikation sich unterscheiden. **Beispiel:** Server Zeit: CEST (UTC +2) Squeeze Zeit: UTC (UTC +0) In diesem Fall werden die Tokens, die erzeugt wurden, in CEST abgespeichert. Wenn in diesem Fall die Squeeze Applikation nun prüft, ob ein Token erneuert werden muss, dann wird diese in diesem Fall den Token als noch nicht abgelaufen ansehen, da der Token in der Annahme von Squeeze gültig ist. Das liegt daran, dass Squeeze den Token in der Vergangenheit mit UTC (+0) prüft aber der Token wurde mit CEST (+2) ausgestellt. Der Token ist demnach schon abgelaufen, da die Squeeze Applikation in der zeitlichen Vergangenheit hängt. Das Problem wurde mit der Version 2.5 behoben. Sollten Sie diese Version noch nicht besitzen, versuchen Sie die Serverzeit mit der Applikationszeit zu synchronisieren. Dazu kann die Zeitzone in der php.ini gesetzt werden. Siehe: [https://www.php.net/manual/en/datetime.configuration.php](https://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone)
## # Configuration Client Credentials Flow (application) MS Graph API [ENG] ### Client Credential Flow Microsoft Graph API ##### Configuration in Squeeze [![image-1677680176067.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677680176067.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677680176067.png)

In the first versions of this feature, the configuration had to be maintained using the "Username" and "Password" fields. We recommend an update. Expected value in the Username field: **maxMustermann@mustermann.de/{client\_id}/{tenant\_id}** Expected value in the Password field: **{client\_secret}**

#### Ordner - Konfiguration In the folder configuration you need to specify three folders 1. **Inbox** This folder is regularly checked to import the emails it contains. 2. **Done** The successfully imported emails will be moved to this folder. 3. **Error** The emails that could not be imported (e.g. missing attachments) are stored in this folder. [![image-1677680190121.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677680190121.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677680190121.png)

When defining the folders, please make sure that the names of the folders must be unique, since the folders are searched for in the directory structure of the mailbox. If a configured folder is not unique, this can lead to a different folder being used than the desired one.

#### Configuration in AAD (Azure Active Directory) Other necessary steps for a smooth process are the setup of an Azure Active Directory Application with a Client Secret. The global registration of a mail service of "Dexpro" in the Azure Active Directory of the customer is not offered for the time being. In addition, it must be ensured that the application has the following scopes. [![image-1663665552831.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1663665552831.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663665552831.png)

By default, this application now has access to all mailboxes. If you want to restrict this access to individual mailboxes, additional configurations must be made in Exchange Online, the AAD and using PowerShell. This documentation from Microsoft describes how to set this up using Group Policy: [Managing Group Policy in Azure AAD](https://learn.microsoft.com/en-us/graph/auth-limit-mailbox-access). If the Microsoft article is not sufficiently supportive, we have made a [guide](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/leitfaden-zugriff-auf-exchange-online-postfacher-einschranken) that is more detailed.

# Configuration Authentication Code Flow (delegated) MS Graph API [ENG] ### Configuration in Squeeze

This configuration interface is provided as of version 2.3.0.

If you want to use this authentication method, make sure that the Internal job refresh-tokens is enabled. This is documented further down in the article.

[![image-1677681826025.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681826025.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681826025.png) - - - - - - As you can see now, in the configuration interface under Protocol you can choose two types of connection to Microsoft(MS) Graph API: [![image-1677681454770.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681454770.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681454770.png) For the delegated authorization process we select **Microsoft Graph API Delegated**. In the next step we fill in the Client ID, Client Secret, Tenant ID and the rest of the fields. #### Folder - Configuration In the folder configuration you need to specify three folders [![image-1677681462099.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681462099.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681462099.png) 1. **Inbox** This folder is regularly checked to import the emails it contains. 2. **Exported** The successfully imported emails are moved to this folder. 3. **Error** The emails that could not be imported (e.g. missing attachments) are moved to this folder.

When defining the folders, please make sure that the names of the folders must be unique, because the folders are searched in the directory structure of the mailbox. If a configured folder is not unique, this can lead to a different folder being used than the desired one.

#### Configuration in AAD (Azure Active Directory) Other necessary steps for a smooth process are the setup of an Azure Active Directory Application with a Client Secret. The global registration of a mail service of "Dexpro" in the Azure Active Directory of the customer is not offered for the time being. In addition, it must be ensured that the application has the following scopes. [![image-1667831638945.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667831638945.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667831638945.png) Unlike in the Permission for Client Credential Flow, any permission here is limited to the authorizing user.

**Note:** If a shared mailbox is to be accessed, the shared mailbox must be entered under Mailbox and the Application Permission Mail.Read.Write.Shared must be configured.

Remember that the shared mailbox will also be added to your Email Enabled security group if you have one set up.

- - - - - - Another significant difference to the Client Credential Flow is the use of a **Redirect URI**. This Redirect URI is created in the AzureActive directory under the Application in the Authentication tab: [![image-1667834984266.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834984266.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834984266.png)

Scheme Redirect URI: https://Ihr.vollwertiger.DomainName/api/v2/importers/email/authenticate/end

**Note:** A Squeeze client always requires an Azure Active Directory application with a redirect URI. This means that you must create an application for each client. #### Authorization Process Authentication Code Flow Once you have configured your application in the AAD and entered all the necessary data in the configuration interface, you can save your configuration. [![image-1677681495053.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681495053.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681495053.png) Now another dialog box opens: [![image-1677681550422.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681550422.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681550422.png) The system has saved your configuration, but you need to start the process of authentication separately using a button in the email configuration. For this purpose please select the following button: [![image-1677681593688.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681593688.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681593688.png) After clicking this button, you will now be redirected to the Microsoft interface. There, the authentication process begins. Follow Microsoft's instructions: Enter your email address. [![image-1677681605581.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681605581.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681605581.png) Enter your password: [![image-1667834456501.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834456501.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834456501.png) Depending on the company, you may also be asked to perform 2-factor authentication: [![image-1667834490358.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834490358.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834490358.png) Once you are authenticated, you will be prompted for permissions and asked to confirm those permissions. After your confirmation, Microsoft will immediately redirect you back to the Squeeze interface. The interface will now show you if Squeeze is now authorized or if an error has occurred: [![image-1667834259123.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1667834259123.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834259123.png) Now you can test the mail connection by clicking the Mail Connection Test button in the interface. #### Job-Configuration The use of this authentication method requires that a separate job is activated, which keeps the access data for the Graph API up-to-date in the background. For this purpose, we find the new script named refresh-tokens in the administration under **"Scripts"**: [![image-1677681718105.png](https://docs.squeeze.one/uploads/images/gallery/2023-03/scaled-1680-/image-1677681718105.png)](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681718105.png) You can run this script manually at any time.

You need to set up a job for this script that runs frequently enough to prevent the access data from expiring. By default, refresh tokens from Microsoft are valid for 1 day, so you should try to refresh the access data several times a day. We recommend running the job every hour: Cron expression for the job: \*/50 \* \* \* \*.

How to configure jobs is documented here: - [ Artikel über Job Ausführungen in Squeeze](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/einrichten-der-jobverwaltung-squeeze-2 "Einrichten der Jobverwaltung SQUEEZE 2") - [Artikel über Job Steuerungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/jobs-uber-benutzeroberflache-steuern "Jobs über Benutzeroberfläche steuern") #### #### FAQ
##### What happens if the job fails? If the job did not run due to unforeseen reasons you have to re-authenticate using the authentication button in the email configuration.
##### Can I just change my mailbox in the configuration and do I have to do anything after that? As soon as you change or save the configuration, the application prompts you to initiate a new authentication process. Reject this request. You still have the option to press the authentication button.
##### Can I use my Azure Active Directory Application for multiple Squeeze clients? No, using one Application (AAD) for multiple clients is not possible as long as the clients are accessible under other domains. **Example:** 1 client: test.client.squeeze.one 2 client: test2.client.squeeze.one In this example we cannot use an application, because we can only address one client per application. Authentication with Microsoft would only run on one client at a time.

You have the possibility to use multiple mailboxes with the same application (AAD), there are no limits.

##### My access through AzureTokens constantly expires, even though I have configured the job correctly. In this case the server time configuration and the time configuration of the Squeeze application might differ. **Example:** Server Time: CEST (UTC +2) Squeeze Time: UTC (UTC +0) In this case, the tokens that were generated are stored in CEST. If, in this scenario, the Squeeze application checks whether a token needs to be refreshed, the application will consider the token as not yet expired because it assumes the token is valid in the context of Squeeze. This is because Squeeze checks the token in the past with UTC +0, but the token was issued with CEST (UTC +2). Therefore, the token has already expired in CEST but not in UTC, which Squeeze checks for. The problem has been fixed in version 2.5. if you don't have this version yet, try to synchronize the server time with the application time. This can be done by configuring the date.timezone in the php.ini. See: [https://www.php.net/manual/en/datetime.configuration.php](https://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone)
## # Übernahme von E-Mail-Feldern in Squeeze-Felder Sofern beim Import einer E-Mail Informationen wie **Absender**, **Empfänger**, **Betreff** usw. ausgelesen werden sollen, müssen die entsprechenden folgenden Squeeze-Felder an der betroffenen Dokumentenklasse vorhanden sein:
**Name des anzulegenden Squeeze-Feldes****Information der Mail**
EmailReceivedDate Empfangsdatum
EmailFromAddress Absender-Mail-Adresse
EmailFromName Absender-Name
EmailToAddress Empfänger
EmailMailBoxUserPostfach (aus dem die Mail abgeholt wurde)
EmailSubject Betreff
EmailMessageId ID der Nachricht
EmailImportFolder Import-Ordner
EmailProcessedFolder Verarbeitet-Ordner
EmailInvalidFolder Fehler-Ordner
# Unterstützung von S/MIME Mails können optional signiert und/oder verschlüsselt werden. Das wird üblicherweise mittels [S/MIME](https://de.wikipedia.org/wiki/S/MIME) umgesetzt. ### Signaturen Es ist aktuell nicht möglich, dass Squeeze die Signature von S/MIME-signierten Mails verifiziert. Die Verarbeitung solcher Mails ist allerdings dennoch möglich, dabei wird die Signatur allerdings nicht verifiziert.

Zum aktuellen Zeitpunkt (August 2024 / Squeeze 2.12) ist nicht garantiert, dass alle Mails im S/MIME-Format unterstützt werden. Sollten Sie diese intensiv nutzen, melden Sie sich beim Support oder ihrem Partner, um eine Erweiterung der Unterstützung von S/MIME anzustoßen.

### Verschlüsselung Es ist aktuell nicht möglich, dass SMIME verschlüsselte Mails durch Squeeze entschlüsselt werden. # Dokumentverarbeitung Dokumentation zu Features, die bei der Hintergrundverarbeitung von Dokumenten zum Einsatz kommen. # Barcode-Verarbeitung Squeeze ist in der Lage Barcodes aus Dokumenten auszulesen. Die Extraktion von Barcodes findet in mehreren Funktionen Anwendungen, die hier dokumentiert werden. ### Barcode-Schritt Die Barcodeerkennung ist einer der ersten Schritte in der Verarbeitungskette von Squeeze. Sie findet vor der Texterkennung statt: [![image-1675769805083.png](https://docs.squeeze.one/uploads/images/gallery/2023-02/scaled-1680-/image-1675769805083.png)](https://docs.squeeze.one/uploads/images/gallery/2023-02/image-1675769805083.png) (Abb.1) #### Barcodetrennung & Anlagentrennung Barcodes werden üblicherweise in diesen Szenarien genutzt: - Trennung von Dokumentenstapeln in einzelne Dokumente - Trennung von Anlagen und eigentlichem Dokument Die Barcode-Verarbeitung im Barcode-Schritt lässt sich über [Stapelklasseneigenschaften](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften) konfigurieren. Falls die Konfigurationsmöglichkeiten nicht ausreichen ist der Barcode-Schritt via UserExit anpassbar: [Beispiele UserExit Barcodeverarbeitung](https://docs.squeeze.one/link/431#bkmrk-page-title). ##### Beispiel **Ausgangssituation** Durch die innerbetrieblichen Prozesse erstellen Sie für jede Woche je Lieferant eine Sammlung von eingescannten Dokumenten. Jede Rechnung beinhaltet nun ein von Ihnen angeklebten Barcode. Mit dem Informationsgehalt, definieren die Barcodes nun die Art ihrer Dokumente. **Umsetzung** Squeeze bietet für die Lösungsumsetzung einige [Stapelklassen-Eigenschaften.](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften "Stapelklassen-Eigenschaften") Mit diesen Eigenschaften lassen sich der zu erkennende Barcode-Typ bestimmen (bei mehrerer Barcodes auf einer Seite hilfreich), definieren welche Seiten als Anhang verwendet werden sollen oder welche Seiten eine komplett neue Rechnung in Squeeze erzeugen sollen. ### Barcodes als Feldwerte extrahieren Squeeze lässt auch die Extraktion von Barcodes als Feldwerte zu. Als Werkzeuge für die Realisierung dienen der [Barcode-Lokator](https://docs.squeeze.one/link/547#bkmrk-page-title) und die Nutzung der [AfterLocator-UserExits. ](https://docs.squeeze.one/books/squeeze-beispiele-f%C3%BCr-userexits/chapter/afterlocatorextraction)Diese Barcodes werden gemeinsam mit anderen Lokatoren im Extraktionsschritt ausgeführt: [![image-1675773032222.png](https://docs.squeeze.one/uploads/images/gallery/2023-02/scaled-1680-/image-1675773032222.png)](https://docs.squeeze.one/uploads/images/gallery/2023-02/image-1675773032222.png) (Abb. 2) ### Barcode-Engines #### Links Weiterführende Informationen sowie Limitierung der jeweiligen Barcode-Engines entnehmen Sie den folgenden Seiten: 1. Zxing-Barcode-Engine 2. Zbar-Barcode-Engine 3. [Softek-Barcode-Engine](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/softek-barcode-engine "Softek Barcode-Engine") # Softek Barcode-Engine Um die besonderen und aufwändigsten Barcode-Typen zu ermitteln, integriert Squeeze ab Version 2.4 die Softek Barcode Engine. Die Verwendung der Engine bedarf einer besonderen Konfiguration, auf die wir in diesem Artikel eingehen werden. ##### Einsatz der Softek Barcode Engine Der Barcode-Extraktions-Schritt Um die Integration gänzlich auch in Ihrem Projekt einsetzen zu können müssen Sie folgende Schritte beachten. 1. Bestimmen Sie den Barcode-Typen und den Barcode-RegEx-Pattern (s. [Stapelklassen-Eigenschaften](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften "Stapelklassen-Eigenschaften")). 2. Wenn nötig konfigurieren Sie den [Barcode-Lokator](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/lokator-barcode "Lokator: Barcode") für ihre Eingabebereiche in der Validierung. ##### Überprüfung der Verfügbarkeit von Softek Squeeze bietet mit Veröffentlichung der Integration der neuen Barcode-Engine auch einen neuen System Check. Dieser System-Check überprüft die Verfügbarkeit des Lizenzschlüssels. Ist alles Konfiguriert können Sie unter der Administration von Squeeze den Punkt [System-Prüfung](https://docs.squeeze.one/link/512#bkmrk-system-pr%C3%BCfungen) aufrufen: [![image-1675776106662.png](https://docs.squeeze.one/uploads/images/gallery/2023-02/scaled-1680-/image-1675776106662.png)](https://docs.squeeze.one/uploads/images/gallery/2023-02/image-1675776106662.png) Nun überprüfen Sie das Ergebnis und achten Sie dabei auf die Hinweise der [System-Prüfungen und deren Bedeutungen](https://docs.squeeze.one/link/512#bkmrk-system-pr%C3%BCfungen) Im Idealfall sieht ihr Softek Barcode License Check wie folgt aus :

[![image-1675776568068.png](https://docs.squeeze.one/uploads/images/gallery/2023-02/scaled-1680-/image-1675776568068.png)](https://docs.squeeze.one/uploads/images/gallery/2023-02/image-1675776568068.png)

folgende Verhaltensmuster können auftreten wenn **kein** Lizenzschlüssel konfiguriert wurde: -

Eine Warnung(Gelb) wird ausgegeben, wenn das aktuelle System nicht so konfiguriert ist, dass Softek als Barcode-Engine verwendet wird

-

Ein Fehler (Rot) wir ausgegeben, wenn das aktuelle System so konfiguriert ist, dass Softek als Barcode-Engine verwendet wird.

##### Risiken in der Verwendung von Softek als Barcode-Engine In der Version 2.4.0 wird vorerst weniger an Barcodes unterstützt als bisher. Bei Sonder-Umsetzungen können Sie immer gerne mit ihrem zuständigen Squeeze-Berater in Kontakt treten. Die Unterstützen Barcode-Typen sind:
Barcode-TypUnterstützung
Codabarja
Code 128ja
Code 25 / ITFja
Code 39ja
Code 93ja
Datamatrixja
QRCodeja
EAN 9ja
EAN 13ja

Damit Squeeze die Extraktion eines Dokumentes nicht gänzlich unterbricht, weil die Softek-Barcode-Engine nicht verfügbar ist, werden Fehler ins bekannte [Log](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/chapter/logging-debugging "Logging & Debugging") geschrieben.

# Worker Manager Der Worker Manager ist eine experimentelle Komponente zur Verteilung von Jobs an mehrere Worker. Der Manager wurde umgesetzt, um eine faire Verteilung der verfügbaren Worker zu ermöglichen, was überwiegend im Cloud Kontext zum Einsatz kommt. ### Konfiguration Der Manager ist in Squeeze aktivierbar, indem folgendes konfiguriert wird. #### Umgebungsvariablen Diese Umgebungsvariablen müssen am Squeeze Server eingestellt werden, damit der Manager nutzbar wird.
SQZ\_WORKER\_MANAGER\_URLDie HTTP Adresse des Worker Managers
SQZ\_WORKER\_MANAGER\_ACTIVEIst der Manager überhaupt aktiv und nutzbar?
SQZ\_WORKER\_MANAGER\_FORCE**Optional** - Diese Variable forciert, dass alle Mandanten den Worker Manager nutzen und übersteuert das zugehörige Feature Flag. Zweck dieser Variable ist, dass somit alle Kunden dazu forciert werden, den Manager zu nutzen, wenn bspw. die RabbitMQ nicht mehr eingesetzt werden soll.
``` SQZ_WORKER_MANAGER_URL: "http://worker-manager:80"

SQZ_WORKER_MANAGER_ACTIVE: "true"

SQZ_WORKER_MANAGER_FORCE: "true" # Optional ```
#### Server/Mandantenkonfiguration Das Feature Flag `workerManager` aktiviert für einen Mandanten oder den Server, ob der Manager für die Verwaltung von Jobs genutzt werden soll. **Achtung:** Die Umgebungsvariable `SQZ_WORKER_MANAGER_FORCE` überschreibt dieses Feature Flag. Falls also das Flag gesetzt ist, aber das System das zu ignorieren scheint, sollte geprüft werden, ob diese Umgebungsvariable durch einen Administrator gesetzt wurde. ```JSON { "features": { "workerManager": "False" }, } ``` ### Funktionsweise #### Jobauswahl Der Manager wählt Jobs so aus, dass zeitgleich möglichst viele Kunden bedient werden. Diese Auswahl basiert auf dem Ansatz, dass der nächste zu bearbeitende Job von dem Kunden gewählt wird, der aktuell am wenigsten (bzw. keine) aktiven Jobs hat. #### Fehlerbehandlung Sollte es während der Verarbeitung zu einem unerwarteten Fehler kommen, dann werden Jobs erneut zur Verarbeitung eingereiht. Bei **Timeouts** ist das Verhalten ebenso. Im Standard wird ein Job nach 28 Minuten als fehlgeschlagen interpretiert. ### Architektur #### Datenbank Der Manager speichert seine Daten ausschließlich in einer dedizierten SQL Datenbank.

Die Datenbank des Managers enthält Jobs aller Mandanten. Sie muss während dem Server-Setup von Squeeze angelegt werden, wenn der Manager zum Einsatz kommen soll.

# Lokatoren Anleitungen zur Extraktion mittels Lokatoren. # Lokatoren Lokatoren sind in Squeeze Werkzeuge mit deren Hilfe Textinformationen aus Dokumenten ermittelt werden. Lokatoren können in Squeeze Feldern zugewiesen werden, in diesem Fall wird das Lokatorergebnis in das jeweilige Dokumentenfeld übernommen. **In Squeeze sind verschiedene Lokatorentypen verfügbar:**
LokatortypBedeutung
Regular ExpressionLokator für reguläre Ausdrücke z.B. (RG\[0-9\]{5,6})
KeyWordLokator für Schlüsselbegriffe. Diese Schlüsselbegriffe werden für den Fall, dass z.B. ein Buchstabe im Wort nicht richtig erkennbar ist, mit einer Fuzziness von einem Zeichen gesucht.
Invoice AmountsLokator für Endbeträge und Steuersatz einer Rechnung (Nettobetrag, Bruttobetrag, Steuerbetrag und Steuersatz)
Document DateLokator für Datumsangaben
Keyword to ValueLokator für Werte (reguläre Ausdrücke) die auf einen Schlüsselbegriff umgesetzt werden. Z.B: Das Wort "Schlussrechnung" soll auf den Schlüsselbegriff "Rechnung" umgesetzt werden.
Value next to KeywordLokator für Werte (reguläre Ausdrücke) die in der Nähe eines bestimmten Schlüsselbegriffes
Search for line itemsLokator für die Positionszeilenfindung
Search for DB linked dataLokator für Datenbanksuche (andere Lokatoren können als Source-Lokator angegeben werden)
BarcodeLokator für Barcodeerkennung
Value from Regular ExpressionDatenbanklokator für reguläre Ausdrücke (regex, result)
**Lokatoreigenschaften:**
EigenschaftBedeutung
Nametechnischer Lokatorname
BeschreibungAnzeigenamen für den Lokator
Lokator TypAuswahlfeld für Lokatortypen
DatentypAuswahlfeld für Lokatorwerte (Text, Date, Amount)
SeitenAuswahlfeld für welche Seiten des Dokumentes der Lokator ausgeführt werden soll (Jede Seite, Erste Seite, Letzte Seite)
ggf. QuelleAuswahlfeld für Lokatoren, deren Ergebnismenge für diesen Lokator genutzt werden soll
AktivAuswahlfeld für die Aktivierung des Lokators (ja, nein)
ignoriere Leerzeichendas Suchmuster des Lokators ignoriert Leerzeichen

Wichtig: Lokatoren können Ihr Suchmuster nur pro Textzeile finden, es gibt keine Möglichkeit mit Zeilenumbrüchen zu arbeiten.

**Mit dem Squeeze Invoice Template werden bereits verschiedene Lokatoren ausgeliefert:** [![image-1648467138006.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648467138006.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467138006.png)

Wichtig: Diese Lokatoren können in jeder anderen Dokumentenklasse genutzt werden.

**Für jeden Lokator können entsprechende Ersetzungen konfiguriert werden:** [![image-1648467230330.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648467230330.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467230330.png) **Beispiele für Ersetzungen im Phone (Telefonnummer) - Lokator:** [![image-1648467307999.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648467307999.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467307999.png)

Wichtig: Ersetzungen können immer nur für die Ersetzung eines Zeichens durch ein oder ein Leerzeichen konfiguriert werden.

# Testen von Lokatoren Lokatoren können getestet werden, indem in der Validierung über das Optionsmenü "Lokatoren testen" ausgewählt wird. [![image-1648467709729.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648467709729.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467709729.png) [![image-1648467783491.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648467783491.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467783491.png) In dem Auswahlfenster kann der Lokator den der Benutzer testen möchte ausgewählt werden: [![image-1648467886249.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648467886249.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467886249.png) Beim Klick auf den Button Testen wird der ausgewählte Lokator ausgeführt. Auf der linken Seite werden jetzt die erkannten Werte in einer Liste dargestellt. Auf der rechten Seite ist wieder das Dokument zu sehen. Wenn der Benutzer nun mit der Maus über einen der Werte zeigt, wird auf der rechten Seite die Fundstelle dieses Wertes markiert. [![image-1648468006847.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648468006847.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648468006847.png) Der Benutzer kann nun wahlweise den Button Bearbeiten klicken, dann erscheint der Konfigurationsdialog für den Lokator, hier kann die Konfiguration angepasst werden und der Test erneut ausgeführt werden. [![image-1648468114721.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648468114721.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648468114721.png) [![image-1648468145120.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648468145120.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648468145120.png) Besonders bei der Konfiguration eines Lokators für reguläre Ausdrücke, Schlüsselworte oder auch Positionen ist der Testmodus empfehlenswert. Nachdem der Benutzer einen neuen Lokator erfolgreich getestet hat, kann über den Reiter Optionen und den Menüpunkt Ergebnis neu erstellen, das Dokument erneut verarbeitet werden, dabei wird nur die Lokatoren-Konfiguration mit den aktuellen Einstellungen angewendet.

Hinweis: Bei Ergebnis neu erstellen, wird keine neue OCR-Erkennung durchgeführt, es wird lediglich die Lokatoren-Logik auf das OCR-Ergebnis neu angewendet.

# Lokator: Barcode # Lokator: Document Date **Der Lokator Document Date findet das erste Datum auf einer Dokumentenseite, von oben beginnend.**

Dieser Lokator kann nur mittels eines weiteren Lokators basierend auf der Suche nach regulären Ausdrücken genutzt werden. Für diesen Lokator sollten entsprechende reguläre Ausdrücke konfiguriert sein.

Im Squeeze Invoice-Template wird ein Lokator mit verschiedenen regulären Ausdrücken zur Datums-Suche ausgeliefert. Dieser Lokator (Dates) wird dann als Quelle für den Beleg-Datums-Lokator genutzt. **Konfiguration des Dates-Lokators:** Allgemeine Eigenschaften: [![image-1648643710726.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648643710726.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643710726.png) **Reguläre Ausdrücke für den Date-Lokator:** [![image-1648643820678.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648643820678.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643820678.png) **Konfiguration des Beleg-Datum-Lokators:** Der Datums-Lokator wird als Quelle für den Beleg-Datums Lokator eingetragen. [![image-1648643896600.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648643896600.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643896600.png) # Lokator: Invoice Amounts **Der Lokator Invoice Amounts findet die Endbeträge (Nettobetrag, Bruttobetrag und Steuerbetrag) und den Steuersatz einer Rechnung.**

Dieser Lokator funktioniert nur in Kombination mit einem Betrags-Lokator der auf Basis regulärer Ausdrücke, numerische Werte mit 2 Nachkommastellen ermittelt. Darüber hinaus werden Stammdateninformationen zum gültigen Steuersatz benötigt.

**Die Funktionsweise dieses Lokators kann wie folgt beschrieben werden.** - Mittels des Betrags-Lokators werden zuerst alle Beträge der Rechnung gefunden - Auf der letzten Seite der Rechnung wird beginnend von unten nach oben der höchste Betrag ermittelt - In der Stammdaten-Tabelle taxrates (Steuersätze) werden mit dem Invoice Template alle europäischen Steuersätze landesspezifisch ausgeliefert - In der Stammdaten-Tabelle creditors (Bestandteil des ausgelieferten Invoice Templates) können kreditorspezifische Länderkennzeichen hinterlegt werden - Mittels des zum ermittelten Kreditor, passenden Länderkennzeichens, werden die für diese Rechnung gültigen Steuersätze ermittelt - Der Lokator Invoice Amount verwendet diese Informationen um zum höchsten gefundenen Bruttobetrag, mittels der gültigen Steuersätze, entsprechende passende Netto und Steuerbeträge zu finden.

Wichtig: Diese Konfiguration funktioniert nur für einen Steuersatz. Für Rechnungen mit mehreren Steuersätzen wird es in zukünftigen Versionen entsprechende Funktionen geben. Aktuell gibt es für diese Rechnungen die Möglichkeit Endbeträge für mehrere Steuersätze kreditorspezifisch zu trainieren.

#### Konfiguration des Invoice Amounts Lokators:

Voraussetzung für die Verwendung dieses Lokators ist ein Lokator für die Betragsfindung aufgrund regulärer Ausdrücke. Dieser Lokator wird mit dem Invoice Template ausgeliefert.

weitere Voraussetzungen sind die Stammdatentabellen taxrates und creditors. Beide Stammdatentabellen werden mit dem Invoice Template ausgeliefert.

[![image-1648643243789.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648643243789.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643243789.png) Im Feld ggf. Quelle wird der konfigurierte Betragslokator hinterlegt. **Alternative Endbetragsermittllung für Rechnungen:** Da es vorkommen kann das einige Rechnungen die für die Endbetrags-Ermittlung notwendigen Werte (Brutto, Netto und Steuerbetrag) nicht enthalten (z.B. Rechnungen im Baugewerbe), kann für diese Rechnungen alternativ, die Endbetrags-Ermittlung nach dem Prinzip der Keyword-Suche konfiguriert werden. Für diese Konfiguration sind 3 weitere Keyword-Lokatoren (Nettobetrag, Bruttobetrag und Steuerbetrag) anzulegen. Diese Lokatoren sollten die gewünschten Schlüsselworte für die gesuchten Beträge finden. Diese Lokatoren können dann im Reiter Endbeträge entsprechend hinterlegt werden. [![image-1648643306663.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648643306663.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643306663.png) #### Konfigurierbare Steuersätze je Land Seit der SQUEEZE Version 1.8.0 existiert eine weitere Möglichkeit zur Konfiguration dieses Lokators. Auf Grund der Mehrwertsteueranpassung zum 01.07.2020 wurde die Möglichkeit geschaffen, die gültigen Mehrwertsteuersätze je Land in der **Stammdatentabelle (taxrates)** zu hinterlegen. Hinzu kommt die Möglichkeit, der Betragserkennung mitzugeben, für welches Land gerade eine Betragserkennung durchgeführt werden soll bzw. welche Mehrwertsteuersätze zu nutzen sind. Das Land bzw. die Mehrwertsteuersätze können je Beleg variieren, daher kann unter dem neuen Reiter **Eigenschaften** hinterlegt werden, in welchem Feld (**TaxCountryField**) das Länderkürzel steht, welches zur Ermittlung der Steuersätze genutzt werden soll. Sollte kein Land ermittelt worden sein, kann ein Standard Ländercode festgelegt werden (**DefaultTaxCountry**), welcher verwendet wird, um die Steuersätze zu ermitteln. Hier ein Beispiel: [![image-1648643530325.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648643530325.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643530325.png) # Lokator: KeyWord **Der Lokator KeyWord findet Schlüsselwörter in den OCR-Textzeilen des Dokumentes.** Das Ergebnis dieses Lokators ist das konfigurierte Schlüsselwort.

Wichtig: die Suche nach Schlüsselwörtern berücksichtigt immer nur ein Schlüsselwort.

Wichtig: Es können beliebig viele Schlüsselwörter konfiguriert werden, diese werden dann automatisch **oder** verknüpft gesucht.

Wichtig: Die Suche nach Schlüsselwörtern berücksichtigt eine gewisse Unschärfe. Im Detail bedeutet unscharf in diesem Lokator, das ein Zeichen des Schlüsselwortes abweichen kann und dennoch zu einem positiven Suchergebnis führen wird.

Wichtig: Schlüsselwörter werden in Squeeze case insensitive gesucht, das bedeutet, Groß-Klein Schreibung muss nicht extra berücksichtigt werden.

Die Anlage eines neuen Lokators für die Suche nach einem neuen Schlüsselwort, funktioniert analog zur Anlage eines regulären Ausdrucks, der Lokator Typ für die Schlüsselwortsuche ist KeyWord. # Lokator: KeyWord to Value **Der Lokator KeyWord to Value findet Schlüsselwörter in den OCR-Textzeilen des Dokumentes.**

Der Unterschied zum normalen KeyWord Lokator besteht darin, das dem Schlüsselwort ein weiterer konfigurierbarer Wert zugewiesen werden muss.

Das Ergebnis dieses Lokators ist der konfigurierte Wert der dem Schlüsselwort zugeordnet ist.

Darüber hinaus gelten für die KeyWord to Value Suche alle Merkmale der normalen KeyWord Suche (siehe Lokator: KeyWord)

**Ein geeignetes Beispiel für die KeyWord to Value Suche ist z.B. die Rechnungsart.**
zugewiesener Wertmögliche Schlüsselwörter
RechnungRechnung, Anzahlungsrechnung, Invoice, Faktura, Dauerrechnung etc.
GutschriftGutschrift, Debit Note etc.
**Anlegen eines KeyWord to Value Lokators:** Das Vorgehen zum Anlegen eines KeyWord to Value Lokators ist analog zum KeyWord Lokator. Wenn der Lokator Typ KeyWord to Value ausgewählt wird, erscheint im Konfigurationsdialog neben dem Reiter Suchbegriffe für die Schlüsselwörter, ein weiterer Reiter für die Konfiguration der Werte. Zuerst konfiguriert man den gewünschten Wert mit einem Klick auf den Reiter Werteliste. [![image-1648637904934.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648637904934.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648637904934.png) Mit einem Klick auf das + Symbol wird ein neuer Wert hinzugefügt. Daraufhin öffnet sich ein neues Fenster mit den beiden Feldern Wert und Beschreibung, diese beiden Felder werden im folgenden Beispiel jeweils mit dem Wert Rechnung gefüllt und mit einem Klick auf den Speichern Button bestätigt. [![image-1648638008764.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648638008764.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648638008764.png) Direkt unter den Werten können Suchbegriffe über das Symbol "Neuer Eintrag" gepflegt werden. [![image-1648638184167.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648638184167.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648638184167.png) [![image-1648638234271.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648638234271.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648638234271.png) Mit dieser Konfiguration werden das Schlüsselwort Rechnung auf dem Dokument gesucht und das Ergebnis dieses Lokators ist der Wert Rechnung. Diese Konfiguration kann beliebig erweitert werden. Zum Beispiel kann ein weiterer Wert Gutschrift hinzugefügt werden. Diesem Wert können wieder beliebig viele Suchbegriffe zugewiesen werden.

Wichtig: Jedem Suchbegriff sollte ein Wert zugewiesen werden, da andernfalls das Lokator-Ergebnis für den Suchbegriff leer bleibt.

# Lokator: Regular Expression **Der Lokator Regular Expression findet reguläre Ausdrücke in den OCR-Textzeilen des Dokumentes.** Das Ergebnis dieses Lokators ist das gefundene Suchmuster.

Wie reguläre Ausdrücke funktionieren, ist nicht Bestandteil dieser Dokumentation, dafür gibt es im Internet sehr viele gute Beispiele und Möglichkeiten zum Testen von regulären Ausdrücken, z.B. [https://regex101.com/](https://regex101.com/)

Wichtig: Es können beliebig viele reguläre Ausdrücke konfiguriert werden, diese werden dann automatisch **oder** verknüpft gesucht.

Wichtig: reguläre Ausdrücke werden in Squeeze case insensitive gesucht, das bedeutet, Groß-Klein Schreibung muss nicht extra berücksichtigt werden.

Wichtig: Die regulären Ausdrücke werden in der Reihenfolge in der diese angelegt sind gesucht, das bedeutet für einen regulären Ausdruck der bereits gefunden wurde, kann kein weiterer, in der Liste nachfolgender regulärer Ausdruck gefunden werden.

**Klassische Beispiele für den Einsatz von Lokatoren für reguläre Ausdrücke:**

Wichtig: für einige dieser regulären Ausdrücke müssen Ersetzungen konfiguriert werden

BeispielWertregulärer AusdruckLeerzeichen ignorieren
IBANDExx xxxx xxxx xxxx xxxx xx(DE\\d{20})ja
Ust-IDDE xxxxxxxx((DE)(\[1-9\]\\d{8}))ja
Beträge100,00 oder 1.000,00(\[-\\+\]?\[0-9\]{1,3}(\[ \]?\[,\\.\]?\[ \]?\[0-9\]{3})\*\[ \]?\[,\\.\]\[ \]?\[0-9\]{2}\[-\\+\]?(?!\[0-9.,\]))nein
Datum01.01.2020(\[0-9\]{1,2}\\.\[0-9\]{1,2}\\.\[0-9\]{4})|(\[0-9\]{1,2}\\.\[0-9\]{1,2}\\.\[0-9\]{2})ja
NamenMax Mustermann(Max Mustermann)nein
Telefonnr.+4940359840001 (\[+\]?\[0-9\]{8,15})ja
Emailadresseinfo@dexpro-solutions.de(\[a-zA-Z0-9\_\\-.\]{2,30}@\[a-zA-Z0-9-\]{2,30}\\.\[a-zA-Z\]{2,3})nein
URLwww.dexpro-solutions.de(www\\.\[a-zA-Z0-9-\]{2,30}\\.\[a-zA-Z\]{2,3})nein
##### beispielhafte Einrichtung eines neuen Lokators zur Erkennung einer Bestellnummer anhand eines regulären Ausdrucks Im folgenden Beispiel soll eine auf dem Dokument befindliche 10-stellige numerische Bestellnummer erkannt werden. Dazu bietet sich der Lokator für reguläre Ausdrücke sehr gut an. Um ins Lokatoren-Menü zu gelangen Klicken Sie auf Admin und danach auf Lokatoren. [![image-1648562983709.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648562983709.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648562983709.png) In der unteren Bildschirmleiste das Symbol "Neuer Eintrag" klicken um einen neuen Lokator anzulegen. [![image-1648563068961.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648563068961.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648563068961.png) Im sich daraufhin öffnenden Dialog den technischen Namen, den Anzeige-Namen des neuen Lokators angeben und den Lokator auf Aktiv setzen. Der Lokator-Typ Regular Expression ist bereits vorausgewählt. Die Erkennung der Bestellnummer soll auf jeder Seite durchgeführt werden und der Wert Typ den wir erkennen wollen ist Text. Danach wird der Lokator gespeichert. [![image-1648563343353.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648563343353.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648563343353.png) In der danach erscheinenden Ansicht klicken wir auf den Reiter Reguläre Ausdrücke um den Reg-Ex für den Lokator zu konfigurieren. Hier wieder das Symbol "Neuer Eintrag" klicken um einen neuen regulären Ausdruck zu konfigurieren. [![image-1648563530773.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648563530773.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648563530773.png) Der reguläre Ausdruck für eine freistehende 10 stellige Nummer könnte folgend konfiguriert werden: \\b(\[0-9\]{10})\\b dann auf Speichern klicken. [![image-1648563886916.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648563886916.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648563886916.png) Wie dieser Lokator getestet werden kann finden Sie auf der Seite "Testen von Lokatoren". # Lokator: Search for DB linked data Der Lokator DB-Link-Lokator **(Search for DB linked data)** findet auf Basis von konfigurierbaren Filtermerkmalen den Wert der für das entsprechende Feld vorgesehen ist. Mittels entsprechender Lokatoren für die Suche nach IBAN-Nummern, Umsatzsteuer-IDs, Steuernummern, Telefon - und Fax-Nummern, Email-Adressen oder Internet-Adressen wird in einer entsprechenden Datenbank nach passenden Einträgen gesucht und zu diesen Einträgen die Kreditor-Nummer zurückgegeben. 1. [Konfiguration des DB Link Locators](#bkmrk-konfiguration-des-db-0) 2. [Beispiel für Datenbank-Plausibilisierung ](#bkmrk-beispiel-f%C3%BCr-datenba) 3. [Lokatorenfilterung](#bkmrk-lokatorenfilterung) ##### **Konfiguration des DB-Link-Locators** Im folgenden gehen wir auf die beispielhafte Konfiguration eines Lokators ein, der zur Ermittlung von Kreditorennummern eingesetzt wird.

**Der Lokator für die Suche nach Kreditorennummern mittels der Datenbank-Suche ist Bestandteil des ausgelieferten "Invoice Templates" und ist ein klassisches Beispiel für die Verwendung dieses Lokators bei Eingangsrechnungs-Erkennung.**

Die Konfiguration wird analog zu allen anderen Lokatoren durchgeführt. Der Lokator Typ für den Db-Link-Lokator ist **"Search for DB linked data"** und muss über das Auswahlfeld innerhalb der Lokatoren-Konfiguration im Tab **"Allgemein"** ausgewählt werden. [![image-1688372712478.png](https://docs.squeeze.one/uploads/images/gallery/2023-07/scaled-1680-/image-1688372712478.png)](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688372712478.png) Wie man nun erkennt sind neben des Typen-Merkmals auch die weiteren allgemeinen Merkmale, entsprechend unseres Beispiels, eingepflegt Um nun die Datenbanksuche und die Filtermerkmale zu konfigurieren müssen wir den Tab **"Datenbanksuche"** öffnen und die **Stammdaten-Tabelle** sowie die **Ausgabespalte** definieren. [![image-1688381823233.png](https://docs.squeeze.one/uploads/images/gallery/2023-07/scaled-1680-/image-1688381823233.png)](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688381823233.png) Für die Umsetzung des konkreten Beispiels werden wir hier als Stammdaten-Tabelle die **"Liste aller Lieferanten"** wählen und die **Ausgabespalte** mit **"Nummer"** definieren. Auf die Konfigurationsmerkmale **Filterspalte**, **Filterfeld** und **Filterlokator** (ab Squeeze 2.5.0) gehen wir im [Abschnitt Lokator-Filter](#bkmrk-lokatorenfilterung) weiter ein. Im Unteren Abschnitt des Tabs "**Datenbanksuche"** können nun die ersten **Filtermerkmale(Quell-Lokatoren)**, im Tabellenabschnitt, konfiguriert werden: [![image-1688371726185.png](https://docs.squeeze.one/uploads/images/gallery/2023-07/scaled-1680-/image-1688371726185.png)](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688371726185.png)
Source Lokator (Quell-Lokator)DB-Spalte der ausgewählten DBStop-Kennzeichen
UstId (Lokator für die Ermittlung von Umsatzsteuer-IDs)EUTaxIdNein
IBAN (Lokator für die Ermittlung von IBANs)IBANNein
Email (Lokator für die Ermittlung von Emails)EmailNein
URL (Lokator für die Ermittlung von URLs)WebpageNein
Phone (Lokator für die Ermittlung von Telefonnummern)PhoneNein
Phone (Lokator für die Ermittlung von Telefaxnummern)FaxNein

Die Such-Ergebnisse der Source-Lokatoren werden in der DB-Spalte der entsprechenden Datenbank gesucht und der Wert der Ergebnis-Spalte zurückgegeben.

Die Reihenfolge wie die Ergebnisse der Source-Lokatoren in der Datenbank gesucht werden, kann in der Liste via Drag & Drop geändert werden. Der oberste Eintrag wird zuerst gesucht, der unterste Eintrag zuletzt.

Für das Stop-Kennzeichen kann entweder **ja** oder **nein** ausgewählt werden. **Ja** bedeutet, wenn nur ein Ergebnis in der Datenbank gefunden wird, wird der Wert der konfigurierten Ergebnis-Spalte zurückgegeben und die Suche beendet. **Nein** bedeutet, unabhängig ob es Treffer in der Datenbank gibt, es wird immer mit dem nächsten Lokator in der Liste weiter gesucht.

Für die IBAN bedeutet diese Konfiguration, alle via IBAN-Lokator gefundenen IBANs werden in der Datenbankspalte IBAN gesucht, wenn eine oder mehrere passende IBANs gefunden werden, werden die Kreditor-IDs dieser Zeilen zurückgegeben. **Mit dem Symbol "Neuer Eintrag" können weitere Lokatoren die bereits konfiguriert sind, ausgewählt und hinzugefügt werden.** [![image-1688371793234.png](https://docs.squeeze.one/uploads/images/gallery/2023-07/scaled-1680-/image-1688371793234.png)](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688371793234.png) - das Feld **"Quellen-Lokator"** ist ein Auswahlfeld mit allen Lokatoren die konfiguriert sind - das Feld **"DB Spalte"** gibt an in welcher Datenbankspalte das Lokatorergbnis in der Tabelle gesucht werden soll - für das Feld **"Stop"** kann ja/nein gewählt werden und bestimmt ob die weitere Suche nach einem eindeutigen Treffer fortgeführt werden soll, wenn ein Wert für das Filtermerkmal **"Quellen-Lokator"** gefunden wurde. ##### **Verwendungsmöglichkeit als Datenbank-Plausibilisierung** So könnte man zum Beispiel unter Verwendung anderer Lokatortypen wie: - [Regex Lokatoren](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/lokator-value-from-regular-expression "Lokator: Value from Regular Expression") - [KeyWord Lokatoren](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/lokator-keyword-to-value "Lokator: KeyWord to Value") - [Value next to KeyWord Lokatoren](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/lokator-value-next-to-keyword "Lokator: Value next to KeyWord") folgende eindeutigen Werte auf dem Dokument ermitteln: - Bestell-Nummern, - Lieferschein-Nummern, - Auftrags-Nummern, - Mandanten-Namen und als Quell-Lokatoren in dem Tabellenabschnitt des **DB-Link Lokators** hinzufügen. - - - - - - In dem folgenden Beispiel, wird die mittels eines regulären Ausdrucks ermittelte Bestellnummern, gegen eine Datenbank mit entsprechenden Bestellnummern plausibilisiert. **Regex-Lokator für Erkennung der Bestellnummer (10-stellig numerisch) mittels regulärem Ausdruck:** [![image-1648644299907.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648644299907.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648644299907.png) **DB-Link Lokator für die Plausibilisierung der erkannten Bestellnummer gegen eine Datenbank:** [![image-1688381976971.png](https://docs.squeeze.one/uploads/images/gallery/2023-07/scaled-1680-/image-1688381976971.png)](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688381976971.png) ##### **Lokatorenfilterung (ab Squeeze 2.5.0)** Der DB-Link-Lokator bietet ab der Version 2.5.0 drei neue Filtermerkmale um die Datenbankeinträge die zu Prüfen sind vorab einzugrenzen. Unter dem Tab "**Datenbanksuche**" können nun die drei neue Merkmale zur Filterung definiert werden. 1. **Filterspalte** - die Datenbank Spalte die als Basis des Vergleichs herangezogen wird 2. **Filterfeld** - das Dokumentenklassen-Feld das verwendet werden soll, um auf die Filterpalte zu vergleichen 3. **Filter-Lokator** - ein bereitsbestehender Lokator der ebenfalls verwendet werden soll, um auf die Filterspalte zu vergleichen [![image-1688380370985.png](https://docs.squeeze.one/uploads/images/gallery/2023-07/scaled-1680-/image-1688380370985.png)](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688380370985.png) Folgendes Beispiel beschreibt die Formel für eine erfolgreiche Datensatz Identifizierung:
**Filtermerkmal-Ergebnis****Filtermerkmal**
AFilterspalte
BFilterfeld
CFilter-Lokator
**Formel:** `Wahr wenn: A = B = C` Alle Ergebnisse die dieser Formel entsprechen können nun durch die weiteren Quell-Lokatoren Filter validiert werden. Ein konkretes Beispiel wie man mit diesem Filter umgehen kann finden Sie [hier](https://docs.squeeze.one/books/squeeze-2-solution-templates/page/mandantenspezifische-kreditorfilterung "Mandantenspezifische-Kreditorfilterung"). # Lokator: Search for line items Der Lokator **Search for line items** findet Positionszeilen auf Dokumenten anhand entsprechender Spalten-Überschriften und unter diesen Spalten befindlichen Werten.

**Wir bitten darum die die Seite [Unterschiede zu Squeeze 1 (Lokatoren)](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/unterschiede-zu-squeeze-1 "Unterschiede zu Squeeze 1") aufmerksam zu lesen, wenn Sie bereits mit Squeeze 1 (der alten Benutzeroberfläche) arbeiten / gearbeitet haben.**

Die Suche nach Positionen ist im ausgelieferten Invoice-Template bereits konfiguriert.

Die Positions-Suche in Squeeze benötigt entsprechende Lokatoren mit deren Hilfe die Spaltenüberschriften der Positions-Tabelle gefunden werden.

#### Funktionsweise Die Erkennung von Tabellen mittels dieses Lokators funktioniert in folgenden Schritten: - Spalten der Tabelle werden über ihre Überschriften ermittelt *(nutzt Überschriften-Lokator)* - Werte werden innerhalb der gefunden Spalten *gesucht (nutzt Wert-Lokator)* - Gefundene Werte werden zu Zeilen zusammengefasst #### Schrittweise Konfiguration Zur Konfiguration einer Positionserkennung gehören folgende Punkte. ##### 1. Überschriften & Wert-Lokatoren Sowohl die Überschriften, als auch die Werte werden über normale Lokatoren gefunden. Hier bietet sich bspw. ein "Regular Expression"-Lokator an. Für jede zu extrahierende Spalte wird also 1 Überschriftenlokator und 1 Wert-Lokator benötigt. ##### 2. Tabelle inkl. Tabellen-Spalten konfigurieren Als nächstes müssen die Lokatoren an den Tabellen-Spalten konfiguriert werden. Sollte bis jetzt noch gar keine Tabelle an der zu extrahierenden Dokumentenklasse existieren, dann muss diese zuerst inkl. Spalten konfiguriert werden. An jeder Tabellenspalte kann 1 Überschriftenlokator und 1 Wert-Lokator konfiguriert werden. ##### 3. Verknüpfung von Tabelle und Tabellen-Lokator (Search for line items) Zuletzt muss ein Tabellen-Lokator (Search for line items) konfiguriert werden. Diese Konfiguration geschieht an zwei Stellen: 1. An der Tabelle muss der angelegte Lokator ausgewählt werden. 2. Am Lokator muss die Tabelle ausgewählt werden, für welche der Lokator extrahieren muss.

**Achtung: Aktuell kann ein Tabellen-Lokator (Search for line items) nur für die Extraktion einer einzigen Tabelle eingesetzt werden.** D. h. für jede Tabelle (unabhängig davon, zu welcher Dokumentenklasse sie gehört), muss ein neuer Tabellen-Lokator eingerichtet werden. Das gilt **nicht** für die Überschriften- und Wert-Lokatoren, welche wiederverwendbar sind.

Das folgende Screenshot zeigt eine Warnung im Konfigurations-Dialog einer Tabelle. Diese Warnung soll dabei helfen mögliche Fehlerquellen auszuschließen.

[![image-1662031695453.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1662031695453.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662031695453.png) ### Beispiel: Konfiguration einer Standard-Positions-Suche für Eingangsrechnungen Beispiel: Überschriften-Lokator für die Spalte Menge: [![image-1662030159612.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1662030159612.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662030159612.png) [![image-1662030171618.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1662030171618.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662030171618.png)

Überschriften-Lokatoren für andere Überschriften sind wie auf den dargestellten Bildern, normale Lokatoren, welche bspw. via regulärem Ausdruck die Überschriften finden.

Die konfigurierten Suchbegriffe können je nach Anwendungsfall entsprechend angepasst und/oder erweitert werden.

Beispiel: Verwendung der Überschriften- und Wert-Lokatoren an der Tabellenspalte Menge:** ** [![image-1662030050684.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1662030050684.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662030050684.png) ##### Beispiel: Verwenden des Tabellen-Lokators an der Tabelle** ** [![image-1662030101072.png](https://docs.squeeze.one/uploads/images/gallery/2022-09/scaled-1680-/image-1662030101072.png)](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662030101072.png) # Lokator: Value next to KeyWord **Der Lokator Value next to KeyWord findet Schlüsselwörter und in der Nähe des Schlüsselwortes befindliche Reguläre Ausdrücke.**

In der Nähe bedeutet, der Lokator sucht rechts neben dem Schlüsselbegriff und unter dem Schlüsselbegriff nach einem passenden regulären Ausdruck.

Ein klassisches Beispiel für diesen Lokator ist die Suche nach Rechnungsnummern auf einer Rechnung. In der Konfiguration des Lokators gibt es einen Reiter für die Konfiguration der gewünschten Schlüsselbegriffe und einen Reiter für die regulären Ausdrücke. [![image-1648638852401.png](https://docs.squeeze.one/uploads/images/gallery/2022-03/scaled-1680-/image-1648638852401.png)](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648638852401.png)

Die Konfiguration der der regulären Ausdrücke und der Schlüsselbegriffe ist analog zur Konfiguration der Lokatoren für KeyWords und des Lokators für reguläre Ausdrücke

# Lokator: Value from Regular Expression **Der Lokator Value from Regular Expression sucht mit Hilfe regulärer Ausdrücke(regex) aus einer Stammdatentabelle in den OCR-Textzeilen des Dokumentes. Diese werden mittels der Stammdatentabelle auf einen bestimmen Wert(result) umgeschlüsselt.** **Einrichtung eines Lokators Value from Regular Expression am Beispiel des Lokators "Lieferantensuchbegriffe"** Um ins Lokatoren-Menü zu gelangen Klicken Sie auf Admin und danach auf Lokatoren. [![image-1658311834780.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658311834780.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658311834780.png) In der unteren Bildschirmleiste das Symbol "Neuer Eintrag" klicken um einen neuen Lokator anzulegen. [![image-1658311783382.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658311783382.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658311783382.png) Weiter mit dem Beispiel "Lieferantensuchbegriffe" [![image-1658303923970.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658303923970.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658303923970.png) Im sich daraufhin öffnenden Dialog den technischen Namen(CreditorSearch), den Anzeige-Namen(Lieferantensuchbegriffe) des neuen Lokators angeben und den Lokator auf Aktiv setzen. Den Lokator-Typ Value from Regular Expression auswählen und danach den Lokator speichern. [![image-1658304340015.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658304340015.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658304340015.png) Im Reiter "Tabelle" wird nun die Stammdatentabelle ausgewählt, in der sich die Regulären Ausdrücke(regex) und die Übersetzungswerte(result) befinden. In diesem Beispiel "creditorsearch". Informationen zur Anlage einer neuen Stammdatentabelle finden Sie im Kapitel "Stammdaten". [![image-1658304778932.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658304778932.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658304778932.png) Die Verwendung des Lokators Value from Regular Expression ist auf einen bestimmten Aufbau der Spalten und ihrer Beschreibungen in der Stammdatentabelle angewiesen. Siehe Oben. Hierbei sind die Spalten(Name und Quelle) und ihre Einträge wichtig. Die Spaltennamen und Einträge müssen hierbei exakt übernommen werden. Die Spalte Beschreibung und ihre Einträge können je nach Funktion des Lokators variieren. [![image-1658306732039.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658306732039.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658306732039.png) In den Spalten muss nun der zu übersetzende Wert(result) und das Muster(regex) eingetragen werden. In diesem Fall die Lieferantennummer "1234567890" und die URL "www.brt-gmbh.de". Mehr Informationen zu Regular Expressions finden Sie im Kapitel Lokatoren. [![image-1658306925789.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658306925789.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658306925789.png) Über "Lokator testen" kann nun der Lokator und seine Übersetzung getestet werden. [![image-1658307092965.png](https://docs.squeeze.one/uploads/images/gallery/2022-07/scaled-1680-/image-1658307092965.png)](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658307092965.png) Oben sehen wir nun das die URL(regex) auf die Lieferantennummer(result) übersetzt wurde.

*Falls Sie unsicher bei der Erstellung von Regulären Ausdrücken sind, finde Sie hier eine Seiter auf der Sie Ihre Regulären aAsudrücke testen können: https://regex101.com/*

# Unterschiede zu Squeeze 1 Diese Seite beschreibt relevante Unterschiede zwischen der Extraktion mittels Lokatoren zwischen Squeeze 1 und Squeeze 2. ### Globale Lokatoren In Squeeze 1 wurden Lokatoren immer als Teil einer Dokumentenklasse konfiguriert. Das hatte zur Folge, dass Lokatoren nur in ihrer Dokumentenklasse genutzt werden konnten. Wenn ein System über mehrere Dokumentenklassen verfügt hat, so mussten übliche Lokatoren (Email / IBAN usw.) in jeder Dokumentenklasse erneut angelegt werden. In Squeeze 2 hingegen werden Lokatoren unabhängig von der Dokumentenklasse verwaltet. Somit ist es möglich, dass bspw. nur ein einziger IBAN-Lokator zu konfigurieren ist und dieser in beliebig vielen Dokumentenklasse wiederverwendet werden kann.

Diese Änderung gilt im Prinzip für alle Lokatoren. Der Tabellen-Lokator (Search for line items) hingegen ist der einzige Lokator, bei welchem diese Umstellung aktuell (Q3 2022) nur teilweise zutrifft.

#### Besonderheit Tabellen-Lokator (Search for line items)

**Zusammenfassung / TLDR:** - Der Tabellen-Lokator (Search for line items) ist aktuell **nicht** global. - Für jede zu extrahierende Tabelle muss ein eigener Tabellen-Lokator konfiguriert werden. - Überschriften- und Wert-Lokatoren von Tabellen können mehrmals verwendet werden.

##### Kontext Wie in [Globale Lokatoren](#bkmrk-globale-lokatoren) beschrieben sind Lokatoren global, d. h. sie können mehrfach in unterschiedlichen Dokumentenklassen für diverse Felder wiederverwendet werden. Bei der Extraktion von Tabellen mittels des Tabellen-Lokators (Search for line items) allerdings trifft diese Umstellung nur teilweise zu. Falls Sie nur wissen möchten, wie die Positionserkennung zu konfigurieren ist, dann lesen Sie bitte die [Dokumentation zum entsprechenden Lokator](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/lokator-search-for-line-items "Lokator: Search for line items"). Dort haben wir dokumentiert, wie in Squeeze 2 das System zu konfigurieren ist. Andernfalls wird im Folgenden erläutert, wie sich die Konfiguration zwischen Squeeze 1 und 2 unterscheidet, damit Administratoren die Umstellung einfacher fällt. ##### Funktionsweise des Lokators Zuerst muss die Funktionsweise des Lokators (egal ob Squeeze 1 oder 2) verstanden werden. Vereinfacht arbeitet der Tabellen-Lokator in folgenden Schritten: - Spalten der Tabelle über ihre Überschriften finden *(nutzt Überschriften-Lokator)* - Werte innerhalb der gefunden Spalten finden *(nutzt Wert-Lokator)* - Gefundene Werte zu Zeilen zusammenfassen Wichtig ist hierbei zu verstehen, dass der Lokator also auf Basis von Überschriften- und Werte-Lokatoren arbeitet. Aus diesem Grund, muss der Tabellen-Lokator wissen, für welche Tabelle dieser ausgeführt wird, um dann wiederum über die Tabellen-Spalten der Tabelle zu erfahren, welche Überschriften- und Werte-Lokatoren zu nutzen sind. ##### Der Tabellen-Lokator ist nicht global Die beschriebene Funktionsweise des Tabellen-Lokators setzt voraus, dass bei diesem konfiguriert werden muss, für welche Tabelle dieser ausgeführt wird. Während das aus funktionaler Sicht kein Problem darstellt, ist der Lokator allerdings somit der einzige Lokator, welcher de facto **nicht** global einsetzbar ist, was bei der Konfiguration zu Irritation führen kann:

Während alle anderen Lokatoren wiederverwendet werden können, muss für die Extraktion einer Tabelle je ein eigener Tabellen-Lokator genutzt werden.

##### Roadmap bzgl. der Positionserkennung Abschließend sei erwähnt, dass die Besonderheit des Positionslokators bekannt ist und das Konzept auch zukünftig überarbeitet werden soll. Ziel dabei soll ist die Einfachheit und Nachvollziehbarkeit der Konfiguration. Änderungen an dem System werden entsprechend in der Dokumentation (insbesondere [Lokator: Search for DB linked data](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/lokator-search-for-db-linked-data "Lokator: Search for DB linked data")) fortlaufend festgehalten. # Swiss QR-Code Um einen QR Code Lokator anzulegen, welcher Schweizer QR-Codes auszulesen, kann man einen neuen Lokator von Typen "Swiss QR Code" anlegen.[![Swiss_QR_Code_anlegen.png](https://docs.squeeze.one/uploads/images/gallery/2024-08/scaled-1680-/swiss-qr-code-anlegen.png)](https://docs.squeeze.one/uploads/images/gallery/2024-08/swiss-qr-code-anlegen.png) Dann in den Lokator Eigenschaften einen neuen Eintrag anlegen und Barcode Engine auswählen und den Wert "SOFTEK" eintragen. [![Swiss_OR_Code_Eigenschaft.png](https://docs.squeeze.one/uploads/images/gallery/2024-08/scaled-1680-/swiss-or-code-eigenschaft.png)](https://docs.squeeze.one/uploads/images/gallery/2024-08/swiss-or-code-eigenschaft.png) In der Dokumentenklasse muss dann ein Feld "SwissQrCode" angelegt werden und als Lokator den vorher erstellen "SwissOR" Lokator einstellen.[![Swiss_QR_Code_Feld.png](https://docs.squeeze.one/uploads/images/gallery/2024-08/scaled-1680-/swiss-qr-code-feld.png)](https://docs.squeeze.one/uploads/images/gallery/2024-08/swiss-qr-code-feld.png) Folgenden Werte werden automatisch aus dem Swiss QR-Code gewonnen: - IBAN - Currency (Währung) - TotalAmount (Brutto) Zusätzlich kann ein Feld mit dem technischen Namen "PaymentReference" angelegt werden, welcher die Zahlungsreferenz automatisch ausließt. # Validierung Konfiguration rund um die Validierung # Autovalidierung Die Autovalidierung ist ein Feature, mit welchem der Validierungsschritt (teil-) automatisiert werden kann. ### Verhalten Die Autovalidierung findet in der Verarbeitungskette von Squeeze nach der Extraktion und der Validierung statt. Fall sie aktiviert ist, validiert Squeeze automatisch die Inhalte eines Dokumentes. Bspw. wird geprüft, ob Pflichtfelder gefüllt sind.

Die Feld-Konfiguration Bestätigungsfeld wir in der Autovalidierung übersprungen. Das gilt für jegliche [interaktive Interaktionen](https://docs.squeeze.one/books/squeeze-2-customizing-handbuch/page/custom-actions "Custom Actions") in der Standard-Validierungsoberfläche.

,Falls alle Validierungen erfolgreich sind, wird die manuelle Validierung übersprungen und das Dokument direkt exportiert. Falls nicht, wird das Dokument mit einem Fehler in den Validierungsschritt versetzt. ### Konfiguration Verwenden Sie die [Stapelklasseneigenschaft](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften "Stapelklassen-Eigenschaften") **ExportAfterExtraction** um die Autovalidierung für alle Dokumente einer Stapelklasse zu aktivieren. [![image-1675441440241.png](https://docs.squeeze.one/uploads/images/gallery/2023-02/scaled-1680-/image-1675441440241.png)](https://docs.squeeze.one/uploads/images/gallery/2023-02/image-1675441440241.png) # Asynchroner Dokumenten-Export nach manueller Validierung

Diese Funktion steht ab Squeeze 2.12 zur Verfügung.

### Funktion Bei einigen Export-Schnittstellen kann es vorkommen, dass der Export zum Ziel-System länger als einige wenige Sekunden braucht. Sollte dies bei Ihrem System auftreten, bringt das den Nachteil mit sich, dass Validierer nach dem Validieren eines Dokumentes lange warten müssen, bevor das nächste Dokument bearbeitet werden kann. Zu diesem Zweck ist es möglich den Dokumenten-Export im Hintergrund (also asynchron) durchführen zu lassen. Wenn Sie diese Funktion aktivieren, dann werden Dokumente nach dem Validieren in die Warteschlange versetzt und werden so früh wie möglich durch einen Worker exportiert. Sollte beim Export ein Fehler auftreten, wird das Dokument mit dem Fehlerzustand zurück in den Validierungsschritt versetzt. Diese Funktion bringt Vor- und Nachteile mit sich: - Vorteile - Validierer können direkt das nächste Dokument bearbeiten und müssen weniger Zeit mit Warten verbringen. - Nachteile - Sollten Fehler beim Export auftreten, sind diese nicht direkt beim Validieren sichtbar.

Zusammenfassung: Der asynchrone Export nach der manuellen Validierung verhindert Wartezeiten beim Validieren.

### Konfiguration Wenn Sie die Funktion nutzen möchten, gibt es 2 Dinge zu tun: - Aktivieren Sie das zugehörige Feature Flag (s. [Features verwalten](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/features-verwalten "Features verwalten")) (Nur notwendig, wenn Sie selbst die Squeeze Installation verwalten) - Aktivieren sie die zugehörige Stapelklasseneigenschaft (s. [AsyncExportAfterValidation](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften#bkmrk-asyncexportaftervali)) # Stammdaten Anleitungen zur Administration, Integration und Verwendung von Stammdaten. # Stammdaten Stammdaten dienen in Squeeze zur Erkennung und Plausiblisierung von Merkmalen auf den jeweiligen Dokumententypen. Stammdaten werden in Squeeze in der Datenbank als Tabelle angelegt. Dabei können beliebig viele unterschiedliche Spalten konfiguriert werden. Es können unbegrenzt viele Stammdatentabellen angelegt werden. **Klassische Beispiele für Stammdatentabellen:** - Kreditoren - Bestellnummern - Mandanten - Auftragsnummern - Vertragsnummern - ... Squeeze kann die auf dem Dokument gefundenen Merkmale in den Stammdaten plausiblisieren und / oder auf zugehörige Werte umsetzen. **Die Stammdaten können auf verschiedene Art und Weise aktualisiert / gepflegt werden:** - Mittels File Upload - Mittels HTTP-Schnittstelle - Über die Benutzeroberfläche In Sonderfällen ist auch der Import mittels Datenbank-Skript möglich, allerdings nicht im Standard-Cloudbetrieb. # Anlegen einer neuen Stammdatentabelle im Webclient Das Anlegen einer neuen Stammdatentabelle in Squeeze muss initial via CSV-Upload aus dem Webclient erfolgen. [![image-1649060596506.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649060596506.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649060596506.png) Beim Klick auf den Reiter Stammdaten öffnet sich der Dialog für die Stammdatenkonfiguration. Die Oben aufgeführten Stammdatentabellen werden aktuell mit dem Invoice Template ausgeliefert. [![image-1649060706716.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649060706716.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649060706716.png) Eine neue Stammdatentabelle wird über das Symbol "Neuer Eintrag" angelegt. Im nächsten Dialog wird der technische Name und der Anzeigenamen angegeben. [![image-1649060750960.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649060750960.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649060750960.png) # Konfiguration und Initialisieren einer neuen Stammdatentabelle via CSV-Upload Im Webclient wird die Konfiguration der Spalten für diese Stammdatentabelle durchgeführt. ### Stammdateneigenschaften
Mit einem Klick auf den Eintrag in der Liste öffnet sich der Konfigurationsdialog für die Stammdatentabelle.
[![image-1649060918611.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649060918611.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649060918611.png) ### Spaltenkonfiguration Zuerst werden die Spalten konfiguriert. Beim Klick auf den Reiter Spalten öffnet sich der Dialog zum Konfigurieren der Tabellenspalten. [![image-1649061004570.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649061004570.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649061004570.png) Mit dem Symbol "Neuer Eintrag" können neue Spalten hinzugefügt werden. [![image-1649061054415.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649061054415.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649061054415.png) ##### Wichtig!: Beim Betätigen des Buttons "Tabelle anlegen/zurücksetzen" werden alle Datensätze innerhalb der Tabelle gelöscht. Hier werden folgende Informationen benötigt:
EigenschaftBeschreibung
NameTechnischer Name für der Datenbankspalte
BeschreibungAnzeigenamen für der Datenbankspalte
Quelleexterner Spaltenname (z.B. die Spaltenüberschrift in einer CSV-Datei)

Jede Stammdatentabelle in Squeeze benötigt mindestens eine ID-Spalte.

Es können dann beliebig viele eigene Spalten definiert werden. Test-Tabelle mit id-Spalte + 2 weitere Spalten: [![image-1649061129272.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649061129272.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649061129272.png)

Nachdem die Spalten konfiguriert sind, wird eine CSV-Datei benötigt um die Tabelle auf dem Datenbankserver initial zu erstellen.

Die CSV Datei muss die selben Überschriften enthalten, wie in der Spaltenkonfiguration unter Quelle angegeben worden ist. Die Reihenfolge der Überschriften spielt keine Rolle.

WICHTIG: die Schreibweise der Spaltenüberschriften in der CSV-Datei ist case-sensitive. Das bedeutet Groß-Kleinschreibung ist relevant.

**CSV-Datei Beispiel für die obige Tabelle:** [![image-1583510696508.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1583510696508.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1583510696508.png) Für die Werte-Zeilen müssen keine ID´s angegeben werden. Die ID Spalte ist eine Auto-Inkrement Spalte und erzeugt eigene fortlaufende ID´s beim Upload. Nachdem die CSV-Datei erstellt wurde kann die Initialisierung der neuen Stammdatentabelle erfolgen mit einem Klick auf den Reiter Upload. [![image-1649061188375.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649061188375.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649061188375.png) Die übergeben Werte können mit einem Klick auf den Reiter Daten geprüft werden. [![image-1649062298131.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649062298131.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649062298131.png) ### Daten hinzufügen Mit dem Webclient können manuell mit dem Symbol "NeuerEintrag" weitere Werte hinzugefügt werden. [![image-1649062378547.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649062378547.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649062378547.png) Den neuen Datensatz mit dem Speichern Button bestätigen. [![image-1649062412805.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649062412805.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649062412805.png)
# Intervall-gesteuerte Aktualisierung der Stammdaten mittels CSV-Upload

**Disclaimer:** Diese Dokumentation ist veraltet und enthält zum einen veraltete Beispiele und ist zum anderen zu spezifisch für Windows geschrieben. Daher ist die Seite aktuell "versteckt" eingerichtet. Diese Seite benötigt folgende Anpassungen: - Aktuelles Skript-Beispiel - Klare Unterscheidung zwischen Linux & Windows Stack (Auf Linux verwenden wir idr das Jobsystem, keine cronjobs)

Die Daten in Stammdatentabellen können jederzeit via CSV-Upload upgedatet werden. Im Hintergrund wird dabei eine neue Stammdatentabelle erstellt wodurch während der Aktualisierung die Ursprungstabelle weiterhin zur Verfügung steht. Zum Ende der Aktualisierung wird die Ursprungstabelle durch die aktualisierte Tabelle ersetzt. **Einrichtung einer neuen Windows-Aufgabe für den PHP-Job RefreshMasterData im Verzeichnis htdocs\\jobs** Der Job MasterDataRefresh ruft die Datei MasterDataRefresh.php auf. Die Datei MasterDataRefresh muss im folgenden Verzeichnis liegen: ...\\Squeeze\\repository\\jobs Ein Beispiel für diese Datei wird im Folgenden gezeigt: ```PHP Falls für eine on-premise Installation eine derartige Integration notwendig ist, müsste das als Sonderanpassung umgesetzt werden.

Falls sie vor Squeeze Stammdatentabellen entweder auf ihre eigenen SQL Tabellen- und Views oder produktinterne Tabellen eingerichtet haben, berücksichtigen Sie, dass ein Update auf Squeeze > 2.5 mit Support-Aufwänden verbunden sein kann.

### Systeminterne Stammdatentabellen Squeeze hat ein paar Stammdatentabellen die Teil des Systems selbst sind, also nicht erst durch manuelle Konfiguration oder das Invoices-Paket erstellt werden. Diese Daten werden als Stammdaten bereitgestellt, damit man mit den existierenden Mechanismen auf die Daten zugreifen kann. Insbesondere kann man per UI die Daten Pflegen und DB-Link Lokatoren auf diesen Daten erstellen. Da interne Abhängigkeiten auf die Struktur dieser Daten besteht, sind diese Tabellen ab Squeeze 2.5 geschützt. Modifikationen der Struktur werden daher vom System nicht mehr zugelassen. Betroffen sind hiervon die folgenden Tabellen: - creditorsettings - emailattachmentfilters - emailbodyconversion - emailsenderwhitelist - emailsubjectsblacklist - taxrates # Jobs Wiederkehrende Ausführung von Jobs und Skripten. # Jobs über Benutzeroberfläche steuern

Das folgende Feature befindet sich noch in Entwicklung und steht nur einigen Testkunden bereit. Falls die dargestellten Menüpunkte nicht verfügbar sind, wurde die Funktion noch nicht freigeschalten.

Wenn sie Squeeze selbst betreiben, stellen Sie sicher, dass das Jobsystem korrekt eingerichtet ist. Dies ist hier dokumentiert: [Einrichten der Jobverwaltung SQUEEZE 2](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/einrichten-der-jobverwaltung-squeeze-2 "Einrichten der Jobverwaltung SQUEEZE 2")

In der Administration befinden sich die folgenden zwei Menüpunkte. ### Skript-Übersicht Hier werden Skripte des aktuellen Mandanten dargestellt. Diese Skripte können Sie als Jobs wiederkehrend starten. [![image-1649143475429.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649143475429.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143475429.png) ### Job-Verwaltung Hier können Jobs für Job-Skripte eingerichtet werden. [![image-1649143541365.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649143541365.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143541365.png) ### Anlage eines Jobs Es können beliebig viele Jobs für ein Script konfiguriert werden. Dabei stehen vorgefertigte Intervalle bereit. Sollten diese nicht ausreichen kann ein [Cron-Ausdruck](https://wiki.ubuntuusers.de/Cron/) genutzt werden.

Wir empfehlen **nicht** ein Skript zu häufig oder mehrfach als Job zu konfigurieren. Handelt es sich bspw. bei einem Job um ein Stammdaten-Sync-Job, so kann es passieren, dass diese gleichzeitig ausgeführt werden. Wir werden dieses System erweitern und entsprechend absichern, aktuell muss dies manuell beachtet werden.

[![image-1649143601222.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649143601222.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143601222.png) # Einrichten der Jobverwaltung

Falls Sie Squeeze nicht selbst betreiben, ist dieser Artikel nicht relevant. Vermutlich möchten Sie nur wissen, wie Jobs in der Benutzeroberfläche zu verwalten sind: [Jobs über Benutzeroberfläche steuern](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/jobs-uber-benutzeroberflache-steuern "Jobs über Benutzeroberfläche steuern")

### Einleitung Ab Squeeze 2 sollen Jobs primär über die UI konfiguriert werden. Somit ist nur noch die Konfiguration eines einzelnen Jobs im Betriebssystems notwendig, der Rest geschieht dann über die UI. In Squeeze 1 musste noch pro auszuführendem Job in Squeeze ein Job im Betriebssystem geplant werden. Das System ist in der Theorie weiterhin nutzbar, erzeugt allerdings administrativen Mehraufwand. #### Job im Betriebssystem einrichten (ab Squeeze 2.5)

Für die Gewährleistung der zeitgesteuerten Ausführungen muss auf dem Host ein Job hinterlegt werden der das PHP-Job-Script `squeezer jobs:schedule --all` immer zur vollen Minute ausführt.

Dieses Skript ist verantwortlich für die eigentliche Job-Ausführung und führt je nach Parameter die Jobs aller Mandanten oder nur der angegebenen Mandanten aus. Für weitere Informationen können alle Optionen mittels `--help` flag gelistet werden (siehe auch [Einführung zur Squeeze 2.5 CLI](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/einfuhrung)): [![image-1688040387563.png](https://docs.squeeze.one/uploads/images/gallery/2023-06/scaled-1680-/image-1688040387563.png)](https://docs.squeeze.one/uploads/images/gallery/2023-06/image-1688040387563.png) ##### Beispiel Linux

Auf Linux ist besonders darauf zu achten, dass Jobs mittels des `www-data` Users ausgeführt werden.

Falls SQUEEZE auf Linux betrieben wird, ist ein Cronjob (bspw. mittels `sudo crontab -u www-data -e`) einzurichten. `*/1 * * * * php /var/www/html/squeeze/squeezer jobs:schedule --all` #### Job im Betriebssystem einrichten (vor Squeeze 2.5)

Für die Gewährleistung der zeitgesteuerten Ausführungen muss auf dem Host ein Job hinterlegt werden der das PHP-Jobs-Script `cli/jobs.php schedule` immer zu vollen Minute ausführt.

Dieses Skript ist verantwortlich für die eigentliche Job-Ausführung und führt Jobs aller Mandanten aus. ##### Beispiel Linux

Auf Linux ist besonders darauf zu achten, dass Jobs mittels des `www-data` Users ausgeführt werden.

Falls SQUEEZE auf Linux betrieben wird, ist ein cronjob (bspw. mittels `sudo crontab -u www-data -e`) einzurichten. `*/1 * * * * php /var/www/html/squeeze/cli/jobs.php schedule` ##### Beispiel Windows In der Windows Aufgabenplanung (Task Scheduler) muss ein Task definiert werden, welcher als Trigger die folgenden Einstellungen aufweist: - Nach einem Zeitplan - **Täglich** - Wiederholen jede **1 Minute** für die Dauer von **1 Tag** Die 1 Minute kann man manuell eintragen [![image-1697025935085.png](https://docs.squeeze.one/uploads/images/gallery/2023-10/scaled-1680-/image-1697025935085.png)](https://docs.squeeze.one/uploads/images/gallery/2023-10/image-1697025935085.png) Als Aktion muss die PHP Excutable aus dem SQUEEZE Installationsverzeichnis mit den CLI script `jobs.php` ausgeführt werden: - Programm starten - `/php/php.exe` - Argumente: **`/htdocs/cli/jobs.php schedule`** (für alle Mandanten) [![image-1697025969245.png](https://docs.squeeze.one/uploads/images/gallery/2023-10/scaled-1680-/image-1697025969245.png)](https://docs.squeeze.one/uploads/images/gallery/2023-10/image-1697025969245.png) Ohne Angabe von Mandanten, werden die Jobs für alle SQUEEZE Mandanten geprüft. Der Mandant kann im Aufruf angegeben werden: `/htdocs/cli/jobs.php schedule ` #### Hinweis bzgl. Performance Bei einem System mit vielen Mandanten kann es vorkommen, dass die Job-Ausführung länger dauert. Das ist im Kontext von Job-Skripten besonders kritisch, da sich ggf. Jobs "überholen" oder parallel ablaufen könnten. In solchen Fällen kontaktieren Sie bitte den DEXPRO Support, damit gemeinsam evaluiert werden kann, ob eine Sonderanpassung notwendig ist. # Cleanup-Job Diese Seite dokumentiert, wie Squeeze Daten nach Ablauf ihrer Haltefrist löscht und welche Daten nicht gelöscht werden. ## Squeeze 2 ### Verhalten Ein Dokument in Squeeze 2 wird nicht mehr benötigt, wenn keine weiteren Bearbeitungsschritte mehr anstehen. Üblicherweise sind das Dokumente in den Steps "Verarbeitet" (Backup) und Gelöscht (Deleted). Squeeze hält diese Dokumente noch eine gewisse Zeit vor und löscht sie danach permanent. Hierbei werden die Dateien (Bilder und PDFs), Einträge in der SQL-DB und Suchindizes (in ElasticSearch) gelöscht, welche aus dem Dokument extrahiert wurden. Ausgenommen sind Informationen, die für Audits relevant sind. ### Haltefrist Die Haltefrist gibt an wie lange ein Dokument gespeichert bleibt, nachdem es von Squeeze selbst nicht mehr benötigt wird. Als Admin kann man die aktuellen Einstellungen im "System"-Bereich der UI einsehen. Um die Haltefrist einzustellen, muss man der Mandantenkonfiguration (s. [Server- und Mandantenkonfiguration](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/server-und-mandantenkonfiguration "Server- und Mandantenkonfiguration")) dieses Objekt hinzufügen: ```json "cleanupJob": { "maxDocumentAge": "100", "maxLogAge": "0" } ``` Eine `maxDocumentAge` vom Wert `0` bedeutet hierbei, dass Dokumente schnellstmöglich vom System gelöscht werden. ### Auditlog Die finale Löschung eines Dokuments wird ab Squeeze 2.3.4 im Auditlog (SQL Tabelle `queueentrychanges`) vermerkt. ## Squeeze 1

In Squeeze 1 werden Cleanup-Jobs anders gepflegt als in Squeeze 2. Diese Dokumentation wird aktuell nicht gepflegt, da wir uns auf die Verbesserung und Dokumentation des Cleanup-Jobs von Squeeze 2 konzentrieren.

# Unlock-Job Falls Dokumente von Nutzern gesperrt sein sollten, welche nicht mehr am Dokument arbeiten, kann der "unlock-documents" Job helfen. Zu finden ist der Job in der Jobverwaltung (Internal) unlock-documents. Standard mäßig läuft der Job alle 5 Minuten und entsperrt alle Dokumente, in welchen zurzeit nicht gearbeitet wird. [![unlock.jpg](https://docs.squeeze.one/uploads/images/gallery/2024-12/scaled-1680-/unlock.jpg)](https://docs.squeeze.one/uploads/images/gallery/2024-12/unlock.jpg) # Exportschnittstellen Dokumentation von Exportschnittstellen. # Otris Documents SOAP Eine der wohl am häufigsten genutzten Schnittstellen in Verbindung mit Squeeze ist die Otris Documents SOAP Schnittstelle. Diese Schnittstelle bietet die Möglichkeit bidirektional mit dem Documents System zu interagieren. ### Konfiguration Um ein Documents System per SOAP anzusprechen und Aktionen auszuführen, muss an der Squeeze Dokumentenklasse ein Export definiert werden: Über "Neuer Eintrag" kann ein Export angelegt werden. [![image-1649667269409.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649667269409.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649667269409.png) [![image-1649667475618.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649667475618.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649667475618.png) Beim Speichern der Konfiguration wird versucht eine Verbindung zum Server herzustellen. Gelingt dieser Verbindungsaufbau nicht erscheint die Fehlermeldung in einem neuen Dialog, wie hier zu sehen ist: [![image-1587535684958.png](https://docs.squeeze.one/uploads/images/gallery/2020-04/scaled-1680-/image-1587535684958.png)](https://docs.squeeze.one/uploads/images/gallery/2020-04/image-1587535684958.png) Wenn die Verbindung jedoch hergestellt werden konnte, wird die Konfiguration zu den definierten Exportschnittstellen hinzugefügt. ### Typische Fehler #### Dokumente können nicht exportiert werden und bleiben liegen In älteren Versionen dieser Schnittstelle wurden beliebige viele Dokumente gleichzeitig exportiert. Der Soap Server von DOCUMENTs ist allerdings nicht in der Lage damit umzugehen. Daher ist die Anzahl gleichzeitiger Exporte dieses Schnittstellentypens auf 1 limitiert.

Bei dieser Schnittstelle ist die Anzahl gleichzeitiger Exporte auf 1 beschränkt, um Fehler zu vermeiden.

#### Fehler wenn keine Internetverbindung besteht Die mit Documents ausgelieferte WSDL verweist auf ein Schema, welches bei W3C liegt. Sollte keine Internetverbindung bestehen, führt das zu einem Fehler, da das Schema nicht geladen werden kann. Um diesen Fehler zu umgehen und auf eine Interverbindung verzichten zu können, kann folgender Workaround genutzt werden: ##### Sicherung der WSDL erstellen Im Soap Server Verzeichnis von Documents sollte eine Sicherung der Originalen WSDL erstellt werden: [![image-1617723830297.png](https://docs.squeeze.one/uploads/images/gallery/2021-04/scaled-1680-/image-1617723830297.png)](https://docs.squeeze.one/uploads/images/gallery/2021-04/image-1617723830297.png) ##### Verweis zum Schema anpassen in der DOCUMENTS.wsdl muss nun der Verweis so angepasst werden dass auf eine xsd verwiesen wird, die im lokalen netzwerk erreichbar ist. Am einfachsten ist hier, auf den Documents Server selbst zu verweisen (z.B. mittels IP des Documents-Servers) [![image-1617723990498.png](https://docs.squeeze.one/uploads/images/gallery/2021-04/scaled-1680-/image-1617723990498.png)](https://docs.squeeze.one/uploads/images/gallery/2021-04/image-1617723990498.png) Die `xop.xsd` muss nun noch im public root Verzeichnis des Documents Servers abgelegt werden, damit diese auch für Squeeze erreichbar ist.
Sobald diese Schritte erfolgt sind, sollte der Verbindungsaufbau mit Documents möglich sein.
# SharePoint API Diese Schnittstelle bietet die Möglichkeit bidirektional mit dem SharePoint System zu interagieren. ### Kompatibilität - SharePoint Online - SharePoint On-Premises (2013-2019) ### Konfiguration Um ein SharePoint System per REST/OData anzusprechen und Aktionen auszuführen, muss an der Squeeze Dokumentenklasse ein Export definiert werden: #### Authentifizierung Bei der Authentifizierung kann zwischen drei verschiedenen Mechanismen gewählt werden: - User - Anmeldung am SharePoint mit Benutzer - App - NTLM ##### Authentifizierung als User Um eine Benutzter-basierte Authentifizierung zu nutzen, ist im Feld `Authentication Type` der Wert `User` auszuwählen. Anschließend muss in die Felder `Username` sowie `Password` ein Benutzer, der dem SharePoint System bekannt ist, hinterlegt werden. [![image-1693556257090.png](https://docs.squeeze.one/uploads/images/gallery/2023-09/scaled-1680-/image-1693556257090.png)](https://docs.squeeze.one/uploads/images/gallery/2023-09/image-1693556257090.png) ##### Authentifizierung als App Um eine App-basierte Authentifizierung zu nutzen, ist im Feld `Authentication Type` der Wert `App` auszuwählen. Anschließend muss in die Felder `Client Id` sowie `Client Secret` eine Registrierte App Kennung hinterlegt werden, die dem SharePoint System bekannt ist. #### Entität Um in das System zu exportieren, muss zunächst die Entität bestimmt werden, in welche exportiert werden soll: - Dokumentenbibliothek - Liste Nachdem dies ausgewählt wurde, kann im Feld "Entity ID" die entsprechende Liste oder Dokumentenbibliothek angegeben werden in der letztendlich der Export stattfindet. Für Dokumentenbibliotheken muss der technische Name angegeben werden, bei Listen der Anzeigename. [![image-1693556315329.png](https://docs.squeeze.one/uploads/images/gallery/2023-09/scaled-1680-/image-1693556315329.png)](https://docs.squeeze.one/uploads/images/gallery/2023-09/image-1693556315329.png) ##### Dokumentenbibliothek Für die Dokumentenbibliotheken gibt es noch zwei weitere Einstellungen. Export Folder Structure gibt den Pfad in der Dokumentenbibliothek an, in den exportiert werden soll. Dieser kann dynamisch aus Feldwerten der Felder der jeweiligen Dokumentenklasse angegeben werden. Hierzu in dem Feld den Pfad von links nach rechts mit Feldern der Dokumentenklasse auswählen: [![image-1693556495987.png](https://docs.squeeze.one/uploads/images/gallery/2023-09/scaled-1680-/image-1693556495987.png)](https://docs.squeeze.one/uploads/images/gallery/2023-09/image-1693556495987.png) Die letzte Einstellungsmöglichkeit gibt an, ob SQUEEZE den Export-Pfad erstellen soll, falls dieser nicht vorhanden ist. Ist der Pfad nicht vorhanden und SQUEEZE soll diesen nicht erstellen, wird ein Fehler beim Export eines Vorgangs durch den SharePoint zurückgegeben. #### Feldwerte exportieren Mit den Namen im Zielsystem (externe Feldnamen) können die Spalten eines Listeneintrages bzw. weitere Spalten/Details eines Eintrags einer Dokumentenbibliothek angegeben werden. [![image-1649668277158.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1649668277158.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649668277158.png) Diese können in der Dokumentenklasse bei den Feldern angegeben werden. #### Positionen exportieren Jedes "Table"-Feld (in dem Beispiel die "LineItems") kann als JSON exportiert werden, wenn ein Zielname definiert wurde. Dabei muss das Zielfeld mehrzeilig sein. #### Reservierte Zielnamen
Der reservierte Zielname "**ContentTypeId**" gibt das SQUEEZE Feld an, welches den Inhaltstyp des exportierten Vorgangs angibt. Hier reicht es, den Namen anzugeben, SQUEEZE holt sich die ID selbst vom SharePoint.
Hierbei handelt es sich um die globalen Inhaltstypen (Root) des SharePoints. # Navision Soap

Bei dieser Schnittstelle ist die Anzahl gleichzeitiger Exporte auf 1 beschränkt, um Fehler zu vermeiden.

# Freeze EAS Export Diese Schnittstelle bietet die Möglichkeit in einen Freeze EAS Store zu exportieren.

*Achtung: Diese Dokumentation bezieht sich auf eine bisher nicht veröffentlichte Version!*

### Kompatibilität - Squeeze ab 2.4.1 - [Dexpro Platform](https://docs.squeeze.one/shelves/dexpro-platform)-Integration - *Hinweis: Aktuell steht sowohl die Platform als auch Freeze nur in der Cloud zur Verfügung* ### Setup Allgemein ist es erstmal notwendig, eine funktionierende Integration in die [Dexpro Platform](https://docs.squeeze.one/shelves/dexpro-platform) zu haben. Am einfachsten kann man das über die Systemchecks sehen: [![image-1680691631039.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680691631039.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680691631039.png) Für die Freeze EAS-Integration muss man zusätzlich in der Mandantenkonfiguration die BasisURL von Freeze eintragen: ```JSON ... "dexp": { ... "freeze": { "baseUrl": "https://public-02.freeze.one/apis/freeze/" }, ... }, ... ``` Wenn man erneut die Systemchecks durchführt, sollte die Freeze Integration angezeigt werden, gefolgt von der Liste der registrierten Stores: [![image-1680690660479.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680690660479.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680690660479.png) ### Konfiguration Die Konfiguration erfolgt wie bei jedem Export an der Dokumentenklasse: [![image-1680691958589.png](https://docs.squeeze.one/uploads/images/gallery/2023-04/scaled-1680-/image-1680691958589.png)](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680691958589.png) Ob ein Feld exportiert wird hängt davon ab ob dessen Eigenschaft "Name (Zielsystem)" gesetzt ist. Falls ja, wird es unter diesem Namen an den Archiv-Record angehängt. # Pull Export Der Pull Export ist ein Hilfsmittel, das für die Integration von Squeeze in anderen Anwendungen gedacht ist. Dieser Export ist asynchon aus Sicht von Squeeze und ermöglicht, dass Integratoren Dokumente abholen, anstelle sie von Squeeze gesendet bekommen. Daher die Benennung "Pull Export" (im Kontrast zu "Push Export"). Das Prinzip hierbei ist: - Ein Dokument wird in Squeeze validiert. Es liegt jetzt im Export-Schritt, wartend auf die Abholung von außen. - Die Integration holt das Dokument ab. - Die Integration markiert das Dokument als exportiert. - Das Dokument wird jetzt in den nächsten Verarbeitungsschritt verschoben (Archiv, o. Ä.) Falls Sie als Integrator Dokumente von Squeeze nach der Validierung aktiv abholen wollen, sprechen Sie Ihren Ansprechpartner für den Squeeze-Betrieb an. # Benutzer und Rollen Alle Themen, die mit Benutzerverwaltung und Berechtigungskonzepten in Zusammenhang stehen. # Berechtigungskonzept #### Berechtigungsmatrix

Die Folgende Dokumentation ist nicht final und wird im Laufe der Zeit mit Details gefüllt. Aktuell beschreibt sie die vorhandenen Berechtigungen bewusst verallgemeinert. Wir bitten um Feedback bei Verständnisfragen.

Die folgende Matrix zeigt die Berechtigungen an, welche verschiedene Rollen in Squeeze erhalten. Die Inhalte der Tabelle bedeuten: - **C -** Kann ein User diese Ressource anlegen? - **R -** Kann ein User auf diese Ressource zugreifen? - **U -** Kann ein User diese Ressource aktualisieren / speichern? - **D -** Kann ein User diese Ressource löschen? - **X -** Kann ein User diese Aktion durchführen?
***Server-Admin1*** **root****User Management****Role Management****Benutzerdefinierte Rollen**
Dokument CRUD CRUDDok
Logs der Verarbeitung eines Dokumentes R RDok
Konfigurationen wie: - Stapelklassen - Dokumentenklassen - Lokatoren - Import-Schnittstellen CRUD
Benutzer CRUDCRUD
Rollen CRUD CRUD
Rollen zu Benutzern zuordnen CRUDCRUDCRUD
Stamdatentabellen und zugehörige Konfigurationen CRUD CRUDM
Stammdaten CRUD CRUDM
Administrative Tätigkeiten wie: - Skripte verwalten - Skripte ausführen - Jobs verwalten - Migrationen ausführen - Suchindizes verwalten X
Feature Flags CRUD
- XDok bedeutet, dass User die Berechtigung nur dann erhalten, wenn [Rollenfilter und Feldbedingungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/rollenfilter-feldbedingungen "Rollenfilter & Feldbedingungen") sie darauf berechtigen. - X, YDok ist ähnlich wie der vorherige Punkt, allerdings gilt die Dok Einschränkung nur für Y, nicht für X. - CRUDM bedeutet, dass die Berechtigung auf Rollen-Ebene konfiguriert werden kann, falls das zugehörige Feature Flag aktiviert wurde. Anmerkungen: 1. Mit Server-Admin ist der Betreiber des Squeeze-Systems gemeint und keine tatsächliche Rolle in Squeeze. Bei Cloud-Systemen sind die DEXPRO oder Partner, On-Premise sind das die betreuenden Projektverantwortlichen und der Kunde selbst, insofern dieser darauf geschult wurde. # Rollenfilter & Feldbedingungen (bis Squeeze 2.5)

Rollenfilter und Feldbedingungen werden genutzt um das Anzeigen, Validieren, Zurückstellen und Löschen von Dokumenten in Squeeze zu berechtigen.

## Rollenfilter Rollenfilter (im Folgenden kurz "Filter") gehören zum Autorisierungskonzept von SQUEEZE und unterstützen bei feldbasierter Autorisierung von Dokumenten. Mittels dieser Filter ist es möglich für unterschiedliche Benutzergruppen unterschiedliche Dokumente (auch innerhalb einer Dokumentenklasse) zu berechtigen. - - - - - - ### Konfiguration Jeder Rolle können beliebig viele Filter hinzugefügt werden. Ein Filter steht im Bezug zu einer Dokumentenklasse und berechtigt den Zugriff (lesend & schreibend) auf alle Dokumente dieser Klasse. ### Auswertung Rollenfilter werden mit einem **logischen Oder** ausgewertet. D. h., wenn einer Rolle mehrere Filter zu der selben Dokumentenklasse zugeordnet sind, dann genügt bereits eine positive Auswertung eines Filters (und seiner [Feldbedingungen](https://docs.squeeze.one/books/squeeze-admin-handbuch/page/rollenfilter-feldbedingungen#bkmrk-feldbasierte-berecht)) aus, um Zugriff auf das Dokument zu erhalten. Dieses Verhalten gilt auch dann, wenn ein Benutzer Mitglied mehrerer Rollen mit wiederum diversen Filtern ist.

**Zusammengefasst:** Ein Benutzer erhält Zugriff auf ein Dokument, sobald mindestens eine seiner Rollen über einen Rollenfilter den Zugriff gewährt.

## Feldbedingungen Soll nur auf eine Teilmenge der Dokumente einer Dokumentenklasse berechtigt werden, können Rollenfilter um Feldbedingungen ergänzt werden. Diese erlauben die Filterung von Dokumenten auf Basis ihrer Feldwerte.

Aktuell (Squeeze 2.0 - 2.4) können nicht alle konfigurierbaren Filter korrekt ausgewertet werden. Die Konfiguration solcher Filter ist zwar möglich, sollte aber vermieden werden. **Beispiel:** Die Filterung auf ein Textfeld mit einem "Größer als" Komparator (bspw. "Lieferantenname größer als 20") würde zu einem Suchfehler führen. Wir arbeiten kontinuierlich an Verbesserungen an diesem System. Weiteres finden Sie unter der Überschrift "Besonderheiten".

SQUEEZE 1 unterstützt mehr Komparatoren als SQUEEZE 2. Sollten Sie einen Komparator nutzen, der nicht mehr unterstützt wird, kontaktieren Sie bitte den Support, wenn Sie migrieren möchten.

### Konfiguration An einem Filter können beliebig viele Feldbedingungen definiert werden. Eine Bedingung ist zusammengesetzt aus: - Dem Feld dessen Inhalt geprüft werden soll - Dem Komparator, der zur Prüfung genutzt wird - Dem Vergleichswert (kann von einigen Komparatoren ignoriert werden) #### Besonderheiten Das hier sind bekannte Sonderheiten bei der Konfiguration der Feldbedingungen. Diese werden laufend dokumentiert: ##### **Betragsfelder** - Betragsfelder müssen generell immer mit zwei Stellen nach dem Punkt angegeben werden. Geben Sie also **200.00** statt **200** ein. ### Auswertung Feldbedingungen werden anders als Rollenfilter mit einem **logischen Und** verknüpft ausgewertet. Es müssen also alle Bedingungen erfüllt sein, damit ein Rollenfilter den Zugriff auf ein Dokument gewährt. ### Zusammenspiel mehrerer Rollenfilter Wenn für einen Benutzer mehrere Rollenfilter (mit wiederum diversen Feldbedingungen) ausgewertet werden, dann spielen Rollenfilter **ohne** Feldbedingungen keine Rolle mehr und werden ignoriert. **Ein Beispiel:** - Eine Rolle hat zwei Filter. Der erste Filter hat keine Feldbedingungen. Der zweite Filter hat eine Feldbedingung. - Bei der Auswertung dürfen Nutzer der Rolle nur Dokumente sehen, die durch den zweiten Filter freigegeben werden. ### Zusammenspiel mit vererbten Rollen
Ist ein Nutzer Mitglied mehrerer Rollen ([durch explizite Zuordnung oder Rollen-Vererbung](https://docs.squeeze.one/books/squeeze-admin-handbuch/page/rollen "Rollen")), so werden Rollenfilter und Feldbedingungen dieser Rollen bei der Auswertung berücksichtigt.
## Beispiele ### Konfiguration Im Folgenden Beispiel ist zu sehen: - Für die Rolle "System Administration" wurde ein Rollenfilter für die Dokumentenklasse "Eingangsrechnung" konfiguriert (1) - An diesem Rollenfilter hängt eine Feldbedingung. Dokumente müssen im Feld "Barcode" exakt den Wert "123" enthalten, um Usern angezeigt werden zu dürfen. (2) [![image-1669044388326.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1669044388326.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1669044388326.png) ### Berücksichtigung in der UI Dieser Abschnitt stellt dar, in welchen Bereichen der Software, Rollenfilter und Feldbedingungen ausgewertet werden und in welchen nicht. Aus Performance-Gründen ist es nicht überall möglich diese Filter anzuwenden.

Rollenfilter und Feldbedingungen werden aus Performance-Gründen nicht überall in der UI ausgeführt.

#### Auf dem Dashboard 1. Die angezeigte Dokumentensumme in auf den Validierungskacheln berücksichtigt die Rollenfilter **nicht**. 2. Ebenso berücksichtigt die Warteschlange im oberen Bereich die Rollenfilter **nicht**. [![image-1670233208785.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233208785.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233208785.png) #### Dokumentensuche - In der eigentlichen Dokumentensuche (hier ist die Trefferliste zu sehen), werden Rollenfilter berücksichtigt. - Zu erkennen ist das bspw. daran, dass in der Warteschlange 5 Dokumente in der Validierung gezeigt werden, entsprechend der Rollenfilter aber nur 1 Dokument dem Validierer angezeigt werden. [![image-1670233303943.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233303943.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233303943.png) #### Validierung - Wenn ein Dokument direkt in der Validierung angezeigt werden soll, werden Rollenfilter berücksichtigt. [![image-1670233401253.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233401253.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233401253.png) #### Administration - In der Administration werden Rollenfilter i. A. nicht angewandt, um gewährleisten zu können, dass Administratoren technische Probleme wie "liegengebliebene" Dokument sehen und lösen können. [![image-1670233886771.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233886771.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233886771.png) ### FAQ ##### Es fehlen Dokumente im Validierungsschritt Bei der Verwendung von **Feldbedingungen** kann es vorkommen, dass diese nicht korrekt konfiguriert wurden. Das äußert sich dann darin, dass scheinbar eine andere Anzahl an Dokumenten im Validierungsschritt dargestellt wird (Vergleiche Timeline (1) und Ergebnisse der Dokumentensuche (2)). Dieses Verhalten tritt auch bei Admins mit der Root-Rolle auf. Das ist kein Softwarefehler, sondern Folge der Konfiguration. I. d. R. tritt das bei Projekten auf, wo viele Rollen mit eigenen Filtern eingesetzt werden. [![image-1692014088720.png](https://docs.squeeze.one/uploads/images/gallery/2023-08/scaled-1680-/image-1692014088720.png)](https://docs.squeeze.one/uploads/images/gallery/2023-08/image-1692014088720.png) Beispiel-Schaubild **Problem verifizieren**: So ist zu testen, ob die Konfiguration der Rollenfilter das Problem für die scheinbar fehlenden Dokumente sind. Wie im vorherigen Text erklärt, erben die Rollen ihre Rollenfilter und deren Rollenfilter-Feldbedingungen von unten nach oben, gehen Sie wie folgt vor um den Fehler zu ermitteln: 1. Prüfen Sie die Rolle die ihren Nutzer berechtigt und ermitteln Sie welche Rollen die Rolle bereits durch die Vererbung einschließt. 2. Kontrollieren Sie nun jede Rolle und deren Rollenfilter achten Sie auf die Rollenfilter-Feldbedingungen.

Eine Rolle die Zugriff auf alle Dokumentenklassen-Dokumente haben soll muss einen Rollenfilter auf die bezogene Dokumentenklasse besitzen.

Ein Beispiel-Fehlerbild: Ein Admin kann weniger Dokumente auffinden, als in der Verarbeitungskette (Punkt 1. Abbildung "Beispiel-Schaubild") angezeigt werden. Es gibt mehrere untergeordnete Rollen, die Rollenfilter-Feldbedingungen auf das Feld "Mandant", bspw. "Mandant = 1000", "Mandant = 2000" usw. haben. - Stellen Sie sicher, dass die Admin-Rolle einen Rollenfilter auf die komplette Dokumentenklasse besitzt. Der Rollenfilter darf keine Feldbedingungen besitzen die den Zugriff einschränken. # Rollenfilter & Feldbedingungen (ab & inkl. Squeeze 2.5)

Rollenfilter und Feldbedingungen werden genutzt um das Anzeigen, Validieren, Zurückstellen und Löschen von Dokumenten in Squeeze zu berechtigen.

## Rollenfilter Rollenfilter (im Folgenden kurz "Filter") gehören zum Autorisierungskonzept von SQUEEZE und unterstützen bei feldbasierter Autorisierung von Dokumenten. Mittels dieser Filter ist es möglich für unterschiedliche Benutzergruppen unterschiedliche Dokumente (auch innerhalb einer Dokumentenklasse) zu berechtigen. - - - - - - ### Konfiguration Jeder Rolle können beliebig viele Filter hinzugefügt werden. Ein Filter steht im Bezug zu einer Dokumentenklasse und berechtigt den Zugriff (lesend & schreibend) auf alle Dokumente dieser Klasse. ### Auswertung Rollenfilter werden mit einem **logischen Oder** ausgewertet. D. h., wenn einer Rolle mehrere Filter zu der selben Dokumentenklasse zugeordnet sind, dann genügt bereits eine positive Auswertung eines Filters (und seiner [Feldbedingungen](https://docs.squeeze.one/books/squeeze-admin-handbuch/page/rollenfilter-feldbedingungen#bkmrk-feldbasierte-berecht)) aus, um Zugriff auf das Dokument zu erhalten. Dieses Verhalten gilt auch dann, wenn ein Benutzer Mitglied mehrerer Rollen mit wiederum diversen Filtern ist.

**Zusammengefasst:** Ein Benutzer erhält Zugriff auf ein Dokument, sobald mindestens eine seiner Rollen über einen Rollenfilter den Zugriff gewährt.

## Feldbedingungen Soll nur auf eine Teilmenge der Dokumente einer Dokumentenklasse berechtigt werden, können Rollenfilter um Feldbedingungen ergänzt werden. Diese erlauben die Filterung von Dokumenten auf Basis ihrer Feldwerte.

Aktuell (Squeeze 2.0 - 2.4) können nicht alle konfigurierbaren Filter korrekt ausgewertet werden. Die Konfiguration solcher Filter ist zwar möglich, sollte aber vermieden werden. **Beispiel:** Die Filterung auf ein Textfeld mit einem "Größer als" Komparator (bspw. "Lieferantenname größer als 20") würde zu einem Suchfehler führen. Wir arbeiten kontinuierlich an Verbesserungen an diesem System. Weiteres finden Sie unter der Überschrift "Besonderheiten".

SQUEEZE 1 unterstützt mehr Komparatoren als SQUEEZE 2. Sollten Sie einen Komparator nutzen, der nicht mehr unterstützt wird, kontaktieren Sie bitte den Support, wenn Sie migrieren möchten.

### Konfiguration An einem Filter können beliebig viele Feldbedingungen definiert werden. Eine Bedingung ist zusammengesetzt aus: - Dem Feld dessen Inhalt geprüft werden soll - Dem Komparator, der zur Prüfung genutzt wird - Dem Vergleichswert (kann von einigen Komparatoren ignoriert werden) #### Besonderheiten Das hier sind bekannte Sonderheiten bei der Konfiguration der Feldbedingungen. Diese werden laufend dokumentiert: ##### **Betragsfelder** - Betragsfelder mit den folgenden Kombinationen aus Tausendertrennzeichen und Dezimaltrenner konfiguriert werden: - 2187,50 - 2187.50 - 2.187,50 - 2,187.50 ### Auswertung Feldbedingungen werden anders als Rollenfilter mit einem **logischen Und** verknüpft ausgewertet. Es müssen also alle Bedingungen erfüllt sein, damit ein Rollenfilter den Zugriff auf ein Dokument gewährt. #### Zusammenspiel mehrerer Rollenfilter Wenn für einen Benutzer mehrere Rollenfilter (mit wiederum diversen Feldbedingungen) ausgewertet werden, dann gilt weiterhin, dass nur einer der Rollenfilter positiv ausgewertet werden muss. **Ein Beispiel:** - Eine Rolle hat zwei Filter. Der erste Filter hat keine Feldbedingungen. Der zweite Filter hat eine Feldbedingung. - Bei der Auswertung dürfen Nutzer alle Dokumente der Dokumentenklasse sehen. #### Zusammenspiel mit vererbten Rollen
Ist ein Nutzer Mitglied mehrerer Rollen ([durch explizite Zuordnung oder Rollen-Vererbung](https://docs.squeeze.one/books/squeeze-admin-handbuch/page/rollen "Rollen")), so werden Rollenfilter und Feldbedingungen aller Rollen bei der Auswertung berücksichtigt.
Typischerweise fällt dies auf, wenn ein Admin-Benutzer mit der root-Rolle alle Dokumente des Systems sehen soll, dies aber nicht tut. Das könnte daran liegen, dass der root-Rolle ein Rollenfilter ohne Feldbedingungen fehlt.
## Beispiele ### Konfiguration Im Folgenden Beispiel ist zu sehen: - Für die Rolle "System Administration" wurde ein Rollenfilter für die Dokumentenklasse "Eingangsrechnung" konfiguriert (1) - An diesem Rollenfilter hängt eine Feldbedingung. Dokumente müssen im Feld "Barcode" exakt den Wert "123" enthalten, um Usern angezeigt werden zu dürfen. (2) [![image-1669044388326.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1669044388326.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1669044388326.png) ### Berücksichtigung in der UI Dieser Abschnitt stellt dar, in welchen Bereichen der Software, Rollenfilter und Feldbedingungen ausgewertet werden und in welchen nicht. Aus Performance-Gründen ist es nicht überall möglich diese Filter anzuwenden.

Rollenfilter und Feldbedingungen werden aus Performance-Gründen nicht überall in der UI ausgeführt.

#### Auf dem Dashboard 1. Die angezeigte Dokumentensumme in auf den Validierungskacheln berücksichtigt die Rollenfilter **nicht**. 2. Ebenso berücksichtigt die Warteschlange im oberen Bereich die Rollenfilter **nicht**. [![image-1670233208785.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233208785.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233208785.png) #### Dokumentensuche - In der eigentlichen Dokumentensuche (hier ist die Trefferliste zu sehen), werden Rollenfilter berücksichtigt. - Zu erkennen ist das bspw. daran, dass in der Warteschlange 5 Dokumente in der Validierung gezeigt werden, entsprechend der Rollenfilter aber nur 1 Dokument dem Validierer angezeigt werden. [![image-1670233303943.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233303943.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233303943.png) #### Validierung - Wenn ein Dokument direkt in der Validierung angezeigt werden soll, werden Rollenfilter berücksichtigt. [![image-1670233401253.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233401253.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233401253.png) #### Administration - In der Administration werden Rollenfilter i. A. nicht angewandt, um gewährleisten zu können, dass Administratoren technische Probleme wie "liegengebliebene" Dokument sehen und lösen können. [![image-1670233886771.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670233886771.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670233886771.png) ### FAQ ##### Es fehlen Dokumente im Validierungsschritt Bei der Verwendung von **Feldbedingungen** kann es vorkommen, dass diese nicht korrekt konfiguriert wurden. Das äußert sich dann darin, dass scheinbar eine andere Anzahl an Dokumenten im Validierungsschritt dargestellt wird (Vergleiche Timeline (1) und Ergebnisse der Dokumentensuche (2)). Dieses Verhalten tritt auch bei Admins mit der Root-Rolle auf. Das ist kein Softwarefehler, sondern Folge der Konfiguration. I. d. R. tritt das bei Projekten auf, wo viele Rollen mit eigenen Filtern eingesetzt werden. [![image-1692014088720.png](https://docs.squeeze.one/uploads/images/gallery/2023-08/scaled-1680-/image-1692014088720.png)](https://docs.squeeze.one/uploads/images/gallery/2023-08/image-1692014088720.png) Beispiel-Schaubild **Problem verifizieren**: So ist zu testen, ob die Konfiguration der Rollenfilter das Problem für die scheinbar fehlenden Dokumente sind. Wie im vorherigen Text erklärt, erben die Rollen ihre Rollenfilter und deren Rollenfilter-Feldbedingungen von unten nach oben, gehen Sie wie folgt vor um den Fehler zu ermitteln: 1. Prüfen Sie die Rolle die ihren Nutzer berechtigt und ermitteln Sie welche Rollen die Rolle bereits durch die Vererbung einschließt. 2. Kontrollieren Sie nun jede Rolle und deren Rollenfilter achten Sie auf die Rollenfilter-Feldbedingungen.

Eine Rolle die Zugriff auf alle Dokumentenklassen-Dokumente haben soll muss einen Rollenfilter auf die bezogene Dokumentenklasse besitzen.

Ein Beispiel-Fehlerbild: Ein Admin kann weniger Dokumente auffinden, als in der Verarbeitungskette (Punkt 1. Abbildung "Beispiel-Schaubild") angezeigt werden. Es gibt mehrere untergeordnete Rollen, die Rollenfilter-Feldbedingungen auf das Feld "Mandant", bspw. "Mandant = 1000", "Mandant = 2000" usw. haben. - Stellen Sie sicher, dass die Admin-Rolle einen Rollenfilter auf die komplette Dokumentenklasse besitzt. Der Rollenfilter darf keine Feldbedingungen besitzen die den Zugriff einschränken. # Rollen ### Rollen Rollen können genutzt werden, um den Dokumentenzugriff zu verwalten und die Verwendung von Funktionen wie Benutzerverwaltung zu authorisieren. Das zugrundeliegende Authorisierungskonzept ist [RBAC](https://de.wikipedia.org/wiki/Role_Based_Access_Control). [![image-1650962362225.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650962362225.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650962362225.png) ### Konfiguration Es können beliebig viele Rollen angelegt werden. Jede Rolle verfügt über einen Namen und eine Beschreibung. Außerdem muss **jeder** Rolle eine Eltern-Rolle zugeordnet werden. Durch diese Zuordnung entsteht eine Rollenhierarchie, welche bspw. genutzt werden kann, um Organisationsstrukturen abzubilden. [![image-1650962474844.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650962474844.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650962474844.png) ### Benutzerzuordnung & Vererbung Ein Benutzer kann zu beliebig vielen Rollen hinzugefügt werden. **Der zugeordnete Benutzer ist implizit Mitglied aller Sub-Rollen der zugeordneten Rolle.** [![image-1650962572893.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650962572893.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650962572893.png)
Diese Vererbung forciert, dass Berechtigungen von Sub-Rollen auf die Eltern-Rolle übertragen werden. Mehr dazu im Abschnitt [Rollenfilter & Feldbasierte Berechtigung](https://docs.squeeze.one/books/squeeze-admin-handbuch/page/rollenfilter-feldbasierte-berechtigung "Rollenfilter & Feldbasierte Berechtigung")
# Benutzer anlegen Um einen Benutzer anzulegen klicken Sie in der Benutzerverwaltung auf Benutzer. Dort klicken Sie auf das Symbol "+ Neuer Eintrag" . [![image-1650961716544.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650961716544.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650961716544.png) Unter dem Reiter "Allgemein" müssen jetzt alle mit einem "\*"gekennzeichneten Felder ausgefüllt werden. Danach kann der Benutzer über das "Speichern" Symbol angelegt werden. [![image-1650961930305.png](https://docs.squeeze.one/uploads/images/gallery/2022-04/scaled-1680-/image-1650961930305.png)](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650961930305.png) *Nachdem ein Benutzer angelegt worden ist, sollte er immer mindestens einer Rolle hinzugefügt werden, da dieser Benutzer ansonsten keine Dokumente ansehen kann.* # Standard-Rollen von SQUEEZE Diese Rollen sind in jedem SQUEEZE Mandanten vorhanden. Sie berechtigen Benutzer auf Teilbereiche der Anwendung, insbesondere die Administration. [![image-1668612210506.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1668612210506.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1668612210506.png) #### Rollen und ihre Berechtigungen ##### root Diese Rolle gibt vollständige Berechtigungen auf alle Funktionen. ##### Admin User Management Diese Rolle beinhaltet **User Management** und **Role Management** ##### User Management Diese Rolle berechtigt darauf Benutzer anzulegen, zu verändern, ihre Rollen zu verwalten usw. ##### Role Management Diese Rolle berechtigt dazu Rollen anzulegen, verändern und zu löschen. # Digitale Formate (XML, XRechnung, ZUGFeRD) Dieses Kapitel behandelt die Verarbeitung von digitalen Formaten, die nicht mit visuellen Repräsentation eines Dokumentes (also Bilder, Scans, PDFs) zusammenhängen. Das sind Formate wie XRechnung, ZUGFeRD usw. die üblicherweise als XML- oder JSON-Dateien verschickt werden. # Einführung Digitale Formate: XML, XRechnung und ZUGFeRD in der Software Squeeze Willkommen zur Dokumentation von Squeeze, insbesondere des Moduls **Elektronische-Daten**, einer leistungsstarken Komponente zur Verarbeitung digitaler Formate. In dieser Dokumentation erfahren Sie alles Wichtige zur Nutzung und Verwaltung dieses Moduls, der Schwerpunkt liegt hierbei auf der Verarbeitung von gängigen, digitalen, Formate wie ZUGFeRD und XRechnung. Obwohl die Unterstützung für benutzerdefinierte XML-Formate (Customized XMLs) noch nicht verfügbar ist, wird diese Funktionalität in zukünftigen Updates bereitgestellt. #### Digitale Formate im Überblick In der heutigen digitalen Geschäftswelt sind effiziente und standardisierte Datenformate unerlässlich. Die folgenden Formate spielen dabei eine besonders wichtige Rolle: **XML (Extensible Markup Language)** XML ist ein vielseitiges und weit verbreitetes Datenformat, das speziell für die strukturierte Datenspeicherung und -übertragung entwickelt wurde. Es ermöglicht die Definition eigener Tags und Strukturen, was es zu einem flexiblen Werkzeug für unterschiedlichste Anwendungen macht. Der Einsatz von XML sorgt für eine effiziente und transparente Datenkommunikation. **XRechnung** XRechnung ist ein speziell für elektronische Rechnungen entwickeltes Format, das in vielen europäischen Ländern, einschließlich Deutschland, gesetzlich vorgeschrieben ist. Es basiert auf XML und erfüllt die Anforderungen der Europäischen Norm EN 16931. Durch die Standardisierung von Rechnungsdaten ermöglicht XRechnung eine einfache und effiziente Verarbeitung und Archivierung elektronischer Rechnungen. **ZUGFeRD (Zentraler User Guide des Forums elektronische Rechnung Deutschland)** ZUGFeRD ist ein hybrides Rechnungsformat, das sowohl ein menschenlesbares PDF-Dokument, als auch maschinenlesbare XML-Daten kombiniert. Dieses Format vereinfacht die Rechnungsverarbeitung, indem es die Vorteile beider Formate nutzt. Es ist besonders nützlich für Unternehmen, die mit unterschiedlichen Geschäftspartnern zusammenarbeiten und verschiedene Anforderungen an Rechnungsformate erfüllen müssen. #### Squeeze: Ihre Lösung für die Verarbeitung digitaler Formate Squeeze ist darauf ausgelegt, die Verarbeitung von ZUGFeRD- und XRechnung-Formaten nahtlos zu integrieren. Mit Squeeze können Unternehmen ihre Rechnungsprozesse effizient automatisieren und sicherstellen, dass sie den aktuellen gesetzlichen Anforderungen entsprechen. Die Unterstützung für benutzerdefinierte XML-Formate ist in der Entwicklung und wird in einer zukünftigen Version von Squeeze verfügbar sein, **[hier](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/en-16931-e-rechnungsformate-in-squeeze "EN-16931 E-Rechnungsformate in Squeeze")** finden Sie die aktuell unterstützten Formate. **Hauptfunktionen von Squeeze:** - **[Verarbeitung von ZUGFeRD-Rechnungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd "XRechnung und ZUGFeRD"):** Squeeze kann ZUGFeRD-Rechnungen problemlos einlesen und die enthaltenen Daten sowohl aus dem PDF- als auch aus dem XML-Teil extrahieren. - **[Unterstützung für XRechnung](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd "XRechnung und ZUGFeRD"):** Squeeze ermöglicht die einfache Handhabung von XRechnungen, was die Konformität mit europäischen Vorschriften sicherstellt. - **[Prüfbericht der Koordinierungsstelle für IT-Standards(KoSIT)](https://docs.squeeze.one/link/500#bkmrk-pdf-pr%C3%BCfbericht-kosi "XRechnung und ZUGFeRD"):** Squeeze generiert auf Kundenwunsch Konformitätsnachweise für XML-Daten gemäß den KoSIT-Standards. #### Weiterführende Informationen In den folgenden Kapiteln dieser Dokumentation finden Sie detaillierte Anleitungen zur Funktionsweise, Konfiguration und Verwaltung des Moduls **Digitale Formate**. Wir empfehlen, diese Dokumentation gründlich zu lesen und bei Bedarf als Referenz zu verwenden, um das volle Potenzial von Squeeze auszuschöpfen. # XML-Pipeline In der **XML-Pipeline** von Squeeze werden XML-Dokumente durch speziell angepasste Verarbeitungsstufen geführt, um den unterschiedlichen Anforderungen der Datenextraktion und Dokumentenkategorisierung gerecht zu werden.
SchrittAktuelle Pipeline
**Einganskanäle** \- Alle Eingangskanäle prüfen die Dokumente auf ihre Validität in Bezug auf die EN16931-Spezifikationen.
**Initialisierungs-Schritt** \- Hochgeladene XML-Dateien werden in ein internes Standard-XML-Format (`intermediate.xml`) überführt. Eine PDF wird aus der `intermediate.xml` erzeugt. \- Je nach Kundenwunsch wird in diesem Schritt ein [KoSIT-Prüfbericht](https://docs.squeeze.one/link/500#bkmrk-pdf-pr%C3%BCfbericht-kosi "Einführung Digitale Formate: XML, XRechnung und ZUGFeRD in der Software Squeeze") erstellt.
**Barcode- Extraktions-Schritt** \- Viewer-Bilder auf Basis der PDF werden erstellt, gilt auch für ZUGFeRD und XRechnung
**OCR-Schritt** \- PDF-Dateien mit eingebetteten XML werden normal verarbeitet, um ein OCR-Ergebnis zu erstellen. \- Dieser Schritt wird für reine XML-Dateien übersprungen.
**Klassifizierungs-Schritt** \- Die Klassifizierung von XML-Dokumenten ist derzeit nicht möglich. Eine Fehler wird erzeugt, sobald das Dokument keine Dokumentenklasse nachweist
**Extraktions-Schritt** \- Übliche Extraktionsmechanismen werden ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: `SkipXmlExtraction`. \- `intermediate.xml` wird genutzt, um Kreditor und Mandant der XML zu ermitteln. Die eigentliche XML-Extraktion basiert auf der `intermediate.xml`.
### Extraktion von XMLs In der **XML-Pipeline** von Squeeze erfolgt die XML-Extraktion als letzter Schritt vor der Autovalidierung/Validierung und hat dabei eine besondere Rolle: Sie überschreibt extrahierte Feldwerte aus den KI-Extraktionen und den Lokatoren-Ergebnissen. Die Extraktion von XML-Daten basiert auf dem Mapping, welches im Administrationsbereich angepasst werden kann. Alternativen werden gemäß der Definition im Mapping verarbeitet. ### Rendering von XMLs Das **XML-Rendering** in Squeeze bezieht sich auf den Prozess der Erstellung von PDF-Dokumenten aus XML-Dateien. Dieser Prozess unterscheidet sich je nach Art des XML-Dokuments und umfasst spezifische Anforderungen für standardisierte und benutzerdefinierte XML-Formate. #### Rendering von Spezifischen XML-Dokumenten Für standardisierte XML-Formate wie XRechnung und ZUGFeRD, die der Norm EN16931 entsprechen, erfolgt das Rendering nach den folgenden Schritten: 1. **Erstellung des Zwischenformats**: Im InitStep wird aus der XML-Datei ein Zwischenformat erstellt, das als Basis für das PDF-Rendering dient. Dieses Zwischenformat wird aus der `intermediate.xml` generiert, die die für die PDF-Erstellung benötigten Daten enthält. 2. **PDF-Erzeugung**: Basierend auf dem Zwischenformat wird ein PDF-Dokument erstellt, das die strukturierten Daten aus der XML übersichtlich darstellt. Dies ermöglicht die Generierung von PDFs, die den Anforderungen der jeweiligen Spezifikation entsprechen und für den Austausch und die Archivierung verwendet werden können. #### Ausblick In einer zukünftigen Version von Squeeze ist geplant, auch für XML-Dokumente, die nicht den EN16931-Spezifikationen entsprechen, eine vollständige Verarbeitung zu ermöglichen. Diese Weiterentwicklung wird es erlauben, alle Arten von XML-Dokumenten einheitlich und umfassend zu behandeln, wodurch die Integration und Handhabung von benutzerdefinierten XML-Formaten weiter verbessert wird. # XRechnung und ZUGFeRD

XRechnung und ZUGFeRD sind digitale Rechnungsformate, welche in der Praxis als XML-Dateien oder PDFs mit eingebetteten XML-Daten verschickt werden.

#### Validierung von digitalen Rechnungen Nicht alle digitalen Rechnungen, die Sie erhalten erfüllen die öffentlichen Standards. In der Praxis kann es daher passieren, dass Lieferanten digitale Rechnungen senden, die nicht durch Squeeze verarbeitet werden, weil die Dateien nicht valide sind.

Eine digitale Rechnung ist valide, wenn sie diese zwei Kriterien erfüllt: - Die Datei (i. d. R. XML) ist korrekt formatiert. Sie enthält also gültiges XML - Die fachlichen Kriterien an eine EN-16931 + Extension XML sind erfüllt. Beispiel: Die Rechnung enthält eine gültige Kombination aus Netto-, Steuer- und Brutto-Beträgen.

In der Validierung (UI) weist ein Icon darauf hin, dass ein Dokument als XRechnung verarbeitet wurde. [![Bildschirmfoto 2023-08-25 um 08.24.52.png](https://docs.squeeze.one/uploads/images/gallery/2023-08/scaled-1680-/bildschirmfoto-2023-08-25-um-08-24-52.png)](https://docs.squeeze.one/uploads/images/gallery/2023-08/bildschirmfoto-2023-08-25-um-08-24-52.png) ##### Validatoren Hier ein Liste von Validatoren, mit denen Sie prüfen können, ob eine digitale Rechnung valide ist: - [https://erechnungsvalidator.service-bw.de/](https://erechnungsvalidator.service-bw.de/) - [https://validator.invoice-portal.de/](https://validator.invoice-portal.de/) - [https://ecosio.com/en/peppol-and-xml-document-validator/](https://ecosio.com/en/peppol-and-xml-document-validator/) - [https://peppol.munich-enterprise.com/xrechnung/](https://peppol.munich-enterprise.com/xrechnung/) - [https://www.zugferd-community.net/de/dashboard/validation](https://www.zugferd-community.net/de/dashboard/validation) (Speziell auch alle ZugFERD Varianten) #### Extraktion
Schritt [Aktuelle Pipeline](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xml-pipeline "XML-Pipeline")
**Extraktion** - Übliche Extraktionsmechanismen werden ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: `SkipXmlExtraction`. - `intermediate.xml` wird genutzt, um Kreditor und Mandant der XML zu ermitteln. - Die eigentliche XML-Extraktion basiert auf der `intermediate.xml`.
#### Konfiguration von XML-Auswertungen Ab der Version 2.13 und nach Freischaltung durch Dexpro oder einen der Partner, können Sie in die Extraktion von XML-Werten bei EN16931 konformen XML-Dokumenten eingreifen. - [Konfiguration von XML-Auswertungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-xml-auswertung "Konfiguration XML-Auswertung") Siehe auch [XRechnung und ZUGFeRD Auswertungstabellen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd-auswertungstabellen "XRechnung und ZUGFeRD Auswertungstabellen") #### PDF-Rendering Das PDF-Rendering für XRechnung und ZUGFeRD hat sich ebenfalls geändert: - **EN-16931 konforme XML-Dokumente**: Für standardisierte XML-Dokumente wie XRechnung und ZUGFeRD wird eine PDF aus dem Zwischenformat erstellt, das im InitStep generiert wurde. Dieses Zwischenformat basiert auf der `intermediate.xml` und wird genutzt, um alle relevanten Daten in einer übersichtlichen PDF-Darstellung zu präsentieren. In der zukünftigen Version von Squeeze wird die vollständige Unterstützung für die PDF-Erzeugung von nicht EN16931-konformen XML-Dokumenten implementiert. Dies wird die Flexibilität und Integration für benutzerdefinierte XML-Formate weiter verbessern. #### XML-Prüfbericht KoSIT Ab Version 2.15 von Squeeze bietet unsere Squeeze-Lösungen die Möglichkeit, automatisch Prüfberichte für verarbeitete ZUGFeRD und XRechnung-Daten zu erstellen. Diese Berichte entsprechen den KoSIT-Standards und gewährleisten die Datenqualität. Während bei XRechnungen eine strikte Fehlerprüfung erfolgt, um die Datenintegrität zu schützen, bietet das System für ZUGFeRD-Belege eine größere Flexibilität. Dies ermöglicht eine individuelle Anpassung der Verarbeitungsprozesse an die spezifischen Anforderungen der Kunden. Die [**Aktivierung der Funktionalität**](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xml-prufbericht-kosit "XML-Prüfbericht KoSIT") erfolgt durch unsere Partner oder unserer Berater. Den KoSIT Prüfbericht, können Sie sich in der Validierung des Dokumentes anzeigen lassen oder direkt über das Kontext-Menü in der Validierung herunterladen. [![image-1732540543961.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732540543961.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732540543961.png) Validierungsoberfläche # XML-Testdialog

Diese Funktion ist bisher nicht zur Verwendung freigegeben.

#### Test-Funktionalität zur Vorabvalidierung von XML-Inhalten Der folgende Testdialog ermöglicht Ihnen zu prüfen, ob SQUEEZE eine XRechnung verarbeiten kann oder nicht. Um diese Funktionalität zu verwenden müssen Sie die Administrations-Oberfläche von Squeeze öffnen. [![image-1674484546554.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674484546554.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484546554.png) Nachfolgend gelangen Sie in die Upload-Oberfläche der Funktionalität. Sie können nun über den Upload Button Ihre Belege in PDF oder XML Format hochladen und testen lassen. [![image-1674484760513.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674484760513.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484760513.png) Die Anwendung gibt Ihnen nun Rückmeldung über ein Dialog ob die Verarbeitung gewährleistet werden kann oder nicht z.B. : [![image-1674484918806.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674484918806.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484918806.png) Hier wiederum eine XML-Datei, die gültig ist. [![image-1674485033335.png](https://docs.squeeze.one/uploads/images/gallery/2023-01/scaled-1680-/image-1674485033335.png)](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674485033335.png) # XML-Mapping Das Mapping von XML-Daten in Squeeze ist ein zentraler Bestandteil der Verarbeitung von Dokumenten. Es ermöglicht die Zuordnung und Extraktion von Daten aus XML-Dokumenten, sei es aus standardisierten Formaten wie XRechnung und ZUGFeRD oder benutzerdefinierten XMLs. Diese Dokumentation erläutert die Struktur und Bedeutung der Mapping-Schema-Elemente und deren Einfluss auf die Verarbeitung. Mit folgenden API-Endpunkten, lassen sie die Mapping in Squeeze administrieren: #### API-Endpunkte - **GET** `/xml/xpath/documentclasses/{documentClassId}/mappings`: Abrufen aller XPath-Dokumenten-Mappings für eine bestimmte Dokumentenklasse. - **POST**` /xml/xpath/documentclasses/{documentClassId}/mappings`: Erstellen eines neuen XPath-Dokumenten-Mappings für eine bestimmte Dokumentenklasse. - **PUT** `/xml/xpath/documentclasses/{documentClassId}/mappings/{mappingId}`: Aktualisieren eines bestehenden XPath-Dokumenten-Mappings. - **DELETE** `/xml/xpath/mappings/{mappingId}`: Löschen eines XPath-Dokumenten-Mappings. #### Mapping-Schema ```JSON { "id": 0, "name": "string", "systemMapping": true, "documentClassId": 0, "classificationFields": [ { "id": 0, "mappingId": 0, "xpath": "string", "expectedValue": "string" } ], "namespaces": [ { "id": 0, "prefix": "string", "uri": "string" } ], "fields": [ { "id": 0, "fieldId": 0, "xpath": "string", "alternative": false } ], "tables": [ { "id": 0, "mappingId": 0, "tableId": 0, "tableRootXPath": "string", "columns": [ { "id": 0, "fieldId": 0, "xpath": "string", "alternative": false } ] } ] } ``` Das Mapping-Schema definiert die Struktur, die zur Verarbeitung und Klassifizierung von XML-Daten verwendet wird. Hier sind die wichtigsten Elemente und deren Einfluss: #### 1. Namespace-Deklarationen **Namespaces** sind eine essentielle Komponente in XML-Dokumenten, um Namenskonflikte zu vermeiden und die Struktur der Daten zu definieren. Die Namespace-Deklarationen im Mapping-Schema haben folgende Eigenschaften: - **ID**: Eindeutige Identifikation des Namespace. - **Prefix**: Der Präfix, der in den XML-Daten verwendet wird, um den Namespace zu referenzieren. - **URI**: Die URI, die den Namespace eindeutig definiert. **Einfluss**: Namespace-Deklarationen sorgen dafür, dass XML-Daten korrekt interpretiert und gemappt werden können. Squeeze verwendet die im Mapping gespeicherten Namespaces, um das entsprechende Mapping zu einer XML zu identifizieren. Ohne korrekte Namespace-Deklarationen könnten Daten falsch zugeordnet oder nicht erkannt werden. #### 2. Klassifizierungsfelder **ClassificationFields** sind Felder, die zur Identifizierung und Klassifizierung von Dokumenten verwendet werden. Diese Felder sind entscheidend, um die Dokumentenklasse korrekt zuzuordnen und das passende Mapping zu identifizieren. - **ID**: Eindeutige Identifikation des Klassifizierungsfeldes. - **MappingID**: Referenz zur Mapping-Konfiguration. - **XPath**: Der XPath-Ausdruck, der den Ort des Feldes im XML-Dokument angibt. - **ExpectedValue**: Der erwartete Wert, der zur Klassifizierung verwendet wird. **Einfluss**: Klassifizierungsfelder bestimmen nicht nur die Dokumentenklasse, sondern dienen auch als direkte Referenz von XML-Struktur und Daten zu einem Mapping. Squeeze wertet diese Informationen aus, um das passende Mapping zu identifizieren. Diese Felder ermöglichen es, spezifische Mappings präzise den entsprechenden XML-Daten zuzuordnen und somit eine korrekte Verarbeitung sicherzustellen. #### 3. Felder **Fields** repräsentieren die spezifischen Datenpunkte innerhalb der XML-Daten, die extrahiert werden sollen. - **ID**: Eindeutige Identifikation des Feldes. - **FieldID**: Identifikation des Feldes im System. - **XPath**: Der XPath-Ausdruck, der den Ort des Feldes im XML-Dokument angibt. - **Alternative**: Ein Flag, das angibt, ob das Feld als Alternative betrachtet wird. **Einfluss**: Die Definition der Felder bestimmt, welche Daten aus den XML-Dokumenten extrahiert werden. Felder, die als Alternative gekennzeichnet sind, werden nur verwendet, wenn der Hauptwert nicht gefunden wird. #### 4. Tabellen **Tables** sind Gruppen von Feldern, die in Tabellenform organisiert sind. Dies ermöglicht eine strukturierte Extraktion von tabellarischen Daten aus XML-Dokumenten. - **ID**: Eindeutige Identifikation der Tabelle. - **MappingID**: Referenz zur Mapping-Konfiguration. - **TableID**: Identifikation der Tabelle im System. - **TableRootXPath**: Der XPath-Ausdruck, der die Wurzel der Tabelle im XML-Dokument angibt.

Vermeiden Sie die Angabe von Indizes im `tableRootXPath`, es sei denn, Sie möchten explizit nur einen bestimmten Knoten abbilden.Beispiel: Verwenden Sie: `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem` anstelle von `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[1]`.

- **Columns**: Die Spalten innerhalb der Tabelle, die Datenpunkte definieren. **Einfluss**: Die Tabellenstruktur ermöglicht eine effiziente Extraktion von Daten, die in tabellarischer Form vorliegen. Dies ist besonders wichtig für die Verarbeitung von Rechnungsdaten, die häufig in Tabellen organisiert sind. #### System-Mapping vs. Benutzerdefinierte Mappings - **System-Mapping**: Für die Formate XRechnung und ZUGFeRD wird ein statisches System-Mapping verwendet. Dieses Mapping ist fest definiert und kann nicht bearbeitet oder gelöscht werden. Es stellt sicher, dass die Dokumentenverarbeitung konsistent und standardisiert erfolgt. - **Benutzerdefinierte Mappings**: Alle anderen Mappings sind benutzerdefiniert und können über die UI angelegt und angepasst werden. Benutzerdefinierte Mappings erlauben die Integration und Anpassung an spezifische XML-Datenstrukturen, die nicht den Standardformaten entsprechen. ### Zusammenfassung Das Mapping von XML-Daten in Squeeze spielt eine entscheidende Rolle bei der Datenextraktion und Dokumentenklassifizierung. Namespace-Deklarationen und Klassifizierungsfelder sind zentrale Elemente, die sicherstellen, dass XML-Daten korrekt interpretiert und verarbeitet werden. Während System-Mappings für Standardformate wie XRechnung und ZUGFeRD fest definiert sind, bieten benutzerdefinierte Mappings die Flexibilität, individuelle XML-Datenstrukturen zu integrieren und zu verarbeiten.

Während die API volle Flexibilität beim Mapping bietet, wird unser kommender UI-Mapper den Prozess durch eine intuitive visuelle Oberfläche deutlich vereinfachen und beschleunigen.

# Benutzerdefinierte XML-Verarbeitung Während Squeeze bereits integrierte Mappings für Standardformate wie XRechnung und ZUGFeRD bietet, ermöglicht die API die Erstellung benutzerdefinierter Mappings für beliebige XML-Strukturen. Dies ist besonders nützlich, wenn Sie Dokumente verarbeiten müssen, die nicht den gängigen Standards entsprechen. #### Prozess zur Erstellung eines Mappings für benutzerdefinierte XML-Strukturen
1. **Dokumentenklasse identifizieren oder erstellen:** - Jede XML-Struktur, die Sie verarbeiten möchten, benötigt eine zugehörige Dokumentenklasse. - Überprüfen Sie, ob bereits eine passende Dokumentenklasse existiert. Falls nicht, erstellen Sie eine neue. 2. **Mapping-Schema definieren:** - Analysieren Sie die Struktur Ihres XML-Dokuments. - Definieren Sie die Namespaces, Klassifizierungsfelder, Felder und Tabellen gemäß dem Mapping-Schema (siehe vorheriger Abschnitt). - Achten Sie darauf, dass die XPath-Ausdrücke korrekt sind und auf die relevanten Datenpunkte in Ihrem XML verweisen. **Besonderheit bei Tabellen (tableRootXPath):** - Vermeiden Sie die Angabe von Indizes im `tableRootXPath`, es sei denn, Sie möchten explizit nur einen bestimmten Knoten abbilden. - Beispiel: Verwenden Sie `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem` anstelle von `/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[1]`. 3. **Mapping über die API erstellen:** - Verwenden Sie den API-Endpunkt `POST {squeeze.base.url}/xml/xpath/documentclasses/{documentClassId}/mappings`. - Ersetzen Sie `{squeeze.base.url}` durch die Basis-URL Ihrer Squeeze-Instanz und `{documentClassId}` durch die ID der entsprechenden Dokumentenklasse. - Übergeben Sie das Mapping-Schema im Body der Anfrage als JSON-Objekt.
#### Beispielanfrage (POST)
HTTP
``` POST {squeeze.base.url}/xml/xpath/documentclasses/123/mappings

Content-Type: application/json

{

"name":"Mein benutzerdefiniertes Mapping",

"systemMapping":false,

"documentClassId":123,

"classificationFields":[

"..."

],

"namespaces":[

"..."

],

"fields":[

"..."

],

"tables":[

"..."

]

}
```

Details zur Struktur der Request-Payload finden Sie in der Swagger-UI der Squeeze API unter: `https://{squeeze.base.url}/api/v2/dist`

#### #### Verwaltung von Mappings über die API Zusätzlich zur Erstellung können Sie Mappings auch über die folgenden Endpunkte verwalten:
- **GET** `{squeeze.base.url}/xml/xpath/documentclasses/{documentClassId}/mappings`: Abrufen aller Mappings für eine bestimmte Dokumentenklasse. - **PUT** `{squeeze.base.url}/xml/xpath/documentclasses/{documentClassId}/mappings/{mappingId}`: Aktualisieren eines bestehenden Mappings. - **DELETE** `{squeeze.base.url}/xml/xpath/mappings/{mappingId}`: Löschen eines Mappings.
#### Umwandlung von XML in JSON Squeeze bietet einen API-Endpunkt, um XML-Dokumente in eine strukturierte JSON-Darstellung zu konvertieren. Dies kann hilfreich sein, um die Struktur des Dokuments besser zu verstehen und die XPath-Ausdrücke für Ihr Mapping zu erstellen.
- **POST** `{squeeze.base.url}/xml/xpath`: Wandelt ein XML-Dokument in JSON um. Übergeben Sie das XML-Dokument im Body der Anfrage.
#### Beispielantwort (JSON)
```json {

"rsm:CrossIndustryInvoice"
: { "value": "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended 1715515 SAMMELRECHNUNG 380 20240708 1...", "xpath": "/rsm:CrossIndustryInvoice[1]", "attributes": [], "rsm:ExchangedDocumentContext": { "value": "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended", "xpath": "/rsm:CrossIndustryInvoice[1]/rsm:ExchangedDocumentContext[1]", "attributes": [], "ram:GuidelineSpecifiedDocumentContextParameter": { "value": "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended", "xpath": "/rsm:CrossIndustryInvoice[1]/rsm:ExchangedDocumentContext[1]/ram:GuidelineSpecifiedDocumentContextParameter[1]", "attributes": [], "ram:ID": { "value": "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended", "xpath": "/rsm:CrossIndustryInvoice[1]/rsm:ExchangedDocumentContext[1]/ram:GuidelineSpecifiedDocumentContextParameter[1]/ram:ID[1]", "attributes": [] } } },...

} `````` ```
#### Wichtige Hinweise

**XPath-Kenntnisse:** Um effektive Mappings zu erstellen, benötigen Sie ein gutes Verständnis von XPath-Ausdrücken.

**Testen:** Testen Sie Ihre Mappings gründlich mit verschiedenen XML-Dokumenten, um sicherzustellen, dass die Daten korrekt extrahiert werden.

**Dokumentation:** Die API-Dokumentation von Squeeze bietet weitere Details zu den Endpunkten und Parametern.

#### Ausblick Sobald die Benutzeroberfläche für die Mapping-Erstellung verfügbar ist, wird diese Dokumentation entsprechend aktualisiert. Die API-Endpunkte bleiben jedoch weiterhin eine leistungsstarke Option für die Automatisierung und Integration von Mapping-Prozessen. #### Siehe auch - [XML-Mapping](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xml-mapping "XML-Mapping") # Identifizierung von XML-Dokumenten in Squeeze

Verfügbarkeit ab Version 2.12.0

Squeeze bietet eine intelligente Methode zur Identifizierung von XML-Dokumenten, um sicherzustellen, dass das richtige Mapping für die weitere Verarbeitung verwendet wird. Dieser Prozess stützt sich auf die Analyse von Namespaces und Klassifizierungsfeldern innerhalb des XML-Dokuments. #### API-Endpunkt zur Identifizierung Der Endpunkt `/xml/xpath/mappings/identify` dient zur Identifizierung des passenden Mappings für ein gegebenes XML-Dokument.
- **POST** `/xml/xpath/mappings/identify`: Identifiziert das passende Mapping für ein XML-Dokument basierend auf Namespaces und Klassifizierungsfeldern. Akzeptiert XML-Dateien oder PDFs mit eingebettetem XML.
#### Anfrage (POST) Der Endpunkt erwartet eine `multipart/form-data` Anfrage mit folgendem Parameter:
- `document` (string(binary)): Datei, die das XML enthält. Kann eine PDF-Datei mit eingebettetem XML oder eine reine XML-Datei sein.
#### Antwort (200 OK) Bei erfolgreicher Identifizierung gibt der Endpunkt eine JSON-Antwort im folgenden Format zurück: ```JSON { "matchedNamespaces": 0, // Anzahl der übereinstimmenden Namespaces "matchedClassifications": 0, // Anzahl der übereinstimmenden Klassifizierungen "namespaceScore": 0, // Score für die Übereinstimmung der Namespaces "classificationScore": 0, // Score für die Übereinstimmung der Klassifizierungsfelder "identificationScore": 0, // Gesamtscore der Identifizierung "mapping": { // Das identifizierte Mapping-Schema "id": 0, "name": "string", "systemMapping": true, "documentClassId": 0, "classificationFields": [ { "id": 0, "mappingId": 0, "xpath": "string", "expectedValue": "string" } ], "namespaces": [ { "id": 0, "prefix": "string", "uri": "string" } ], "fields": [ { "id": 0, "fieldId": 0, "xpath": "string", "alternative": false } ], "tables": [ { "id": 0, "mappingId": 0, "tableId": 0, "tableRootXPath": "string", "columns": [ { "id": 0, "fieldId": 0, "xpath": "string", "alternative": false } ] } ] } } ```
````
#### Fehlerantworten
- **400 Bad Request:** Ungültige Eingabe (z. B. keine Datei hochgeladen oder ungültiges Dateiformat). - **404 Not Found:** Kein passendes Mapping gefunden.
#### Funktionsweise der Identifizierung
1. **Namespace-Abgleich:** Squeeze analysiert die Namespaces im XML-Dokument und vergleicht sie mit den Namespaces in den verfügbaren Mappings. 2. **Klassifizierungsfeld-Abgleich:** Squeeze prüft die Werte der Klassifizierungsfelder im XML-Dokument und vergleicht sie mit den erwarteten Werten in den Mappings. 3. **Scoring:** Basierend auf den Übereinstimmungen in Namespaces und Klassifizierungsfeldern berechnet Squeeze einen Score, der angibt, wie sicher das Mapping identifiziert wurde. 4. **Auswahl des Mappings:** Das Mapping mit dem höchsten Score wird ausgewählt und für die weitere Verarbeitung verwendet.
#### Ausblick: Konfigurierbare Gewichtung (Zukünftige Version) In zukünftigen Versionen von Squeeze ist geplant, die Gewichtung von Namespaces und Klassifizierungsfeldern bei der Identifizierung konfigurierbar zu machen. Dies ermöglicht eine noch präzisere Anpassung an spezifische Anforderungen. #### Wichtige Hinweise
- **Eindeutige Identifizierung:** Stellen Sie sicher, dass Ihre XML-Dokumente eindeutige Namespaces und Klassifizierungsfelder enthalten, um eine korrekte Identifizierung zu gewährleisten. - **Optimierung:** Wenn die automatische Identifizierung nicht funktioniert, können Sie die Mappings anpassen oder neue Mappings erstellen, um die Genauigkeit zu verbessern.
Durch die Nutzung dieses Endpunkts können Sie sicherstellen, dass Ihre XML-Dokumente korrekt klassifiziert und mit dem passenden Mapping verarbeitet werden, selbst wenn sie nicht den Standardformaten entsprechen. # Auswertungstabellen XRechnung und ZUGFeRD Standardmäßig werden bereits viele Felder automatisch erkannt und extrahiert. Eine Übersicht der standardmäßig unterstützten Felder finden Sie in den folgenden Tabellen: **Kopfdaten:**
**Dokumentenklassen-Feld****Xpath**
VatId`/xr:invoice[1]/xr:SELLER[1]/xr:Seller_VAT_identifier[1]`
DocumentReference`/xr:invoice[1]/xr:Invoice_number[1]`
DocumentDate`/xr:invoice[1]/xr:Invoice_issue_date[1]`
IBAN`/xr:invoice[1]/xr:PAYMENT_INSTRUCTIONS[1]/xr:CREDIT_TRANSFER[1]/xr:Payment_account_identifier[1]`
CreditorName`/xr:invoice[1]/xr:SELLER[1]/xr:Seller_name[1]`
CreditorCountry`/xr:invoice[1]/xr:SELLER[1]/xr:SELLER_POSTAL_ADDRESS[1]/xr:Seller_country_code[1]`
ServiceDate`/xr:invoice[1]/xr:DELIVERY_INFORMATION[1]/xr:Actual_delivery_date[1]`
TotalAmount`/xr:invoice[1]/xr:DOCUMENT_TOTALS[1]/xr:Invoice_total_amount_with_VAT[1]`
Currency`/xr:invoice[1]/xr:Invoice_currency_code[1]`
OrderNumber`/xr:invoice[1]/xr:Purchase_order_reference[1]`
NetAmount`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_taxable_amount[1]`
TaxAmount`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_tax_amount[1]`
TaxRate`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_rate[1]`
NetAmount2`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_taxable_amount[1]`
TaxAmount2`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_tax_amount[1]`
TaxRate2`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_rate[1]`
NetAmount3`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_taxable_amount[1]`
TaxAmount3`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_tax_amount[1]`
TaxRate3`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_rate[1]`
DueDate`/xr:invoice[1]/xr:Payment_due_date[1]`
CreditorName`/xr:invoice[1]/xr:SELLER[1]/xr:Seller_trading_name[1]`
CreditorName`/xr:invoice[1]/xr:SELLER[1]/xr:SELLER_CONTACT[1]/xr:Seller_contact_point[1]`
TotalAmount`/xr:invoice[1]/xr:DOCUMENT_TOTALS[1]/xr:Amount_due_for_payment[1]`
IBAN`/xr:invoice[1]/xr:PAYMENT_INSTRUCTIONS[1]/xr:DIRECT_DEBIT[1]/xr:Debited_account_identifier[1]`
TaxRate3`/xr:invoice[1]/xr:VAT_BREAKDOWN[3]/xr:VAT_category_tax_rate[1]`
TaxRate2`/xr:invoice[1]/xr:VAT_BREAKDOWN[2]/xr:VAT_category_tax_rate[1]`
TaxRate`/xr:invoice[1]/xr:VAT_BREAKDOWN[1]/xr:VAT_category_tax_rate[1]`
**Positionen:**
**Spalte****Xpath**
PosQuantity`xr:Invoiced_quantity[1]/text()`
PosDescription`xr:ITEM_INFORMATION[1]/xr:Item_name[1]/text()`
PosSinglePrice`xr:PRICE_DETAILS[1]/xr:Item_net_price[1]/text()`
PosTotalAmount`xr:Invoice_line_net_amount[1]/text()`
PosTaxRate`xr:LINE_VAT_INFORMATION[1]/xr:Invoiced_item_VAT_rate[1]/text()`

Um ein erfolgreiches Mapping von Spalten zu gewährleisten muss die Tabelle in der die Spalten angelegt werden den technischen Namen "LineItems" besitzen.

Doppelte Felder werden als Alternativen dem Feldwert angehängt

Sollte der Standard nicht ausreichen, so lesen sie [**hier**](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/konfiguration-xml-auswertung "Konfiguration XML-Auswertung") wie sie die Auswertung erweitern können

# Konfiguration XML-Auswertung

Ab Version 2.13 verfügbar und nach Freischaltung durch Partner oder Dexpro !

Standardmäßig liefert Squeeze eine Vielzahl von vordefinierten Mappings zur Extraktion von Kopfdaten aus Rechnungen. Um die bestmögliche Datenerfassung zu gewährleisten, können Sie diese Mappings individuell anpassen und erweitern. Diese Seite bietet eine Anleitung zur Konfiguration von Kopfdaten/Positionsdaten-Mappings im XML-Format. In der Administration finden Sie einen neuen Unterpunkt (**ZUGFeRD und XRechnung**): [![image-1729690323813.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729690323813.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729690323813.png) - - - - - - 2\. Sobald Sie den Menüpunkt gewählt haben, kommen Sie in eine tabellarische Übersicht. Auf dieser sollten Sie bereits einige Einträge sehen, die sie nicht bearbeiten können, denn dabei handelt es sich um die Standard-Auswertungen; beschrieben in: [XRechnung und ZUGFeRD Auswertungstabellen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/xrechnung-und-zugferd-auswertungstabellen "XRechnung und ZUGFeRD Auswertungstabellen"): [![image-1729692901242.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729692901242.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729692901242.png) - - - - - - **Priorisierung der Mappings** Die Reihenfolge der Mappings spielt eine wichtige Rolle bei der Auswertung der Kopffelder. Squeeze verwendet ein hierarchisches System, um zu bestimmen, welches Mapping für ein bestimmtes Feld verwendet werden soll. **Hierarchie:** 1. **Spezifische Mappings:** Mappings, die für einen bestimmten Mandanten, Kreditor und eine Dokumentenklasse definiert sind, haben die höchste Priorität. 2. **Mandanten- und Kreditor-spezifische Mappings:** Sind keine spezifischen Mappings vorhanden, werden Mappings verwendet, die für einen Mandanten und Kreditor definiert sind, unabhängig von der Dokumentenklasse. 3. **Allgemeine Mappings:** Danach folgen Mappings, die nur für die Dokumentenklasse definiert sind, unabhängig von Mandant und Kreditor. 4. **Standard Mappings:** Mappings, die für alle Mandanten, Kreditoren und Dokumentenklassen gelten (Auslieferungszustand), haben die niedrigste Priorität. Siehe:
**Prio** **Mandant** **Kreditor** **Dokumentenklasse** **System-Konfiguration**
1 definiert definiert definiert false vor true
2 definiert definiert \* false vor true
3 \* definiert definiert false vor true
4 \* definiert \* false vor true
5 definiert \* definiert false vor true
6 \* \* definiert false vor true
7 definiert \* \* false vor true
8 \* \* \* false vor true
- - - - - - **Anlage neuer Mappings für Kopffelder** Im Tab **Kopffelder** können Sie neue Mappings anlegen. Dabei wählen Sie die Filterkriterien wie gewünscht. Beachten Sie dabei, solange keine Dokumentenklasse gewählt wurde, werden ihnen unter **Feldname** alle Felder aller verfügbaren Dokumentenklassen aufgelistet. [![image-1729696517595.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729696517595.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729696517595.png) - - - - - - **Anlage neuer Mappings für Positionsfelder** Im Tab **Positionen** können Sie neue Mappings anlegen, dabei wählen Sie die Filterkriterien wie gewünscht. Beachten Sie dabei, solange keine Dokumentenklasse gewählt wurde werden ihnen unter **Spaltenname** alle Spalten der verfügbaren ("LineItems-Tabellen") Dokumentenklassen angezeigt. **Wichtig:** Es werden nur Spalten aus Dokumentenklassen angezeigt, deren technischer Tabellenname "LineItems" ist. [![image-1729696997227.png](https://docs.squeeze.one/uploads/images/gallery/2024-10/scaled-1680-/image-1729696997227.png)](https://docs.squeeze.one/uploads/images/gallery/2024-10/image-1729696997227.png)

Bei der der Ermittlung der Spalten werden die konfigurierten Xpath-Ausdrücke mit folgendem Tabellenknotenpunkt ausgewertet: `/xr:invoice/xr:INVOICE_LINE`. Das hat zur folge, dass sie nur Kindelemente des Tabellenknotenpunktes `/xr:invoice/xr:INVOICE_LINE` zur Auswertung der Spalten verwenden dürfen. **Beispiel**: Tabellenknotenpunkt-Xpath: `/xr:invoice/xr:INVOICE_LINE` Spalten-Xpath-Ausdruck: `xr:PRICE_DETAILS[1]/xr:Item_net_price[1]/text()` Daher achten Sie darauf bei den Spalten-Xpath-Audrücken **kein** "`/`" am Anfang zu setzen.

- - - - - - **XML-Konformitäts-Prüfung** Seit Version 2.15 bietet die Konfigurationsoberfläche eine integrierte Funktion zur Überprüfung von ZUGFeRD/XRechnung-Dokumenten. Hiermit kann die Konformität des XML-Dokuments mit den spezifischen Anforderungen der gewählten XRechnung-Version bewertet werden. [![image-1732541947877.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732541947877.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732541947877.png) Sobald sie ein Dokument hochgeladen haben, erhalten Sie in einem das Ergebnis der Prüfung. [![image-1732542259242.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732542259242.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732542259242.png)

Sollte das Ergebnis, negativ ausfallen, wird das Dokument dennoch von Squeeze verarbeitet.

Eine PDF-Prüfbericht steht Ihnen ab Version 2.15 und nach Freischaltung unserer Berater oder Partner in der Validierung zur Verfügung, siehe [hier](https://docs.squeeze.one/link/500#bkmrk-pdf-pr%C3%BCfbericht-kosi).

- - - - - - **Allgemeine Infos**

Kontrollieren Sie ihren eingegeben XPath auf einer geeigneten Seite wie zum Beispiel: [http://xpather.com/](http://xpather.com/)

Die Auswertung der Xpaths erfolgt auf dem intermediate.xml . Die XML-Datei kann durch ein Download der Anhänge aus der technischen Warteschlange gewonnen werden.

# XML Formate in Squeeze Dieser Artikel beschreibt die allgemeine Verarbeitung von E-Rechnungen im XML-Format und welche EN16931-konformen XML-Dokumente Squeeze verarbeiten kann. Die folgende Tabelle listet die aktuellsten Versionen der Formate auf, die Squeeze prüft, wenn ein XML-Dokument als eingebettete XML in einem PDF (z. B. ZUGFeRD) oder als einzelnes Dokument (z. B. XRechnung) vorliegt.
**Standard****Version**
Factur-X1.0 bis 1.0.07
ZUGFeRD1.0 bis 2.3
XRechnung1.0 bis 3.0.2

In Zukunft wird Squeeze unabhängig von Formaten, XML-Dokumente verarbeiten können

# XML-Prüfbericht KoSIT Diese Seite bietet eine umfassende Anleitung zur Konfiguration und Durchführung von KoSIT-Prüfberichten für XML-Daten.

Die Erstellung des XML-Prüfberichtes erfordert Internetzugriff und ist in abgekapselten Intranet-Strukturen vorerst nicht einsetzbar.

#### Konfiguration des externen Dienstes Damit die Erzeugung des Prüfberichtes erfolgen kann muss ein neuer Dienst in der Server-/ Mandanten-Konfiguration konfiguriert werden. Der Dienst ist aktuellen Zeitpunkt(23.11.24) noch auf keinen festen Host bestimmt, daher erfragen Sie den aktuellen Host bei unseren Beratern ```JSON { ..., "digivoice": { "baseUrl": "https://{digivoice.example.host}/apis/digivoice/v1" }, ..., } ``` Nachdem der Dienst in einer der Konfigurationsdateien konfiguriert ist, können Sie in Squeeze die [Stapelklasseneigenschaft XmlValidationReport](https://docs.squeeze.one/link/414#bkmrk-xmlvalidatioinreport) (ab Squeeze v2.15.0) aktivieren. - - - - - - ##### KoSIT-Prüfbericht Wird die Stapelklasseneigenschaft genutzt, so erstellt Squeeze den KoSIT-Prüfbericht zu Beginn des Verarbeitungsprozesses. Sollte es während der Belegerstellung zu Fehlern kommen, beeinflusst dies die restliche Verarbeitung des Beleges in der Regel nicht. Dadurch wird sichergestellt, dass auch bei Problemen eine umfassende Verarbeitung des Dokumentes zur Verfügung steht. Den KoSIT Prüfbericht, können Sie sich in der Validierung des Dokumentes anzeigen lassen. [![image-1732540543961.png](https://docs.squeeze.one/uploads/images/gallery/2024-11/scaled-1680-/image-1732540543961.png)](https://docs.squeeze.one/uploads/images/gallery/2024-11/image-1732540543961.png) Validierungsoberfläche # Mandanten- und Lieferanten- Erkennung ##### **Einleitung** Sowohl bei elektronischen Rechnungen im [XRechnung- oder ZUGFeRD-Format](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/chapter/digitale-formate-xml-xrechnung-zugferd "Digitale Formate (XML, XRechnung, ZUGFeRD)") als auch bei der Verarbeitung beliebiger XML-Dokumente (generische XML-Verarbeitung) wird die Extraktion von Lieferanten- (Kreditoren) und Mandanten-Schlüsseln nach demselben grundlegenden Prinzip durchgeführt. Ziel ist es, die in den elektronischen Rechnungen enthaltenen Informationen zu Geschäftspartnern effizient und zuverlässig in unser internes System zu überführen, um eine weitere Verarbeitung zu ermöglichen. **Prozessbeschreibung**
1. **Identifikation relevanter Daten:** In den eingehenden XML-Dokumenten werden die für Geschäftspartner relevanten Daten (z.B. Name, Adresse, Steuernummer) identifiziert. 2. **Zuordnung zu einem Feldkatalog:** Die identifizierten Daten werden anhand eines [vordefinierten Feldkatalogs](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/auswertungstabellen-xrechnung-und-zugferd "Auswertungstabellen XRechnung und ZUGFeRD") den entsprechenden Feldern in unserem internen System zugeordnet. 3. **Mapping auf interne Schlüssel:** Die zugeordneten Daten werden anschließend unseren internen Schlüsseln für Geschäftspartner zugewiesen.
##### **Detaillierte Betrachtung der Zuordnung für Mandanten und Kreditoren** **Mandanten**
- **Suche in der companysearch:** Zunächst wird der in der XML angegebene Mandantenname in unserer internen Firmensuche (companysearch) abgeglichen. Falls ein Treffer gefunden wird, wird der zugehörige interne Schlüssel verwendet. - **Suche nach der VAT-ID:** Wenn keine Übereinstimmung in der Firmensuche gefunden wird, wird die in der XML angegebene Umsatzsteuer-Identifikationsnummer (VAT-ID) in unserer Tabelle "Companies" gesucht. Falls hier ein Eintrag existiert, wird der entsprechende interne Schlüssel verwendet. - **Kein Treffer:** Wenn keine der beiden Bedingungen erfüllt ist, bleibt der Eintrag für den Mandanten leer.
**Kreditoren**
- **Suche in der creditorsearch:** Analog zur Mandantenidentifikation wird zunächst der in der XML angegebene Kreditorenname in unserer internen Kreditoren-Suche (creditorsearch) abgeglichen. Falls ein Treffer gefunden wird, wird der zugehörige interne Schlüssel verwendet. - **Suche nach der VAT-ID des Kreditors:** Wenn keine Übereinstimmung in der Kreditoren-Suche gefunden wird, wird die in der XML angegebene Umsatzsteuer-Identifikationsnummer (VAT-ID) des Kreditors in unserer Tabelle "Creditors" gesucht. Falls hier ein Eintrag existiert, wird der entsprechende interne Schlüssel verwendet. - **Kein Treffer:** Wenn keine der beiden Bedingungen erfüllt ist, bleibt der Eintrag für den Kreditoren leer.
##### **Zusammenfassung der Mechanismen**
**Geschäftspartner****Bedingung****Aktion**
Mandant/KreditorName gefunden in entsprechender SucheInterner Schlüssel aus der Suche verwenden
Mandant/KreditorName nicht gefunden, VAT-ID gefundenInterner Schlüssel aus der entsprechenden Tabelle verwenden
Mandant/KreditorKeine ÜbereinstimmungEintrag bleibt leer
```` # Mehrsprachigkeit Dieses Kapitel behandelt Mehrsprachigkeit und die Möglichkeiten zur Übersetzung der Anwendung. # Übersicht aller sprachbezogenen Systeme In Squeeze gibt es unterschiedliche Anwendungsbereiche, die unterschiedlich übersetzt werden (können). Diese Seite bietet eine Übersicht über diese Bereiche. Ganz unten finden Sie ein Beispiel, dass alle Systeme in einem Bild zusammenfasst.

Der Support für Mehrsprachigkeit wird ab Squeeze 2.3 phasenweise umgesetzt. Wir bitten zu berücksichtigen, dass Mehrsprachigkeit (besonders im Kontext von Extraktionssoftware) ein vielschichtiges Thema ist.

### Unterschiedliche Systeme #### Übersetzung der Benutzeroberfläche Die Benutzeroberfläche kann nicht durch Administratoren übersetzt werden. Die Übersetzung der Benutzeroberfläche ist Teil des Standard-Produktes und wird somit durch Produktupdates ausgeliefert. Falls Sie die Benutzeroberfläche in einer bisher nicht vorhandenen oder übersetzen Sprache nutzen möchten, kontaktieren Sie bitte den Support. #### Übersetzung von Inhalten

Die Übersetzung von Inhalten ist frühestens ab Squeeze 2.3 möglich.

Neben der einfachen Übersetzung der Benutzeroberfläche ist es auch möglich Inhalte wie Dokumentenklassen, Felder usw. zu übersetzen. Damit soll die Anwendung für Validierer und Endanwender in diversen Sprachen einsetzbar sein. #### Übersetzung von Feldwerten

**Aktuell gibt es noch kein System zur Übersetzung von Feldinhalten.** Die Anforderung ist bekannt und wird vorerst (seitens DEXPRO) nur in kostenpflichtigen Projektlösungen umgesetzt. Bei der Übersetzung von Feldwerten geht es bspw. darum, dass Validierern im Invoice-Feld "Vorgang" der enthaltene Wert in die Sprache des Validierers übersetzt angezeigt wird, im Hintergrund allerdings der gleiche technische Wert genutzt wird.

### Übersetzte Bereiche Im Folgenden werden alle Bereiche aufgezeigt, die aktuell übersetzt dargestellt werden können. #### Validierung Im folgenden Bild sehen Sie alle unterschiedlichen Übersetzungsmechanismen: - (1) und (2) sind Standardelemente der Benutzeroberfläche - (3) Feldnamen (Beispiel "Mandant") und Feldgruppen ("Kopfdaten") sind inhaltsbezogene Übersetzungen. Auch die Überschriften der Tabellenspalten unten im Bild gehören dazu. - (4) Feldwerte (Beispiel "Rechnung" im Feld "Vorgang") gehören zur jeweiligen Lösung. [![image-1668790373662.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1668790373662.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1668790373662.png) #### Trefferliste der Dokumentensuche [![image-1669893706730.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1669893706730.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1669893706730.png) #### Dashboard [![image-1669893743050.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1669893743050.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1669893743050.png) # Sprachen In der Administration unter dem Menüpunkt "Sprachen" können Sie die Sprachen eines Mandanten verwalten.

Aktuell ist es nur möglich vordefinierte Sprachen zu aktivieren oder deaktivieren.

[![image-1668789711739.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1668789711739.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1668789711739.png) Sprachen, die Sie in der Administration aktivieren, sind für alle User auswählbar. [![image-1668789834093.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1668789834093.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1668789834093.png) # Pflege von Übersetzungen Diese Seite dokumentiert wie Sie Übersetzungen pflegen können. #### Massen-Übersetzung mittels CSV-Export & -Import ##### Einleitung In der Benutzeroberfläche haben Sie die Möglichkeit alle vorhandenen und fehlenden Übersetzungen als CSV-Datei zu exportieren. Diese Datei können Sie für eine komfortablere Übersetzung nutzen und später wieder importieren.

Der CSV-Upload ersetzt alle vorhandenen Übersetzungen im System. Daher empfehlen wir Ihnen beim Bearbeiten der Übersetzungen immer ein Backup der originalen Übersetzungen als Kopie zu behalten.

Für den Import von Übersetzungen werden CSV-Dateien nur in dem Format unterstützt, wie sie durch die Export-Funktion exportiert werden. Ein Beispiel finden Sie weiter unten.

Im Menü "System" der Administration finden sie im Register "Übersetzungen via CSV Export & Import" die Möglichkeiten zum Herunterladen und Hochladen der Übersetzungsdateien. [![image-1669200787840.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1669200787840.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1669200787840.png) ##### CSV-Beispiel Die exportierte CSV beinhaltet eine Zeile pro Übersetzung. Jede Zeile hat mindestens eine Spalte für den Übersetzungsschlüssel (translationkey) und eine Spalte pro Sprache. Zum Übersetzen füllen Sie die leeren Zellen mit den Übersetzungen der jeweiligen Sprache. Dabei sind die Übersetzungsschlüssel so zu lesen:

**documentclasses.Invoices.fields.Creditor.description** übersetzt aus der Dokumentenklasse **Invoices** für das Feld **Creditor** die Eigenschaft **description** (das ist die Beschreibung des Feldes)

[![image-1669204600265.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1669204600265.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1669204600265.png) CSV Dateien können nur importiert werden, wenn sie das selbe Format haben wie die exportierte CSV-Datei. Aktuell ist das: - Semikolon als Trennzeichen - Werte werden mittels Anführungszeichen escaped [![image-1669204589944.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1669204589944.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1669204589944.png) ##### Leitfaden: CSV mit Excel übersetzen Der folgende Leitfaden dokumentiert, wie Sie mittels Excel die Übersetzungsdatei (CSV) bearbeiten können.

Erfahrungsgemäß ist der Umgang von Excel mit CSV-Dateien häufig fehlerhaft. Üblich ist bspw. dass eine CSV-Datei im Dateiexplorer mit einem Linksklick direkt in Excel geöffnet wird und dann die Spalten nicht korrekt aufgeteilt werden oder Umlaute und Sonderzeichen falsch dargestellt werden. In diesen Fällen öffnet Excel die CSV-Datei mit falschen Parametern. Der folgende Leitfaden ist unser empfohlener Weg Übersetzungen mit Excel zu bearbeiten und wir bitten darum diesen zu wählen.

- Übersetzungen über die Web UI als CSV-Datei exportieren - Excel öffnen - Im Register "Daten" die Option "Aus Text/CSV" wählen. - Die heruntergeladene Datei auswählen [![image-1670318213526.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670318213526.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318213526.png) - In dem aufkommenden Dialog die dargestellten Einstellungen wählen - Das Encoding ist UTF-8 - Trennzeichen Semikolon - Dann die Datei nicht laden, sondern auf "Daten transformieren" klicken. [![image-1670318259869.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670318259869.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318259869.png) - In diesem Fenster die Aktion "Erste Zeile als Überschrift verwenden" auswählen [![image-1670318292120.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670318292120.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318292120.png) - (1) Nun sollten die Überschriften wie im Screenshot gezeigt werden - (2) "Schließen und laden" ausführen [![image-1670318325730.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670318325730.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318325730.png) - So sieht nun die geöffnete Datei in Excel aus - Jetzt können Sie Übersetzungen in der Datei verändern bzw. ergänzen [![image-1670318379338.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670318379338.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318379338.png) - Wenn Sie fertig sind, dann Speichern sie die Datei mittels "Speichern unter" als neue Datei ab - Wichtig ist hier die Auswahl des Dateityps "CSV (Trennzeichen-getrennt)" [![image-1670318504256.png](https://docs.squeeze.one/uploads/images/gallery/2022-12/scaled-1680-/image-1670318504256.png)](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318504256.png) - Zuletzt laden Sie die Übersetzungen in der UI wieder hoch. #### Übersetzung von Inhalten

Aktuell gibt es noch keine Möglichkeit für die direkte Übersetzung von Inhalten (also Feldern, Tabellen, Dokumentenklassen usw.) in der jeweiligen Konfigurationsoberfläche.

# Mandanten-Verwaltung Administrative Tätigkeiten bezogen auf die Verwaltung eines oder mehrerer Mandanten. # Server- und Mandantenkonfiguration Server- und Mandantenkonfigurationen enthalten Konfigurationen bzgl. zu verwendender Datenbanken, dem Dokumenten-Repository, Logging-Mechanismen usw. Diese Seite beschreibt die grundsätzliche Funktion der Server- und Mandantenkonfigurationen. #### Konfiguration Die Konfigurationen für Server und Mandanten liegen bei aktuellen Installationen im Repository. Bei einer typischen Windows-Installation wäre das bspw. `D:\SQUEEZE\repository\config` unter Linux `/var/www/html/repository/config` In dem Ordner finden Sie folgendes Layout: [![image-1668795030967.png](https://docs.squeeze.one/uploads/images/gallery/2022-11/scaled-1680-/image-1668795030967.png)](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1668795030967.png) - Die `server.json` enthält die Server-Konfiguration - Im Ordner `clients` befindet sich für jeden Mandanten eine weitere JSON-Datei. Diese ist benannt nach dem Mandanten also bspw. `meinmandant.squeeze.one.json`

Bei sehr alten Installationen befinden sich die Konfigurationen nicht im Repository, sondern noch innerhalb des Ordners `htdocs/config`

#### Zusammenspiel Server- und Mandantenkonfiguration Die Konfiguration eines Mandanten leitet sich sowohl aus Server- als auch Mandantenkonfiguration ab. Im Allgemeinen gilt für jeden Konfigurationsparameter: - Falls ein Parameter für einen Mandanten definiert wurde, wird dieser für den Mandanten eingesetzt. - Falls ein Parameter nicht für einen Mandanten definiert wurde, wird auf den Parameter des Servers zurückgefallen. Diese Vererbung von Parametern wird in der Praxis bspw. so genutzt: - Jeder Mandant hat seine eigene SQL-Datenbank. Der Name dieser Datenbank steht in der Mandantenkonfig. - Alle Mandanten teilen sich den selben SMTP-Mailserver zum Versand von System-Mails. Daher ist wird der SMTP-Server nur in der Serverkonfig. eingetragen.

Wenn Sie Einstellungen für alle Mandanten pflegen möchten, dann können Sie die server.json nutzen, um die Einstellung für alle Mandanten in einer Datei zu pflegen.

Achten Sie darauf, welche Parameter Sie in der Serverkonfig. pflegen. Eine Änderung der Parameter in dieser Konfig beeinflusst alle Mandanten, welche den Parameter nicht explizit überschreiben.

# Features verwalten Die Feature-Verwaltung ermöglicht es experimentelle bzw. neue Features je Mandant (und wahlweise für alle Mandanten einer Umgebung) zu aktivieren / deaktivieren. Somit ist es möglich Endkunden phasenweise an neue Funktionen zu gewöhnen oder optionale Features grundsätzlich zu deaktivieren.

Die Feature-Verwaltung wird sich langfristig zwischen On-Premis und SaaS-Angeboten unterscheiden.

Die Features eines Mandanten werden aktuell (Stand Q3 2022) als Teil der [Server- und Mandantenkonfiguration](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/server-und-mandantenkonfiguration "Server- und Mandantenkonfiguration") gespeichert.

## Feature-Übersicht
**Flag****Funktion****Im Standard aktiviert?** **Verfügbar ab Version**
v2ViewerIst der v2 Viewer in der v2 UI nutzbar?X< 2.3.0
v1ViewerIst der v1 Viewer in der v2 UI nutzbar?X< 2.3.0
v2UiIst die v2 UI nutzbar?X< 2.3.0
v1UiIst die v1 UI nutzbar?X< 2.3.0
masterDataTablePermissionsSoll ein komplexeres Berechtigungssytsem in der Stammdatenverwaltung genutzt werden? < 2.3.0
jobManagementSoll das v2 Jobsystem in der Benutzeroberfläche sichtbar sein? < 2.3.0
documentLogDarf in der UI auf Dokumenten-Logs zugegriffen werden können? (Aktuell nur in Ergänzung mit Logging in Elasticsearch nutzbar) < 2.3.0
newsSidebar*Noch nicht veröffentlicht, wird nicht aktiv gepflegt:* Falls aktiv, zeigt in der UI ein vereinfachtes Changelog an. < 2.3.0
validationFieldLayout*Experimentell:* Soll ein komplexeres Feldlayouting (inkl. Layout-Editor) in der v2 UI für die Validierung genutzt werden? < 2.3.0
savedDocumentSearchesKönnen User Dokumenten-Suchen abspeichern und sehen diese als gespeicherte Suchen im Dashboard uws.? >= 2.3.0
translationAdministrationKönnen User in der Administration Sprachen und Übersetungen administrieren? >= 2.3.0
uiConfigExportKönnen User in der Administration Dokumentenklassen exportieren? >= 2.5.0
uiConfigImportKönnen User in der Administration Dokumentenklassen importieren? >= 2.5.0
uiAllowDocumentUploadKönnen User Dokumente hochladen?X>= 2.5.0
uiAllowDocumentSplitKönnen User Dokumente aufteilen?X>= 2.5.0
pipelineAllowMultipleStepExecutionsKönnen Verarbeitungsschritte mehrfach mit dem selben Dokument ausgeführt werden? >= 2.6.0
configurableFieldAmountFormattingDarf die Formatierung der Betragsfelder konfigurierbar sein? >= 2.7.0
[reportValidatedDocuments](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/chapter/reporting)
Werden Report-Daten für die Auswertung der Extraktionsqualität erhoben und angezeigt? Warnung Stand April 2024: Dieses Feature ist noch nicht vollständig umgesetzt und könnte zur Ansammlung großer Datenmengen führen. >= 2.7.0
workerManager
Sollen Jobs über den Worker Manager verteilt & verwaltet werden? Serverseitig überschreibar über die Umgebungsvariable **SQZ\_WORKER\_MANAGER\_FORCE** >= 2.10
asyncExportAfterValidation
Ist es möglich, dass Dokumente nach einer manuellen Validierung im Hintergrund exportiert werden? Bei sehr langsamen Export-Schnittstellen nützlich. [Bei Aktivierung ist die entsprechende Stapelklassen-Eigenschaft nutzbar.](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften#bkmrk-asyncexportaftervali) X>= 2.12
formTraining
Ist Formularbasiertes Training möglich? >= 2.12
xmlEditorIst der administrative Editor zum Pflegen der XML Verarbeitung aktiv? Achtung, das Feature ist **experimentell**: Wenn sie dieses Flag aktivieren, ohne die explizite Freigabe eines DEXPRO Mitarbeiters dafür eingeholt zu haben, behalten wir uns das Recht vor, Supportfälle zum Thema XML zu lösen. Diese Einschränkung gilt, solange das Feature der XML Verarbeitung mittels Editor nicht über die Release Notes im Forum freigegeben wurde. >= 2.13
xmlTrainingIst das XML-Training für Kopfdaten und Positionen aktiv? >= 2.13
## Konfiguration via Mandanten-Konfig. Folgendes Beispiel aktiviert zwei und deaktivieren ein Feature für den betroffenen Mandanten. ```JSON { "...": { "...": "..." }, "features": { "v2Ui": true, "v2Viewer": true, "oldFeature": false } } ``` # System API #### Beschreibung Diese Seite dokumentiert die System API von Squeeze. Mit dieser können Mandanten und das System verwaltet werden. #### URL Die URL unter welcher Squeeze erreichbar ist, in Kombination mit dem folgenden Path: `/api/system/v1/dist/`, Beispielsweise `https://test.staging.squeeze.one/api/system/v1/dist/`. So erreichen Sie die im Swagger UI, welche die Verwendung unserer System API vereinfacht. #### Absicherung Die System API ist mit einer einfachen Basis-Authentifizierung abgesichert. Die Zugangsdaten, ein Benutzername und ein Passwort, befinden sich in der `docker-compose.yml` ihrer Squeeze Installation oder sollten Ihnen mitgeteilt worden sein. Ist dies nicht der Fall kontaktieren Sie uns bitte, damit wir Ihnen diese zukommen lassen können. #### System API Anfrage authentifizieren ##### Swagger UI In der Swagger UI finden Sie einen Button mit dem Namen "Authorize". Durch die Verwendung von diesem Element öffnet sich ein Modaler Dialog, in dem Sie Ihre Nutzerdaten (Benutzername und Passwort) hinterlegen können. Suchen Sie hierfür nach der "HTTP Basic Authentication"-Methode, welche, im Regelfall, als oberste Methode aufgeführt wird. ##### Selbst erstellte Anfrage Sie müssen Ihre Zugangsdaten mit der Base64-Methode enkodieren, wobei das Format der zu enkodierenden Zeichenkette `Username:Passwort` lautet. So ergibt beispielsweise der Username `system` und das Passwort `system` die nach Base64-Methode enkodierte Zeichenkette `c3lzdGVtOnN5c3RlbQ==`. Der Präfix "Basic" wird der enkodierten Zeichenkette beigefügt und als eine Zeichenkette dem Header, mit dem Key "Authorization", beigefügt; Beispiel: `Authorization: Basic c3lzdGVtOnN5c3RlbQ==`. Wenn Sie beispielsweise alle Tenants aufgeführt haben möchten, als Teil Ihrer selbst erstellten Anfrage, sähe Ihre Anfrage wie folgt aus (den Beispielen dieser Seite folgend, unter Verwendung von cURL): ```shell curl --location 'http://test.staging.squeeze.one/api/system/v1/tenants' --header 'Authorization: Basic c3lzdGVtOnN5c3RlbQ==' ``` # Mandanten-Installation über v2 UI Das Anlegen eines neuen Mandanten kann über den folgenden URL-Pfad im Browser abgerufen werden: - /ui/app/system-administration

Die gesamte URL setzt sich aus dem aktuellen Mandanten (-namen) und dem angegebenen Pfad zusammen.

##### Mandanteneinrichtung Der Mandant benötigt einen Mandantennamen abweichend vom bisherigen Namen der bei der initialen Installation verwendet worden ist. Beispiel: - Bisheriger Name: **squeeze.kunde.local** - Neuer Name: **squeeze-test.kunde.local**

**Achtung:** Sollte ein Mandant via Name bereits existieren, wird dieser anhand der Zustimmung überschrieben.

Ebenfalls ist ein Benutzer und Passwort notwendig, welche in der Serverkonfiguration abgerufen werden können. Nachdem die Eingabe erfolgt ist, werden Daten für den Admin Benutzer des neuen Mandanten benötigt. Im weiteren Schritt können dann Vorlagen ausgewählt werden, welche auf dem neuen Mandanten-Setup integriert werden. An letzter Stelle erfolgt eine Zusammenfassung aller Daten. Nach erfolgter Bestätigung, wird der neue Mandant aufgesetzt und Sie werden zu dem Mandanten-Login weitergeleitet. # Portal Integration

Die Integration des Portal wurde erstmals in Squeeze 2.13 möglich.

Die Integration des Portals befindet sich aktiv in der Entwicklung (Stand Q4 2024) - Bei Rückfragen sprechen Sie den Support bzw. einen Verantwortlichen der Entwicklung an.

### Integration konfigurieren Damit ein Squeeze Mandant sich beim Portal authentifizieren kann, ist die Konfiguration dieser Eigenschaften notwendig: ```JSON { "portal": { "enabled": true, "host": "https://portal.dexpro.de", "auth": { "clientId": "...", "secret": "..." } } } ```

Hinterlegen Sie die Konfiguration zum Portal **ausschließlich** in der Mandantenkonfiguration. Eine Konfiguration in der Serverkonfiguration kann zu Fehlverhalten führen, die nicht nur technische, sondern auch fachliche Fehler und falsche Zuordnungen im Abrechnungsprozess zur Folge haben können.

# Squeezer CLI Das Kommandozeilen-Tool zur Verwaltung von Squeeze. # Einführung

Das CLI steht erst ab Squeeze 2.5 zur Verfügung.

Im Projektverzeichnis von Squeeze (htdocs unter Windows, /var/www/html/squeeze unter Linux) liegt das CLI (Kommandozeilen-Tool) für Squeeze namens **squeezer**. Mit diesem Tool sind administrative Tätigkeiten möglich, die ggf. nicht über die HTTP Schnittstelle oder Benutzeroberfläche möglich sind. Zusätzlich lässt sich die Verwendung des CLIs mittels Skripten automatisieren, falls gewünscht. [![image-1687522140224.png](https://docs.squeeze.one/uploads/images/gallery/2023-06/scaled-1680-/image-1687522140224.png)](https://docs.squeeze.one/uploads/images/gallery/2023-06/image-1687522140224.png) ## Verwendung ### Windows Öffnen Sie ein Terminal (Kommandozeile oder Powershell) und verwenden sie diese Befehle: ```Powershell # htdocs Ordner öffnen, nutzen Sie hier Ihren Installationspfad cd C:\\SQUEEZE\\htdocs # CLI testen php ./squeezer --help ``` ### Linux ```shell # Installationspfad öffnen cd /var/www/html/squeeze # CLI testen ./squeezer --help ``` ## Befehle Das Tool dokumentiert die Unterstützen Befehle und ihre Argumente selbstständig. Nutzen sie folgendes Flag, um herauszufinden welche Befehle es gibt und was sie tun: ```shell # Mögliche Befehle auflisten ./squeezer # oder ./squeezer list # Ausgabe: Squeezer Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: completion Dump the shell completion script help Display help for a command list List commands ci ci:strict-types jobs jobs:schedule Schedules internal jobs for tenants server server:check Checks the System functionality server:migrate You can use this command to migrate more then one tenant or directly all tenants on server server:reindex Reindex all documents of all tenants. setup setup:server Configure and setup a squeeze server using yaml settings given via either stdin or config option. setup:tenant Configure and setup a squeeze tenant using yaml settings given via either stdin or config option. You can also pass a tenant argument to specify for which tenant installation should be done tenant tenant:backup Backup a tenant tenant:check Checks the tenant functionality tenant:reindex Reindex documents of all document classes tenant:restore Restore a tenant from backup:tenant dump tenant:upload-file Uploads a file into the processing pipeline for a specific tenant. ``` So lassen Sie sich einen Befehl erklären: ```shell # Hilfe für Command server:check ausgeben ./squeezer server:check --help # Ausgabe: Description: Checks the System functionality Usage: server:check Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ``` # SQUEEZE Admin FAQ Sammlung von Hilfsartikeln, die keiner anderen Gruppe zugeordnet sind. # Email-Verarbeitung (Windows) Um regelmäßig auf neue Emails zu prüfen, muss eine geplante Aufgabe eingerichtet werden. Unter Windows können dafür die geplanten Tasks genutzt werden. Unter Linux erfolgt die Einrichtung mit Hilfe von cron Jobs. ### Einrichtung unter Windows Unter Windows kann ein geplanter Task zur Regelmäßigen Prüfung der konfigurierten Postfächer genutzt werden. Um einen neuen Task einzurichten müssen folgende Schritte durchgeführt werden: #### 1. Aufgabenplanung öffnen Es kann eine eigener Unterordner für Squeeze aufgaben erstellt werden, wenn dies gewünscht ist [![image-1584346136560.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584346136560.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584346136560.png) Auf der rechten Seite kann über den Menüpunkt "Aufgabe erstellen..." die Aufgabe für den Import der Emails angelegt werden. #### 2. Aufgabe erstellen [![image-1584346394020.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584346394020.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584346394020.png) Der Name und die Beschreibung ist natürlich frei wählbar. Damit die Aufgabe unabhängig von der Anmeldung eines Benutzers ausgeführt wird und auch unabhängig von eventuellen Passwortänderungen ist, hat sich bewährt, das **System Konto** auszuwählen. Die Aufgabe "mit höchsten Privilegien" zu starten hat sich ebenfalls bewährt. #### 3. Trigger/Zeitpunkt festlegen [![image-1584346802279.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584346802279.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584346802279.png) Das Intervall in dem die Emails abgerufen werden sollen ist ebenfalls frei definierbar. Bewährt hat sich ein Intervall von 5 Minuten im Produktivsystem. Für Testsysteme kann dieser Intervall natürlich auch kleiner gewählt werden, wenn schnell und viel getestet werden soll. #### 4. Aktion festlegen [![image-1584347128210.png](https://docs.squeeze.one/uploads/images/gallery/2020-03/scaled-1680-/image-1584347128210.png)](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584347128210.png) Als Programm muss die php.exe der Squeeze Installation ausgewählt werden. Als Argumente müssen zwei Werte angegeben werden: - - Pfad zur EmailProcessing.php z.B. **C:\\SQUEEZE\\htdocs\\jobs\\EmailProcessing.php** - - Mandant für den die Emails abgerufen werden sollen z.B. **client.squeeze.net**
Die vollständige Angabe der Argumente lautet also wie folgt:
**C:\\SQUEEZE\\htdocs\\jobs\\EmailProcessing.php client.squeeze.net** # Datenbank Backup und Restore (Windows) ### Backup Das sichern der SQUEEZE Datenbank(en) ist ein wichtiger Punkt der Administration. Um Sicherzustellen, dass im Fehlerfall nicht alle Daten verloren gehen, muss eine regelmäßiges Backup der Datenbanken durchgeführt werden. Für MariaDB und MySQL kann folgender Befehl genutzt werden:
``` D:\SQUEEZE\mariadb\bin\mysqldump.exe --user=root --password="" --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --routines --events --databases "datenbankname" --result-file="D:\Squeeze\Backup\datenbank.sql" ```
Der Schalter `--databases` ist nicht nur für die Selektion der Datenbank verantwortlich, sondern steuert ebenfalls, ob ein **Create Statement des Schemas** in den dump exportiert werden soll. Soll das Create Statement nicht erstellt werden, muss der Schalter
`--databases` entfernt werden. ##### Backup aller Datenbanken Um alle Datenbanken eines Servers zu sichern kann der folgende Befehl genutzt werden
``` mysqldump --user=root --password="" --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --routines --events --all-databases --result-file="D:\Squeeze\Backup\alle_datenbank.sql" ```
Entscheidend ist der Schalter `--all-databases`
Dieser Schalter erfordert keine weiteren Parameter.
Die Aufgabe des Backups sollte zeitlich geplant werden. Dazu kann die Aufgabenplanung des Betriebssystems genutzt werden. Die Parameter sind natürlich entsprechend der Installation anzupassen. ### Restore Um eine Datenbank aus einer Sicherung wiederherzustellen kann dieser Befehl genutzt werden:

Sollte die Datenbank bereits bestehen, werden hiermit alle vorhandenen Daten mit denen des Backups überschrieben.

``` D:\SQUEEZE\mariadb\bin\mysql.exe -u root -p "datenbankname" < "D:\Squeeze\Backup\datenbank.sql" ```

Da jeder Mandant seine eigene Datenbank hat, ist die Aufgabe je Mandant/Datenbank zu planen.

# Aufgabe: Periodischer Worker Neustart Für einen periodischen Neustart des Workers benötigen wir folgendes Script, welches als ".bat" gespeichert wird.
``` @echo off set DIENSTNAME1="05_SQUEEZE_Worker" net stop %DIENSTNAME1% 2>nul if errorlevel 2 ( echo Dienst ist bereits gestoppt . . . Starte %DIENSTNAME1% net start %DIENSTNAME1% ) net start %DIENSTNAME1% ```
#### 1. Aufgabe erstellen [![worker-restart-aufgabe-erstellen.png](https://docs.squeeze.one/uploads/images/gallery/2020-10/scaled-1680-/worker-restart-aufgabe-erstellen.png)](https://docs.squeeze.one/uploads/images/gallery/2020-10/worker-restart-aufgabe-erstellen.png) [![5l4worker-restart-sys&prio.png](https://docs.squeeze.one/uploads/images/gallery/2020-10/scaled-1680-/5l4worker-restart-sys&prio.png)](https://docs.squeeze.one/uploads/images/gallery/2020-10/5l4worker-restart-sys&prio.png) Der Name und die Beschreibung ist natürlich frei wählbar. Damit die Aufgabe unabhängig von der Anmeldung eines Benutzers ausgeführt wird und auch unabhängig von eventuellen Passwortänderungen ist, hat sich bewährt, das **System Konto** auszuwählen. Die Aufgabe "mit höchsten Privilegien" zu starten hat sich ebenfalls bewährt. #### 2. Trigger/Zeitpunkt festlegen [![worker-restart-Neuer-Trigger.png](https://docs.squeeze.one/uploads/images/gallery/2020-10/scaled-1680-/worker-restart-Neuer-Trigger.png)](https://docs.squeeze.one/uploads/images/gallery/2020-10/worker-restart-Neuer-Trigger.png) Das Intervall in dem der Worker neu gestartet werden soll ist frei definierbar. #### 3. Aktion festlegen [![worker-restart-aktion.png](https://docs.squeeze.one/uploads/images/gallery/2020-10/scaled-1680-/worker-restart-aktion.png)](https://docs.squeeze.one/uploads/images/gallery/2020-10/worker-restart-aktion.png) Als Programm wird die Oben erstellte ".bat" (worker restart.bat) ausgewählt. # ElasticSearch Speicher erweitern ### Windows Unter Windows kann eine kleine GUI Anwendung genutzt werden, um die Parameter des ElasticSearch Dienstes anpassen zu können: ```batch C:\SQUEEZE\elasticsearch\bin\elasticsearch-service.bat manager 03_SQUEEZE_SearchEngine ``` [![image-1612455016437.png](https://docs.squeeze.one/uploads/images/gallery/2021-02/scaled-1680-/image-1612455016437.png)](https://docs.squeeze.one/uploads/images/gallery/2021-02/image-1612455016437.png) # KI Integration # KI Proxy Konfiguration Wenn Sie Squeeze mit dem KI Proxy verwenden möchten, dann folgen Sie folgendem Leitfaden für die Konfiguration.

Die Integration des KI Proxies ist erst ab Squeeze 2.6 verfügbar.

Ab Squeeze 2.13 müssen sie keinen KI Proxy Token konfigurieren, falls ihr Squeeze Mandant bereits mit dem Portal verknüpft wurde. In diesem Fall authentifiziert sich Squeeze beim KI Proxy mittels OAuth über das Portal.

### Integration konfigurieren #### Authentifizierung mittels KI Proxy Token (Bisheriges Verfahren) Um die Integration der KI für alle Mandanten eines Servers zu konfigurieren, fügen Sie folgende Konfiguration der Server-Konfiguration hinzu: ```JSON { "dexp": { "aiProxy": { "baseUrl": "https://ocr-proxy.squeeze.one", "token": "...", "version": "v0" } } } ``` Ersetzen Sie "..." durch den Access Token, der Ihnen zur Verfügung gestellt wurde. #### Authentifizierung mittels Portal Bei der Authentifizierung über das Portal, müsste die Konfiguration wie folgt aussehen. Mehr zur Integration des Portals, finden sie [hier](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/portal-integration "Portal Integration").

Hinterlegen Sie die Portal-Konfiguration **nie** in der Serverkonfiguration, sondern nur in der Mandantenkonfiguration.

```JSON { "dexp": { "aiProxy": { "baseUrl": "https://ocr-proxy.squeeze.one", "version": "v0" } }, "portal": { "enabled": true, "host": "https://portal.dexpro.de", "auth": { "clientId": "...", "secret": "..." } } } ``` ### Integration nutzen Wenn sie die Konfiguration in der Server- oder Mandantenkonfiguration hinzugefügt haben, dann können sie in der Admin-UI die KI konfigurieren. Siehe dazu: - [Stapelklassen-Eigenschaften](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften "Stapelklassen-Eigenschaften") - [Stapelklasseneigenschaften OCR-Texterkennung](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklasseneigenschaften-ocr-texterkennung "Stapelklasseneigenschaften OCR-Texterkennung") ### Ablaufende Credentials prüfen Um server-weit zu prüfen, ob verwendete Credentials ablaufen werden, können Sie das **Squeezer** CLI nutzen: ```shell squeezer server:check-ai-proxy-tokens -d 600 SQUEEZE Ai Proxy Token Check ============================ [WARNING] terstegen.squeeze.one: Token expires on 2024-11-22 12:36 ``` So können Sie sich die Hilfe des Tools anzeigen lassen: ```shell squeezer server:check-ai-proxy-tokens -h Description: Checks if ai proxy tokens are expired Usage: server:check-ai-proxy-tokens [options] Options: -d, --days[=DAYS] numbers of days before ai proxy token expires; default 28 days -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug ``` # Reporting Der Link zu den Reports befindet sich in der Navigation auf der linken Seite Ihrer SQUEEZE Installation, wenn Sie eingeloggt sind. # Autovalidierte Dokumente #### Was bringt mir der Report? Das Reporting "Autovalidierte Dokumente" stellt eine Übersicht dar, wie viele Dokumente autovalidiert wurden und wie viele manuell korrigiert werden mussten. [![Bildschirmfoto 2024-07-31 um 13.51.33.png](https://docs.squeeze.one/uploads/images/gallery/2024-07/scaled-1680-/bildschirmfoto-2024-07-31-um-13-51-33.png)](https://docs.squeeze.one/uploads/images/gallery/2024-07/bildschirmfoto-2024-07-31-um-13-51-33.png)Abbildung: Report "Autovalidierte Dokumente" mit Testdatensätzen Die Dokumente können über 3 optionale Filter eingeschränkt werden: - Zeitraum - Dokumentenklasse/-n - Lieferantennummer/-n ##### Funktionsweise der Filter Im Falle von einem Zeitraum können zwei Daten angeben werden, um den Zeitraum, wann ein Dokument validiert wurde, einzugrenzen. Alternativ kann auch nur ein Datum angeben werden, woraufhin das Ergebnis auf die Dokumente reduziert wird, die seit diesem Datum validiert wurden. Bei der Dokumentenklasse bzw. den Dokumentenklassen kann eine beliebige Anzahl ausgewählt werden, über das integrierte Dropdown-Menü. Die validierten Dokumente werden dann nach ihrer entsprechenden Dokumentenklasse gefiltert. Es ist möglich die validierten Dokumente auf ihre Lieferantennummer zu filtern. Sollte der Wunsch bestehen mehrere Lieferantennummern für die Filterung zu nutzen, müssen diese kommasepariert angegeben werden. #### Was für Daten werden erhoben? Um die validierten Dokumente zu erhalten werden folgende Daten verwendet: - Dokumenten ID - User ID - Dokumentenklassen ID - Lieferantennummer - Zeitpunkt der Validierung des Dokuments ##### Wann werden diese Daten erhoben? Die Daten werden erhoben, sobald ein Dokument erfolgreich validiert wurde. #### Wann werden die Daten gelöscht, wenn überhaupt? Gegenwärtig werden die Daten nach 365 Tagen, über den existierenden [Cleanup-Job](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/cleanup-job), gelöscht, wenn nicht anders konfiguriert. #### Ist ein Feature Flag notwendig? Für dieses Reporting ist kein Feature Flag notwendig. #### Verfügbarkeit Ab der SQUEEZE Version 2.7 steht dieses Feature zur Verfügung. # Felderauslesequalität #### Was bringt mir der Report? Das Reporting "Felderauslesequalität" stellt eine Übersicht dar, wie gut die einzelnen Felder verarbeitet wurden. Hierbei wird pro Feld angezeigt wie oft ein Feld korrekt verarbeitet wurde, leer war und/oder inkorrekt befüllt wurde (und damit manuell korrigiert werden musste). Die Daten werden sowohl als fester Zahlenwert aufgeführt, wie auch als prozentualer Wert. [![Bildschirmfoto 2024-07-31 um 13.48.32.png](https://docs.squeeze.one/uploads/images/gallery/2024-07/scaled-1680-/bildschirmfoto-2024-07-31-um-13-48-32.png)](https://docs.squeeze.one/uploads/images/gallery/2024-07/bildschirmfoto-2024-07-31-um-13-48-32.png) Abbildung: Report "Feldauslesequalität" mit Testdatensätzen Die Felder können über 4 optionale Filter eingeschränkt werden: - Zeitraum - Dokumentenklasse/-n - Lieferantennummer/-n - Felder ##### Funktionsweise der Filter Im Falle von einem Zeitraum können zwei Daten angeben werden, um den Zeitraum, wann ein Feld validiert wurde, einzugrenzen. Alternativ kann auch nur ein Datum angeben werden, woraufhin das Ergebnis auf die Felder reduziert werden, die seit diesem Datum validiert wurden. Bei der Dokumentenklasse bzw. den Dokumentenklassen kann eine beliebige Anzahl ausgewählt werden, über das integrierte Dropdown-Menü. Die validierten Felder werden dann nach ihrer entsprechenden Dokumentenklasse gefiltert. Es ist möglich die validierten Felder auf die Lieferantennummer des Dokumentes zu filtern, denen die Felder angehören. Sollte der Wunsch bestehen mehrere Lieferantennummern für die Filterung zu nutzen, müssen diese kommasepariert angegeben werden. Um auf bestimmte Felder zu filtern kann ein Dropdown-Menü verwendet werden, in welchem die gewünschten Felder zur Filterung markiert werden können. #### Ist es möglich Felder vom Report auszuschließen? Ja, es ist möglich Felder vom Report auszuschließen. In Felder-Menü der Dokumentenklasse gibt es eine Checkbox dafür, welche Report-Daten gespeichert werden sollen. **Feld Daten werden immer erst für den Report gespeichert, wenn die Checkbox aktiv ist.** Das heißt, sollte der Wunsch existieren, nachträglich für alle Dokumente ein neues Feld zu speichern, müssen alle Dokumente erneut durch die Prozess-Schritte Extraktion und Validierung bearbeitet werden. [![image-1724422076367.png](https://docs.squeeze.one/uploads/images/gallery/2024-08/scaled-1680-/image-1724422076367.png)](https://docs.squeeze.one/uploads/images/gallery/2024-08/image-1724422076367.png) #### Was für Daten werden erhoben? - Feldnamen - Feld Beschreibungen - Dokumenten ID (vom Dokument in dem das Feld existiert) - Zeitpunkt der Dokumenten Extraktion - Aus dem Dokument extrahierter Feldwert - Manuell angegebener Feldwert - Anzahl der Alternativen Werte des Feldes - Feld Zustände - Ist das Feld leer? - Ist das Feld valide? - Ist das Dokument, in dem das Feld existiert, validiert worden? ##### Wann werden die Daten erhoben? Die Daten werden erstmals im Extraktionsschritt erhoben. Nach erfolgreicher Validierung eines Dokuments werden die erhobenen Daten abgeglichen und ggf. angepasst (z.B. bei einer manuellen Korrektur). #### Wann werden die Daten gelöscht, wenn überhaupt? Gegenwärtig werden die Daten nach 365 Tagen, über den existierenden [Cleanup-Job](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/cleanup-job), gelöscht, wenn nicht anders konfiguriert. #### Ist ein Feature Flag notwendig? Um dieses Feature verwenden zu können ist das Feature Flag "Report Validated Documents" notwendig #### Verfügbarkeit Ab der SQUEEZE Version 2.7 steht dieses Feature zur Verfügung.