Direkt zum Hauptinhalt

MESO-WorkerService

CSS EDV Support Logo

.NETAutomatisierungsdienst Dienstfür Mesonic WinLine Hintergrunddienst zur Automatisierung von HintergrundaufgabenE-Mail-Versand, zurWorkflow-Verwaltung Mesonicund WinLineÜberwachung in WinLine-Umgebungen.


Übersicht

MaildienstWas ist MesoWorkerService?

MesoWorkerService ist ein Automatisierungsdienst für Mesonic WinLine, der Hintergrundaufgaben selbstständig ausführt. Der dotnetDienst basiert auf .NET 9 Dienst versendet automatisch eMails auf Basis eines hierarchischen Regelsystems.

Mandantenübergreifend können Workflows zu Workflowgruppen zusammengefasst werden (z.B. alle Workflows, die eine automatische Benachrichtigung an den Kunden erfordern).

Jede Workflowgruppeund kann zusätzlich mittels Filterkriterien flexibel eine Selektion der tatsächlich relevanten Fälle zugewiesen werden, so dass z.B. nur Fälle mit einer bestimmten Eigenschaft ("Mailversand = JA") oder nur für bestimmte Kunden herangezogen werden.

Zusätzliche Einstellungen wie Selektion von Anhängen, die angefügt werden sollen (aus dem ersten, zweiten, letzten oder allen Schritten) - optional auch eingeschränkt auf ein spezifisches Archivformular - die Selektion der Empfänger (Kunde, Ansprechpartner, oder statische Empfänger) sowie einer objektbasierten Gestaltung des Mailtextes aus Kontext-Variablen des Workflows (z.B. Projekt => Bezeichnung, Kunde => FaktStamm => Umsatz) sowie Inhalt von Eigenschaften des Falles (z.B. "Gewählte Ausführung: Rot") runden den Dienst ab.

Das MesoWorker E-Mail-System bietet ein leistungsstarkes, hierarchisches Empfängerverwaltungssystem für die automatische E-Mail-Versendung basierend auf Workflow-Ereignissen. Es unterstützt sowohl klassischeals boolean-basierte KonfigurationenWindows-Dienst als auch erweiterteals regelbasierteContainer Empfängerverwaltung mit einem dreistufigen Prioritätssystem (Hauptpriorität, Verarbeitungsreihenfolge, Verarbeitung bei Treffer stoppen) für maximale Flexibilität und Kontrolle.

Es können beliebig viele SMTP-Accounts inkl. M365 mit OAuth Authentifizierung angelegtbetrieben werden.

Eine grafische Administrationsoberfläche inkl. Mail-Journal und Benachrichtigung per eMail, wenn eine geplante Mail nicht versandt werden konnte, steht für Administratoren zur Verfügung.

Workflow-Erzeugung aus BestelldateizeilenHauptfunktionen

Der MesoWorkerService unterstütztbietet nundrei auch die automatische Erzeugung von CRM-Fällen auf Basis von Bestelldateizeilen (BestelldateiMitte). Diese Funktion ermöglicht es, für jede passende Belegzeile automatisch einen Workflow-Fall zu erstellen.Hauptfunktionen:

Hauptfunktionen:1. Automatischer E-Mail-Versand

  • Versendet AutomatischeE-Mails automatisch basierend auf Workflow-Ereignissen in WinLine
  • Unterstützt hierarchische Empfängerregeln mit flexiblen Prioritäten
  • Ermöglicht die Verwendung mehrerer SMTP-Konten inkl. Microsoft 365 mit OAuth
  • Fügt automatisch Anhänge aus Workflows und Belegen hinzu
  • Protokolliert alle versendeten E-Mails im Mail-Journal

2. Workflow-Erzeugung aus Bestelldateizeilen

  • Erstellt automatisch CRM-Fälle aus Bestelldateizeilen (z.B. für Serviceaufträge)
  • Filtert Flexiblerelevante FilterkriterienZeilen fürnach Zeilenselektionkonfigurierbaren Kriterien
  • Verhindert Mehrfachverarbeitung wirddurch verhindertintelligente (Journal-basiert)Protokollierung
  • Ermöglicht Optionale Speicherung der Fall-ID in benutzerdefinierter Spalte
  • ✅ Konfigurierbar über bestehende WorkflowSettings
  • ✅ Läuft standardmäßig alle 5 Minuten
  • ✅ Wählbareflexible Datumsfelder fürund Workflow-ErzeugungTemplate-basierte (Lieferdatum oder KalenderStartdatum/KalenderEnddatum)Beschreibungen

Identifikation:3. Jede Zeile wird eindeutig über Kontonummer, LaufnummerÜberwachung und ZeilennummerIntern identifiziert. Bereits verarbeitete Zeilen werden im OrderLineWorkflowJournal protokolliert und bei zukünftigen Durchläufen übersprungen.

Konfiguration der Datumsfelder

Die Workflow-Erzeugung unterstützt zwei verschiedene Datumsvarianten für die Felder "Startdatum" (Feld 6) und "Enddatum" (Feld 7):

Standard-Variante (UseDatevarianteKalender = false):Warnung

  • StartdatumÜberwacht (FeldWorkflows 6):mit verwendetaktiven LieferdatumE-Mail-Regeln
  • Benachrichtigt Administratoren bei fehlenden E-Mail-Versendungen
  • Hilft bei der Belegzeile
  • frühzeitigen
  • EnddatumErkennung (Feldvon 7):Konfigurationsfehlern konfigurierbaroder überfehlenden BisDatumAssignmentMode (siehe unten)Stammdaten

Systemarchitektur

┌─────────────────────────────────────────────────────────────┐
│                    MesoWorkerService                         │
│               (.NET 9 Hintergrunddienst)                    │
└─────────────────────────────────────────────────────────────┘
                            │
            ┌───────────────┼───────────────┐
            │               │               │
            ▼               ▼               ▼
    ┌──────────────┐  ┌─────────────┐  ┌────────────────┐
    │ Mail-Dienst  │  │  Workflow-  │  │ Überwachungs-  │
    │              │  │  Erzeugung  │  │    dienst      │
    └──────────────┘  └─────────────┘  └────────────────┘
            │               │               │
            └───────────────┼───────────────┘
                            ▼
            ┌───────────────────────────────┐
            │   WinLine Datenbanken         │
            │   • CWLSYSTEM                 │
            │   • Mandanten-DB              │
            └───────────────────────────────┘
                            │
                            ▼
            ┌───────────────────────────────┐
            │   Anwendungsdatenbank         │
            │   (MesoWorkerDb)              │
            │   • Konfiguration             │
            │   • Mail-Journal              │
            │   • Protokollierung           │
            └───────────────────────────────┘

Kalender-Variante (UseDatevarianteKalender = true):Administrationsoberflächen:

  • StartdatumBlazor Web-UI (Feldbrowserbasiert, 6):Port verwendet KalenderStartdatum der Belegzeile5000)
  • EnddatumWindows (Feld 7): konfigurierbar über BisDatumAssignmentMode (siehe unten)Desktop-Client

DieEine Konfigurationdetaillierte erfolgtArchitekturübersicht überfinden die Eigenschaft UseDatevarianteKalenderSie in den OrderLineWorkflowSettingsassets/systemarchitektur.md. Standardmäßig ist diese Option deaktiviert (false), sodass die bisherigen Datumsfelder verwendet werden.

Bis-Datum Zuordnungsmodus

Das Bis-Datum (Enddatum) kann über die Eigenschaft BisDatumAssignmentMode flexibel konfiguriert werden:

  1. Bestätigtes Lieferdatum (Standard): Verwendet BestaetigtesLieferdatum der Belegzeile
  2. Lieferdatum: Verwendet Lieferdatum der Belegzeile
  3. Lieferdatum, falls bestätigtes Lieferdatum NULL: Verwendet BestaetigtesLieferdatum, falls vorhanden, sonst Lieferdatum
  4. NULL: Setzt das Bis-Datum auf NULL (kein Enddatum)
  5. Lieferdatum zzgl. Zeitversatz: Verwendet Lieferdatum plus den in BisDatumTimeSpanOffset konfigurierten Zeitraum (z.B. 7.00:00:00 für 7 Tage)
  6. Addiere Stunden aus Menge: Addiert die MengeBestellt als Stunden zum Lieferdatum (z.B. MengeBestellt = 8.5 → Bis-Datum = Lieferdatum + 8,5 Stunden)

Diese Einstellung gilt sowohl für Standard- als auch für Kalender-Variante und ermöglicht eine präzise Steuerung der Workflow-Datumsfelder.

Platzhalter und Variablenersetzung

Die Workflow-Erzeugung aus Bestelldateizeilen unterstützt flexible Templates mit Platzhaltern, die automatisch durch echte Werte aus den Bestelldaten ersetzt werden. Dies ermöglicht die dynamische Generierung von Workflow-Texten basierend auf den tatsächlichen Belegdaten.

Verfügbare Platzhalter:

Templates können auf zwei Ebenen auf Daten zugreifen:

  1. Zeilenebene (BestelldateiMitte) - Direkte Felder der Belegzeile:

    {Artikelnummer}              - Artikelnummer der Zeile
    {Bezeichnung}                - Artikelbezeichnung
    {Menge}                      - Bestellmenge
    {Einzelpreis}                - Preis pro Einheit
    {Gesamtwert}                 - Gesamtpreis der Zeile
    {Lieferdatum}                - Geplantes Lieferdatum
    {BestaetigtesLieferdatum}    - Bestätigtes Lieferdatum
    {Projektnummer}              - Zugeordnetes Projekt
    {Vertreternummer}            - Zuständiger Vertreter
    {Kostenstelle}               - Kostenstelle
    {Kostentraeger}              - Kostenträger
    
  2. Belegebene (BestelldateiKopf) - Felder des zugehörigen Belegs:

    {BestelldateiKopf.Auftragsnummer}    - Auftragsnummer
    {BestelldateiKopf.Belegnummer}       - Belegnummer
    {BestelldateiKopf.Belegart}          - Belegart (z.B. KA, LA)
    {BestelldateiKopf.Datum}             - Belegdatum
    {BestelldateiKopf.Kundennummer}      - Kundennummer
    
  3. Verschachtelte Eigenschaften - Zugriff auf verknüpfte Objekte:

    {BestelldateiKopf.Konto.Name}                    - Kundenname
    {BestelldateiKopf.Konto.Adresse.Anrede}         - Kundenanrede
    {BestelldateiKopf.Konto.Adresse.Strasse}        - Kundenstraße
    {BestelldateiKopf.Konto.Adresse.Ort}            - Kundenort
    {BestelldateiKopf.Konto.Adresse.PLZ}            - Kundenpostleitzahl
    

Formatierung:

Werte können mit Standard .NET-Formatstrings formatiert werden:

{Lieferdatum:dd.MM.yyyy}             - Datum formatiert: 15.12.2025
{Lieferdatum:yyyy-MM-dd}             - Datum formatiert: 2025-12-15
{Einzelpreis:N2}                     - Zahl mit 2 Dezimalstellen: 12,50
{Einzelpreis:C}                      - Als Währung: 12,50 €
{Menge:N0}                           - Zahl ohne Dezimalstellen: 10
{Gesamtwert:C2}                      - Währung mit 2 Dezimalstellen: 125,00 €

Beispiel-Templates:

Kurzbeschreibung:

{BestelldateiKopf.Auftragsnummer}: {Artikelnummer} {Bezeichnung}

Ergebnis: AUF-12345: ART001 Premium-Widget

Langbeschreibung Intern:

Artikel: {Artikelnummer}
Bezeichnung: {Bezeichnung}
Menge: {Menge:N2} Stück
Einzelpreis: {Einzelpreis:C2}
Gesamtwert: {Gesamtwert:C2}
Lieferdatum: {Lieferdatum:dd.MM.yyyy}

Langbeschreibung Extern:

Lieferung für {BestelldateiKopf.Konto.Adresse.Anrede} {BestelldateiKopf.Konto.Name}

Artikel: {Artikelnummer} - {Bezeichnung}
Menge: {Menge} Stück
Lieferadresse:
{BestelldateiKopf.Konto.Adresse.Strasse}
{BestelldateiKopf.Konto.Adresse.PLZ} {BestelldateiKopf.Konto.Adresse.Ort}

Geplantes Lieferdatum: {Lieferdatum:dd.MM.yyyy}

Hinweise zur Verwendung:

  • Platzhalter müssen in geschweiften Klammern {} stehen
  • Groß-/Kleinschreibung bei Feldnamen beachten
  • Bei verschachtelten Eigenschaften den Punkt . als Trennzeichen verwenden
  • Format-Spezifikationen mit Doppelpunkt : angeben
  • Wenn ein Feld nicht existiert oder leer ist, wird der Platzhalter durch einen leeren String ersetzt

Screenshots

SMTP Konto!

EMail Einstellungen!

Mail-Template!


Systemvoraussetzungen

WinLine:

  • Kompatible WinLine Version: abMesonic WinLine Edition 2022

    oder neuer
  • MDP Runtime Lizenz (vom Mesonic Vertriebspartner bereitzustellen)

    Vertriebspartner)
  • Optional Mesonic Server 64 Bit um(optional, nur für automatische Workflow-SchritteSchritt-Erstellung anlegenerforderlich)

  • zu
lassen

Betriebssystem und Runtime:

  • Windows Server 2016 oder neuer (für Windows-Dienst)
  • dotnet.NET 9 Runtime (Download)

  • Alternativ: Container-Runtime (Docker, Podman) für Container-Deployment

Netzwerk:

Um

    die
  • Zugriff Anwendungauf auszuführen,WinLine-Datenbank ist(SQL dieServer)
  • dotnet
  • Zugriff 9auf RuntimeSMTP-Server erforderlich.für DieseE-Mail-Versand
  • kann
  • Optional: vonZugriff derauf offiziellenMesonic MicrosoftServer Webseitefür heruntergeladen und dann installiert werden: Download dotnet 9 Runtime

    Workflow-Schritte

Installation

Der MesoWorkerService kann auf zwei verschiedene Arten betrieben werden:

Option 1: On-Premise Windows Windows-Dienst

Der Service wird als Windows-Dienst auf einem Server installiert und läuft permanent im Hintergrund.

Voraussetzungen:

  • Windows Server 2016 oder Windows 10/11neuer
  • dotnet.NET 9 Runtime installiert
  • Direkte NetzwerkverbindungNetzwerkzugriff zur WinLine-Datenbank

Installation:Installationsschritte:

Bitte
  1. Download der Anwendung

    • Laden Sie das Windows-Dienst-Paket herunter: MesoWorkerService-win-x64.zip
    • Entpacken Sie das Archiv in ein Verzeichnis (z.B. C:\MesoWorkerService)
  2. Installation als Windows-Dienst

    Für die Installation des Windows-Dienstes wenden Sie sich für die On-Premise Installationbitte an den Support: [email protected]

  3. Konfigurationsdatei anpassen

    Öffnen Sie die Datei appsettings.json im Installationsverzeichnis und passen Sie die Einstellungen an (siehe Windows-Dienst Konfiguration).

  4. Dienst starten

    Starten Sie den Windows-Dienst über die Dienste-Verwaltung oder mit PowerShell:

    Start-Service MesoWorkerService
    

Vorteile:

  • Direkter Zugriff auf lokale WinLine-Installation
  • Optimale Performance bei lokaler Datenbank
  • Vollständige Kontrolle über das System
  • Einfache Integration in bestehende Windows-Infrastruktur

Nachteile:

  • ⚠️ Erfordert Windows Server-Umgebung
  • ⚠️ Manuelle Installation und Wartung
  • ⚠️ dotnet.NET 9 Runtime muss installiert werden
  • ⚠️ Skalierung nur über Hardware-Upgrades

Option 2: Container-Deployment

Der Service wird als Container betrieben und kann auf verschiedenen Plattformen ausgeführt werden.

Verfügbare Container Images:

Deployment-Optionen:

  • Docker Compose
  • Portainer Stacks
  • Kubernetes
  • Docker Swarm

BeispielInstallationsschritte:

  1. Container-Runtime installieren

    Installieren Sie Docker Composeoder Stack:Podman auf Ihrem System.

  2. Stack-Datei erstellen

    Erstellen Sie eine docker-compose.yml Datei oder nutzen Sie Portainer Stack (siehe Portainer Stack Konfiguration).

  3. Umgebungsvariablen konfigurieren

    Passen Sie die Umgebungsvariablen in der Stack-Datei an Ihre Umgebung an (siehe Portainer Stack Konfiguration).

  4. Container starten

    Mit Docker Compose:

    services:docker-compose mesoworkerservice-ui:
        image: ghcr.io/css-edv-support/mesoworkerservice-blazor:${IMAGETAG}
        pull_policy: always
        container_name: mesoworkerservice-ui
        restart: unless-stopped
        hostname: mesoworkerservice-ui
        ports:up - "8012:5000"
        environment:
          # Database Connections (REQUIRED)
          - ConnectionStrings__ConnectionString=${CONNECTION_STRING}
          - ConnectionStrings__WinLineSystemDBConnectionString=${WINLINE_SYSTEM_DB_CONNECTION_STRING}
    
      mesoworkerservice:
        image: ghcr.io/css-edv-support/mesoworkerservice-service:beta
        pull_policy: always
        container_name: mesoworkerservice
        hostname: mesoworkerservice
        ports:
          - "8013:5000"
        environment: 
          # Container Configuration
          - ASPNETCORE_ENVIRONMENT=Production
          - DOTNET_RUNNING_IN_CONTAINER=true
          - ASPNETCORE_URLS=http://+:5000
          - TZ=Europe/Berlin
          - LANG=de_DE.UTF-8
          
          # License Configuration (REQUIRED)
          - LICENSE_CUSTOMER_NR=${LICENSE_CUSTOMER_NR}
          - LICENSE_LICENSE_NR=${LICENSE_LICENSE_NR}
          
          # Database Connections (REQUIRED)
          - ConnectionStrings__ConnectionString=${CONNECTION_STRING}
          - ConnectionStrings__WinLineSystemDBConnectionString=${WINLINE_SYSTEM_DB_CONNECTION_STRING}
          
          # WinLine Configuration (REQUIRED)
          - WinLineServer__Url=${WINLINE_SERVER_URL}
          - WinLineSettings__WinLinePath=${WINLINE_PATH}
          - WinLineSettings__MesospoolServiceUrl=${MESOSPOOL_SERVICE_URL}
          - WinLineSettings__TemplateForWorkflowImport=101
          
          # Session Settings
          - SessionSettings__MinimumSessions=1
          - SessionSettings__DefaultUser=${WINLINE_DEFAULT_USER}
          - SessionSettings__DefaultPassword=${WINLINE_DEFAULT_PASSWORD}
          - SessionSettings__DefaultCompany=${WINLINE_DEFAULT_COMPANY}
          - SessionSettings__ValidationInterval=01:00:00
          
          # Mail Configuration (REQUIRED)
          - MailSettings__EmailFrom=${MAIL_FROM}
          - MailSettings__DisplayName=MesoWorkerService Production
          - MailSettings__SmtpHost=${SMTP_HOST}
          - MailSettings__SmtpPort=${SMTP_PORT}
          - MailSettings__SmtpUser=${SMTP_USER}
          - MailSettings__SmtpPass=${SMTP_PASSWORD}
          - MailSettings__UseSSL=${SMTP_USE_SSL}
          - MailSettings__UseStartTls=${SMTP_USE_STARTTLS}
          - MailSettings__AdminMailRecipients__0=${ADMIN_EMAIL}
          
          # Quartz Job Configuration
          - Quartz__MailWorkerJob__scheduler=0/30 * * * * ?
          - Quartz__MailWorkerJob__enabled=true
          - Quartz__MailWorkerJob__startnow=false
          - Quartz__NoRuleWarningJob__scheduler=0 0 8 * * ?
          - Quartz__NoRuleWarningJob__enabled=true
          - Quartz__NoRuleWarningJob__startnow=false
          - Quartz__quartz.scheduler.instanceName=Meso Worker Services Scheduler (Production)
          
          # Logging Configuration
          - Logging__LogLevel__Default=Information
          - Logging__LogLevel__Microsoft.Hosting.Lifetime=Information
          - Logging__LogLevel__MesoWorkerService.Jobs.MailWorkerJob=Information
          - Logging__LogLevel__Quartz=Information
          - Serilog__MinimumLevel__Default=Information
          - Serilog__MinimumLevel__Override__Microsoft=Information
          - Serilog__MinimumLevel__Override__System=Warning
          - Serilog__MinimumLevel__Override__MesoWorkerService=Information
          - Serilog__MinimumLevel__Override__MesoWorkerService.Jobs=Information
          - Serilog__MinimumLevel__Override__MesoWorkerService.Jobs.MailWorkerJob=Information
          - Serilog__MinimumLevel__Override__Quartz=Information
    
        restart: unless-stopped
        
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
          interval: 3600s
          timeout: 10s
          retries: 3
          start_period: 60s
        
        # Optional: Resource limits
        deploy:
          resources:
            limits:
              memory: 1G
              cpus: '1.0'
            reservations:
              memory: 512M
              cpus: '0.5'd
    

    Mit Portainer:

    • Stack in Portainer importieren
    • Umgebungsvariablen anpassen
    • Stack deployen

Vorteile:

  • Plattformunabhängig (Linux, Windows, macOS)
  • Einfache Skalierung und Deployment
  • ✅ ContainerisierteIsolierte Umgebung mit definierten Abhängigkeiten
  • ✅ CI/CD-freundlich
  • Keine lokale dotnet-.NET-Installation erforderlich
  • ✅ Isolation und Ressourcenkontrolle
  • Einfache Updates über Image-Tags
  • Geeignet für moderne DevOps-Umgebungen

Nachteile:

  • ⚠️ Erfordert Container-Runtime (Docker, Podman)
  • ⚠️ Zusätzliche Netzwerk-Konfiguration für Datenbankzugriff
  • ⚠️ Container-Orchestrierung kann komplex sein
  • ⚠️ Debugging kann aufwendiger sein

Empfehlung

  • On-Premise: Ideal für kleinere Installationen mit direktem Server-Zugriff
  • Container: Empfohlen für moderne Infrastrukturen, Multi-Environment-Deployments und Cloud-Umgebungen

LizenzierungKonfiguration

Die License-EinstellungKonfiguration enthält die Lizenzdaten, die Ihnen von Ihrem Mesonic Partner mitgeteilt wurde.

  • CustomerNr: Die Kundennummer, die den Lizenzinhaber eindeutig identifiziert. Dieser Wert ist standardmäßig leer und muss vom Benutzer ausgefüllt werden.
  • LicenseNr: Die Lizenznummer für die Softwareaktivierung. Auch dieser Wert ist initial leer und muss vom Benutzer bereitgestellt werden.
"License": 
{
  "CustomerNr": "",
  "LicenseNr": ""
}

Grundeinstellungen

Derdes MesoWorkerService benötigt verschiedene Konfigurationseinstellungen für den ordnungsgemäßen Betrieb. Die Konfiguration erfolgt je nach Installationsmethode unterschiedlich:

  • Windows-Dienst: Über die Datei appsettings.json
  • Container: Über Umgebungsvariablen

LokaleLizenzierung

Für den Betrieb des MesoWorkerService benötigen Sie eine gültige Lizenz, die Sie von Ihrem Mesonic Partner erhalten.

Erforderliche Angaben:

  • Kundennummer: Identifiziert den Lizenzinhaber
  • Lizenznummer: Aktiviert die Software

Wichtig: Ohne gültige Lizenz startet der Service nicht.

Datenbankverbindungen

Der MesoWorkerService benötigt Zugriff auf zwei Datenbanken:

1. Anwendungsdatenbank (MesoWorkerDb)

  • Speichert Konfigurationsdaten, Mail-Journal und Protokolle
  • Wird beim ersten Start automatisch erstellt (falls nicht vorhanden)
  • Connection String Format: Data Source=SERVER;Initial Catalog=MesoWorkerDb;...

2. WinLine Systemdatenbank (CWLSYSTEM)

  • Zugriff auf WinLine Mandanten und Systemdaten
  • Connection String Format: Data Source=SERVER;Initial Catalog=CWLSYSTEM;...

Authentifizierungsoptionen:

  • Windows-Authentifizierung: Integrated Security=true
  • SQL-Authentifizierung: User ID=user;Password=pass

Wichtig: Für Container-Deployment muss SQL-Authentifizierung verwendet werden, da Windows-Authentifizierung in Containern nicht unterstützt wird.

WinLine-Integration

WinLine-Pfad:

  • Pfad zur WinLine-Installation (appsettings.json)z.B. C:\WinLine\ oder /app/winline/)
  • Erforderlich für Zugriff auf WinLine-Konfigurationsdateien
  • Wichtig für Container (Linux): Der WinLine-Pfad ist typischerweise eine Windows-UNC-Freigabe (z.B. \\winline-server\WinLine), die als Linux-Mountpoint oder Volume in den Container eingebunden werden muss
  • Wird auch für die Erstellung von CRM-Workflow-Schritten über den WinLine WebService benötigt

Mesospool Service:

  • URL zum Mesospool-Service für Dokumentenarchivierung
  • Format: http://server:42024
  • Erforderlich für Anhang-Funktionen
  • Wichtig für Container (Linux): Bei Linux-Containern ist der Mesospool-Service zwingend erforderlich, da die unter WinLinePath vorhandene mesospool.exe nicht unter Linux lauffähig ist
  • Wird generell zur Konvertierung von Archiv-Dateien im WinLine .SPL-Format in PDF-Dateien verwendet
  • Falls keine .SPL-Dateien vorliegen, ist der Service optional

WinLine Server (optional):

  • URL zum WinLine WebService (z.B. http://server:8080)
  • Erforderlich wenn automatische CRM-Workflow-Schritte erstellt werden sollen (z.B. für Workflow-Erzeugung aus Bestelldateizeilen)
  • Verwendet den WinLine-Pfad für die Workflow-Schritt-Erstellung
  • Benötigt separate Mesonic WebService-Lizenz

Session-Einstellungen:

  • Standard-Anmeldedaten für WinLine-Sessions
  • Mindestanzahl aktiver Sessions
  • Validierungsintervall für Sessions

Windows-Dienst Konfiguration

Bei der lokalen Windows-Dienst-Installation werdenerfolgt alledie EinstellungenKonfiguration inüber derdie Datei appsettings.json konfiguriert::

{
  "Kestrel": {
    "Endpoints": {
      "Http": { "Url": "http://0.0.0.0:5000" }
    }
  },
  "License": {
    "CustomerNr": "IHRE_KUNDENNUMMER"12345",
    "LicenseNr": "IHRE_LIZENZNUMMER"LIZENZNUMMER"
  },
  "ConnectionStrings": {
    "ConnectionString": "Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;Integrated Security=true;TrustServerCertificate=true",
    "WinLineSystemDBConnectionString": "Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;Integrated Security=true;TrustServerCertificate=true"
  },
  "WinLineSettings": {
    "WinLinePath": "C:\\WinLine\\",
    "MesospoolServiceUrl": "http://winline-server:42024",
    "TemplateForWorkflowImport": 101
  },
  "WinLineServer": {
    "Url": "http://winline-server:8080"
  },
  "SessionSettings": {
    "MinimumSessions": 1,
    "DefaultUser": "mesouser"winline-user",
    "DefaultPassword": "password"passwort",
    "DefaultCompany": "500M",
    "ValidationInterval": "01:00:00"
  },
  "MailSettings": {
    "EmailFrom": "[email protected]",
    "DisplayName": "MesoWorkerService",
    "SmtpHost": "smtp.firma.de",
    "SmtpPort": 587,
    "SmtpUser": "smtp-user",
    "SmtpPass": "smtp-passwort",
    "UseSSL": false,
    "UseStartTls": true,
    "AdminMailRecipients": ["[email protected]"]
  },
  "Quartz": {
    "quartz.scheduler.instanceName": "MesoWorker Scheduler",
    "MailWorkerJob": {
      "scheduler": "0/30 * * * * ?",
      "enabled": true,
      "startnow": false
    },
    "OrderLineWorkerJob": {
      "scheduler": "0 */5 * * * ?",
      "enabled": true,
      "startnow": false
    },
    "NoRuleWarningJob": {
      "scheduler": "0 0 8 * * ?",
      "enabled": true,
      "startnow": false
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Information",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/MesoWorkerService-.txt",
          "rollingInterval": "Day"
        }
      }
    ]
  }
}

Container

Wichtige InstallationEinstellungen:

  • Kestrel: Web-Server-Konfiguration (DockerStandard: EnvironmentPort Variables)5000)
  • License: Kundennummer und Lizenznummer (erforderlich)
  • ConnectionStrings: Datenbankverbindungen (erforderlich)
  • WinLineSettings: WinLine-Integration (erforderlich)
  • SessionSettings: WinLine-Session-Verwaltung
  • MailSettings: E-Mail-Versand-Konfiguration (wird meist über Admin-Oberfläche verwaltet)
  • Quartz: Job-Zeitplanung mit Cron-Expressions
  • Logging/Serilog: Protokollierungseinstellungen

Portainer Stack Konfiguration

Bei derContainer-Deployment Container-Installation werdenerfolgt die EinstellungenKonfiguration über Umgebungsvariablen gesetzt:Umgebungsvariablen:

version: '3.8'

services:
  mesoworkerservice-ui:
    image: ghcr.io/css-edv-support/mesoworkerservice-blazor:latest
    container_name: mesoworkerservice-ui
    restart: unless-stopped
    ports:
      - "8012:5000"
    environment:
      #- Kestrel Web ServerASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_URLS=http://+:5000
      # Lizenzierung (ERFORDERLICH)
  - LICENSE_CUSTOMER_NR=IHRE_KUNDENNUMMER
  - LICENSE_LICENSE_NR=IHRE_LIZENZNUMMERTZ=Europe/Berlin
      
      # DatenbankverbindungenDatenbank (ERFORDERLICH)erforderlich)
      - ConnectionStrings__ConnectionString=Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
      - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true

  mesoworkerservice:
    image: ghcr.io/css-edv-support/mesoworkerservice-service:latest
    container_name: mesoworkerservice
    restart: unless-stopped
    ports:
      - "8013:5000"
    
    # Volume-Mapping für WinLine-Pfad (erforderlich für Linux-Container)
    volumes:
      - type: bind
        source: //winline-server/WinLine  # Windows UNC-Pfad
        target: /app/winline               # Linux-Mountpoint im Container
        read_only: true
    
    environment:
      # Container-Konfiguration
      - ASPNETCORE_ENVIRONMENT=Production
      - DOTNET_RUNNING_IN_CONTAINER=true
      - ASPNETCORE_URLS=http://+:5000
      - TZ=Europe/Berlin
      - LANG=de_DE.UTF-8
      
      # Lizenzierung (erforderlich)
      - LICENSE_CUSTOMER_NR=12345
      - LICENSE_LICENSE_NR=LIZENZNUMMER
      
      # Datenbankverbindungen (erforderlich)
      - ConnectionStrings__ConnectionString=Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
      - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=sql-user;Password=sql-pass;TrustServerCertificate=true
      
      # WinLineWinLine-Konfiguration Einstellungen(erforderlich)
      - WinLineSettings__WinLinePath=/app/winline/
      - WinLineSettings__MesospoolServiceUrl=http://winline-server:42024
      - WinLineSettings__TemplateForWorkflowImport=101
      
      # WinLine Server (optional, nur für Workflow-Schritte erforderlich)Schritte)
      - WinLineServer__Url=http://winline-server:8080
      
      # Session Session-Einstellungen
      - SessionSettings__MinimumSessions=1
      - SessionSettings__DefaultUser=mesouserwinline-user
      - SessionSettings__DefaultPassword=passwordpasswort
      - SessionSettings__DefaultCompany=500M
      - SessionSettings__ValidationInterval=01:00:00
      
      # MailE-Mail-Konfiguration Worker(optional, Jobkann über Admin-UI konfiguriert werden)
      - [email protected]
      - MailSettings__DisplayName=MesoWorkerService
      - MailSettings__SmtpHost=smtp.firma.de
      - MailSettings__SmtpPort=587
      - MailSettings__SmtpUser=smtp-user
      - MailSettings__SmtpPass=smtp-passwort
      - MailSettings__UseSSL=false
      - MailSettings__UseStartTls=true
      - [email protected]
      
      # Job-Konfiguration
      - Quartz__quartz.scheduler.instanceName=MesoWorker Scheduler Production
      - Quartz__MailWorkerJob__scheduler=0/30 * * * * ?
      - Quartz__MailWorkerJob__enabled=true
      - Quartz__MailWorkerJob__startnow=false
      #- No-RuleQuartz__OrderLineWorkerJob__scheduler=0 Warning*/5 Job* * * ?
      - Quartz__OrderLineWorkerJob__enabled=true
      - Quartz__OrderLineWorkerJob__startnow=false
      - Quartz__NoRuleWarningJob__scheduler=0 0 8 * * ?
      - Quartz__NoRuleWarningJob__enabled=true
      - Quartz__NoRuleWarningJob__startnow=false
      
      # Protokollierung
      - Logging__LogLevel__Default=Information
      - Logging__LogLevel__Microsoft.Hosting.Lifetime=Information
      - Serilog__MinimumLevel__Default=Information
      - Serilog__MinimumLevel__Override__Microsoft=Information
      - Serilog__MinimumLevel__Override__System=Warning

    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5000/health"]
      interval: 3600s
      timeout: 10s
      retries: 3
      start_period: 60s
    
    deploy:
      resources:
        limits:
          memory: 1G
          cpus: '1.0'
        reservations:
          memory: 512M
          cpus: '0.5'

Wichtige Konfigurationseinstellungen

🌐 Kestrel (Web Server)

Konfigurationshinweise:

  • Zweck:Ersetzen KonfigurationSie desSQL-SERVER, integriertensql-user, Web-Serverssql-pass mit Ihren Datenbankzugangsdaten
  • Standard:Ersetzen PortSie 5000winline-server, winline-user, passwort mit Ihren WinLine-Zugangsdaten
  • Container:Ersetzen AutomatischSie 12345 und LIZENZNUMMER mit Ihrer Lizenz
  • Passen Sie smtp.firma.de, smtp-user, smtp-passwort an Ihren SMTP-Server an
  • Die E-Mail-Einstellungen können auch später über ASPNETCORE_URLSdie Admin-Oberfläche konfiguriert

🔑 License (Lizenzierung)

  • CustomerNr: Ihre Kundennummer (erhalten Sie über Ihren Mesonic Partner)
  • LicenseNr: Ihre Lizenznummer (erhalten Sie über Ihren Mesonic Partner)werden
  • Wichtig für Linux-Container:: OhneDer gültigeMesospoolServiceUrl Lizenzist startetbei derLinux-Containern zwingend erforderlich, da die mesospool.exe aus dem WinLinePath nicht unter Linux lauffähig ist. Dieser Service nichtwird zur Konvertierung von WinLine .SPL-Archivdateien in PDF verwendet.
  • Volume-Mapping für WinLine-Pfad: Der WinLine-Pfad (typischerweise eine Windows-UNC-Freigabe wie \\winline-server\WinLine) muss als Volume in den Container eingebunden werden. Passen Sie source an Ihren WinLine-Server an. Der Container greift dann über /app/winline darauf zu.

🗄️

Cron-Expressions ConnectionStringsfür (Datenbankverbindungen)

Job-Zeitplanung:

  • ConnectionString:0/30 Hauptdatenbank* für* MesoWorkerService-Daten* * ? = Alle 30 Sekunden (Mail-Dienst)
  • WinLineSystemDBConnectionString:0 Verbindung*/5 zur* WinLine-Systemdatenbank* * ? = Alle 5 Minuten (Workflow-Erzeugung)
  • Authentifizierung:0 Windows-Authentifizierung0 oder8 SQL-Authentifizierung* möglich
  • *
?

⚙️= WinLineSettingsTäglich um 8:00 Uhr (WinLine Konfiguration)

  • WinLinePath: Pfad zur WinLine-Installation
  • MesospoolServiceUrl: URL zum Mesospool-Service (für Dokumentenarchivierung)
  • TemplateForWorkflowImport: Standard-Vorlage für Workflow-Import

🌐 WinLineServer (WebService)

  • Url: URL zum WinLine WebService
  • ⚠️ Wichtig: Nur erforderlich wenn Workflow-Schritte geschrieben werden sollen
  • Lizenz: Benötigt separaten Mesonic WebService User (zusätzliche Lizenz)

👥 SessionSettings (Sitzungsverwaltung)

  • MinimumSessions: Mindestanzahl aktiver WinLine-Sitzungen
  • DefaultUser/Password/Company: Standard-Anmeldedaten für WinLine
  • ValidationInterval: Intervall für Sitzungsvalidierung

📧 MailWorkerJob (E-Mail Verarbeitung)

  • scheduler: Cron-Expression für Ausführungszeitpunkt (z.B. alle 30 Sekunden)
  • enabled: Job aktivieren/deaktivieren
  • startnow: Sofortiger Start beim Service-Start

🚀 Wichtigste Features im Überblick

  • Automatische E-Mail-Versendung basierend auf WinLine-Workflows
  • Hierarchisches Empfängerverwaltungssystem mit erweiterten Regeln
  • Multi-SMTP-Unterstützung mit M365 OAuth-Authentifizierung
  • Flexible Anhangsverwaltung aus Workflows und Belegen
  • Mandantenfähigkeit für Multi-Company-Umgebungen
  • Grafische Administrationsoberfläche (Blazor UI)
  • Mail-Journal mit umfassender Protokollierung
  • Container-ready für moderne DevOps-Umgebungen
  • Automatische Fehlerbenachrichtigung bei Mail-Problemen
  • Template-basierte E-Mails mit dynamischen Platzhaltern
  • Workflow-Filter für zeitgesteuerte Verarbeitung
  • Health-Checks für Monitoring und Überwachung
  • No-Rule Warning Service für Workflows ohne passende Mail-RegelnÜberwachungsdienst)

Erste SchritteErsteinrichtung

Nach der Installation müssenund einigeKonfiguration wichtigesind folgende Schritte zur Ersteinrichtung durchgeführt werden.erforderlich:

1.Automatische Anwendungsdatenbank erstellenDatenbankerstellung

Bei der ersten Ausführung derdes AnwendungMesoWorkerService wird automatisch die Anwendungsdatenbank erstellt.automatisch Dieserstellt, erfolgtfalls überdiese dasnoch DevExpressnicht XAFvorhanden Framework:ist.

AutomatischeAutomatischer Datenbankerstellung:Prozess:

    1. BeimDer erstenService Startprüft erkenntbeim Start, ob die AnwendungDatenbank eine leere/fehlende Datenbankexistiert
    2. DasFalls XAFnicht Frameworkvorhanden, erstelltwird die Datenbank automatisch alleangelegt
    3. Alle benötigten Tabellen werden erstellt
    4. Standard-Benutzer und -Rollen werden eingerichtet

Wichtig: Stellen Sie sicher, dass der Datenbankbenutzer die Berechtigung hat, Datenbanken zu erstellen. Falls dies nicht der Fall ist, erstellen Sie die Datenbank manuell vor dem ersten Start.

Für Container-Deployment:

Bei Container-Deployment (insbesondere wenn nur Blazor.Server verwendet wird) muss die Datenbank bei Erstinstallation oder Updates manuell aktualisiert werden:

# ErsteOption 1: Separater Update-Service im Stack (empfohlen)
services:
  mesoworkerservice-db-update:
    image: ghcr.io/css-edv-support/mesoworkerservice-blazor:latest
    container_name: mesoworkerservice-db-update
    command: ["--updateDatabase", "--forceUpdate", "--silent"]
    environment:
      - ConnectionStrings__ConnectionString=Data Source=SQL-SERVER;Initial Catalog=MesoWorkerDb;User ID=sql-user;Password=***;TrustServerCertificate=true
      - ConnectionStrings__WinLineSystemDBConnectionString=Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=sql-user;Password=***;TrustServerCertificate=true
    restart: "no"  # Wird nur manuell gestartet
# Option 2: Manuelle Ausführung mit docker run
docker run --rm Datenbank\
  wird-e automatischConnectionStrings__ConnectionString="Data erstelltSource=SQL-SERVER;Initial docker-composeCatalog=MesoWorkerDb;User upID=sql-user;Password=***;TrustServerCertificate=true" mesoworkerservice\
  -e ConnectionStrings__WinLineSystemDBConnectionString="Data Source=SQL-SERVER;Initial Catalog=CWLSYSTEM;User ID=sql-user;Password=***;TrustServerCertificate=true" \
  ghcr.io/css-edv-support/mesoworkerservice-blazor:latest \
  --updateDatabase --forceUpdate --silent

Parameter:

  • --updateDatabase - Startet den Datenbankaktualisierungsmodus
  • --forceUpdate - Erzwingt Update auch wenn Versionen übereinstimmen
  • --silent - Keine Benutzerinteraktion erforderlich

Exit Codes:

  • 0 - Update erfolgreich abgeschlossen
  • 1 - Fehler beim Update
  • 2 - Update nicht erforderlich

Für lokale Installation:Windows-Dienst:

  • Starten Sie dieden Anwendung über MesoWorker.Win.exeWindows-Dienst oder MesoWorker.Blazor.Server.führen Sie MesoWorkerService.exe aus
  • Die Datenbank wird beim ersten Start automatisch initialisiert

2. Benutzer- und RollenverwaltungBenutzeranmeldung

DasNach Systemder erstelltDatenbankerstellung automatischkönnen StandardbenutzerSie undsich an den Administrationsoberflächen anmelden.

Standard-Administrator:

  • Benutzername: Admin
  • Passwort: (leer -rollen:

    muss bei erster Anmeldung gesetzt werden)

  • Rolle: Administrators (volle Berechtigungen)

Automatisch erstellte Rollen:

  • AdministratorsAdministrators:: Vollzugriff auf alle Funktionen (IsAdministrative = true)
  • DefaultDefault:: Standardrolle für normale Benutzer mit eingeschränkten Rechten

Standard-Administrator:

Wichtig:

    Setzen
  • Benutzername: Admin
  • Passwort: Leer (mussSie bei erster Anmeldung gesetzt werden)
  • Rolle: Administrators

Passwort-Verwaltung:

  • Standard-Admin-Benutzer hat initial kein Passwort
  • Bei der ersten Anmeldung mussein einsicheres Passwort vergeben werden
  • Passwörter können über die Benutzeroberfläche geändert werden
  • Unterstützung für "Passwortden bei nächster Anmeldung ändern"-Funktionalität
Admin-Benutzer.

3. Administrationsoberflächen

Für die EinrichtungVerwaltung und Konfiguration stehen zwei AnwendungenOberflächen zur Verfügung:

Option A: WindowsBlazor Desktop Client (MesoWorker.Win)

Web-Interface

  • VerwendungURL:: Lokalehttp://localhost:5000 Administration(oder undkonfigurierter KonfigurationPort)
  • VorteileZugriff:: Über jeden modernen Webbrowser
  • Vorteile:
    • Plattformunabhängiger Vollständige XAF Desktop-FunktionalitätZugriff
    • Ideal Erweitertefür Entwicklertools verfügbarRemote-Administration
    • Moderne OptimiertWeb-Oberfläche
    • für
    • Mehrere umfangreicheAdministratoren Konfigurationsarbeitenkönnen gleichzeitig arbeiten

Verwendung:

  1. Öffnen Sie einen Webbrowser
  2. Navigieren Sie zu http://localhost:5000 (oder IP-Adresse des Servers)
  3. Melden Sie sich mit Benutzername Admin und gesetztem Passwort an

Option B: Windows Desktop-Client (nur bei Windows-Dienst)

  • StartStart:: MesoWorker.Win.exe
  • VerbindungZugriff:: DirekteDirekter DatenbankverbindungZugriff überauf ConnectionStringdem Server
  • Vorteile:
    • Erweiterte Desktop-Funktionalität
    • Optimiert für umfangreiche Konfigurationsarbeiten
    • Erweiterte Entwicklertools (falls benötigt)

    Option

  • B:
Blazor

Verwendung:

Web
    Interface
  1. Starten (Sie MesoWorker.Blazor.Server)Win.exe im Installationsverzeichnis
  2. Melden Sie sich mit Benutzername Admin und gesetztem Passwort an

Datenbank-Update bei Erstinstallation oder Updates:

Wenn Sie den Windows Desktop-Client verwenden, können Sie die Datenbank auch über die Kommandozeile aktualisieren:

MesoWorker.Win.exe --updateDatabase [--forceUpdate] [--silent]

Parameter:

  • Verwendung:--updateDatabase Web-basierte- AdministrationStartet den Datenbankaktualisierungsmodus
  • --forceUpdate - Erzwingt Update auch wenn Versionen übereinstimmen (optional)
  • --silent - Keine Benutzerinteraktion erforderlich (optional)
  • --help oder -h - Zeigt Hilfe an

VorteileExit Codes::

  • 0 Plattformunabhängiger- ZugriffUpdate erfolgreich abgeschlossen
  • 1 - Fehler beim Update
  • 2 - Update nicht erforderlich

Beispiel:

# Datenbank aktualisieren mit Benutzerinteraktion
MesoWorker.Win.exe --updateDatabase

# Datenbank aktualisieren ohne Benutzerinteraktion
MesoWorker.Win.exe --updateDatabase --silent

# Datenbank zwingend aktualisieren (auch wenn Version passt)
MesoWorker.Win.exe --updateDatabase --forceUpdate --silent

Erste Schritte nach der Anmeldung

Nach der erfolgreichen Anmeldung sollten Sie folgende Schritte durchführen:

  1. Passwort ändern

    • Ändern Sie das Admin-Passwort über Browserdie Benutzerverwaltung
    • Empfehlung: IdealStarkes fürPasswort Remote-Administration
    • mit
    • mindestens Moderne12 Web-UI
    • ✅ Gleichzeitige Nutzung durch mehrere AdministratorenZeichen
  2. URL: http://localhost:5000 (standardmäßig)
  3. Container: ghcr.io/css-edv-support/mesoworkerservice-blazor
  4. 4. E-Mail-Template-Generierung

    Das System bietet zwei Methoden zur E-Mail-Inhaltsgenerierung:

    Methode 1: Textbausteine mit Objekt-Variablen

    Einfache Textbausteine mit dynamischen Platzhaltern für Workflow-Daten:

    VerfügbareLizenz Platzhalter: Das System stellt alle Eigenschaften und Untereigenschaften des CrmIncidencesUndSchritte-Objekts zur Verfügung. Einige häufig verwendete Beispiele:

    {{Kurzbeschreibung}}                    - Workflow-Kurzbeschreibung
    {{LangbeschreibungExtern}}              - Externe Langbeschreibung
    {{OpNummer}}                            - Operations-/Workflow-Nummer
    {{AktuellsterBeleg.DatumFaktura:dd.MM.yyyy}} - Rechnungsdatum des letzten Beleges mit Formatangabe
    {{AktuellsterBeleg.Endbetrag:C2}}       - Rechnungsbetrag als Währung
    {{Kunde.Kontoname1}}                    - Firmenname 1 des Kunden
    {{Projekt.Bezeichnung1}}                - Projektbezeichnung 1
    {{DatumSchrittGeschrieben:dd.MM.yyyy}}  - Formatiertes Fallerfassungsdatum
    {Property:123}                          - Eigenschaftswert nach ID
    {UserColumn:456}                        - Benutzerdefiniertes Feld
    

    Hinweis: Alle Eigenschaften des CrmIncidencesUndSchritte-Objekts können verwendet werden, einschließlich verschachtelter Objekte (z.B. {{Kunde.Adresse.Strasse1}}, {{Projekt.Bezeichnung1}}). Die Formatierung erfolgt über Standard-.NET-Formatstrings (z.B. :dd.MM.yyyy für Datum, :C2 für Währung).

    Beispiel-Template:

    ##Empfaenger##
    
    im Anhang finden Sie Ihre Rechnung {{OpNummer}} vom {{AktuellsterBeleg.DatumFaktura:dd.MM.yyyy}}. Der Gesamtbetrag beträgt {{AktuellsterBeleg.Endbetrag:C2}}.
    
    Melden Sie sich gerne, wenn etwas unklar ist – wir unterstützen Sie schnell und unkompliziert.
    
    {{LangbeschreibungExtern}}
    
    ##Anlagen##
    

    Methode 2: DevExpress XAF MailMerge-Vorlagen

    Erweiterte Rich-Text-Vorlagen mit vollem Funktionsumfang:

    Features:prüfen

    • Überprüfen Rich-Text-Formatierung:Sie, Schriftarten,ob Farben,die TabellenLizenz korrekt hinterlegt ist
    • Der ErweiterteService Platzhalter:zeigt Komplexeeinen Objektnavigation
    • Fehler,
    • falls Bedingtedie Logik:Lizenz If-Then-Else-Konstrukte
    • ungültig
    • Schleifen: Wiederholung von Inhalten
    • Bilder: Eingebettete Grafiken und Logos
    • Tabellen: Dynamische Datenbereichstabellenist
  5. ErstellungDatenbankverbindungen von MailMerge-Vorlagen:testen

      • InStellen derSie Administrationsoberflächesicher, zudass "Mailbeide Vorlagen"Datenbanken navigierenerreichbar sind
      • NeueWinLine-Daten RichTextMailMergeData-Vorlagesollten erstellensichtbar sein
    1. Rich-Text-Editor öffnen und Inhalte gestalten
    2. Mail-Merge-Felder über Ribbon-Menü einfügen
    3. Vorlage in den Mail-Einstellungen zuweisen

    MailMerge-Beispiel:

    «TableStart:Fall»
    Projekt: «Projekt.Bezeichnung1»
    Status: «Status»
    «TableEnd:Fall»
    
    «IF «Status» = 50»
    ⚠️ DRINGEND: Sofortige Bearbeitung erforderlich
    «ENDIF»
    

    5. Konfiguration der Mail-Einstellungen

    Nach der Benutzeranmeldung konfigurieren Sie die E-Mail-Verarbeitung:

    1. SMTP-Konten einrichten (unter "SMTP Konten")
    2. Mail-Einstellungen konfigurieren (siehe GrundeinstellungenSMTP-Konten einrichten)
      • EmpfängerregelnMindestens definierenein (klassisch oder erweitert)
      • Mail-Vorlagen zuweisen (Textbausteine oder MailMerge)
      • Workflow-Filter einrichten (zeitbasiert)

    6. Erste Test-E-Mail

    Für einen ersten Test:

    1. Workflow-EinstellungenSMTP-Konto für einen Mandanten aktivieren
    2. Test-SMTP-KontoE-Mail-Versand konfigurieren
    3. EinfacheKennzeichnen Mail-EinstellungenSie mitein statischenKonto Empfängernals Standard-Konto
    4. Mail-Worker-Job

      Mandanten aktivieren

      • Prüfen Sie, welche Mandanten in der Liste angezeigt werden
      • Test-WorkflowAktivieren inSie WinLinedie auslösenMandanten, für die der Service arbeiten soll

    Erweiterte BenutzerdokumentationHauptkomponenten

    MesoWorkerService besteht aus drei Hauptkomponenten, die jeweils spezifische Aufgaben automatisch ausführen. Jede Komponente läuft als geplanter Job mit konfigurierbaren Zeitplänen.

    Mail-Dienst

    Funktion: Automatischer E-Mail-Versand basierend auf Workflow-Ereignissen in WinLine

    Ausführung: Alle 30 Sekunden (konfigurierbar über Quartz__MailWorkerJob__scheduler)

    Funktionsweise:

    Der Mail-Dienst überwacht kontinuierlich WinLine-Workflows und versendet automatisch E-Mails, wenn bestimmte Kriterien erfüllt sind.

    1. Workflow-Prüfung

      • Der Dienst ruft Workflows aus WinLine ab, die den konfigurierten Filterkriterien entsprechen
      • Filter können zeitbasiert sein (z.B. nur Workflows der letzten 24 Stunden)
      • Zusätzliche Filterkriterien ermöglichen detaillierte Selektion
    2. Empfänger-Ermittlung

      • Das System ermittelt automatisch die richtigen Empfänger basierend auf hierarchischen Regeln
      • Unterstützt Kunden, Ansprechpartner, Vertriebsmitarbeiter und statische Empfänger
      • Fallback-Mechanismen sorgen dafür, dass immer ein Empfänger gefunden wird
    3. E-Mail-Erstellung

      • Mail-Texte werden aus Vorlagen generiert
      • Platzhalter werden automatisch durch echte Workflow-Daten ersetzt
      • Anhänge werden aus Workflows und Belegen zusammengestellt
    4. Versand und Protokollierung

      • E-Mails werden über konfigurierte SMTP-Konten versendet
      • Jeder Versand wird im Mail-Journal protokolliert
      • Bei Fehlern werden Administratoren benachrichtigt

    Konfiguration:

    Mail-Einstellungen werden pro Mandant in der Administrationsoberfläche konfiguriert. Details zur Konfiguration finden Sie im Abschnitt Mail-Dienst Konfiguration.

    Screenshots:

    SMTP Konto AusführlicheSMTP-Konto AnwenderdokumentationEinstellungen

    E-Mail Einstellungen E-Mail-Einstellungen für daseinen erweiterteWorkflow

    Empfängerverwaltungssystem

    Mail-Template Mail-Vorlage mit Platzhaltern

    Workflow-Erzeugung aus Bestelldateizeilen

    Funktion: Automatische Erstellung von CRM-Fällen aus Bestelldateizeilen

    Ausführung: Alle 5 Minuten (konfigurierbar über Quartz__OrderLineWorkerJob__scheduler)

    Funktionsweise:

    Dieser Dienst ermöglicht es, aus Bestelldateizeilen in WinLine automatisch CRM-Fälle zu erzeugen. Dies ist besonders nützlich für wiederkehrende Serviceaufträge oder projektbasierte Tätigkeiten.

    1. Beleg-Überwachung

      • Der Dienst überwacht Bestelldateizeilen (z.B. Auftragspositionen)
      • Filterkriterien bestimmen, welche Zeilen verarbeitet werden
      • Unterstützt verschiedene Belegarten (Angebote, Aufträge, Lieferscheine, Rechnungen)
    2. Duplikats-Prüfung

      • Jede Zeile wird über Kontonummer, Laufnummer und Zeilennummer identifiziert
      • Bereits verarbeitete Zeilen werden übersprungen
      • Protokollierung verhindert Mehrfachverarbeitung
    3. Workflow-Erstellung

      • Für jede relevante Zeile wird automatisch ein CRM-Fall erstellt
      • Workflow-Felder werden aus Belegdaten befüllt (Kurzbeschreibung, Langbeschreibung, Datumsfelder)
      • Template-basierte Textgenerierung mit Platzhaltern
    4. Optionale Fall-ID-Speicherung

      • Die erzeugte Fall-ID kann in eine benutzerdefinierte Spalte der Belegzeile geschrieben werden
      • Ermöglicht Rückverfolgung von Beleg zu CRM-Fall

    Datumsfeldkonfiguration:

    Der Dienst unterstützt zwei Datumsvarianten:

    • Standard: Lieferdatum und bestätigtes Lieferdatum
    • Kalender: Kalender-Startdatum und Kalender-Enddatum

    Das Enddatum kann über verschiedene Modi berechnet werden:

    • Bestätigtes Lieferdatum
    • Lieferdatum
    • Lieferdatum plus Zeitversatz
    • Lieferdatum plus Stunden aus Menge
    • NULL (kein Enddatum)

    Platzhalter in Vorlagen:

    Vorlagen unterstützen Platzhalter für Belegdaten:

    Zeilenebene:

    • {Artikelnummer}, {Bezeichnung}, {Menge}, {Einzelpreis}, {Gesamtwert}
    • {Lieferdatum}, {BestaetigtesLieferdatum}
    • {Projektnummer}, {Vertreternummer}, {Kostenstelle}

    Belegebene:

    • {BestelldateiKopf.Auftragsnummer}, {BestelldateiKopf.Belegnummer}
    • {BestelldateiKopf.Belegart}, {BestelldateiKopf.Datum}
    • {BestelldateiKopf.Konto.Name}, {BestelldateiKopf.Konto.Adresse.Ort}

    Formatierung:

    • {Lieferdatum:dd.MM.yyyy} - Datum formatiert
    • {Einzelpreis:C2} - Währung mit 2 Dezimalstellen
    • {Menge:N0} - Zahl ohne Dezimalstellen

    Beispiel Kurzbeschreibung:

    {BestelldateiKopf.Auftragsnummer}: {Artikelnummer} {Bezeichnung}
    

    Ergebnis: AUF-12345: ART001 Premium-Widget

    Konfiguration:

    Workflow-Erzeugungseinstellungen werden pro Mandant in der Administrationsoberfläche unter "Order Line Workflow Settings" konfiguriert.

    Überwachungsdienst

    Funktion: Überwachung und Warnung bei fehlenden E-Mail-Versendungen

    Ausführung: Täglich um 8:00 Uhr (konfigurierbar über Quartz__NoRuleWarningJob__scheduler)

    Funktionsweise:

    Der Überwachungsdienst hilft dabei, Probleme frühzeitig zu erkennen, die dazu führen, dass E-Mails nicht versendet werden, obwohl aktive Regeln vorhanden sind.

    1. Workflow-Überwachung

      • Prüft alle Workflows mit aktivierten Mail-Einstellungen
      • Vergleicht CRM-Fälle mit tatsächlich versendeten E-Mails
      • Berücksichtigt nur Fälle im konfigurierten Zeitraum (z.B. letzte 24 Stunden)
    2. Grace Period

      • Workflows, die jünger als die Grace Period sind, werden ignoriert
      • Verhindert Fehlalarme für Workflows, die gerade verarbeitet werden
      • Empfohlen: 15-20 Minuten bei 30-Sekunden-Mail-Job-Intervall
    3. Warnungs-E-Mail

      • Bei fehlenden E-Mails wird eine Warnung an Administratoren gesendet
      • Enthält detaillierte Liste aller betroffenen Fälle
      • Inkl. Fall-ID, Workflow-Nummer, Kurzbeschreibung und Erstellungsdatum
    4. Duplikats-Schutz

      • Versendete Warnungen werden protokolliert
      • Verhindert mehrfache Warnungen für denselben Fall

    Einsatzszenarien:

    • Fehlende Stammdaten: Kunde hat keine E-Mail-Adresse hinterlegt
    • Fehlkonfiguration: Mail-Einstellungen sind nicht korrekt
    • Restriktive Filter: Filterkriterien selektieren keine Fälle
    • SMTP-Probleme: SMTP-Server ist nicht erreichbar

    Konfiguration:

    Überwachungseinstellungen werden pro Mandant in der Administrationsoberfläche unter "No Rule Warning Settings" konfiguriert.

    Wichtige Einstellungen:

    • LookbackPeriod: Zeitraum, wie weit zurück geprüft wird (z.B. 24 Stunden)
    • GracePeriod: Mindestalterzeitspanne für Workflows (empfohlen: 15-20 Minuten)
    • WarningRecipients: E-Mail-Adressen der Administratoren (kommagetrennt)

    Mail-Dienst Konfiguration

    Dieser Abschnitt beschreibt die detaillierte Konfiguration des Mail-Dienstes. Die Konfiguration erfolgt in der Administrationsoberfläche und umfasst SMTP-Konten, Mail-Einstellungen, Empfängerverwaltung, Vorlagen und Anhänge.

    SMTP-Konten einrichten

    SMTP-Konten definieren, über welchen E-Mail-Server Nachrichten versendet werden. Sie können mehrere SMTP-Konten einrichten und diese unterschiedlichen Workflows oder Mandanten zuordnen.

    SMTP-Konto-PrioritätenPrioritäten:

    Das System ermitteltwählt das SMTP-KontenKonto in folgender Prioritätsreihenfolge:Reihenfolge aus:

    Priorität 1: Workflow-spezifisches SMTP-Konto

    • Konfiguration: Workflow -> Verwende dieses SMTP Konto
    • Verwendung: Wenn ein spezifischer Workflow ein eigenes SMTP-Konto definiert hat
    • Anwendungsfall: Spezielle Workflows mit besonderen Absenderanforderungen

    Priorität 2: Mandanten-spezifisches SMTP-Konto

    • Konfiguration: Mandant -> Verwende dieses SMTP Konto
    • Verwendung: Fallback wenn kein Workflow-spezifisches SMTP-Konto definiert ist
    • Anwendungsfall: Mandanten-spezifische E-Mail-Absender

    Priorität 3: Standard-SMTP-Konto

    • Konfiguration: SMTP-Konto mit Standard-Konto = Aktiviert
    • Verwendung: Systemweiter Fallback wenn keine spezifischen Konten definiert sind
    • Anwendungsfall: Allgemeine E-Mail-Versendung

    WichtigWichtig:: Es muss mindestens ein Standard-SMTP-Konto im System definiert sein!sein.

    Klassische

    SMTP-Kontotypen:

    Empfängerkonfiguration

    Das

    Grundeinstellungen

    System
    Nameunterstützt undverschiedene Status
    SMTP-Server:

    • Standard-SMTP: Klassische SMTP-Server (z.B. eigener Mailserver, Gmail, etc.)
    • Microsoft 365 mit OAuth: Sichere Authentifizierung über OAuth für M365-Konten

    SMTP-Konto erstellen:

    1. Navigieren Sie zu "SMTP Konten" in der Administrationsoberfläche
    2. Erstellen Sie ein neues SMTP-Konto
    3. Konfigurieren Sie die folgenden Einstellungen:
      • Name: Bezeichnung des Kontos
      • E-Mail-Adresse: Absender-Adresse
      • Anzeigename: Name des Absenders
      • SMTP-Server:: Hostname des Servers (z.B. smtp.firma.de)
      • Port: SMTP-Port (üblicherweise 587 für STARTTLS, 465 für SSL)
      • Benutzername/Passwort: Anmeldedaten (falls erforderlich)
      • SSL/STARTTLS: Verschlüsselungsoptionen
      • Standard-Konto: Markieren Sie ein Konto als Standard

    Mail-Einstellungen

    Mail-Einstellungen definieren, wann und wie E-Mails für einen bestimmten Workflow versendet werden. Sie werden pro Mandant und Workflow konfiguriert.

    Grundeinstellungen:

    Name und Status:

    • Name: Eindeutige Bezeichnung für die E-Mail-EinstellungenEinstellung
    • AktivAktiv:: Bestimmt, ob diese EinstellungenEinstellung verwendet werdenwird
    Standardanrede

    Standardanrede:

    • Verwendung:Wird Fallback-Anredeverwendet, wenn keine spezifische Anrede ermittelt werden kann
    • Beispiel:Beispiel: "Sehr geehrte Damen und Herren,"

    Empfängerverwaltung

    Die Empfängerverwaltung bestimmt, wer die E-Mails erhält. Es gibt zwei Systeme: Klassisch und Erweitert.

    EmpfängertypenKlassische Empfängerkonfiguration

    Bei der klassischen Konfiguration verwenden Sie einfache Auswahloptionen (Boolean-Flags)Ja/Nein):

    Kundenempfänger
    Kundenempfänger:

    • An Kunden senden:senden: Primäre Firmen-E-Mail-Adresse des Kunden
    • An Kundenkontakt senden:senden: E-Mail-Adresse des zugewiesenen Ansprechpartners
    • Sende an EmailadresseE-Mail-Adresse für Rechnungsempfang:Rechnungsempfang: Spezielle Rechnungs-E-Mail-Adresse
    • Rückfallempfänger Kunde:Kunde: Fallback auf Kunden-E-Mail wenn Kontakt nicht verfügbar
    • Rückfallempfänger Standardansprechpartner:Standardansprechpartner: Fallback auf Standard-Ansprechpartner

    Weitere Empfänger

    Empfänger:

    • An Vertreter senden:senden: E-Mail an zugewiesenen Vertriebsmitarbeiter
    • Statische Empfänger:Empfänger: Feste E-Mail-Adressen (kommagetrennt)
    • Statische Empfänger BCC:BCC: Feste BCC-Empfänger
    • Zusatzempfänger aus Personenkonto:Personenkonto: E-Mail-Adressen aus benutzerdefinierten Feldern

    Beispiel: Klassische Konfiguration

     An Kundenkontakt senden
     Rückfallempfänger Standardansprechpartner
     An Vertreter senden
    Statische Empfänger BCC: [email protected]
    

    Ergebnis:

    -
    • Primär: Kundenkontakt-E-Mail
    • -
    • Fallback: Standard-Ansprechpartner
    • -
    • Zusätzlich: Vertriebsmitarbeiter
    • als
    • Immer normale Empfänger - Immer:BCC: [email protected] als BCC

      Erweiterte Empfängerregeln

      Aktivierung

      • Einstellung: Erweiterte Empfängerregeln verwenden = Aktiviert
      • Effekt: Klassische Boolean-Flags werden ignoriert, nur Regeln werden verwendet
      • Fallback: Bei leeren Regeln wird das klassische System verwendet
      • Attachment-Validierung: Alle Attachment-Validierungsregeln (SkipIfArchiveFormAttatchmentIsMissing, SkipIfVoucherArchiveFormAttatchmentIsMissing, OnlyWithAttachments) funktionieren identisch mit dem klassischen System

      RegelkonfigurationErweiterte Empfängerregeln

      Grundparameter

      Für komplexere Szenarien können Sie erweiterte Empfängerregeln verwenden. Diese bieten ein flexibles Prioritätssystem mit bedingter Logik.

      Aktivierung: Aktivieren Sie "Erweiterte Empfängerregeln verwenden" in den Mail-Einstellungen. Die klassischen Optionen werden dann ignoriert.

      Regelparameter:

      • Aktiv: Regel ein-/ausschalten
      • Hauptpriorität: Prioritätsgruppen (10=Primär, 15=Zusätzlich, 20=Sekundär, etc.)
      • Verarbeitungsreihenfolge: Feinabstimmung innerhalb derselben Hauptpriorität
      • Verarbeitung bei Treffer stoppen: Stoppt die Regelverarbeitung bei einem Treffer
      • Regeltyp: Art der Empfängerquelle
      • Zustellungsart: To/CC/BCC
      • Separate E-Mails pro Empfänger: Individuelle vs. gruppierte E-Mails
      Regeltypen
      CustomerContact (Kundenkontakt)
      • Quelle: Zugewiesener Ansprechpartner des Kunden
      • Fallback: Automatisch zum nächsten verfügbaren Kontakt
      • Beispiel: Hauptansprechpartner für Rechnungen
      Customer (Kunde)
      • Quelle: Primäre E-Mail-Adresse der Firma
      • Verwendung: Fallback wenn kein Ansprechpartner verfügbar
      • Beispiel: [email protected]
      InvoiceEmail (Rechnungs-E-Mail)
      • Quelle: Spezielle E-Mail-Adresse für Rechnungsempfang
      • Verwendung: Oft in bedingter Logik als Hauptempfänger
      • Beispiel: [email protected]
      SalesRepresentative (Vertriebsmitarbeiter)
      • Quelle: Zugewiesener Vertriebsmitarbeiter
      • Verwendung: Meist als CC für Information
      • Beispiel: [email protected]
      StaticRecipients (Statische Empfänger)

      Regeltypen:

      • QuelleCustomerContact:: Ansprechpartner des Kunden
      • Customer: Primäre E-Mail-Adresse der Firma
      • InvoiceEmail: Spezielle Rechnungs-E-Mail-Adresse
      • SalesRepresentative: Zugewiesener Vertriebsmitarbeiter
      • StaticRecipients: Fest konfigurierte E-Mail-Adressen (kommagetrennt)
      • FormatCustomFieldRecipients:: Kommagetrennte Liste
      • Beispiel: "[email protected],[email protected]"
      CustomFieldRecipients (Benutzerdefinierte Felder)
      • Quelle: Beliebiges Feld im Kundenstamm
      • Konfiguration: Feldname in Benutzerdefiniertes Feld
      • Beispiel: Feld "NotfallKontakt" → "[email protected]"

      Individuelle vs. Gruppierte E-Mail-Zustellung

      Adressen

      Dasaus erweitertebenutzerdefinierten System bietet Kontrolle darüber, ob Empfänger einzelne personalisierte E-Mails oder eine gruppierte E-Mail erhalten.

      Separate E-Mails pro Empfänger

      Zweck: Steuert die Art der E-Mail-Zustellung pro Regel

      Aktiviert: Jeder Empfänger erhält eine separate E-Mail

      • ✅ Personalisierte ##Empfaenger##-Anrede für jeden Empfänger
      • ✅ Individuelle Betreffzeile und Inhalte möglich
      • ✅ Datenschutz: Empfänger sehen sich gegenseitig nicht
      • ⚠️ Mehr E-Mails versendetFeldern

      DeaktiviertRegelbeispiel::

      Alle Empfänger der

      Regel inmit einerHauptpriorität E-Mail

      • ✅ Weniger E-Mails versendet
      • ✅ Effizientere Verarbeitung
      • ⚠️ Allgemeine ##Empfaenger##-Anrede10 ("Sehr geehrte Damen und Herren")
      • ⚠️ Empfänger können sich gegenseitig sehen (je nach Zustellungsart)
      Empfohlene Verwendung
      • Aktiviertprimär): CustomerContact, Customer, FallbackContact (personalisierte Kommunikation)
      • Deaktiviert: SalesRepresentative als CC, interne Teams
      • Aktiviert: StaticRecipients wenn externe Partner/Kunden
      • Deaktiviert: StaticRecipients wenn interne Verteiler

      Bedingte Zustellungslogik

      Funktionsweise

      Regeln können ihre Zustellungsart dynamisch ändern basierend auf anderen gefundenen Empfängern:

      • Bedingung: Empfängertyp vorhanden: Welcher Regeltyp geprüft wird
      • Alternative Zustellungsart: Zustellungsart wenn Bedingung erfüllt ist
      Beispiel: InvoiceEmail-Priorität
      Regel 1: InvoiceEmail,Kundenkontakt, Priorität 1,10, To
      Regel 2: CustomerContact,Vertriebsmitarbeiter, Priorität 1, To
               Bedingung: InvoiceEmail vorhanden →10, CC
      
      Ergebnis wenn InvoiceEmail existiert:
      - InvoiceEmail: To (Hauptempfänger)
      - CustomerContact: CC (Information)
      
      Ergebnis wenn InvoiceEmail NICHT existiert:
      - CustomerContact: To (Hauptempfänger)
      

      Praktische

      Ergebnis:

      Regel-Beispiele

        Beispiel
      • Kundenkontakt 1:erhält Standardkonfigurationdie E-Mail
      • Vertriebsmitarbeiter erhält eine Kopie

      Fallback-Regel mit HierarchieHauptpriorität 20 (sekundär):

      Regel 1:3: CustomerContact,Kunde, Hauptpriorität 10, Verarbeitungsreihenfolge 100, To
      Regel 2: Customer, HauptprioritätPriorität 20, Verarbeitungsreihenfolge 100, To
      Regel 3: StaticRecipients ("[email protected]"), Hauptpriorität 30, Verarbeitungsreihenfolge 100, To
      
      Verarbeitung:
      1. Hauptpriorität 10: Versuche Kundenkontakt
      2. Falls gefunden: Fertig
      3. Falls nicht: Hauptpriorität 20: Versuche Kunde
      4. Falls nicht: Hauptpriorität 30: [email protected]
      

      Falls kein Kundenkontakt gefunden wird, erhält die Firma die E-Mail.

      Hinweis: Die erweiterten Regeln bieten viele weitere Optionen wie bedingte Logik und individuelle E-Mail-Zustellung. Details finden Sie in der erweiterten Dokumentation.

      Mail-Vorlagen

      Mail-Vorlagen bestimmen den Inhalt der versendeten E-Mails. Es gibt zwei Methoden:

      Beispiel 2: ComplianceTextbausteine mit verschiedenenPlatzhaltern

      Prioritäten

      Einfache Textbausteine mit dynamischen Platzhaltern für Workflow-Daten.

      Verfügbare Platzhalter:

      Alle Eigenschaften des Workflow-Objekts können verwendet werden:

      • {{Kurzbeschreibung}} - Workflow-Kurzbeschreibung
      • {{LangbeschreibungExtern}} - Externe Langbeschreibung
      • {{OpNummer}} - Workflow-Nummer
      • {{AktuellsterBeleg.DatumFaktura:dd.MM.yyyy}} - Rechnungsdatum formatiert
      • {{AktuellsterBeleg.Endbetrag:C2}} - Rechnungsbetrag als Währung
      • {{Kunde.Kontoname1}} - Firmenname des Kunden
      • {{Projekt.Bezeichnung1}} - Projektbezeichnung
      • {{DatumSchrittGeschrieben:dd.MM.yyyy}} - Fallerfassungsdatum

      Beispiel-Template:

      Regel##Empfaenger##
      
      1:im CustomerContact,Anhang Hauptprioritätfinden 10,Sie VerarbeitungsreihenfolgeIhre 100,Rechnung To{{OpNummer}} Regelvom 2:{{AktuellsterBeleg.DatumFaktura:dd.MM.yyyy}}.
      SalesRepresentative,Der HauptprioritätGesamtbetrag 10,beträgt Verarbeitungsreihenfolge{{AktuellsterBeleg.Endbetrag:C2}}.
      
      200,{{LangbeschreibungExtern}}
      
      CC
      Regel 3: StaticRecipients ("[email protected]"), Hauptpriorität 10, Verarbeitungsreihenfolge 300, BCC
      
      Ergebnis (alle Hauptpriorität 10 werden verarbeitet):
      - Kunde erhält E-Mail als Hauptempfänger
      - Vertrieb erhält Kopie (falls Kundenkontakt gefunden)
      - Compliance erhält Blindkopie (falls Kundenkontakt gefunden)##Anlagen##
      

      Anhänge

      Hinweis: Sie können auf alle Eigenschaften und verschachtelte Objekte zugreifen (z.B. {{Kunde.Adresse.Strasse1}}, {{Projekt.Bezeichnung1}}). Formatierung erfolgt über Standard-.NET-Formatstrings.

      Rich-Text-Vorlagen (MailMerge)

      Erweiterte Vorlagen mit Formatierung, Tabellen, Bildern und bedingter Logik.

      Erstellung:

      1. Navigieren Sie zu "Mail Vorlagen" in der Administrationsoberfläche
      2. Erstellen Sie eine neue RichTextMailMergeData-Vorlage
      3. Gestalten Sie Inhalte im Rich-Text-Editor
      4. Fügen Sie Mail-Merge-Felder über das Ribbon-Menü ein
      5. Weisen Sie die Vorlage in den Mail-Einstellungen zu

      Features:

      • Formatierung (Schriftarten, Farben, Tabellen)
      • Erweiterte Platzhalter mit Objektnavigation
      • Bedingte Logik (If-Then-Else)
      • Schleifen für Wiederholungen
      • Eingebettete Bilder und Logos

      Anhangsverwaltung

      Die Anhangsverwaltung steuert, welche Dokumente an E-Mail-Vorlage

      Mails angehängt werden.

      Quellen für Anhänge:

      • Rich-Text-EditorWorkflow-Uploads:: FormatierteDokumente, E-Mail-Inhaltedie im Workflow hochgeladen wurden
      • PlatzhalterBeleg-Anhänge:: Dynamische InhalteDokumente aus Workflow-Datenverknüpften Belegen (z.B. Rechnungen, Lieferscheine)
      • Textbaustein-ÜberschreibungArchivformular-Filter:: AlternativeNur TextbausteinnummerDokumente mit bestimmten Archivformularen

      Anhangskonfiguration

      Konfigurationsoptionen:

      Grundoptionen

      Grundoptionen:

      • Anhänge einschließeneinschließen:: Aktiviert Anhangsfunktionalitätdie Anhangsfunktion
      • Nur mit AnhängenAnhängen:: E-Mail wird nur gesendetversendet, wenn Anhänge vorhanden sind
      • Archivformular-Filter: Wählt spezifische Archivformular-Typen aus

      Validierungsoptionen:

      • Überspringe bei fehlendem Archivformular-AnhangAnhang:: StopptVerhindert E-Mail-VersandVersand, wenn spezifischeerforderliche Archivformular-Anhänge fehlen
      • Überspringe bei fehlendem Beleg-AnhangAnhang:: StopptVerhindert E-Mail-VersandVersand, wenn Beleg-Anhänge fehlen
      Attachment-Validierung und Skip-Logik

      Das System bietet erweiterte Validierungsoptionen, die den E-Mail-Versand stoppen können:Anwendungsbeispiele:

      SkipIfArchiveFormAttatchmentIsMissing
      • Zweck:Rechnungsversand: VerhindertNur E-Mail-Versandsenden, wenn erforderlichePDF-Rechnung Archivformular-Anhängevorhanden fehlenist
      • Funktionsweise:Auftragsbestätigung: Prüft die FilterArchiveFormIds und stoppt den Versand wenn keine UploadsNur mit den entsprechenden Formulartypen vorhanden sindAuftragsformular
      • Anwendungsfall:Lieferbenachrichtigung: SicherstellungNur dassmit wichtige Dokumente (z.B. Rechnungen, Verträge) vor dem E-Mail-Versand vorhanden sind
      SkipIfVoucherArchiveFormAttatchmentIsMissing
      • Zweck: Verhindert E-Mail-Versand wenn Beleg-Anhänge fehlen
      • Funktionsweise: Prüft ob Anhänge aus dem verknüpften Beleg geladen werden konnten
      • Anwendungsfall: Sicherstellung dass Belege (Rechnungen, Lieferscheine) vor dem Versand vollständig sind
      OnlyWithAttachments
      • Zweck: Verhindert E-Mail-Versand wenn überhaupt keine Anhänge vorhanden sind
      • Funktionsweise: Prüft die Gesamtzahl aller Anhänge (Uploads + Beleg-Anhänge + Auto-Archiv)
      • Anwendungsfall: E-Mails die ausschließlich zur Übermittlung von Dokumenten dienenLieferschein

      Workflow-Filter

      Workflow-Filter bestimmen, welche Workflows verarbeitet werden. Sie können zeitbasierte Filter verwenden.

      Zeitbasierte Filter

      Filter:

      Option 1: Zeitraum-Filter (Since)

      • Aktiv: Workflowabruf innerhalb Zeitraum aktiv
      • Zeitraum: Abrufen von Workflows seit
      • Beispiel: NurVerarbeitet Workflows der letzten 24X StundenStunden/Tage
      • Format:Format: TimeSpan (z.B. "1.00:00:00" für 1 Tag)
      • Beispiel: Nur Workflows der letzten 24 Stunden

      Option 2: Datum-Filter (After)

      • Aktiv:Verarbeitet Workflowabrufalle Workflows ab einem festen Datum aktiv
      • Datum:Format: WorkflowabrufDateTime ab(z.B. Datum"01.01.2024")
      • Beispiel:Beispiel: Alle Workflows seit 01.01.2024
      • Format: DateTimeJahresbeginn

      Option 3: Logischer Zeitbereich-Filter (Time Range) ⭐ NEU

      • Aktiv: FiltertVerarbeitet Workflows nachbasierend logischemauf Zeitbereichlogischen - aktivZeiträumen
      • Zeitbereich: Workflows nach logischem Zeitbereich
      • Verfügbare Zeitbereiche:Zeiträume:
        • Dieses Jahr: Seit 1. Januar des aktuellen Jahres (00:00 Uhr)
        • Dieser Monat: Seit 1. Tag des aktuellen Monats (00:00 Uhr)
        • Dieses Quartal: Seit 1. Tag des aktuellen Quartals (Q1-Q4)
        • Diese Woche: Seit Montag der aktuellen Woche (00:00 Uhr)
        • Heute: Seit Beginn des heutigen Tags (00:00 Uhr)
        • Seit gestern: Seit Beginn des gestrigen Tags (00:00 Uhr)
      • Vorteil:Vorteil: Keine Wartung fester Datumswerte erforderlich - das System berechnet den Zeitraum automatisch
      • Anwendungsfall:Beispiel: Regelmäßige"Dieser VerarbeitungMonat" ohneverarbeitet manuelleautomatisch Anpassungalle derWorkflows Filterseit dem 1. des aktuellen Monats

      Filter-Priorität

      Die Filter werden in folgender Reihenfolge angewendet (erster aktiver Filter wird verwendet):Priorität:

      1. Zeitraum-Filter (Since):aktiv) Relativewird Zeitspannezuerst (z.B. letzte 24 Stunden)geprüft
      2. Falls nicht aktiv: Datum-Filter (After): Festes Startdatum
      3. Falls nicht aktiv: Logischer Zeitbereich-Filter (Time Range): Automatisch berechneter Zeitraum
      4. Fallback:Fallback: 1.Alle JanuarWorkflows seit 1970 (alle Workflows)

      HinweisWichtig:: Es kann immer nur einer der dreiein Filter gleichzeitig aktiv sein. Aktivieren Sie nur den Filter, der Ihren Anforderungen entspricht.


      Betrieb und Wartung

      Dieser Abschnitt beschreibt den laufenden Betrieb und die Wartung des MesoWorkerService.

      Best PracticesMail-Journal

      Regeldesign

      Das

        Mail-Journal
      1. protokolliert alle versendeten und fehlgeschlagenen E-Mails.

        HauptprioritätZugriff: logischNavigieren strukturierenSie in der Administrationsoberfläche zu "Queued Mail" oder "Mail Journal".

        Informationen im Journal::

        • 10Zeitstempel =des Primäre EmpfängerVersands/Fehlers
        • 15Empfänger =(To, Zusätzliche/paralleleCC, EmpfängerBCC)
        • 20 = Fallback-EmpfängerBetreff
        • 30+Status =(versendet, Ultimatefehlgeschlagen, Fallbackwartend)
        • Fehlermeldungen (bei fehlgeschlagenen E-Mails)
        • Verknüpfter Workflow
      2. Verwendung:

        • VerarbeitungsreihenfolgeÜberprüfen sinnvollSie nutzen:regelmäßig Innerhalbdas jeder Hauptpriorität logische Reihenfolge
        • Verarbeitung bei Treffer stoppen sparsam einsetzen: Nur bei exklusiven Empfängern
        • Bedingte Logik gezielt nutzen: Nur wenn wirklich benötigt
        • Klare Bemerkungen: Jede Regel mit Hauptpriorität und Zweck dokumentieren
        • Separate E-Mails gezielt nutzen: Nur für personalisierte Inhalte

      Wartung

      1. Regelmäßige Überprüfung: Mail-Journal auf Fehlerfehlgeschlagene prüfenE-Mails
      2. EmpfängerdatenAnalysieren aktuellSie halten:Fehlermeldungen Kundenstamm-Pflegebei Problemen
      3. SMTP-KontenÜberwachen überwachen:Sie Verbindungendie und AuthentifizierungZustellungsrate
      4. Test-E-Mails: Regelmäßige Funktionstests

      No-Rule Warning Service

      Der No-Rule Warning Service überwacht Workflows mit aktiven Regeln und benachrichtigt Administratoren automatisch, wenn für CRM-Fälle keine E-Mails versendet wurden, obwohl der Workflow aktivierte Regeln hat. Dies hilft, Konfigurationsfehler oder fehlende Stammdaten frühzeitig zu erkennen.

    ÜbersichtFehlerbenachrichtigungen

    Funktionsweise

    Der Service prüftbenachrichtigt periodischAdministratoren (standardmäßigautomatisch täglichbei um 8:00 Uhr):Problemen.

      Konfiguration:

    1. WorkflowsAdmin-E-Mail-Adressen mitwerden aktiviertenin den Mail-Einstellungen (appsettings.json oder Umgebungsvariablen) konfiguriert:

      "MailSettings": Nur{
        Workflows mit aktiven Regeln werden überwacht
    2. CRM-Fälle im konfigurierten Zeitraum"AdminMailRecipients": Prüfung["[email protected]", der"[email protected]"] Fälle} im definierten Lookback-Zeitraum
    3. E-Mail-Versand-Status: Vergleich mit tatsächlich versendeten E-Mails

    Wenn Fälle ohne E-Mail-Versand gefunden werden, erhalten die konfigurierten Empfänger eine Warnungs-E-Mail mit einer tabellarischen Auflistung aller betroffenen Fälle.

    Warnungs-E-Mail Inhalt

    Die automatisch generierte Warnungs-E-Mail enthält:Benachrichtigungsfälle:

    • AnzahlE-Mail derkonnte betroffenennicht CRM-Fälleversendet werden
    • MandanteninformationSMTP-Server ist nicht erreichbar
    • ÜberprüfungszeitraumAuthentifizierung fehlgeschlagen
    • DetaillierteLizenz Tabelleist mit:ungültig
        oder
      • Fall-ID
      • Schritt-Nummer
      • Workflow-Nummer und -Bezeichnung
      • Kurzbeschreibung
      • Erstellungsdatum
      abgelaufen

    KonfigurationProtokollierung

    Admin-Oberfläche

    Der Einstellungen

    Service

    Inerstellt derdetaillierte Administrationsoberfläche kannProtokolldateien für jedenDiagnose Mandantenund eine NoRuleWarningSettings-Konfiguration erstellt werden:Überwachung.

    Einstellungsparameter:Protokolldateien:

    ParameterTypBeschreibungBeispiel
    NameStringBezeichnung für diese Warnungs-Einstellung"Workflow-Überwachung Mandant 500M"
    EnabledBooleanAktiviert/deaktiviert die Warnungs-E-Mailstrue
    CompanyAuswahlZugeordneter Mandant500M
    LookbackPeriodTimeSpanZeitraum, wie weit zurück überprüft werden soll1.00:00:00 (24 Stunden)
    GracePeriodTimeSpanMindestalterzeitspanne für Workflows vor Überprüfung00:15:00 (15 Minuten)
    WarningRecipientsStringKommagetrennte Liste der Empfänger[email protected],[email protected]
    UseSmtpAccountAuswahlOptionales SMTP-Konto für Warnungs-E-MailsStandard-SMTP oder spezifisches Konto

    Grace Period - Vermeidung von Race Conditions

    Die Grace Period (Schonfrist) ist ein wichtiges Feature zur Vermeidung von Fehlalarmen:

    Problem: Der MailWorkerJob läuft kontinuierlich (standardmäßig alle 30 Sekunden) und verarbeitet neue Workflows. Ohne Grace Period könnte der NoRuleWarningJob einen Workflow als "keine Mail versendet" markieren, während er gerade vom MailWorkerJob bearbeitet wird.

    Lösung: Die GracePeriod-Einstellung stellt sicher, dass nur Workflows überprüft werden, die älter als die Grace Period sind.

    Empfehlung:

    • Setzen Sie die Grace Period auf mindestens das 2-3-facheWindows-Dienst: des MailWorkerJob-IntervallsLogs/MesoWorkerService-[Datum].txt
    • Beispiel:Container: BeiAusgabe MailWorkerJob-Intervallüber vonDocker 30Logs Sekunden(docker logs Grace Period von 15-20 Minuten
    • Bei häufigeren Intervallen entsprechend anpassenmesoworkerservice)

    BeispielProtokollierungsstufen::

    Mit
      einer
    • Information: GraceNormale PeriodBetriebsmeldungen
    • von
    • Warning: 15Warnungen Minuten(z.B. werdenfehlende Empfänger)
    • Error: Fehler (z.B. Datenbankverbindung fehlgeschlagen)
    • Debug: Detaillierte Debug-Informationen (nur Workflowsfür überprüft,Fehlersuche)
    • die
    vor

    Konfiguration: mindestensProtokollierungsstufen 15können Minutenin erstelltappsettings.json wurden.oder WorkflowsUmgebungsvariablen derangepasst letzten 15 Minuten werden ignoriert.werden:

    Job-Konfiguration (appsettings.json)

    {
      "Quartz"Logging": {
      "NoRuleWarningJob"LogLevel": {
        "scheduler"Default": "0 0 8 * * ?"Information",
        "enabled"Microsoft.Hosting.Lifetime": true,
          "startnow": false
        }Information"
      }
    }
    

    Scheduler-ParameterBest (Cron-Expression):Practices:

    • 0Überprüfen 0Sie 8Protokolle *regelmäßig *auf ?Fehler -und Täglich um 8:00 Uhr (Standard)Warnungen
    • 0Behalten 0Sie */4"Information" *als * ? - Alle 4 StundenStandard-Protokollierungsstufe
    • 0Verwenden 0Sie 9-17"Debug" *nur *zur MON-FRIFehlersuche -(erzeugt Stündlichviele Einträge)
    • Archivieren Sie alte Protokolldateien regelmäßig

    Wartungsaufgaben

    Regelmäßige Aufgaben:

    1. Mail-Journal prüfen (täglich)

      • Überprüfen Sie fehlgeschlagene E-Mails
      • Analysieren Sie Trends bei Fehlern
    2. Stammdaten pflegen (wöchentlich)

      • Aktualisieren Sie E-Mail-Adressen von 9-17Kunden
      • Uhr,
      • Überprüfen MontagSie bisAnsprechpartner-Daten
      • Freitag
    3. SMTP-Konten überwachen (wöchentlich)

      • Testen Sie SMTP-Verbindungen
      • Überprüfen Sie OAuth-Token (M365)
    4. Protokolldateien prüfen (wöchentlich)

      • Suchen Sie nach wiederkehrenden Fehlern
      • Überprüfen Sie Performance-Warnungen
    5. Service-Status überwachen (täglich)

      • Health-Check-Endpoint aufrufen: http://server:5000/health
      • Windows-Dienst-Status prüfen
    6. Updates einspielen (nach Bedarf)

      • Neue Container-Images deployen
      • Windows-Dienst aktualisieren
      • Konfigurationsänderungen testen

    Troubleshooting:

    Problem: E-Mails werden nicht versendet

    • Überprüfen Sie Mail-Journal auf Fehler
    • Prüfen Sie SMTP-Konto-Einstellungen
    • Testen Sie SMTP-Server-Erreichbarkeit
    • Überprüfen Sie Workflow-Filter-Einstellungen

    WeitereProblem: Parameter:Keine Empfänger gefunden

    • enabled:Überprüfen Aktiviert/deaktiviertSie denKundenstamm-Daten Job global(E-Mail-Adressen)
    • startnow:Prüfen StartetSie denEmpfängerregeln Jobin sofortMail-Einstellungen
    • beim
    • Überprüfen Service-StartSie (für Tests)Ansprechpartner-Zuweisungen

    Problem: Service startet nicht

    • Überprüfen Sie Lizenz-Einstellungen
    • Prüfen Sie Datenbankverbindungen
    • Kontrollieren Sie Protokolldateien

    Überwachungsdienst (No-Rule Warning Service)

    Der Überwachungsdienst wurde bereits im Abschnitt Hauptkomponenten beschrieben. Dieser Abschnitt enthält zusätzliche technische Details zur Konfiguration und Fehlerbehebung.

    Konfigurationsdetails

    Container-Konfiguration

    environment:
      # No-Rule Warning Job
      - Quartz__NoRuleWarningJob__scheduler=0 0 8 * * ?
      - Quartz__NoRuleWarningJob__enabled=true
      - Quartz__NoRuleWarningJob__startnow=false
    

    Anwendungsfälle

    Der No-Rule Warning Service hilft bei der Erkennung verschiedener Probleme:

    1. Fehlende Stammdaten

    Problem: Für einen Kunden ist keine E-Mail-Adresse hinterlegt.
    Ergebnis: Keine Mail wird versendet.
    Lösung: Warnung identifiziert fehlende Stammdaten → Daten können nachgepflegt werden.

    2. Fehlkonfiguration

    Problem: Mail-Einstellungen sind nicht korrekt konfiguriert (z.B. falsche Empfänger-Regeln).
    Ergebnis: Keine Mail wird versendet.
    Lösung: Warnung zeigt Konfigurationsprobleme → Einstellungen können korrigiert werden.

    3. Zu restriktive Filter-Kriterien

    Problem: Filter-Kriterien selektieren keine Fälle.
    Ergebnis: Keine Mail wird versendet.
    Lösung: Warnung macht auf Filter-Probleme aufmerksam → Filter können angepasst werden.

    Duplikatsverhinderung

    Der Service protokolliert versendete Warnungen in der NoRuleWarningJournal-Tabelle:

    • Jeder gewarnter Fall wird mit Fall-ID, Schritt-Nummer und Workflow-Nummer gespeichert
    • Verhindert mehrfache Warnungen für denselben Fall
    • Protokollierung erfolgt nur bei erfolgreichem E-Mail-Versand
    • Ermöglicht Nachverfolgung der Warnungshistorie

    Best Practices

    1. Zeitraum (LookbackPeriod):

      • Wählen Sie einen angemessenen Zeitraum (z.B. 24 Stunden)
      • Zu kurze Zeiträume: Wichtige Fälle könnten übersehen werden
      • Zu lange Zeiträume: Zu viele Warnungen für bereits bekannte Probleme
    2. Grace Period:

      • Setzen Sie auf mindestens das 2-3-fache des MailWorkerJob-Intervalls
      • Standard-Empfehlung: 15-20 Minuten
      • Bei sehr frequenten MailWorkerJob-Ausführungen: 20-30 Minuten
      • Verhindert Fehlalarme für gerade in Bearbeitung befindliche Workflows
    3. Empfänger (WarningRecipients):

      • Konfigurieren Sie administrative E-Mail-Adressen
      • Stellen Sie sicher, dass E-Mails regelmäßig geprüft werden
      • Verwenden Sie Verteiler für Team-Benachrichtigungen
    4. Ausführungshäufigkeit (Scheduler):

      • Täglich um 8:00 Uhr (Standard) für normale Überwachung
      • Mehrmals täglich für kritische Workflows
      • Passen Sie die Cron-Expression an Ihre Anforderungen an
    5. SMTP-Konto:

      • Verwenden Sie ein dediziertes SMTP-Konto für Warnungen
      • Stellt separate Nachverfolgung und Zustellung sicher
      • Fallback auf Standard-SMTP-Konto funktioniert automatisch

    Troubleshooting

    Problem: Warnungen werden nicht versendet

    Mögliche Ursachen:

    • Enabled ist auf false gesetzt
    • ✗ Keine gültigen Empfänger konfiguriert (WarningRecipients leer oder ungültig)
    • ✗ SMTP-Konto nicht verfügbar oder falsch konfiguriert
    • ✗ Job ist in appsettings.json deaktiviert (enabled: false)
    • ✗ Cron-Expression ist fehlerhaft

    Lösungsschritte:

    1. Überprüfen Sie die Logs nach Fehler-Meldungen
    2. Prüfen Sie die Konfiguration in der Administrationsoberfläche
    3. Testen Sie das SMTP-Konto mit einer Test-Mail
    4. Validieren Sie die Cron-Expression mit einem Online-Tool

    Problem: Zu viele Warnungen

    Mögliche Ursachen:

    • ✗ LookbackPeriod ist zu groß (z.B. 7 Tage statt 1 Tag)
    • ✗ GracePeriod ist zu klein (z.B. 2 Minuten statt 15 Minuten)
    • ✗ Viele Workflows haben tatsächliche Konfigurationsprobleme
    • ✗ Job läuft zu häufig (mehrmals stündlich)

    Lösungsschritte:

    1. Reduzieren Sie den LookbackPeriod (z.B. auf 24 Stunden)
    2. Erhöhen Sie die GracePeriod (z.B. auf 20-30 Minuten)
    3. Beheben Sie die zugrunde liegenden Konfigurationsprobleme
    4. Passen Sie die Job-Häufigkeit an (z.B. nur 1x täglich)

    Problem: Duplikate werden versendet

    Mögliche Ursachen:

    • ✗ E-Mail-Versand schlägt fehl (keine Journal-Protokollierung)
    • ✗ Datenbank-Commit schlägt fehl
    • ✗ Transaktion wird zurückgerollt

    Lösungsschritte:

    1. Überprüfen Sie die Logs auf Fehler beim E-Mail-Versand
    2. Prüfen Sie die Datenbank-Verbindung
    3. Kontrollieren Sie die NoRuleWarningJournal-Tabelle auf Einträge
    4. Testen Sie mit einem einzelnen Fall

    Problem: Grace Period funktioniert nicht

    Mögliche Ursachen:

    • ✗ Grace Period ist auf 0 oder sehr klein gesetzt
    • ✗ MailWorkerJob läuft sehr selten
    • ✗ Systemzeit ist nicht synchronisiert

    Lösungsschritte:

    1. Setzen Sie Grace Period auf mindestens 15 Minuten
    2. Überprüfen Sie die MailWorkerJob-Konfiguration
    3. Validieren Sie die Systemzeit auf allen Servern
    4. Prüfen Sie die SQL-Query in den Logs

    Migration und Einrichtung

    Bei der ersten Verwendung des No-Rule Warning Service:

    1. Automatische Datenbankerstellung: Die Tabellen NoRuleWarningSettings und NoRuleWarningJournal werden automatisch erstellt
    2. Konfiguration erstellen: In der Admin-Oberfläche neue NoRuleWarningSettings für gewünschte Mandanten anlegen
    3. Job aktivieren: In appsettings.json oder Container-Umgebungsvariablen aktivieren
    4. Erste Ausführung: Optional startnow: true setzen für sofortigen Test
    5. Monitoring: Logs überprüfen nach erfolgreicher Ausführung

    Hinweis: Es sind keine manuellen Migrationsschritte erforderlich. Das DevExpress XAF Framework erstellt alle benötigten Tabellen automatisch.


    Versionshistorie

    Version 2.2.1 (Dezember 2025)

    💎 AddedAdded:

    • Deutsche Übersetzungen für XAF Model:Model: Alle fehlenden BusinessObject-Beschriftungen wurden ins Deutsche übersetzt
      • OrderLineWorkflowJournal: Vollständige Übersetzung aller Eigenschaften
      • OrderLineWorkflowSettings: Vollständige Übersetzung aller Eigenschaften
      • MailAttachment: Vollständige Übersetzung hinzugefügt
      • Verbesserte Benutzerfreundlichkeit der Administrationsoberfläche

    Version 2.2.0 (Dezember 2025)

    💎 AddedAdded:

    • Workflow-Erzeugung aus Bestelldateizeilen (BestelldateiMitte):Bestelldateizeilen: Neue Funktion zur automatischen CRM-Fall-Erzeugung auf Basis von Belegzeilen
      • Automatische Workflow-Generierung aus Bestelldateizeilen
      • Flexible Filterkriterien für präzise Zeilenselektion (analog zu CRM-Workflows)
      • Journal-basierte Mehrfachverarbeitungs-Prävention (Kontonummer, Laufnummer, ZeilennummerIntern)
      • Optionale Speicherung der erzeugten Fall-ID in benutzerdefinierter Spalte
      • Konfigurierbar über bestehende WorkflowSettings-Infrastruktur
      • Neuer OrderLineWorkerJob mit Standard-Schedule alle 5 Minuten
      • Umfassende Fehlerbehandlung und Logging
      • Wiederverwendung bestehender Workflow-Business-Logik
    • Konfigurierbare Datumsfelder für OrderLine-Workflows: Neue Option zur Auswahl der Datumsfelder
      • Neue Eigenschaft UseDatevarianteKalender in OrderLineWorkflowSettings
      • Wahl zwischen Standard-Datumsfeldern (Lieferdatum/BestaetigtesLieferdatum) und Kalender-Datumsfeldern (KalenderStartdatum/KalenderEnddatum)
      • Standardmäßig deaktiviert für Abwärtskompatibilität

    🐛 FixedFixed:

    • Deutsche Sprachressourcen im Blazor Docker Container: Behebung eines Problems, bei dem deutsche Lokalisierungsressourcen nicht im Container verfügbar waren
      • Hinzufügen von SatelliteResourceLanguages=de zu allen relevanten Projekten (Blazor.Server, Module, Security.Module)
      • Sicherstellen, dass DevExpress .de NuGet-Pakete korrekt als Satellite Assemblies publiziert werden
      • Deutsche Sprachauswahl in XAF Anwendungen funktioniert nun korrekt im Container

    Version 2.1.1 (Dezember 2025)

    Fixed:

    • Thread-Safety-Problem im MailWorkerJob behoben

    Version 2.1 (November 2025)

    💎 AddedAdded:

    • Automatische EML-Neuerzeugung für Entwürfe im Postausgang: Wenn E-Mails als Entwurf im Postausgang gespeichert werden, werden Änderungen an email-relevanten Feldern automatisch erkannt und die EML-Datei wird neu generiert

      • Automatische Regenerierung bei Änderungen an Empfänger, Betreff, Text, CC und BCC
      • Erhaltung der bestehenden Anhänge beim Regenerieren
      • Funktioniert nur bei E-Mails mit aktiviertem Draft-Status
      • Nahtlose Integration in die Detailansicht von QueuedMail
    • Logische Zeitbereiche für Workflow-Filterung: Alternative zu festen Datumswerten in Mail-Einstellungen

      • Unterstützte Zeitbereiche: Dieses Jahr, Dieser Monat, Dieses Quartal, Diese Woche, Heute, Seit gestern
      • Automatische Berechnung des Startdatums basierend auf dem gewählten Zeitbereich
      • Kompatibel mit bestehenden Filter-Optionen (Since, After)
      • Vereinfachte Konfiguration ohne Wartung fester Datumswerte
    • No-Rule Warning Service: Neuer automatischer Überwachungsdienst für Workflows mit aktiven Regeln aber ohne E-Mail-Versand

      • Mandantenspezifische Konfiguration mit flexiblen Zeiträumen
      • Grace Period zur Vermeidung von Race Conditions mit MailWorkerJob
      • Automatische Duplikatsverhinderung durch Journal-Protokollierung
      • HTML-formatierte Warnungs-E-Mails mit detaillierter Fall-Auflistung
      • Konfigurierbare Empfänger und optionale SMTP-Konten
      • Quartz-basierte Job-Planung mit Cron-Expressions
      • Umfassende Fehlerbehandlung und Logging

    Version 2.0 (Oktober 2025)

    💎 AddedAdded:

    • Erweiterte Empfängerregeln mit Prioritätssystem
    • Bedingte Zustellungslogik
    • Individuelle E-Mail-Zustellung pro Empfänger
    • M365 OAuth-Authentifizierung für SMTP
    • Container-Support mit Docker Images
    • Health-Checks für Monitoring

    🏗️ RefactoringRefactoring:

    • Migration auf dotnet.NET 9
    • Modernisierung der Codebase
    • Verbesserung der Administrationsoberfläche

    🐛 FixedFixed:

    • Diverse Bugfixes im Mail-Versand
    • Verbesserungen der Anhangsverwaltung

    Downloads

    ℹ️ Download dieser Dokumentation als pdfPDF

    Softwaredownloads:


    Support und Kontakt

    Bei Fragen oder Problemen wenden Sie sich an das CSS EDV Support Team:


    CSS EDV Support GmbH
    Ihr Partner für professionelle EDV-Lösungen

    Website: https://css-edv-support.de
    Dokumentation erstellt von CSS EDV Support Tobias Forbrich e.K. - NovemberDezember 2025

    Version: 2.1
    Erstellt: 2024
    Aktualisiert: November 2025