MESO-WorkerService

.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
✅VersendetAutomatischeE-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)
✅FiltertFlexiblerelevanteFilterkriterienZeilenfürnachZeilenselektionkonfigurierbaren Kriterien✅Verhindert Mehrfachverarbeitungwirddurchverhindertintelligente(Journal-basiert)Protokollierung✅ErmöglichtOptionale Speicherung der Fall-ID in benutzerdefinierter Spalte✅ Konfigurierbar über bestehende WorkflowSettings✅ Läuft standardmäßig alle 5 Minuten✅ Wählbareflexible DatumsfelderfürundWorkflow-ErzeugungTemplate-basierte(Lieferdatum oder KalenderStartdatum/KalenderEnddatum)Beschreibungen
Identifikation:3. Jede Zeile wird eindeutig über Kontonummer, Überwachung und LaufnummerZeilennummerIntern 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(FeldWorkflows6):mitverwendetaktivenE-Mail-RegelnLieferdatum- Benachrichtigt Administratoren bei fehlenden E-Mail-Versendungen
- Hilft bei der
Belegzeilefrühzeitigen EnddatumErkennung(Feldvon7):KonfigurationsfehlernkonfigurierbaroderüberfehlendenBisDatumAssignmentMode(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):PortverwendetKalenderStartdatumder Belegzeile5000)EnddatumWindows(Feld 7):konfigurierbar überBisDatumAssignmentMode(siehe unten)Desktop-Client
DieEine Konfigurationdetaillierte erfolgtArchitekturübersicht überfinden die Eigenschaft Sie in UseDatevarianteKalenderden assets/systemarchitektur.md.OrderLineWorkflowSettings 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:
Bestätigtes Lieferdatum(Standard): VerwendetBestaetigtesLieferdatumder BelegzeileLieferdatum: VerwendetLieferdatumder BelegzeileLieferdatum, falls bestätigtes Lieferdatum NULL: VerwendetBestaetigtesLieferdatum, falls vorhanden, sonstLieferdatumNULL: Setzt das Bis-Datum auf NULL (kein Enddatum)Lieferdatum zzgl. Zeitversatz: VerwendetLieferdatumplus den inBisDatumTimeSpanOffsetkonfigurierten Zeitraum (z.B. 7.00:00:00 für 7 Tage)Addiere Stunden aus Menge: Addiert dieMengeBestelltals Stunden zumLieferdatum(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:
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ägerBelegebene (BestelldateiKopf)- Felder des zugehörigen Belegs:{BestelldateiKopf.Auftragsnummer} - Auftragsnummer {BestelldateiKopf.Belegnummer} - Belegnummer {BestelldateiKopf.Belegart} - Belegart (z.B. KA, LA) {BestelldateiKopf.Datum} - Belegdatum {BestelldateiKopf.Kundennummer} - KundennummerVerschachtelte 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{}stehenGroß-/Kleinschreibung bei Feldnamen beachtenBei verschachtelten Eigenschaften den Punkt.als Trennzeichen verwendenFormat-Spezifikationen mit Doppelpunkt:angebenWenn ein Feld nicht existiert oder leer ist, wird der Platzhalter durch einen leeren String ersetzt
Screenshots



Systemvoraussetzungen
WinLine:
oder neuerKompatible WinLine Version: abMesonic WinLine Edition 2022MDP Runtime Lizenz (vom Mesonic
Vertriebspartner bereitzustellen)Vertriebspartner)OptionalMesonic Server 64 Bitum(optional, nur für automatische Workflow-SchritteSchritt-Erstellunganlegenerforderlich)
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
- Zugriff
Anwendungaufauszuführen,WinLine-Datenbankist(SQLdieServer) - Zugriff
9aufRuntimeSMTP-Server - Optional:
vonZugriffderaufoffiziellenMesonicMicrosoftServerWebseitefürheruntergeladen und dann installiert werden:Download dotnet 9 RuntimeWorkflow-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 installiertDirekte NetzwerkverbindungNetzwerkzugriff zur WinLine-Datenbank
Installation:Installationsschritte:
-
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)
-
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] -
Konfigurationsdatei anpassen
Öffnen Sie die Datei
appsettings.jsonim Installationsverzeichnis und passen Sie die Einstellungen an (siehe Windows-Dienst Konfiguration). -
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:
ServiceService::ghcr.io/css-edv-support/mesoworkerservice-serviceservice:latest- Blazor
UIUI::ghcr.io/css-edv-support/mesoworkerservice-blazorblazor:latest
Deployment-Optionen:
- Docker Compose
- Portainer Stacks
- Kubernetes
- Docker Swarm
BeispielInstallationsschritte:
-
Container-Runtime installieren
Installieren Sie Docker
ComposeoderStack:Podman auf Ihrem System. -
Stack-Datei erstellen
Erstellen Sie eine
docker-compose.ymlDatei oder nutzen Sie Portainer Stack (siehe Portainer Stack Konfiguration). -
Umgebungsvariablen konfigurieren
Passen Sie die Umgebungsvariablen in der Stack-Datei an Ihre Umgebung an (siehe Portainer Stack Konfiguration).
-
Container starten
Mit Docker Compose:
services:docker-composemesoworkerservice-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'dMit 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 lokaledotnet-.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-ZugriffContainer: 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.exenicht 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:EnvironmentPortVariables)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:ErsetzenKonfigurationSiedesSQL-SERVER,integriertensql-user,Web-Serverssql-passmit Ihren DatenbankzugangsdatenStandard:ErsetzenPortSie5000winline-server,winline-user,passwortmit Ihren WinLine-ZugangsdatenContainer:ErsetzenAutomatischSie12345undLIZENZNUMMERmit Ihrer Lizenz- Passen Sie
smtp.firma.de,smtp-user,smtp-passwortan Ihren SMTP-Server an - Die E-Mail-Einstellungen können auch später über
die Admin-Oberfläche konfiguriertASPNETCORE_URLS
🔑 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:
:OhneDergültigeMesospoolServiceUrlLizenziststartetbeiderLinux-Containern zwingend erforderlich, da diemesospool.exeaus dem WinLinePath nicht unter Linux lauffähig ist. Dieser Servicenichtwird 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 Siesourcean Ihren WinLine-Server an. Der Container greift dann über/app/winlinedarauf zu.
🗄️
Cron-Expressions ConnectionStringsfür (Datenbankverbindungen)Job-Zeitplanung:
ConnectionString:0/30= Alle 30 Sekunden (Mail-Dienst)Hauptdatenbank*für*MesoWorkerService-Daten* * ?WinLineSystemDBConnectionString:0= Alle 5 Minuten (Workflow-Erzeugung)Verbindung*/5zur*WinLine-Systemdatenbank* * ?Authentifizierung:0Windows-Authentifizierung0oder8SQL-Authentifizierung*möglich*
⚙️= WinLineSettingsTäglich um 8:00 Uhr (WinLine Konfiguration)
WinLinePath: Pfad zur WinLine-InstallationMesospoolServiceUrl: 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 sollenLizenz: Benötigt separaten Mesonic WebService User (zusätzliche Lizenz)
👥 SessionSettings (Sitzungsverwaltung)
MinimumSessions: Mindestanzahl aktiver WinLine-SitzungenDefaultUser/Password/Company: Standard-Anmeldedaten für WinLineValidationInterval: Intervall für Sitzungsvalidierung
📧 MailWorkerJob (E-Mail Verarbeitung)
scheduler: Cron-Expression für Ausführungszeitpunkt (z.B. alle 30 Sekunden)enabled: Job aktivieren/deaktivierenstartnow: Sofortiger Start beim Service-Start
🚀 Wichtigste Features im Überblick
✅Automatische E-Mail-Versendungbasierend auf WinLine-Workflows✅Hierarchisches Empfängerverwaltungssystemmit erweiterten Regeln✅Multi-SMTP-Unterstützungmit M365 OAuth-Authentifizierung✅Flexible Anhangsverwaltungaus Workflows und Belegen✅Mandantenfähigkeitfür Multi-Company-Umgebungen✅Grafische Administrationsoberfläche(Blazor UI)✅Mail-Journalmit umfassender Protokollierung✅Container-readyfür moderne DevOps-Umgebungen✅Automatische Fehlerbenachrichtigungbei Mail-Problemen✅Template-basierte E-Mailsmit dynamischen Platzhaltern✅Workflow-Filterfür zeitgesteuerte Verarbeitung✅Health-Checksfür Monitoring und Überwachung✅No-Rule Warning Servicefü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:
BeimDererstenServiceStartprüfterkenntbeim Start, ob dieAnwendungDatenbankeine leere/fehlende DatenbankexistiertDasFallsXAFnichtFrameworkvorhanden,erstelltwird die Datenbank automatischalleangelegt- Alle benötigten Tabellen werden erstellt
- 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 abgeschlossen1- Fehler beim Update2- Update nicht erforderlich
Für lokale Installation:Windows-Dienst:
- Starten Sie
diedenAnwendung über MesoWorker.Win.exeWindows-Dienst oderMesoWorker.Blazor.Server.führen SieMesoWorkerService.exeaus - 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:AdminPasswort:Leer(mussSie beierster Anmeldung gesetzt werden)Rolle: Administrators
Passwort-Verwaltung:
Standard-Admin-Benutzer hat initial kein PasswortBeider ersten Anmeldungmusseineinsicheres Passwortvergeben werdenPasswörter können über die Benutzeroberfläche geändert werdenUnterstützungfür"Passwortdenbei nächster Anmeldung ändern"-Funktionalität
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:5000Administration(oderundkonfigurierterKonfigurationPort)VorteileZugriff::Über jeden modernen Webbrowser- Vorteile:
✅PlattformunabhängigerVollständige XAF Desktop-FunktionalitätZugriff✅IdealErweitertefürEntwicklertools verfügbarRemote-Administration✅ModerneOptimiertWeb-Oberfläche- Mehrere
umfangreicheAdministratorenKonfigurationsarbeitenkönnen gleichzeitig arbeiten
für
Verwendung:
- Öffnen Sie einen Webbrowser
- Navigieren Sie zu
http://localhost:5000(oder IP-Adresse des Servers) - Melden Sie sich mit Benutzername
Adminund gesetztem Passwort an
Option B: Windows Desktop-Client (nur bei Windows-Dienst)
StartStart::MesoWorker.Win.exeVerbindungZugriff::DirekteDirekterDatenbankverbindungZugriffüberaufConnectionStringdem Server- Vorteile:
- Erweiterte Desktop-Funktionalität
- Optimiert für umfangreiche Konfigurationsarbeiten
- Erweiterte Entwicklertools (falls benötigt)
Option
Verwendung:
- Starten
(SieMesoWorker.im InstallationsverzeichnisBlazor.Server)Win.exe - Melden Sie sich mit Benutzername
Adminund 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:--updateDatabaseWeb-basierte-AdministrationStartet den Datenbankaktualisierungsmodus--forceUpdate- Erzwingt Update auch wenn Versionen übereinstimmen (optional)--silent- Keine Benutzerinteraktion erforderlich (optional)--helpoder-h- Zeigt Hilfe an
VorteileExit Codes::
✅0Plattformunabhängiger-ZugriffUpdate erfolgreich abgeschlossen1- Fehler beim Update2- 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:
-
Passwort ändern
- Ändern Sie das Admin-Passwort über
Browserdie Benutzerverwaltung ✅Empfehlung:IdealStarkesfürPasswortRemote-Administrationmit ✅mindestensModerne12Web-UI✅ Gleichzeitige Nutzung durch mehrere AdministratorenZeichen
- Ändern Sie das Admin-Passwort über
URL:http://localhost:5000(standardmäßig)Container:ghcr.io/css-edv-support/mesoworkerservice-blazor✅ÜberprüfenRich-Text-Formatierung:Sie,Schriftarten,obFarben,dieTabellenLizenz korrekt hinterlegt ist✅DerErweiterteServicePlatzhalter:zeigtKomplexeeinenObjektnavigationFehler, ✅fallsBedingtedieLogik:LizenzIf-Then-Else-Konstrukteungültig ✅Schleifen: Wiederholung von Inhalten✅Bilder: Eingebettete Grafiken und Logos✅Tabellen: Dynamische Datenbereichstabellenist-
ErstellungDatenbankverbindungenvon MailMerge-Vorlagen:testenInStellenderSieAdministrationsoberflächesicher,zudass"MailbeideVorlagen"Datenbankennavigierenerreichbar sindNeueWinLine-DatenRichTextMailMergeData-Vorlagesolltenerstellensichtbar sein
Rich-Text-Editor öffnen und Inhalte gestaltenMail-Merge-Felder über Ribbon-Menü einfügenVorlage in den Mail-Einstellungen zuweisen
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
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:
- SMTP-Konten einrichten (
unter "SMTP Konten") Mail-Einstellungen konfigurieren(sieheGrundeinstellungenSMTP-Konten einrichten)EmpfängerregelnMindestensdefinierenein(klassisch oder erweitert)Mail-Vorlagen zuweisen(Textbausteine oder MailMerge)Workflow-Filter einrichten(zeitbasiert)
6. Erste Test-E-Mail
Für einen ersten Test:
Workflow-EinstellungenSMTP-Konto füreinen Mandanten aktivierenTest-SMTP-KontoE-Mail-Versand konfigurierenEinfacheKennzeichnenMail-EinstellungenSiemiteinstatischenKontoEmpfängernals Standard-KontoMail-Worker-JobMandanten aktivieren
- Prüfen Sie, welche Mandanten in der Liste angezeigt werden
Test-WorkflowAktiviereninSieWinLinedieauslö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.
-
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
-
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
-
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
-
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:
AusführlicheSMTP-Konto AnwenderdokumentationEinstellungen
E-Mail-Einstellungen für daseinen erweiterteWorkflow
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.
-
Beleg-Überwachung
- Der Dienst überwacht Bestelldateizeilen (z.B. Auftragspositionen)
- Filterkriterien bestimmen, welche Zeilen verarbeitet werden
- Unterstützt verschiedene Belegarten (Angebote, Aufträge, Lieferscheine, Rechnungen)
-
Duplikats-Prüfung
- Jede Zeile wird über Kontonummer, Laufnummer und Zeilennummer identifiziert
- Bereits verarbeitete Zeilen werden übersprungen
- Protokollierung verhindert Mehrfachverarbeitung
-
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
-
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.
-
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)
-
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
-
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
-
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:
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:
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 dieseEinstellungenEinstellung verwendetwerdenwird
Standardanrede
Standardanrede:
Verwendung:WirdFallback-Anredeverwendet, wenn keine spezifische Anrede ermittelt werden kannBeispiel: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äreFirmen-E-Mail-Adresse des Kunden - An Kundenkontakt
senden:senden: E-Mail-Adresse des zugewiesenen Ansprechpartners - Sende an
EmailadresseE-Mail-Adresse fürRechnungsempfang: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ängerEmpfä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
- Immer
normale Empfänger - Immer:BCC: [email protected]als BCCErweiterte EmpfängerregelnAktivierungEinstellung:Erweiterte Empfängerregeln verwenden = AktiviertEffekt: Klassische Boolean-Flags werden ignoriert, nur Regeln werden verwendetFallback: Bei leeren Regeln wird das klassische System verwendetAttachment-Validierung: Alle Attachment-Validierungsregeln (SkipIfArchiveFormAttatchmentIsMissing, SkipIfVoucherArchiveFormAttatchmentIsMissing, OnlyWithAttachments) funktionieren identisch mit dem klassischen System
RegelkonfigurationErweiterte EmpfängerregelnGrundparameterFü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 ListeBeispiel: "[email protected],[email protected]"
CustomFieldRecipients (Benutzerdefinierte Felder)Quelle: Beliebiges Feld im KundenstammKonfiguration: Feldname inBenutzerdefiniertes FeldBeispiel: Feld "NotfallKontakt" → "[email protected]"
AdressenIndividuelle vs. GruppierteE-Mail-ZustellungDasauserweitertebenutzerdefiniertenSystem bietet Kontrolle darüber, ob Empfänger einzelne personalisierte E-Mails oder eine gruppierte E-Mail erhalten.Separate E-Mails pro EmpfängerZweck: Steuert die Art der E-Mail-Zustellung pro RegelAktiviert: 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 derRegel
inmiteinerHauptprioritätE-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 VerwendungAktiviertprimär):CustomerContact, Customer, FallbackContact (personalisierte Kommunikation)Deaktiviert: SalesRepresentative als CC, interne TeamsAktiviert: StaticRecipients wenn externe Partner/KundenDeaktiviert: StaticRecipients wenn interne Verteiler
Bedingte ZustellungslogikFunktionsweiseRegeln können ihre Zustellungsart dynamisch ändern basierend auf anderen gefundenen Empfängern:Bedingung: Empfängertyp vorhanden: Welcher Regeltyp geprüft wirdAlternative Zustellungsart: Zustellungsart wenn Bedingung erfüllt ist
Beispiel: InvoiceEmail-PrioritätRegel 1:InvoiceEmail,Kundenkontakt, Priorität1,10, To Regel 2:CustomerContact,Vertriebsmitarbeiter, Priorität1, To Bedingung: InvoiceEmail vorhanden →10, CCErgebnis wenn InvoiceEmail existiert: - InvoiceEmail: To (Hauptempfänger) - CustomerContact: CC (Information) Ergebnis wenn InvoiceEmail NICHT existiert: - CustomerContact: To (Hauptempfänger)PraktischeErgebnis:
Regel-Beispiele- Kundenkontakt
1:erhältStandardkonfigurationdie E-Mail - Vertriebsmitarbeiter erhält eine Kopie
BeispielFallback-Regel mit
HierarchieHauptpriorität 20 (sekundär):Regel1:3:CustomerContact,Kunde,Hauptpriorität 10, Verarbeitungsreihenfolge 100, To Regel 2: Customer, HauptprioritätPriorität 20,Verarbeitungsreihenfolge 100,ToRegel 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 mitverschiedenenPlatzhalternPrioritätenEinfache 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:imCustomerContact,AnhangHauptprioritätfinden10,SieVerarbeitungsreihenfolgeIhre100,RechnungTo{{OpNummer}}Regelvom2:{{AktuellsterBeleg.DatumFaktura:dd.MM.yyyy}}.SalesRepresentative,DerHauptprioritätGesamtbetrag10,beträgtVerarbeitungsreihenfolge{{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ängeHinweis: 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:
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-VorlageMails angehängt werden.Quellen für Anhänge:
Rich-Text-EditorWorkflow-Uploads::FormatierteDokumente,E-Mail-Inhaltedie im Workflow hochgeladen wurdenPlatzhalterBeleg-Anhänge::Dynamische InhalteDokumente ausWorkflow-Datenverknüpften Belegen (z.B. Rechnungen, Lieferscheine)Textbaustein-ÜberschreibungArchivformular-Filter::AlternativeNurTextbausteinnummerDokumente mit bestimmten Archivformularen
AnhangskonfigurationKonfigurationsoptionen:
GrundoptionenGrundoptionen:
- Anhänge
einschließeneinschließen::AktiviertAnhangsfunktionalitätdie Anhangsfunktion - Nur mit
AnhängenAnhängen::E-Mail wird nurgesendetversendet, wenn Anhänge vorhanden sind - Archivformular-Filter: Wählt spezifische Archivformular-Typen aus
Validierungsoptionen:
- Überspringe bei fehlendem Archivformular-
AnhangAnhang::StopptVerhindertE-Mail-VersandVersand, wennspezifischeerforderliche Archivformular-Anhänge fehlen - Überspringe bei fehlendem Beleg-
AnhangAnhang::StopptVerhindertE-Mail-VersandVersand, wenn Beleg-Anhänge fehlen
Attachment-Validierung und Skip-LogikDas System bietet erweiterte Validierungsoptionen, die den E-Mail-Versand stoppen können:Anwendungsbeispiele:SkipIfArchiveFormAttatchmentIsMissingZweck:Rechnungsversand:VerhindertNurE-Mail-Versandsenden, wennerforderlichePDF-RechnungArchivformular-AnhängevorhandenfehlenistFunktionsweise:Auftragsbestätigung:Prüft dieFilterArchiveFormIdsund stoppt den Versand wenn keine UploadsNur mitden entsprechenden Formulartypen vorhanden sindAuftragsformularAnwendungsfall:Lieferbenachrichtigung:SicherstellungNurdassmitwichtige Dokumente (z.B. Rechnungen, Verträge) vor dem E-Mail-Versand vorhanden sind
SkipIfVoucherArchiveFormAttatchmentIsMissingZweck: Verhindert E-Mail-Versand wenn Beleg-Anhänge fehlenFunktionsweise: Prüft ob Anhänge aus dem verknüpften Beleg geladen werden konntenAnwendungsfall: Sicherstellung dass Belege (Rechnungen, Lieferscheine) vor dem Versand vollständig sind
OnlyWithAttachmentsZweck: Verhindert E-Mail-Versand wenn überhaupt keine Anhänge vorhanden sindFunktionsweise: 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
FilterFilter:Option 1: Zeitraum-Filter (Since)
Aktiv:Workflowabruf innerhalb Zeitraum aktivZeitraum:Abrufen von Workflows seitBeispiel: NurVerarbeitet Workflows der letzten24XStundenStunden/TageFormat: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:VerarbeitetWorkflowabrufalle Workflows ab einem festen DatumaktivDatum:Format:"01.01.2024")WorkflowabrufDateTimeab(z.B.DatumBeispiel:Beispiel: Alle Workflows seit01.01.2024Format: DateTimeJahresbeginn
Option 3: Logischer Zeitbereich-Filter (Time Range)
⭐NEUAktiv:ZeiträumenFiltertVerarbeitet WorkflowsnachbasierendlogischemaufZeitbereichlogischen- aktivZeitbereich: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)
- Dieses Jahr
Vorteil:Vorteil: Keine Wartung fester Datumswerte erforderlich- das System berechnet den Zeitraum automatischAnwendungsfall:Beispiel:Regelmäßige"DieserVerarbeitungMonat"ohneverarbeitetmanuelleautomatischAnpassungallederWorkflowsFilterseit dem 1. des aktuellen Monats
Filter-
PrioritätDie Filter werden in folgender Reihenfolge angewendet (erster aktiver Filter wird verwendet):Priorität:- Zeitraum-Filter (
Since):aktiv)RelativewirdZeitspannezuerst(z.B. letzte 24 Stunden)geprüft - Falls nicht aktiv: Datum-Filter
(After): Festes Startdatum - Falls nicht aktiv: Logischer Zeitbereich-Filter
(Time Range): Automatisch berechneter Zeitraum Fallback:Fallback:1.AlleJanuarWorkflows seit 1970(alle Workflows)
HinweisWichtig::Es kann immer nureiner der dreiein Filtergleichzeitigaktiv 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-JournalRegeldesignDas
- Mail-Journal
- protokolliert alle versendeten und fehlgeschlagenen E-Mails.
Informationen im Journal:
:10Zeitstempel=desPrimäre EmpfängerVersands/Fehlers15Empfänger=(To,Zusätzliche/paralleleCC,EmpfängerBCC)20 = Fallback-EmpfängerBetreff30+Status=(versendet,Ultimatefehlgeschlagen,Fallbackwartend)- Fehlermeldungen (bei fehlgeschlagenen E-Mails)
- Verknüpfter Workflow
VerarbeitungsreihenfolgeÜberprüfensinnvollSienutzen:regelmäßigInnerhalbdasjeder Hauptpriorität logische ReihenfolgeVerarbeitung bei Treffer stoppen sparsam einsetzen: Nur bei exklusiven EmpfängernBedingte Logik gezielt nutzen: Nur wenn wirklich benötigtKlare Bemerkungen: Jede Regel mit Hauptpriorität und Zweck dokumentierenSeparate E-Mails gezielt nutzen: Nur für personalisierte Inhalte
Verwendung:
WartungRegelmäßige Überprüfung: Mail-Journal aufFehlerfehlgeschlageneprüfenE-MailsEmpfängerdatenAnalysierenaktuellSiehalten:FehlermeldungenKundenstamm-Pflegebei ProblemenSMTP-KontenÜberwachenüberwachen:SieVerbindungendieund AuthentifizierungZustellungsrateTest-E-Mails: Regelmäßige Funktionstests
No-Rule Warning ServiceDer 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.
WorkflowsAdmin-E-Mail-Adressenmitwerdenaktiviertenin den Mail-Einstellungen (appsettings.json oder Umgebungsvariablen) konfiguriert:"MailSettings":Nur{Workflows mit aktiven Regeln werden überwachtCRM-Fälle im konfigurierten Zeitraum"AdminMailRecipients":Prüfung["[email protected]",der"[email protected]"]Fälle}im definierten Lookback-ZeitraumE-Mail-Versand-Status: Vergleich mit tatsächlich versendeten E-Mails
Konfiguration:
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-MailderkonntebetroffenennichtCRM-Fälleversendet werdenMandanteninformationSMTP-Server ist nicht erreichbarÜberprüfungszeitraumAuthentifizierung fehlgeschlagenDetaillierteLizenzTabelleistmit:ungültig- oder
Fall-IDSchritt-NummerWorkflow-Nummer und -BezeichnungKurzbeschreibungErstellungsdatum
abgelaufen
KonfigurationProtokollierung
Admin-Oberfläche
Der EinstellungenService
Inerstellt derdetaillierte Administrationsoberfläche kannProtokolldateien für jedenDiagnose Mandantenund eine NoRuleWarningSettings-Konfiguration erstellt werden:Überwachung.
Einstellungsparameter:Protokolldateien:
| |||
| |||
| |||
| |||
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 aufmindestens das 2-3-facheWindows-Dienst:des MailWorkerJob-IntervallsLogs/MesoWorkerService-[Datum].txtBeispiel:Container:BeiAusgabeMailWorkerJob-IntervallübervonDocker30LogsSekunden(docker→logsGrace Period von 15-20 MinutenBei häufigeren Intervallen entsprechend anpassenmesoworkerservice)
BeispielProtokollierungsstufen::
- Information:
GraceNormalePeriodBetriebsmeldungen - Warning:
15WarnungenMinuten(z.B.werdenfehlende Empfänger) - Error: Fehler (z.B. Datenbankverbindung fehlgeschlagen)
- Debug: Detaillierte Debug-Informationen (nur
Workflowsfürüberprüft,Fehlersuche)
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:
Fehler0Überprüfen0Sie8Protokolle*regelmäßig*auf?-undTäglich um 8:00 Uhr (Standard)Warnungen0Behalten0Sie*/4"Information"*als* ?- Alle 4 StundenStandard-ProtokollierungsstufeFehlersuche0Verwenden0Sie9-17"Debug"*nur*zurMON-FRI-(erzeugtStündlichviele Einträge)- Archivieren Sie alte Protokolldateien regelmäßig
Wartungsaufgaben
Regelmäßige Aufgaben:
-
Mail-Journal prüfen (täglich)
- Überprüfen Sie fehlgeschlagene E-Mails
- Analysieren Sie Trends bei Fehlern
-
Stammdaten pflegen (wöchentlich)
- Aktualisieren Sie E-Mail-Adressen von
9-17Kunden - Überprüfen
MontagSiebisAnsprechpartner-Daten
Uhr,Freitag - Aktualisieren Sie E-Mail-Adressen von
-
SMTP-Konten überwachen (wöchentlich)
- Testen Sie SMTP-Verbindungen
- Überprüfen Sie OAuth-Token (M365)
-
Protokolldateien prüfen (wöchentlich)
- Suchen Sie nach wiederkehrenden Fehlern
- Überprüfen Sie Performance-Warnungen
-
Service-Status überwachen (täglich)
- Health-Check-Endpoint aufrufen:
http://server:5000/health - Windows-Dienst-Status prüfen
- Health-Check-Endpoint aufrufen:
-
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üfenAktiviert/deaktiviertSiedenKundenstamm-DatenJob global(E-Mail-Adressen)startnow:PrüfenStartetSiedenEmpfängerregelnJobinsofortMail-Einstellungen- Ü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
-
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
-
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
-
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
-
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
-
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:
- ✗
Enabledist auffalsegesetzt - ✗ Keine gültigen Empfänger konfiguriert (WarningRecipients leer oder ungültig)
- ✗ SMTP-Konto nicht verfügbar oder falsch konfiguriert
- ✗ Job ist in
appsettings.jsondeaktiviert (enabled: false) - ✗ Cron-Expression ist fehlerhaft
Lösungsschritte:
- Überprüfen Sie die Logs nach Fehler-Meldungen
- Prüfen Sie die Konfiguration in der Administrationsoberfläche
- Testen Sie das SMTP-Konto mit einer Test-Mail
- 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:
- Reduzieren Sie den LookbackPeriod (z.B. auf 24 Stunden)
- Erhöhen Sie die GracePeriod (z.B. auf 20-30 Minuten)
- Beheben Sie die zugrunde liegenden Konfigurationsprobleme
- 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:
- Überprüfen Sie die Logs auf Fehler beim E-Mail-Versand
- Prüfen Sie die Datenbank-Verbindung
- Kontrollieren Sie die
NoRuleWarningJournal-Tabelle auf Einträge - 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:
- Setzen Sie Grace Period auf mindestens 15 Minuten
- Überprüfen Sie die MailWorkerJob-Konfiguration
- Validieren Sie die Systemzeit auf allen Servern
- Prüfen Sie die SQL-Query in den Logs
Migration und Einrichtung
Bei der ersten Verwendung des No-Rule Warning Service:
- Automatische Datenbankerstellung: Die Tabellen
NoRuleWarningSettingsundNoRuleWarningJournalwerden automatisch erstellt - Konfiguration erstellen: In der Admin-Oberfläche neue
NoRuleWarningSettingsfür gewünschte Mandanten anlegen - Job aktivieren: In
appsettings.jsonoder Container-Umgebungsvariablen aktivieren - Erste Ausführung: Optional
startnow: truesetzen für sofortigen Test - 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
OrderLineWorkerJobmit 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
UseDatevarianteKalenderinOrderLineWorkflowSettings - Wahl zwischen Standard-Datumsfeldern
(Lieferdatum/BestaetigtesLieferdatum)und Kalender-Datumsfeldern(KalenderStartdatum/KalenderEnddatum) - Standardmäßig deaktiviert für Abwärtskompatibilität
- Neue Eigenschaft
🐛 FixedFixed:
- Deutsche Sprachressourcen im Blazor Docker Container
: Behebung eines Problems, bei dem deutsche Lokalisierungsressourcen nicht im Container verfügbar waren- Hinzufügen von
SatelliteResourceLanguages=dezu allen relevanten Projekten(Blazor.Server, Module, Security.Module) - Sicherstellen, dass DevExpress
.deNuGet-Pakete korrekt als Satellite Assemblies publiziert werden - Deutsche Sprachauswahl in XAF Anwendungen funktioniert nun korrekt im Container
- Hinzufügen von
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:
- E-Mail: [email protected]
- Verbesserungsvorschläge: [email protected]
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