# 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.
Minimum | Empfehlung | |
---|---|---|
Betriebssystem | Linux/Windows | Linux/Windows |
CPU Takt | 2.2 GHz | 3.0 GHz |
CPU Kerne | 6 Cores | 8 Cores |
RAM | 8 GB | 16 GB |
Festplatte | HDD 7200 rpm | SSD |
Festplattenspeicher | 200 GB | 500 GB |
Netzwerk | 100 Mbit | 1000 Mbit |
OS | Version | Anmerkung |
---|---|---|
Windows | 7 | Uneingeschränkt unterstützt |
Windows | 10 | Uneingeschränkt unterstützt |
Windows | 11 | Uneingeschränkt unterstützt |
Windows | Server 2008 R2 | Uneingeschränkt unterstützt |
Windows | Server 2012 | Uneingeschränkt unterstützt |
Windows | Server 2012 R2 | Uneingeschränkt unterstützt |
Windows | Server 2016 | Uneingeschränkt unterstützt |
Windows | Server 2019 | Uneingeschränkt unterstützt |
Windows | Server 2022 | Uneingeschränkt unterstützt |
OS | Version | Anmerkung |
---|---|---|
Ubuntu | 14.04 | |
Ubuntu | 16.04 | Uneingeschränkt unterstützt |
Ubuntu | 18.04 | Uneingeschränkt unterstützt |
Ubuntu | 20.04 | Uneingeschränkt unterstützt |
Ubuntu | 22.04 | Uneingeschränkt unterstützt |
Debian | 8 | |
Debian | 9 | Uneingeschränkt unterstützt |
Debian | 10 | Uneingeschränkt unterstützt |
Debian | 11 | Uneingeschränkt unterstützt |
Debian | 12 | Uneingeschrä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.
## DatenbanksystemeSqueeze 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.
Hersteller | Version |
---|---|
Microsoft | SQL Server 2012 |
Microsoft | SQL Server 2014 |
Microsoft | SQL Server 2016 |
Microsoft | SQL Server 2019 |
Microsoft | SQL Server 2022 |
MySQL | 5.5 - 5.7 |
MariaDB | 5.5.7 |
MariaDB | 10.0 - 10.11 |
Port | Beschreibung |
---|---|
80 | HTML Frontend und API |
443 | HTML Frontend und API (mit SSL) |
Port | Beshreibung |
---|---|
25 | SMTP für das versenden von Emails |
587 | SMTP für das versenden von Emails (mit Verschlüsselung) |
143 | IMAP um Email abzuholen |
993 | IMAP um Email abzuholen (mit Verschlüsselung) |
443 | EWS um Email abzuholen (mit Verschlüsselung) |
33?? | SAP RFC Verbindung (?? = SAP Instanznummer) |
Runtime | Version | Benötigt von |
---|---|---|
PHP | 7.4.x | Server, Worker |
PHP | 8.1.x | Server, Worker |
Java | 8 | Server, Worker |
Runtime | Version | Benötigt von |
---|---|---|
Erlang | 10.5 | RabbitMQ |
Erlang | 25.3 | RabbitMQ |
Java | In Abhängigkeit der Elasticsearch Version | Elasticsearch |
Hersteller | Version | Anmerkung |
---|---|---|
Microsoft | Internet Explorer 11 | Uneingeschränkt unterstützt (bis Squeeze Version 1.12.9) |
Microsoft | Edge | Uneingeschränkt unterstützt |
Mozilla | Firefox | Uneingeschränkt unterstützt |
Chrome | Uneingeschränkt unterstützt | |
Apple | Safari | Uneingeschränkt unterstützt |
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
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.Dienstname | Staus |
01\_SQUEEZE\_WebServer | Wird ausgeführt |
02\_SQUEEZE\_DB\_Server | Wird ausgeführt |
03\_SQUEEZE\_SearchEngine | Wird ausgeführt |
04\_SQUEEZE\_MessageQueue | Wird ausgeführt |
05\_SQUEEZE\_Worker | nicht 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.
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.
[](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: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584627831788.png) Mit dem Button Next öffnet sich der nächste Dialog: [](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: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628226160.png) Mit dem Button Next öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634381073.png) - Password: squeeze Mit dem Button Next öffnet sich der nächste Dialog: [](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 [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634465227.png) Mit dem Button Next öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628602957.png) Mit dem Button Next öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628656559.png) Mit dem Button Next öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584628693425.png) [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203059804.png) Mit dem Button Anlegen öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203115139.png) [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203235370.png) [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203317804.png) Mit dem Button Jetzt Einrichten öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203470583.png) Den Worker-API-Key aufschreiben bzw. Kopieren. [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203621842.png) Mit dem Button Weiter öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584634925708.png) Mit dem Button Weiter öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584635004808.png) Mit dem Button Weiter öffnet sich der nächste Dialog: [](https://docs.squeeze.one/uploads/images/gallery/2020-03/image-1584635045050.png) [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203722428.png) [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648203787379.png) ##### Konfiguration des Workers C:\\SQUEEZE\\htdocs\\worker\\config [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648205632179.png) Im markierten Feld den kopierten Worker-Api-Key eintragen und speichern. [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648204309276.png)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: [](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. [](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. [](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. [](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: [](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:reindexDiese 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 VersionenDiese 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 FeldfilterbedingungenAufgetreten 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:Spalte | Wert vorher | Wert nachher |
operator | = | eq |
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 [](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674517672847.png) 5. Squeeze Basisverzeichnis auswählen  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 [](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\\) [](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674517464004.png) 5. Squeeze Basisverzeichnis auswählen  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. [](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.
[](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 [](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. [](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. [](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. [](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. [](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.  [](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: [](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")ZXING | Wird als Standard verwendet. Liefert aktuell die Besten Ergebnisse. |
ZBAR | Kann 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. |
ALL | Es werden beide Engines nacheinander verwendet (führt zu längerer Laufzeit). Verfügbar ab Version 2.0 |
original | Das Originalbild wird unverändert verwendet. |
grayscale | Das Bild wird in Graustufen konvertiert. |
black | Das Bild wird in Schwarz/Weiß konvertiert. |
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. ## BarcodetypenDer 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 Version | Optionen |
ab 2.4.0 | `default` |
ab 2.4.0 | `ai-ocr` |
ab 2.5.0 | `maxocr` |
ab 2.6.0 | `proxy-ocr` |
Squeeze Version | Optionen |
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 |
3 | Standardeinstellung liefert gute Ergebnisse. |
4 | Wortweise Segmentierung. Es wird nicht nach Zeilen geschaut sondern Worten. (verfügbar ab Version 2.0) |
6 | Gut für Positionsdaten. Hat aber Probleme bei Linien die sehr dicht am Text sind. |
11 | Gut bei vielen Grafiken auf den Dokumenten. |
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 [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648136421456-de-outlook.png) Die Invoice Dokumentenklasse wird mit dem Invoice Template ausgeliefert. [](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. [](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:** [](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667925377844.png) ##### Allgemeine KonfigurationFeld-Konfiguration | Bedeutung |
Name | technischer Feldname |
Beschreibung | Name des Feldes, welcher auf Kopfebene angezeigt wird |
Lokator | Auswahlfeld für bereits konfigurierte Lokatoren, die dem Feld zugewiesen werden können |
Subfield | relevant für die Endbeträge bei Eingangsrechnungen (NetAmount, TaxAmount, TotalAmount, TaxRate) |
Gruppe | Auswahlfeld mit den Gruppen dieser Dokumentenklasse (Feldgruppen -> Groups) |
Name im Zielsystem | Technischer Name für die Exportschnittstelle für dieses Feld. Wird nicht durch alle Export-Schnittstellen berücksichtigt. |
Feld-Typ | Bedeutung |
Text | Textfeld das z.B. für Belegnummern, Vorgangsarten oder Mandanten verwendet werden kann. |
Date | Datumsfeld das z.B. für das Belegdatum oder das Leistungsdatum verwendet wird. |
Amount | Betragsfeld (numerisch, 2 Nachkommastellen. Wird z.B. für Netto, Steuer und Brutto verwendet. |
Table | Tabellenfeld (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 | Version | Bedeutung |
Text | >=2.6.x | Feld-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 |
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-Eigenschaft | Bedeutung |
Pflichtfeld | leere Felder werden im Webclient rot dargestellt, die Validierung ist nicht möglich solange das Feld nicht gefüllt ist |
Nur Lesen | Im Webclient kann das Feld nicht bearbeitet werden, Lokatoren können das Feld im Hintergrund füllen |
Versteckt | das Feld wird im Webclient nicht dargestellt |
Bestätigen | das Feld wird im Webclient blau dargestellt und muss vor der Validierung mit Enter bestätigt werden |
Feld-Konfiguration | Bedeutung |
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 Zeichen | Hier kann eingetragen werden, ab welcher Anzahl an Zeichen gesucht werden soll. |
Tabelle | Hier kann ausgewählt werden, welche Stammdatentabelle als Grundlage für eine Suche dienen soll. |
Ergebnisspalte | Hier 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. |
Informationsspalten | Sollten ein oder mehrere Treffer gefunden werden, wird hier angegeben welche Spalteninformationen zur Anzeige der Treffer verwendet werden sollen. |
Eingabewert ignorieren | Falls aktiv, wird bei der Eingabehilfe der aktuelle Feldwert ignoriert. Das führt dazu, dass mehr Ergebnisse angezeigt werden. |
Max. Anzahl Suchergebnisse | Steuert, wie viele Ergebnisse gesucht und angezeigt werden sollen. |
Zusätzliche Filter, um die Ergebnisse der Eingabehilfe einzuschränken | s. unten |
Tabellenspalte | Hier wird die Tabellenspalte angegeben, mit der der Feldwert verglichen werden soll. |
Operant | Hier wird der Operator angegeben mit dessen Hilfe der Datenbankwert und Feldwert verglichen werden sollen. |
Feld | Hier wird das Fed ausgewählt in dem der Wert steht, der mit dem Datenbankwert verglichen werden soll. |
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. # FunktionsbeschreibungTODO: 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" [](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". [](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674480174164.png) Sie können nun einen neuen Eintrag [](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. [](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 [](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658326121521.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. [](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. [](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: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: [](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. [](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. [](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. [](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:
Prioritäten | Beispiel |
Erste Priorität | spezifscher Sender(support@dexpro.de) + spezifisches Dateimuster(Rechnung.pdf) |
Zweite Priorität | spezifische 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** |
id | ID | Eindeutige technische ID |
batchclassid | Stapelklassen ID | ID der Stapelklasse für die die Regel definiert wird |
sender | Sender | Absender der Email (Wildcards erlaubt) |
filenamepattern | Dateimuster | Dateinamenfilter (Wildcards erlaubt) |
type | Typ | Relevantes **D**okument für die Extraktion oder begleitende **A**nlage |
singledocument | Einzeldokument | Kennzeichen, ob die Datei ein eigenständiges Dokument werden soll (**X**) |
newbatchclassid | Neue Stapelklassen ID | Sofern das Dokument in eine andere Stapelklasse verschoben werden soll, ist hier die Stapelklassen-ID der neuen Stapelklasse anzugeben. |
newdocumentclassid | Neue Dokumentenklassen ID | Sofern auch eine neue Dokumentenklasse gesetzt werden soll, ist hier die ID der Dokumentenklasse anzugeben. |
**ID** | **Stapel-klasse** | **Sender** | **Muster** | **Typ** | **Einzel-Dokument** | **neue Stapelklasse** | **neue Dokumentenklasse** |
**1** | 1 | \* | D | ||||
**2** | 1 | \* | AGB.pdf | A | |||
**3** | 1 | dexpro.de | INV\*.pdf | D | X | ||
**4** | 1 | payment@dexpro.de | Avis\*.pdf | D | X | 2 | 2 |
**5** | 1 | dexpro.de | \*.xml | A | |||
**6** | 1 | invoice@squeeze.one | \*.xml | D | |||
**7** | 1 | invoice@squeeze.one | A |
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.
#### Priorisierung von XML-Rechnungen gegenüber PDF-Dateien ab Squeeze 2.17 Mit der Einführung der Version 2.17 wird das Standardverhalten von Squeeze dahingehend angepasst, dass Rechnungen im XML-Format gegenüber PDF-Dateien bevorzugt werden. Der Hintergrund dieser Änderung ist, dass zunehmend Kunden und Partner darauf hingewiesen haben, dass Rechnungssteller häufig sowohl Belege im XML- als auch im PDF-Format übermitteln. Je nach Konfiguration kann dies zu Dubletten oder Fehlern in der Verarbeitung führen. Um eine einheitliche Handhabung der Belege im Standard zu gewährleisten, wird in der Version 2.17 festgelegt, dass Belege im XML-Format vorrangig behandelt werden. Dieses Verhalten kann jedoch durch die oben beschriebenen Regeln an individuelle Anforderungen angepasst werden. Eine generelle Priorisierung der PDF-Dateien ist derzeit nicht vorgesehen. # 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 [](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 [](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 [](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 [](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**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: [](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: [](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änkenDieser 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) : [](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663166911584.png)Im nachfolgenden sind diese weiteren dokumentierten Schritte auszuführen. [](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167010638.png)Name und Beschreibung festlegen: [](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1663167136655.png)Wähle den Besitzer (Admin-Account): [](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: [](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.
[](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 -UserPrincipalNameUnter 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 -AppIdBis 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 [](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) [](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. [](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 SqueezeDiese 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.
[](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: [](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 [](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. [](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: [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667832067117.png) Nun öffnet sich ein weiteres Dialog Feld : [](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: [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1667834432799.png) Geben Sie Ihr Passwort ein: [](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.: [](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: [](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**: [](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. Bei geringerer Gültigkeit als 12 Std. muss per Projekt Change Request die Erneuerung eines Tokens auf eine passende kürzere Zeit von einem Consultant angepasst werden. 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) |
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. [](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. [](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 SqueezeThis 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.
[](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: [](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 [](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. [](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: [](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. [](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681495053.png) Now another dialog box opens: [](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: [](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. [](https://docs.squeeze.one/uploads/images/gallery/2023-03/image-1677681605581.png) Enter your password: [](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: [](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: [](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"**: [](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) |
**Name des anzulegenden Squeeze-Feldes** | **Information der Mail** |
EmailReceivedDate | Empfangsdatum |
EmailFromAddress | Absender-Mail-Adresse |
EmailFromName | Absender-Name |
EmailToAddress | Empfänger |
EmailMailBoxUser | Postfach (aus dem die Mail abgeholt wurde) |
EmailSubject | Betreff |
EmailMessageId | ID der Nachricht |
EmailImportFolder | Import-Ordner |
EmailProcessedFolder | Verarbeitet-Ordner |
EmailInvalidFolder | Fehler-Ordner |
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: [](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: [](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: [](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 :[](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-Typ | Unterstützung |
Codabar | ja |
Code 128 | ja |
Code 25 / ITF | ja |
Code 39 | ja |
Code 93 | ja |
Datamatrix | ja |
QRCode | ja |
EAN 9 | ja |
EAN 13 | ja |
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\_URL | Die HTTP Adresse des Worker Managers |
SQZ\_WORKER\_MANAGER\_ACTIVE | Ist 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. |
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:**Lokatortyp | Bedeutung |
Regular Expression | Lokator für reguläre Ausdrücke z.B. (RG\[0-9\]{5,6}) |
KeyWord | Lokator 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 Amounts | Lokator für Endbeträge und Steuersatz einer Rechnung (Nettobetrag, Bruttobetrag, Steuerbetrag und Steuersatz) |
Document Date | Lokator für Datumsangaben |
Keyword to Value | Lokator 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 Keyword | Lokator für Werte (reguläre Ausdrücke) die in der Nähe eines bestimmten Schlüsselbegriffes |
Search for line items | Lokator für die Positionszeilenfindung |
Search for DB linked data | Lokator für Datenbanksuche (andere Lokatoren können als Source-Lokator angegeben werden) |
Barcode | Lokator für Barcodeerkennung |
Value from Regular Expression | Datenbanklokator für reguläre Ausdrücke (regex, result) |
Eigenschaft | Bedeutung |
Name | technischer Lokatorname |
Beschreibung | Anzeigenamen für den Lokator |
Lokator Typ | Auswahlfeld für Lokatortypen |
Datentyp | Auswahlfeld für Lokatorwerte (Text, Date, Amount) |
Seiten | Auswahlfeld für welche Seiten des Dokumentes der Lokator ausgeführt werden soll (Jede Seite, Erste Seite, Letzte Seite) |
ggf. Quelle | Auswahlfeld für Lokatoren, deren Ergebnismenge für diesen Lokator genutzt werden soll |
Aktiv | Auswahlfeld für die Aktivierung des Lokators (ja, nein) |
ignoriere Leerzeichen | das 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:** [](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:** [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467230330.png) **Beispiele für Ersetzungen im Phone (Telefonnummer) - Lokator:** [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648467709729.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: [](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. [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648468114721.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: [](https://docs.squeeze.one/uploads/images/gallery/2022-03/image-1648643710726.png) **Reguläre Ausdrücke für den Date-Lokator:** [](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. [](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.
[](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. [](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: [](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 Wert | mögliche Schlüsselwörter |
Rechnung | Rechnung, Anzahlungsrechnung, Invoice, Faktura, Dauerrechnung etc. |
Gutschrift | Gutschrift, Debit Note etc. |
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
Beispiel | Wert | regulärer Ausdruck | Leerzeichen ignorieren |
IBAN | DExx xxxx xxxx xxxx xxxx xx | (DE\\d{20}) | ja |
Ust-ID | DE xxxxxxxx | ((DE)(\[1-9\]\\d{8})) | ja |
Beträge | 100,00 oder 1.000,00 | (\[-\\+\]?\[0-9\]{1,3}(\[ \]?\[,\\.\]?\[ \]?\[0-9\]{3})\*\[ \]?\[,\\.\]\[ \]?\[0-9\]{2}\[-\\+\]?(?!\[0-9.,\])) | nein |
Datum | 01.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 |
Namen | Max Mustermann | (Max Mustermann) | nein |
Telefonnr. | +4940359840001 | (\[+\]?\[0-9\]{8,15}) | ja |
Emailadresse | info@dexpro-solutions.de | (\[a-zA-Z0-9\_\\-.\]{2,30}@\[a-zA-Z0-9-\]{2,30}\\.\[a-zA-Z\]{2,3}) | nein |
URL | www.dexpro-solutions.de | (www\\.\[a-zA-Z0-9-\]{2,30}\\.\[a-zA-Z\]{2,3}) | nein |
**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. [](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. [](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: [](https://docs.squeeze.one/uploads/images/gallery/2023-07/image-1688371726185.png)Source Lokator (Quell-Lokator) | DB-Spalte der ausgewählten DB | Stop-Kennzeichen |
UstId (Lokator für die Ermittlung von Umsatzsteuer-IDs) | EUTaxId | Nein |
IBAN (Lokator für die Ermittlung von IBANs) | IBAN | Nein |
Email (Lokator für die Ermittlung von Emails) | Nein | |
URL (Lokator für die Ermittlung von URLs) | Webpage | Nein |
Phone (Lokator für die Ermittlung von Telefonnummern) | Phone | Nein |
Phone (Lokator für die Ermittlung von Telefaxnummern) | Fax | Nein |
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.** [](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:** [](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:** [](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 [](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** |
A | Filterspalte |
B | Filterfeld |
C | Filter-Lokator |
**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.
[](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: [](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662030159612.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:** ** [](https://docs.squeeze.one/uploads/images/gallery/2022-09/image-1662030050684.png) ##### Beispiel: Verwenden des Tabellen-Lokators an der Tabelle** ** [](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. [](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. [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658311783382.png) Weiter mit dem Beispiel "Lieferantensuchbegriffe" [](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. [](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". [](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. [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-07/image-1658306925789.png) Über "Lokator testen" kann nun der Lokator und seine Übersetzung getestet werden. [](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.[](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. [](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.[](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. [](https://docs.squeeze.one/uploads/images/gallery/2023-02/image-1675441440241.png) # Asynchroner Dokumenten-Export nach manueller ValidierungDiese 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. [](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. [](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. [](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. ### StammdateneigenschaftenEigenschaft | Beschreibung |
Name | Technischer Name für der Datenbankspalte |
Beschreibung | Anzeigenamen für der Datenbankspalte |
Quelle | externer 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: [](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:** [](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. [](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. [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649062378547.png) Den neuen Datensatz mit dem Speichern Button bestätigen. [](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649062412805.png)**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 steuernDas 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. [](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143475429.png) ### Job-Verwaltung Hier können Jobs für Job-Skripte eingerichtet werden. [](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.
[](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649143601222.png) # Einrichten der JobverwaltungFalls 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)): [](https://docs.squeeze.one/uploads/images/gallery/2023-06/image-1688040387563.png) ##### Beispiel LinuxAuf 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 LinuxAuf 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 [](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 - `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. [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1649667269409.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: [](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: [](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) [](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.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. ### 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: [](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: [](https://docs.squeeze.one/uploads/images/gallery/2023-04/image-1680690660479.png) ### Konfiguration Die Konfiguration erfolgt wie bei jedem Export an der Dokumentenklasse: [](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. # SharePoint Export via Graph API Mit dieser Schnittstelle kann die offizielle SharePoint Graph API von Microsoft integriert werden, um mit einem SharePoint Verzeichnis zu kommunizieren. Dafür ist eine registrierte Microsoft Azure Applikation notwendig. ### Integrierte Services der Graph API - Dokumente in ein zuvor definiertes SharePoint Verzeichnis hochladen ### Zugangsberechtigungen in Microsoft Azure #### Benötigte Applikationen Erstellen Sie zwei neue Applikationen in Microsoft Azure. Eine dient zu administrativen Zwecken, die Andere für den Nutzer selbst.Zur Bewilligung der folgenden Rechte wird ein User mit Administrationsrechten in Microsoft Azure benötigt.
Die Rechte können im Menü "API Permissions" (im deutschen Client: "API-Berechtigungen") hinzugefügt werden: - Die Admin-Applikation benötigt die API-Berechtigung `Sites.FullControl.All` - Die Nutzer-Applikation benötigt die API-Berechtigung `Sites.Selected` In der Admin-Applikation muss ein User im Menü `Certificates & secrets` erstellt werden. Dieser User ist nötig, um die Nutzer-Applikation mit den nötigen Rechten auszustatten. [](https://docs.squeeze.one/uploads/images/gallery/2025-02/bildschirmfoto-2025-02-04-um-15-19-58.png)Abbildung - Registrierte Microsoft Applikation "Neue SharePoint Applikation" #### Rechte für die Nutzer-Applikation Für diesen Abschnitt benötigen Sie die Daten der zuvor erstellten Admin-Applikation. Die Nutzer-Applikation muss zwingend die Berechtigungen auf die von Ihnen gewünschte SharePoint Seite erhalten. Dafür ist die Id der SharePoint-Seite notwendig.Bedauerlicherweise ist es zum aktuellen Zeitpunkt nicht möglich, die SharePoint Seiten Id über die grafische Oberfläche ausfindig zu machen (Stand März 2025).
Daher wird wie folgt beschrieben, wie die Id der Seite ermittelt und die Erteilung der Berechtigung per curl Requests erteilt werden kann. ##### Einloggen Zu erst benötigen Sie einen Bearer Token, um sich an der API zu authentifizieren. Dies erfolgt durch folgenden Request: - URL: https://login.microsoftonline.com/<TENANT\_ID>/oauth2/v2.0/token - HTTP Methode: POST - Request Body Typ: form-data - Request Body: - client\_id:<CLIENT\_ID> - client\_secret:<CLIENT\_SECRET> - grant\_type:client\_credentials - scope:https://graph.microsoft.com/.default Statt "<TENANT\_ID>", "<CLIENT\_ID>" und "<CLIENT\_SECRET>" müssen Sie Ihre jeweiligen Daten verwenden. Wo Sie diese Daten finden steht in den Abschnitten ["Feld Tenant Id"](#bkmrk-feld-tenant-id), ["Feld Client Id"](#bkmrk-feld-client-id) und ["Feld Client Secret"](#bkmrk-feld-client-secret) dieses Artikels. Anbei der cURL Befehl: ```shell curl --location 'https://login.microsoftonline.com/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 | CRUD | CRUD | |||
Rollen | CRUD | CRUD | |||
Rollen zu Benutzern zuordnen | CRUD | CRUD | CRUD | ||
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 |
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 RollenRollenfilter 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**. [](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. [](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. [](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. [](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. [](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 RollenRollenfilter 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**. [](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. [](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. [](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. [](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. [](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). [](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. [](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.** [](https://docs.squeeze.one/uploads/images/gallery/2022-04/image-1650962572893.png)Schritt | Aktuelle 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`. |
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. [](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) #### ExtraktionSchritt | [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`. |
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. [](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. [](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. : [](https://docs.squeeze.one/uploads/images/gallery/2023-01/image-1674484918806.png) Hier wiederum eine XML-Datei, die gültig ist. [](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-StrukturenPOST {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:**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 SqueezeVerfü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.**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]` |
**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-AuswertungAb 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**): [](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"): [](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 |
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. [](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. [](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-X | 1.0 bis 1.0.07 |
ZUGFeRD | 1.0 bis 2.3 |
XRechnung | 1.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. [](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****Geschäftspartner** | **Bedingung** | **Aktion** |
---|---|---|
Mandant/Kreditor | Name gefunden in entsprechender Suche | Interner Schlüssel aus der Suche verwenden |
Mandant/Kreditor | Name nicht gefunden, VAT-ID gefunden | Interner Schlüssel aus der entsprechenden Tabelle verwenden |
Mandant/Kreditor | Keine Übereinstimmung | Eintrag bleibt leer |
Bitte Groß-/ Kleinschreibung beachten: Der XPath ist case-sensitiv. Das bedeutet das der XPath so geschrieben sein muss, wie er in der XML-Datei angegeben ist. /xr:invoice/xr:Invoice\_type\_code
#### Umschlüsselung anderer Codes Ab der Version 2.16 wurde eine neue Tabelle (einvoice\_value\_mapping) eingeführt, die genutzt werden kann, um individuell andere Werte statt der Codes zu nutzen und selbst festlegen zu können. Die Tabelle befindet sich unter dem Menüpunkt Stammdaten: [](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739888029319.png) In dieser Tabelle lassen sich die Umschlüsselungen sehr genau konfigurieren. Ähnlich wie bei den Mappings lassen sie die Umschlüsselungen je Unternehmen, Lieferant, Dokumentenklasse und Feld konfigurieren. Hier ein Beispiel, wie die Standard-Codes 380 (Rechnung) und 381 (Gutschrift) um einen weiteren Eintrag 384 (Rechnungskorrektur) erweitern lassen: [](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739888420199.png) Dieses Vorgehen lässt sich nicht nur auf Kopffelder anwenden, sondern auch auf Positionsangaben. So lässt sich mit dieser Möglichkeit auch gut die Umschlüsselung von Mengeneinheiten realisieren. Hier ein weiteres Beispiel für Mengeneinheiten: [](https://docs.squeeze.one/uploads/images/gallery/2025-02/image-1739889067021.png) Die Listen lassen sich exportieren und auch wieder importieren, was die Übertragung von Test in Produktivsysteme oder andersherum sehr vereinfacht. # 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 InhaltenDie Ü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. [](https://docs.squeeze.one/uploads/images/gallery/2022-11/image-1668790373662.png) #### Trefferliste der Dokumentensuche [](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1669893706730.png) #### Dashboard [](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.
[](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. [](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. [](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)
[](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 [](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 [](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. [](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318259869.png) - In diesem Fenster die Aktion "Erste Zeile als Überschrift verwenden" auswählen [](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 [](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 [](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)" [](https://docs.squeeze.one/uploads/images/gallery/2022-12/image-1670318504256.png) - Zuletzt laden Sie die Übersetzungen in der UI wieder hoch. #### Übersetzung von InhaltenAktuell 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: [](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** |
v2Viewer | Ist der v2 Viewer in der v2 UI nutzbar? | X | < 2.3.0 |
v1Viewer | Ist der v1 Viewer in der v2 UI nutzbar? | X | < 2.3.0 |
v2Ui | Ist die v2 UI nutzbar? | X | < 2.3.0 |
v1Ui | Ist die v1 UI nutzbar? | X | < 2.3.0 |
masterDataTablePermissions | Soll ein komplexeres Berechtigungssytsem in der Stammdatenverwaltung genutzt werden? | < 2.3.0 | |
jobManagement | Soll das v2 Jobsystem in der Benutzeroberfläche sichtbar sein? | < 2.3.0 | |
documentLog | Darf 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 | |
savedDocumentSearches | Können User Dokumenten-Suchen abspeichern und sehen diese als gespeicherte Suchen im Dashboard uws.? | >= 2.3.0 | |
translationAdministration | Können User in der Administration Sprachen und Übersetungen administrieren? | >= 2.3.0 | |
uiConfigExport | Können User in der Administration Dokumentenklassen exportieren? | >= 2.5.0 | |
uiConfigImport | Können User in der Administration Dokumentenklassen importieren? | >= 2.5.0 | |
uiAllowDocumentUpload | Können User Dokumente hochladen? | X | >= 2.5.0 |
uiAllowDocumentSplit | Können User Dokumente aufteilen? | X | >= 2.5.0 |
pipelineAllowMultipleStepExecutions | Können Verarbeitungsschritte mehrfach mit dem selben Dokument ausgeführt werden? | >= 2.6.0 | |
configurableFieldAmountFormatting | Darf 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 | |
xmlEditor | Ist 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 | |
xmlTraining | Ist das XML-Training für Kopfdaten und Positionen aktiv? | >= 2.13 |
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 IntegrationDie 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ührungDas 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. [](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 [](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 [](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 [](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 [](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**Sollte die Datenbank bereits bestehen, werden hiermit alle vorhandenen Daten mit denen des Backups überschrieben.
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.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. [](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. [](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. [](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.