From 0b20c10c0af4d98857c3bc9c4e060d31b9e3cb25 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Sun, 16 Mar 2025 18:15:12 +0100 Subject: [PATCH] added a debug test for outlook mail, upgraded docker image --- Dockerfile | 3 +- Dockerfile-wildfly-debug | 3 +- RELEASENOTES.md | 198 +++++++++--------- docker-compose.yml | 72 +++---- office-alexander-logistics-app/pom.xml | 2 +- .../TestIMAPOutlookOAuth.java | 117 +++++++++-- pom.xml | 4 +- 7 files changed, 250 insertions(+), 149 deletions(-) diff --git a/Dockerfile b/Dockerfile index fa65408..8b0100f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM imixs/imixs-office-workflow:5.1.0 +FROM imixs/imixs-office-workflow:5.1.1-SNAPSHOT-wildfly-27.0.1.Final-jdk17 +#FROM imixs/imixs-office-workflow:5.1.0 # Setup debug configuration # COPY ./docker/configuration/standalone-debug.xml /opt/jboss/wildfly/standalone/configuration/ diff --git a/Dockerfile-wildfly-debug b/Dockerfile-wildfly-debug index 434b6ba..2e9c369 100644 --- a/Dockerfile-wildfly-debug +++ b/Dockerfile-wildfly-debug @@ -1,4 +1,5 @@ -FROM imixs/imixs-office-workflow:5.1.0 +FROM imixs/imixs-office-workflow:5.1.1-SNAPSHOT-wildfly-27.0.1.Final-jdk17 +#FROM imixs/imixs-office-workflow:5.1.0 # Deploy artefact RUN rm -r /opt/jboss/wildfly/standalone/deployments/* diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b37b2c8..8c9dc88 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,153 +1,159 @@ # Versionen -### 1.3.1 (Development - Office-Workflow 5.0.4 ) +### 1.3.3 (Development) - - Mulit Currecy Feature für Ausgangsrechnungen - - Neue Analyse Boards - - Neue SOA - - Neues Mahnwesen +- Imixs-Archive 3.1.1. Compactor Sevrvice +Migration: +set ARCHIVE_SNAPSHOT_GRACE_PERIOD= 5 +set ARCHIVE_SNAPSHOT_COMPACTOR= enabled -### 1.3.0 +### 1.3.2 - - Migration auf Imixs-Office-Workflow 5.0.2 - - Upgrade Imixs-Workflow 6.7 - - Beim XML Invoice Import wird nun auch die Sprache für das Mahnwesen ermittelt (fehlte) - - Währungsunabhängigkeit - - Lucene Index: item 'cdtr.name' und 'document.company' wurde in den index aufgenommen wegen AI Examples Adapter - - Fix Fälligkeit in maske - - Fix XML Schnittstelle Cargosoft Sammelgutschrift - - Zahlungseingang kann nun korrigiert werden. => modell update 'zahlungseingang-de-1.0.5' und 'rechnungsausgang-de-1.0.13' - - fix Zahlungseingangs Formular +- Posteingang Worklfow - timeout logic +- added lucene client to docker image +- added optional oidc profile + +### 1.3.1 + +- Imixs-Office-Workflow 5.0.4 +- Mulit Currecy Feature für Ausgangsrechnungen +- Neue Analyse Boards +- Neue SOA +- Neues Mahnwesen + +### 1.3.0 + +- Migration auf Imixs-Office-Workflow 5.0.2 +- Upgrade Imixs-Workflow 6.7 +- Beim XML Invoice Import wird nun auch die Sprache für das Mahnwesen ermittelt (fehlte) +- Währungsunabhängigkeit +- Lucene Index: item 'cdtr.name' und 'document.company' wurde in den index aufgenommen wegen AI Examples Adapter +- Fix Fälligkeit in maske +- Fix XML Schnittstelle Cargosoft Sammelgutschrift +- Zahlungseingang kann nun korrigiert werden. => modell update 'zahlungseingang-de-1.0.5' und 'rechnungsausgang-de-1.0.13' +- fix Zahlungseingangs Formular **Migration** - 1. Parameter Pflegen - a) Währungen pflegen - - DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - - PL = PLN;EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - - DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - b) Mandant ID +1. Parameter Pflegen + a) Währungen pflegen - 2. OP Listen Template im Textbaustein aktualisieren + - DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD + - PL = PLN;EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD + - DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD + b) Mandant ID - 3. Alle Workflow Modelle erneuern +2. OP Listen Template im Textbaustein aktualisieren +3. Alle Workflow Modelle erneuern +### 1.2.21 (Draft) - -### 1.2.21 (Draft) - - - Beim XML Invoice Import wird nun auch die Sprache für das Mahnwesen ermittelt (fehlte) - - Währungsunabhängigkeit - +- Beim XML Invoice Import wird nun auch die Sprache für das Mahnwesen ermittelt (fehlte) +- Währungsunabhängigkeit **Migration** - 1. Paramter Pflegen - a) Währungen pflegen - - DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - - PL = PLN;EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - - DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD - b) Mandant ID +1. Paramter Pflegen + a) Währungen pflegen - 2. OP Listen Template im Textbausteein aktualisieren + - DE = EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD + - PL = PLN;EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD + - DWC = AED; EUR;CHF;SEK;RUB;NOK;GBP;USD;CAD + b) Mandant ID - 3. Alle Workflow Modelle erneuern +2. OP Listen Template im Textbausteein aktualisieren + +3. Alle Workflow Modelle erneuern ### 1.2.20 (Development) - - Optimierung OP-Liste nach KW - - Fix Fälligkeit in maske - - Fix XML Schnittstelle Cargosoft Sammelgutschrift +- Optimierung OP-Liste nach KW +- Fix Fälligkeit in maske +- Fix XML Schnittstelle Cargosoft Sammelgutschrift -### 1.2.19 +### 1.2.19 - - Neue XML Invoice Schnittstelle - - Mahnwesen englisch +- Neue XML Invoice Schnittstelle +- Mahnwesen englisch +### 1.2.18 -### 1.2.18 +- Fix in Archiv Suche CustomSearchController.java - requestscoped - - Fix in Archiv Suche CustomSearchController.java - requestscoped +### 1.2.17 -### 1.2.17 +- neue Archive suche +- invoice.exchangerate Input ersetzt nun . durch , und locale='de' damit der Wert richtig gespeichert wird!! - - neue Archive suche - - invoice.exchangerate Input ersetzt nun . durch , und locale='de' damit der Wert richtig gespeichert wird!! +### 1.2.16 -### 1.2.16 - - - Upgrade Imixs-Archive auf 2.4.2 - verbesserter IMAP Import - - Upgarde Imixs-Adapters 2.3.3-SNAPSHOT - - Umstellung auf neue Imixs-Archive Backup Technik - - - Neuer manueller SEPA Lauf mit version: - - rechnungseingang-de-1.2.35, - - rechnungseingang_sachrechnung-de-1.0.21, - - rechungseingang-sachrechnung-pl-1.0.1 - - sepa-export-manual-3.0.0 - - sepa-export-manual-pl-3.0.1 +- Upgrade Imixs-Archive auf 2.4.2 - verbesserter IMAP Import +- Upgarde Imixs-Adapters 2.3.3-SNAPSHOT +- Umstellung auf neue Imixs-Archive Backup Technik +- Neuer manueller SEPA Lauf mit version: + - rechnungseingang-de-1.2.35, + - rechnungseingang_sachrechnung-de-1.0.21, + - rechungseingang-sachrechnung-pl-1.0.1 + - sepa-export-manual-3.0.0 + - sepa-export-manual-pl-3.0.1 **Achtung**: Kubernetes Deploymets müssen angepasst werden (siehe AGL Polen) -### 1.2.15 - - kleinere Layout Anpassungen in den Formualren und input Feldern (Positionstabelle, Sachbearbeiter Auswahl...) - - invoice.exchangerate Input ersetzt nun , durch . damit der Wert richtig gespeichert wird. - - Fix Cargosoft DATEV Import - Korektur des Rechnungsdatums / Jahr - - Neuer Rest Service für Korrektur von Cargsoft Ausgangsrechnungen +### 1.2.15 - https://alexander-logistics.office-workflow.de/api/cargosoft/fix/100 +- kleinere Layout Anpassungen in den Formualren und input Feldern (Positionstabelle, Sachbearbeiter Auswahl...) +- invoice.exchangerate Input ersetzt nun , durch . damit der Wert richtig gespeichert wird. +- Fix Cargosoft DATEV Import - Korektur des Rechnungsdatums / Jahr +- Neuer Rest Service für Korrektur von Cargsoft Ausgangsrechnungen -### 1.2.14 + https://alexander-logistics.office-workflow.de/api/cargosoft/fix/100 - - Internationalisierung +### 1.2.14 - -### 1.2.13 +- Internationalisierung - - Payment Statistik - - Neue Indexfelder 'invoice.date' 'payment.date' +### 1.2.13 + +- Payment Statistik +- Neue Indexfelder 'invoice.date' 'payment.date' **WICHTIG:** Es muss nach dem Update einmal der Index neu berechnet werden. -### 1.2.12 +### 1.2.12 - - Neue Debitoren/Kreditoren Verwaltung - Zusätzliche E-Mail - Realisiert über neue Custom Feld 'textlist' - - validierung e-mail erfolgt über Adapter und Workflow Rule +- Neue Debitoren/Kreditoren Verwaltung - Zusätzliche E-Mail + Realisiert über neue Custom Feld 'textlist' + - validierung e-mail erfolgt über Adapter und Workflow Rule +### 1.2.10 - -### 1.2.10 - - Inkasso Workflow - +Inkasso Workflow ### 1.2.8 - Neue KI Version - - Rechnungasausgangsworkflow + Mahnwesen + OP - - Zalungsavis für SEPA Rechnungen freigeschaltet - +Neue KI Version + +Rechnungasausgangsworkflow + Mahnwesen + OP + +Zalungsavis für SEPA Rechnungen freigeschaltet ### 1.2.7 - Erweiterte Kreditoren Verwaltung. Es können bis zu 4 IBAN/BIC Kombinationen pro Kreditor erfasst werden. - - Wenn vom Benutezr bei der Rechnungserfassugn eine Kombination eingegeben wird die noch nicht gespeichert war, - wird diese aufgenomen und die anderen rutschen nach unten. +Erweiterte Kreditoren Verwaltung. Es können bis zu 4 IBAN/BIC Kombinationen pro Kreditor erfasst werden. + +Wenn vom Benutezr bei der Rechnungserfassugn eine Kombination eingegeben wird die noch nicht gespeichert war, +wird diese aufgenomen und die anderen rutschen nach unten. ### 1.2.6 - Übernahme von IBAN BIC aus kreditoren verwaltung +Übernahme von IBAN BIC aus kreditoren verwaltung -### 1.1.1 +### 1.1.1 - - Cargosoft Splitbuchungen - Es können zu einer Rechnung mehrere Cargosoft Exporte erzeugt werden. Die Sub Rechnungsnummern stehen im Feld numsequencenumber_sub - - Neue Modellversion rechnungseingnag-de-1.2.0 und posteingang-de-1.0.4 - - Das Modell rechnungseingnag-de-1.1.3 kann nach einigen Wochen entfernt werden \ No newline at end of file +- Cargosoft Splitbuchungen - Es können zu einer Rechnung mehrere Cargosoft Exporte erzeugt werden. Die Sub Rechnungsnummern stehen im Feld numsequencenumber_sub +- Neue Modellversion rechnungseingnag-de-1.2.0 und posteingang-de-1.0.4 +- Das Modell rechnungseingnag-de-1.1.3 kann nach einigen Wochen entfernt werden diff --git a/docker-compose.yml b/docker-compose.yml index 5c1c8b4..77e21cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -56,54 +56,54 @@ services: ############################################### # Tika OCR Service ############################################### - tika: - #image: apache/tika:latest - #image: apache/tika:1.24.1-full - image: apache/tika:2.4.1-full - environment: - TZ: "Europe/Berlin" - ports: - - "9998:9998" + # tika: + # #image: apache/tika:latest + # #image: apache/tika:1.24.1-full + # image: apache/tika:2.4.1-full + # environment: + # TZ: "Europe/Berlin" + # ports: + # - "9998:9998" ################## # Exporter Service ################## - imixsexporter-app: - image: imixs/imixs-archive-exporter - environment: - # EXAMPLE SETUP - WORKFLOW_SERVICE_ENDPOINT: "http://app:8080/api" - WORKFLOW_SERVICE_USER: "admin" - WORKFLOW_SERVICE_PASSWORD: "adminadmin" - WORKFLOW_SERVICE_AUTHMETHOD: "form" - METRICS_ENDPOINT: "http://localhost:9991/metrics" - HEALTH_ENDPOINT: "http://localhost:9991/health" - EXPORT_PATH: "/agl/dwc-test" - EXPORT_FTP_HOST: "u248962.your-storagebox.de" - EXPORT_FTP_PORT: "21" - EXPORT_FTP_USER: "u248962-sub4" - EXPORT_FTP_PASSWORD: "en4g3f1Jw0WlQ9Yb" - ports: - - "8081:8080" - - "8788:8787" + # imixsexporter-app: + # image: imixs/imixs-archive-exporter + # environment: + # # EXAMPLE SETUP + # WORKFLOW_SERVICE_ENDPOINT: "http://app:8080/api" + # WORKFLOW_SERVICE_USER: "admin" + # WORKFLOW_SERVICE_PASSWORD: "adminadmin" + # WORKFLOW_SERVICE_AUTHMETHOD: "form" + # METRICS_ENDPOINT: "http://localhost:9991/metrics" + # HEALTH_ENDPOINT: "http://localhost:9991/health" + # EXPORT_PATH: "/agl/dwc-test" + # EXPORT_FTP_HOST: "u248962.your-storagebox.de" + # EXPORT_FTP_PORT: "21" + # EXPORT_FTP_USER: "u248962-sub4" + # EXPORT_FTP_PASSWORD: "en4g3f1Jw0WlQ9Yb" + # ports: + # - "8081:8080" + # - "8788:8787" ############################################### # Imixs-Admin ############################################### - imixsadmin: - image: imixs/imixs-admin - ports: - - "8888:8080" + # imixsadmin: + # image: imixs/imixs-admin + # ports: + # - "8888:8080" ############################################### # Mailgateway ############################################### - mailgateway: - image: imixs/exim4 - environment: - EXIM_SMARTHOST: "www149.your-server.de:25" - EXIM_PASSWORD: "www149.your-server.de:webmaster@imixs.com:$MAILPASSWORD" - EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.18.0.0/12:192.168.0.0/16" + # mailgateway: + # image: imixs/exim4 + # environment: + # EXIM_SMARTHOST: "www149.your-server.de:25" + # EXIM_PASSWORD: "www149.your-server.de:webmaster@imixs.com:$MAILPASSWORD" + # EXIM_ALLOWED_SENDERS: "10.0.0.0/8:172.18.0.0/12:192.168.0.0/16" # prometheus: # image: prom/prometheus:latest diff --git a/office-alexander-logistics-app/pom.xml b/office-alexander-logistics-app/pom.xml index e50f971..43cd36a 100644 --- a/office-alexander-logistics-app/pom.xml +++ b/office-alexander-logistics-app/pom.xml @@ -6,7 +6,7 @@ office-alexander-logistics com.alexander-logistics - 1.3.2 + 1.3.3 office-alexander-logistics-app war diff --git a/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestIMAPOutlookOAuth.java b/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestIMAPOutlookOAuth.java index daef2fb..fc7859e 100644 --- a/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestIMAPOutlookOAuth.java +++ b/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/TestIMAPOutlookOAuth.java @@ -8,17 +8,6 @@ import java.io.StringWriter; import java.util.Map; import java.util.Properties; -import javax.mail.Address; -import javax.mail.BodyPart; -import javax.mail.Folder; -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Multipart; -import javax.mail.Part; -import javax.mail.Session; -import javax.mail.Store; -import javax.mail.internet.MimeBodyPart; - import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; @@ -27,14 +16,25 @@ import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; +import org.eclipse.angus.mail.imap.IMAPFolder; import org.imixs.archive.importer.mail.IMAPImportHelper; import org.junit.Ignore; import org.junit.Test; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; -import com.sun.mail.imap.IMAPFolder; +import jakarta.mail.Address; +import jakarta.mail.BodyPart; +import jakarta.mail.Folder; +import jakarta.mail.Message; +import jakarta.mail.MessagingException; +import jakarta.mail.Multipart; +import jakarta.mail.Part; +import jakarta.mail.Session; +import jakarta.mail.Store; +import jakarta.mail.internet.MimeBodyPart; +import jakarta.mail.internet.MimeUtility; import junit.framework.Assert; /** @@ -92,6 +92,99 @@ public class TestIMAPOutlookOAuth { } + /** + * Debug reading first mail.... + */ + @Test + @Ignore + public void TestMailboxImixsDebug() { + Store store = null; + String token = null; + try { + // try to connect... + token = getAuthToken(); + Assert.assertNotNull(token); + store = connect(token, "imixs@alexander-logistics.com"); + Assert.assertNotNull(store); + + if (!store.isConnected()) { + // not connected! + } else { + // read inbox.... + IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX"); + inbox.open(Folder.READ_WRITE); + // fetches all messages from the INBOX... + Message[] messages = inbox.getMessages(); + System.out.println("..." + messages.length + " new messages found"); + for (Message message : messages) { + Address[] fromAddress = null; + String subject = null; + + // if we can not open the mail (messaging Exception) than we simply skipp this + // mail see Issue #175 + try { + System.out.println("...try to open first message..."); + fromAddress = message.getFrom(); + subject = message.getSubject(); + } catch (MessagingException me) { + System.out.println("...Failed to read message from inbox: " + me.getMessage()); + Assert.fail(); + } + + System.out.println("......received mail from: " + fromAddress[0].toString()); + System.out.println("......subject = " + subject); + + Object contentObject = message.getContent(); + if (contentObject instanceof Multipart) { + System.out.println("......found multipart"); + // here we are save to cast the content to Mulipart + Multipart multiPart = (Multipart) message.getContent(); + System.out.println("......multipartcount = " + multiPart.getCount()); + for (int i = 0; i < multiPart.getCount(); i++) { + + BodyPart bodyPart = multiPart.getBodyPart(i); + if (bodyPart instanceof MimeBodyPart) { + MimeBodyPart mimeBodyPart = (MimeBodyPart) multiPart.getBodyPart(i); + if (Part.ATTACHMENT.equalsIgnoreCase(mimeBodyPart.getDisposition())) { + + String fileName = mimeBodyPart.getFileName(); + if (fileName == null) { + System.out.println("...skip detaching file, because of missing filename"); + continue; // skip this attachment + } + + // decode filename (issue #202) + fileName = MimeUtility.decodeText(fileName); + System.out.println("... filename = " + fileName); + // detach only add PDF files? + + // add this attachment + InputStream input = mimeBodyPart.getInputStream(); + byte[] content = IMAPImportHelper.readAllBytes(input); + String contentType = mimeBodyPart.getContentType(); + + System.out.println("mimetype=" + contentType); + + System.out.println("content size=" + content.length); + + } + } + } + } + + break; + } + } + } catch (IOException e) { + e.printStackTrace(); + Assert.fail(); + } catch (MessagingException e) { + e.printStackTrace(); + Assert.fail(); + } + + } + @Test public void TestMailboxImixsBHV() { Store store = null; diff --git a/pom.xml b/pom.xml index 1de42dc..ca7f21f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.alexander-logistics office-alexander-logistics - 1.3.2 + 1.3.3 pom Imixs Office Workflow - Custom Build @@ -32,7 +32,7 @@ 3.1.1-SNAPSHOT 3.0.3 - 2.0.2 + 2.1.1-SNAPSHOT 6.0 9.9.1-4 2.0.26