Hauptkomponenten
MesoWorkerService besteht aus fünf 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: Jede Sekunde (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:
SMTP-Konto Einstellungen
E-Mail-Einstellungen für einen Workflow
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
-
Verknüpfung mit Beleg-Workflow
- Beleg-Workflow als Elternfall verknüpfen: Verknüpft die erzeugten Belegzeilen-Workflows mit dem übergeordneten Beleg-Workflow als Tochter-Fälle
- Warte auf Beleg-Workflow (NEU): Verhindert die Erzeugung von Belegzeilen-Workflows, bis ein Beleg-Workflow existiert
- Wenn aktiviert, werden Belegzeilen nur verarbeitet, wenn bereits ein Workflow für den Beleg (Angebot, Auftrag, Lieferschein oder Rechnung) vorhanden ist
- Nicht verarbeitete Zeilen werden beim nächsten Job-Lauf erneut geprüft
- Nützlich für sequentielle Workflow-Erzeugung: erst Beleg-Workflow, dann Zeilen-Workflows
-
Anhänge anfügen
- Beleg-Dokument anfügen: Fügt das Beleg-PDF aus der ArchivId der Belegstufe an (z.B. ArchivIdAngebot, ArchivIdAuftrag, ArchivIdLieferschein, ArchivIdFaktura)
- Beleg-Anhänge anfügen: Fügt alle Beleganhänge aus der DokumentenId des Belegs als Anhänge zum CRM-Fall hinzu
- Übergeordnete Fall-Anhänge: Kopiert Anhänge vom übergeordneten CRM-Fall, wenn LinkVoucherWorkflowAsParent aktiviert ist
- Alle Anhänge werden automatisch als CrmUploads-Einträge gespeichert
- Duplikate werden erkannt und übersprungen
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. Eine vollständige Übersicht aller verfügbaren Eigenschaften finden Sie in der BestelldateiMitte-Klassendokumentation.
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
Hinweis: Für eine vollständige Übersicht aller verfügbaren Formatierungsoptionen (RTF-Konvertierung, Prefix/Suffix, etc.) siehe Formatangaben für Platzhalter.
Beispiel Kurzbeschreibung:
{BestelldateiKopf.Auftragsnummer}: {Artikelnummer} {Bezeichnung}
Ergebnis: AUF-12345: ART001 Premium-Widget
Konfiguration:
Workflow-Erzeugungseinstellungen werden pro Mandant in der Administrationsoberfläche konfiguriert. Für Details zu Platzhaltern und Formatierung siehe Formatangaben für Platzhalter.
Anhangsverwaltung:
Die folgenden Optionen stehen zur Verfügung, um Dokumente automatisch an die erzeugten CRM-Fälle anzufügen:
-
Beleg-Dokument anfügen (AttachVoucherDocument)
- Fügt das Hauptdokument des Belegs aus der ArchivId der entsprechenden Belegstufe an
- Unterstützt alle Belegarten: Angebot (ArchivIdAngebot), Auftrag (ArchivIdAuftrag), Lieferschein (ArchivIdLieferschein), Rechnung (ArchivIdFaktura)
- Das Dokument wird als PDF aus dem Archiv geladen
-
Beleg-Anhänge anfügen (AttachVoucherAttachments)
- Fügt alle zusätzlichen Anhänge des Belegs aus der DokumentenId an
- Lädt alle zum Beleg gehörenden Dokumente über ArchivBusiness.LadeBelegDokumenteAsync
- Besonders nützlich für zusätzliche Unterlagen wie Lieferscheine, Zertifikate, etc.
-
Übergeordnete Fall-Anhänge anfügen (AttachParentWorkflowAttachments)
- Kopiert alle Anhänge vom übergeordneten CRM-Fall
- Funktioniert nur in Verbindung mit "LinkVoucherWorkflowAsParent"
- Ermöglicht die Vererbung von Dokumenten entlang der Belegkette (Angebot → Auftrag → Lieferschein → Rechnung)
Wichtige Hinweise zur Anhangsverwaltung:
- Alle Anhänge werden als CrmUploads-Einträge im CRM-System gespeichert
- Duplikate werden automatisch erkannt und nicht erneut angehängt
- Die Dokumentenkonvertierung (SPL → PDF) erfolgt automatisch über den MesospoolService
- Bei Fehlern werden detaillierte Log-Einträge erstellt, ohne die Workflow-Erstellung zu unterbrechen
Terminsynchronisation
Funktion: Automatische Erstellung von Kalender-Terminen aus CRM-Einträgen über MS Graph API
Ausführung: Alle 10 Minuten (konfigurierbar über Quartz__AppointmentWorkerJob__scheduler)
Funktionsweise:
Dieser Dienst ermöglicht es, aus CRM-Einträgen (Workflows) in WinLine automatisch Termine in Microsoft Exchange/Outlook-Kalendern zu erstellen. Die Termine werden über die Microsoft Graph API direkt in den persönlichen Kalendern der Empfänger angelegt.
-
CRM-Einträge-Auswahl
- Der Dienst überwacht konfigurierte Workflows
- Flexible Filterkriterien für präzise CRM-Eintrags-Selektion
- Nur noch nicht verarbeitete Einträge werden berücksichtigt
-
Datumsfeld-Ermittlung
- Wählbare Datumsfelder aus CRM:
- Start-/Enddatum (C006/C007)
- Kalenderstart-/-enddatum (C031/C032)
- Eskalationsdatum (C018)
- Erfassungsdatum (C005)
- Optional: Zeitdauer-Addition zu ermittelten Datumsfeldern
- Ganztags-Option steuerbar über konfigurierbare CRM-Eigenschaft
- Wählbare Datumsfelder aus CRM:
-
Empfänger-Ermittlung
- Flexible Kombination mehrerer Empfänger-Quellen:
- Verfassender Benutzer: Ersteller des Workflows
- Delegiert an Benutzer: Zuständiger Benutzer
- Delegiert an Gruppe: Alle Mitglieder der zugewiesenen Gruppe
- XRM-Einträge: Alle unterstützten Typen aus CrmMehrfacheinträgen
- XRM-Einträge (Benutzer): Nur Benutzer (Typeeigenschaft = 99)
- XRM-Einträge (Gruppe): Nur Gruppen (Typeeigenschaft = 101)
- XRM-Einträge (Konto): Nur Konten (Typeeigenschaft = 1)
- XRM-Einträge (Kontakt): Nur Kontakte (Typeeigenschaft = 6)
- XRM-Einträge (Vertreter): Nur Vertreter (Typeeigenschaft = 51)
- Vertreter: Vertreter des zuständigen Benutzers (Incidence.Vertreter)
- Kunde: Kundenkonto (Incidence.Kundenkonto)
- Händler: Händlerkonto (Incidence.Haendlerkonto)
- Kontakt Kunde: Kundenkontakt (Incidence.KontaktKunde)
- Kontakt Händler: Händlerkontakt (Incidence.KontaktHaendler)
- Duplikate werden automatisch entfernt
- Flexible Kombination mehrerer Empfänger-Quellen:
-
Termin-Inhalt
- Betreff und Body mit VariableReplacementService
- Unterstützt Platzhalter wie
{{Fall.Kurzbeschreibung}},{{Fall.Beschreibung}} - Vollständige Formatierungsmöglichkeiten verfügbar (siehe Formatangaben für Platzhalter)
- HTML-Formatierung für Body möglich
- Optional: Fall-Anhänge mit Filterung nach Archiv-Formular-ID
-
Termin-Erstellung
- Termine werden über MS Graph API in persönlichen Kalendern erstellt
- Pro Empfänger ein separater Termin
- Authentifizierung über Azure AD Client Credentials (App-only)
- Journal-Protokollierung mit Graph Event ID für Nachverfolgung
-
Rücksynchronisation (Optional)
- Änderungen an Terminen in Exchange können zurück in CRM synchronisiert werden
- Nur verfügbar wenn CRM-Eintrag zu einem einzelnen Termin führte
- Konfigurierbar mit Zeithorizont (z.B. 7 Tage)
- Synchronisiert Änderungen an:
- Datum (Start/Ende) → entsprechende CRM-Datumsfelder
- Betreff → Kurzbeschreibung
- Body → Beschreibung
-
Folgeschritte-Unterstützung
- CRM-Workflows können aus mehreren Schritten bestehen (Id > 0 mit verschiedenen Schrittnummern)
- Bereits erstellte Termine für einen Fall werden unabhängig von der Schrittnummer erkannt
- Bei Folgeschritten werden bestehende Termine automatisch erkannt:
- Gleicher Empfänger: Termin wird aktualisiert (bei aktivierter Änderungserkennung)
- Neuer Empfänger: Neuer Termin wird erstellt
- Journal-Einträge verweisen auf die aktuelle Schrittnummer
- Ermöglicht das Verschieben von Terminen über nachfolgende Workflow-Schritte
-
Änderungserkennung (Optional)
- Aktivierbar über
EnableChangeDetectionin den AppointmentSettings - Prüft ob sich termin-relevante Felder geändert haben:
- Datum (Start/Ende)
- Betreff
- Body
- Empfänger
- Aktualisiert bestehende Termine bei Änderungen
- Erstellt neue Termine für neu hinzugekommene Empfänger
- Verhindert Duplikate bei unveränderter Daten
- Aktivierbar über
-
Automatisches Löschen von Terminen (Optional)
- Termine können automatisch verhindert oder gelöscht werden, wenn bestimmte Bedingungen erfüllt sind
- Zwei Löschbedingungen stehen zur Verfügung (einzeln oder kombiniert):
- DeleteProperty: Eigenschaft die angibt, dass der Termin nicht erstellt werden soll
- DeleteFilter: Filterkriterium zur Ermittlung welche Termine nicht erstellt werden sollen
- Prävention vor Erstellung: Löschbedingungen werden VOR der Terminerstellung geprüft - Termine die Bedingungen erfüllen werden gar nicht erst angelegt (Performance-Optimierung)
- Nachträgliche Löschung: Bereits erstellte Termine werden gelöscht wenn:
- Löschbedingungen nachträglich konfiguriert wurden
- CRM-Daten nach Terminerstellung geändert wurden (z.B. Eigenschaft nachträglich gesetzt)
- Löschung erfolgt pro Empfänger einzeln über die Graph API
- Journal-Protokollierung mit
DeletedundDeletedOnfür Nachverfolgung
Voraussetzungen:
Für die Graph API Integration werden folgende Voraussetzungen benötigt:
-
Microsoft Entra ID App Registration:
- Eine registrierte App in Microsoft Entra ID (ehemals Azure AD)
- Client ID und Tenant ID
- Client Secret zur Authentifizierung
- Konfigurierte Application Permissions:
Calendars.ReadWrite- Zum Erstellen/Aktualisieren von TerminenUser.Read.All- Zum Abrufen von Benutzer-eMail-Adressen
-
Admin Consent:
- Die konfigurierten Permissions benötigen Admin Consent
- Ein Administrator mit entsprechenden Berechtigungen muss die Zustimmung erteilen
-
Microsoft 365 Lizenzen:
- Benutzer benötigen Microsoft 365 / Exchange Online Postfächer
- Kalender müssen für die betroffenen Benutzer verfügbar sein
Schritt-für-Schritt-Anleitung: Microsoft Entra ID App-Registrierung erstellen
Diese Anleitung beschreibt die Erstellung einer App-Registrierung in Microsoft Entra ID für eine serverseitige Integration (App-only), welche Microsoft Graph verwendet.
Erforderliche Berechtigungen:
- Entra Administrator-Rolle oder entsprechende Berechtigungen zum Erstellen von App-Registrierungen
- Berechtigung zur Erteilung der Administratorzustimmung (Admin Consent)
Schritt 1: App registrieren
- Öffnen Sie das Microsoft Entra Admin Center
- Navigieren Sie zu: Identity → Applications → App registrations
- Klicken Sie auf: New registration
- Tragen Sie folgende Werte ein:
- Name:
Mesonic CRM Integration - Supported account types:
Accounts in this organizational directory only (Single tenant) - Redirect URI: Leer lassen
- Name:
- Klicken Sie auf: Register
Schritt 2: Wichtige IDs notieren
- Öffnen Sie in der erstellten App die Seite: Overview
- Notieren Sie folgende Werte für die spätere Konfiguration:
- Application (client) ID
- Directory (tenant) ID
Diese Werte werden später in den Graph API Settings im MesoWorkerService benötigt.
Schritt 3: Anmeldeinformation erstellen (Client Secret)
Schritt 4: API-Berechtigungen hinzufügen (Microsoft Graph)
Schritt 5: Administratorzustimmung erteilen (Admin Consent)
- Bleiben Sie auf der Seite: API permissions
- Klicken Sie auf: Grant admin consent for [Ihr Organisationsname]
- Bestätigen Sie die Aktion mit: Yes
- Überprüfen Sie, dass in der Spalte "Status" bei beiden Berechtigungen ein grüner Haken mit "Granted for [Organisationsname]" angezeigt wird
Schritt 6: Werte für die Konfiguration zusammenstellen
Stellen Sie sicher, dass folgende Werte dokumentiert und sicher aufbewahrt wurden:
- Client ID (Application ID)
- Tenant ID (Directory ID)
- Client Secret (Value)
Diese Werte werden im nächsten Schritt in den Graph API Settings im MesoWorkerService hinterlegt.
Sicherheitsempfehlungen:
- Bewahren Sie das Client Secret ausschließlich in sicheren Passwortspeichern oder Secrets-Management-Systemen auf (z. B. Azure Key Vault)
- Dokumentieren Sie das Ablaufdatum des Secrets und implementieren Sie einen Prozess zur rechtzeitigen Erneuerung
- Verwenden Sie in Produktivumgebungen idealerweise Azure Key Vault zur Speicherung der Secrets
- Vermeiden Sie die Speicherung von Secrets in Quellcode, Konfigurationsdateien oder Datenbanken
- Implementieren Sie eine regelmäßige Rotation der Client Secrets (empfohlen: alle 6-12 Monate)
Konfiguration:
Termin-Einstellungen werden pro Mandant in der Administrationsoberfläche konfiguriert. Für Details zu Platzhaltern und Formatierung in Subject Template und Body Template siehe Formatangaben für Platzhalter.
-
Graph API Settings: Erstellen Sie zunächst wiederverwendbare Graph API Zugangsdaten unter "Graph API Settings"
- Name: Bezeichnung für die Zugangsdaten (z.B. "Production Graph API")
- Client ID: Azure AD Application ID
- Tenant ID: Azure AD Directory ID
- Client Secret: Azure AD Client Secret
-
Appointment Settings: Konfigurieren Sie dann die Termin-Einstellungen unter "Appointment Settings"
- Graph API Settings: Wählen Sie die zuvor erstellten Graph API Zugangsdaten
- Date Field Type: Welches CRM-Datumsfeld verwendet werden soll
- Duration To Add: Optional: Zeitdauer die zum Datum addiert wird
- Recipient Sources: Kombination der Empfänger-Quellen (Mehrfachauswahl)
- Enable Back Sync: Rücksynchronisation aktivieren
- Back Sync Time Horizon: Zeithorizont für Rücksynchronisation (z.B. 7 Tage)
- Delete Property: Optional: Eigenschaft die steuert ob Termine gelöscht werden sollen
- Delete Filter: Optional: Filterkriterium zur Ermittlung zu löschender Termine
Vorteil: Die Graph API Zugangsdaten können für mehrere Termin-Einstellungen wiederverwendet werden.
Beispiel-Setup:
Graph API Settings:
Name: "Production Graph API"
Client ID: "12345678-1234-1234-1234-123456789012"
Tenant ID: "87654321-4321-4321-4321-210987654321"
Client Secret: "***************"
Appointment Settings:
Name: "Service-Termine"
Graph API Settings: → "Production Graph API"
Date Field Type: CalendarStartEndDate
Duration To Add: 01:00:00 (1 Stunde)
Recipient Sources: DelegatedToUser + DelegatedToGroup
Subject Template: "Service: {{Fall.Kurzbeschreibung}}"
Body Template: "<p>Beschreibung: {{Fall.Beschreibung}}</p>"
Enable Back Sync: true
Back Sync Time Horizon: 7.00:00:00 (7 Tage)
Delete Property: → "Termin löschen" (Eigenschaft 999)
Delete Filter: → Filter für "Stornierte Aufträge"
Beispiel für Löschbedingungen:
Die Löschbedingungen werden OR-verknüpft - das heißt, wenn entweder die Eigenschaft vorhanden ist ODER der Filter zutrifft, wird der Termin gelöscht:
DeleteProperty: Eigenschaft "Termin storniert" (Nummer 150)
→ Wenn diese Eigenschaft im CRM-Fall gesetzt ist, wird der Termin gelöscht
DeleteFilter: "c017 = 101 AND c004 = -2"
→ Alle Fälle des Workflows 101 mit Status -2 (storniert) werden gelöscht
Anwendungsfälle für Terminlöschung:
- Stornierte Aufträge: Automatisches Löschen von Terminen bei Auftragsstornierung
- Status-Änderungen: Termine löschen wenn Fall-Status auf "abgeschlossen" oder "storniert" wechselt
- Eigenschafts-basiert: Flexibles Löschen über frei definierbare CRM-Eigenschaften
- Filter-basiert: Komplexe Löschbedingungen über CRM-Filterkriterien
Sicherheitshinweis:
Das Client Secret sollte sicher verwahrt werden. Verwenden Sie idealerweise:
- Azure Key Vault für Production-Umgebungen
- Umgebungsvariablen statt hardcoded in der Datenbank
- Regelmäßige Rotation der Secrets
Offene Posten (OP-Versand)
Funktion: Automatischer Versand von Offene-Posten-Übersichten und MahnungenOP-Infos an Kunden
Ausführung: Täglich um 7:00 Uhr (konfigurierbar über Quartz__OpenItemWorkerJob__scheduler)
Funktionsweise:
Der OP-Dienst ermittelt offene Posten aus der WinLine FIBU (Tabelle T019), gruppiert diese nach Kunden und versendet konfigurierbare E-Mails mit OP-Übersichten.Infos. So können Zahlungserinnerungen und MahnungenOP-Informationen automatisiert an Kunden gesendet werden.
-
OP-Ermittlung
- Abfrage der offenen Posten aus der WinLine FIBU-Tabelle T019
- Filterung nach Kontoart (Debitoren, Kreditoren oder beide)
- Optionale Einschränkung auf bestimmte Kontobereiche
- Konfigurierbare Fälligkeits- und Mahnstufenfilter
-
Kundengruppierung
- Offene Posten werden nach Kundenkontonummer gruppiert
- Kundenstammdaten (Name, Adresse, E-Mail) werden aus dem Kontenstamm angereichert
- Zusammenfassung mit Gesamtbetrag und Anzahl überfälliger Posten pro Kunde
-
Empfänger-Ermittlung
- Mehrstufige Empfängerermittlung mit Fallback-Logik:
- Rechnungs-E-Mail-Adresse des Kunden
- Kunden-E-Mail-Adresse
- Kundenkontakt
- Mahnempfänger (über erweiterte Empfängerregeln)
- Statische Empfänger
- Konfigurierbar über die OpenItemSettings in der Administrationsoberfläche
- Mehrstufige Empfängerermittlung mit Fallback-Logik:
-
E-Mail-Erstellung
- Drei Template-Optionen (nach Priorität):
- HTML-Editor-Vorlage (HtmlMailTemplate)
- RichText-MailMerge-Vorlage (MailTemplate)
- WinLine-Textbaustein (OverrideTextBlocknumber)
- Standard-Template als Fallback
- Platzhalter für OP- und Kundendaten (vollständige Referenz siehe unten)
{{#OP}}...{{/OP}}— Wiederholungsbereich pro offener Posten{{OP.xxx}}— OP-Felder,{{Kunde.xxx}}— Kundenstamm-Felder{{Beleg.xxx}}— Belegdaten,{ArchivLinkExt:...}— Archiv-Links{SALUTATION}/##Empfaenger##— Empfängerspezifische Anrede
- Drei Template-Optionen (nach Priorität):
-
Anhänge
- Originalrechnungen aus dem Archiv: Anhängen von Belegen aus MesoArchivWeb (konfigurierbar über Archivformular-IDs)
- OP-Blatt aus der FIBU als PDF: Automatischer Download des OP-Blatts über den WinLine Server Report-Service (
/ewlservice/reports) als PDF-Anhang. Optional kann überOpenItemListFormIdein alternatives Formular angegeben werden. Der Download wird mit PDF-Validierung (Magic-Bytes-Prüfung) abgesichert.
-
Versand und Journal
- Direktversand über konfigurierte SMTP-Konten
- Entwurfsmodus (SaveMailsAsDraft): Mails werden als EML-Datei im Postausgang (
QueuedMail) gespeichert. Der Benutzer kann die Mails in der Administrationsoberfläche prüfen, bearbeiten oder ignorieren. DerMailQueueProcessorversendet freigegebene Mails (Draft=false) automatisch und aktualisiert den OpenItemJournal-Eintrag. - OpenItemJournal-Eintrag pro Versand mit Status (Sent/Error/Ignored), Fehlermeldung und EML-Datei
- Sendeintervall (SendIntervalDays): Verhindert Mehrfachversand an denselben Kunden innerhalb eines konfigurierbaren Zeitraums
- Ignorieren-Flag: Manuelles Unterdrücken einzelner Kunden im Journal oder Postausgang
Selektionskriterien:
| Einstellung | Beschreibung |
|---|---|
| AccountType | Debitoren, Kreditoren oder beide |
| OnlyDueItems | Nur fällige Posten berücksichtigen |
| MinOverdueDays | Mindestanzahl überfälliger Tage |
| MinDunningLevel | Mindest-Mahnstufe |
| CustomerFilter | Optionaler DevExpress-Filterausdruck auf den Kontenstamm |
| OpenItemFilter | Optionaler DevExpress-Filterausdruck auf die offenen Posten |
Anhang-Optionen:
| Einstellung | Beschreibung |
|---|---|
| AttachOriginalInvoice | Originalrechnung aus dem Archiv anhängen |
| AttachArchiveFormIds | Archivformulare, deren Belege angehängt werden sollen |
| AttachOpenItemList | OP-Blatt als PDF vom WinLine Server anhängen |
| OpenItemListFormId | Alternative Formular-ID für das OP-Blatt (optional, 0 = Standard-Formular) |
Platzhalter-Referenz:
Innerhalb der OP-Vorlagen stehen folgende Platzhalter zur Verfügung. Alle Platzhalter unterstützen optionale Formatangaben (z.B. :C2, :dd.MM.yyyy) — siehe Formatangaben für Platzhalter.
Wiederholungsbereich:
Der Block {{#OP}}...{{/OP}} wird pro offener Posten wiederholt. Innerhalb dieses Blocks stehen die {{OP.xxx}}-Platzhalter zur Verfügung.
OP-Platzhalter (innerhalb {{#OP}}...{{/OP}}):
| Platzhalter | Beschreibung |
|---|---|
{{OP.BelegNr}} / {{OP.Belegnummer}} |
Belegnummer |
{{OP.BuchungsNr}} / {{OP.Buchungsnummer}} |
Buchungsnummer (z.B. "10001-RE202600032") |
{{OP.Betrag}} |
Ursprünglicher Betrag |
{{OP.Restbetrag}} |
Offener Restbetrag (berechnet) |
{{OP.ZahlungBetrag}} / {{OP.Bezahlt}} / {{OP.Teilzahlung}} |
Bereits bezahlter Betrag |
{{OP.Skontobetrag}} |
Skontobetrag |
{{OP.BetragWaehrung}} |
Betrag in Fremdwährung |
{{OP.Waehrung}} / {{OP.Buchungstext}} |
Währung |
{{OP.Buchungsdatum}} |
Buchungsdatum |
{{OP.Rechnungsdatum}} / {{OP.ReDatum}} |
Rechnungsdatum |
{{OP.Faelligkeit}} / {{OP.Fälligkeitsdatum}} |
Fälligkeitsdatum |
{{OP.ZahlungszielTage}} |
Zahlungsziel in Tagen |
{{OP.TageUeberfaellig}} / {{OP.Tageüberfällig}} |
Überfällige Tage (berechnet) |
{{OP.Mahnstufe}} |
Aktuelle Mahnstufe |
{{OP.BuchungsArt}} / {{OP.Buchungsartid}} |
Buchungsart-ID (0=Rechnung, 2=Gutschrift) |
{{OP.BuchungsArtText}} |
Buchungsart als Text ("Rechnung", "Gutschrift", etc.) |
{{OP.Kontonummer}} |
Kontonummer |
{{OP.Status}} |
Status |
Zusätzlich kann über die XPO-Objektnavigation auf verschachtelte Eigenschaften des OffenePosten-Objekts zugegriffen werden (z.B. {{OP.Personenkonto.Name}}).
Kunden-Platzhalter (überall in der Vorlage verfügbar):
| Platzhalter | Beschreibung |
|---|---|
{{Kunde.Name}} / {{Kunde.Kundenname}} / {{Kunde.Kontoname}} |
Kundenname |
{{Kunde.Kontonummer}} / {{Kunde.Konto}} |
Kontonummer |
{{Kunde.Email}} / {{Kunde.EmailAdresse}} |
E-Mail-Adresse |
{{Kunde.RechnungsEmail}} / {{Kunde.RechnungsversandEMailAdresse}} |
Rechnungsversand-E-Mail |
{{Kunde.AnsprechpartnerName}} / {{Kunde.Ansprechpartner}} |
Ansprechpartner |
{{Kunde.AnsprechpartnerEmail}} |
E-Mail des Ansprechpartners |
{{Kunde.GesamtOffen}} / {{Kunde.Offen}} / {{Kunde.Summe}} / {{Kunde.Total}} |
Gesamter offener Betrag |
{{Kunde.GesamtBrutto}} / {{Kunde.Brutto}} |
Gesamter Bruttobetrag |
{{Kunde.GesamtBezahlt}} / {{Kunde.Bezahlt}} |
Gesamter bezahlter Betrag |
{{Kunde.Anzahl}} / {{Kunde.Count}} |
Anzahl offener Posten |
{{Kunde.AnzahlUeberfaellig}} / {{Kunde.Anzahlüberfällig}} |
Anzahl überfälliger Posten |
{{Kunde.SummeUeberfaellig}} / {{Kunde.Summeüberfällig}} |
Summe überfälliger Beträge |
{{Kunde.AeltesteFaelligkeit}} / {{Kunde.Ältestefälligkeit}} |
Ältestes Fälligkeitsdatum |
{{Kunde.MaxTageUeberfaellig}} / {{Kunde.Maxtageüberfällig}} / {{Kunde.Maxtage}} |
Maximale überfällige Tage |
{{Kunde.Mesocomp}} |
Mandant |
Zusätzlich kann über die XPO-Objektnavigation auf verschachtelte Eigenschaften des ViewKontenstamm-Objekts zugegriffen werden (z.B. {{Kunde.Adresse.Strasse1}}, {{Kunde.FaktStamm.xxx}}).
Beleg-Platzhalter (innerhalb {{#OP}}...{{/OP}}, wenn ein passender Beleg existiert):
| Platzhalter | Beschreibung |
|---|---|
{{Beleg.xxx}} |
Zugriff auf Eigenschaften des BestelldateiKopf-Objekts (z.B. {{Beleg.Rechnungsnummer}}, {{Beleg.Endbetrag}}) |
Archiv-Link-Platzhalter (innerhalb {{#OP}}...{{/OP}}):
| Platzhalter | Beschreibung |
|---|---|
{ArchivLinkExt:Faktura|text=Rechnung ansehen|stunden=720} |
Externer Link zur archivierten Rechnung (zeitbegrenzt, kein Login nötig) |
{ArchivLinkInt:Faktura|text=Rechnung ansehen} |
Interner Link zur archivierten Rechnung (Login erforderlich) |
Unterstützte Belegarten: Faktura, Auftrag, Lieferschein, Angebot oder eine numerische DokId. Optionale Parameter: text=..., stunden=... (nur Ext), prefix=..., suffix=....
Anrede-Platzhalter:
| Platzhalter | Beschreibung |
|---|---|
{SALUTATION} / {{SALUTATION}} / ##Empfaenger## |
Empfängerspezifische Anrede |
Standardformatierung: Dezimalwerte werden automatisch als N2 (z.B. "1.234,56"), Datumswerte als dd.MM.yyyy formatiert (Kultur: de-DE).
Beispiel-Vorlage:
<p>{SALUTATION}</p>
<p>nachfolgend finden Sie eine Übersicht Ihrer offenen Posten:</p>
<table>
<thead>
<tr>
<th>Beleg-Nr.</th><th>Datum</th><th>Fällig</th>
<th>Betrag</th><th>Bezahlt</th><th>Offen</th>
<th>Tage überf.</th><th>Mahnstufe</th>
</tr>
</thead>
<tbody>
{{#OP}}
<tr>
<td>{{OP.BelegNr}}</td>
<td>{{OP.Rechnungsdatum:dd.MM.yyyy}}</td>
<td>{{OP.Faelligkeit:dd.MM.yyyy}}</td>
<td>{{OP.Betrag:N2}} €</td>
<td>{{OP.ZahlungBetrag:N2}} €</td>
<td>{{OP.Restbetrag:N2}} €</td>
<td>{{OP.TageUeberfaellig}}</td>
<td>{{OP.Mahnstufe}}</td>
</tr>
{{/OP}}
</tbody>
<tfoot>
<tr>
<td colspan="5"><strong>Gesamt ({{Kunde.Anzahl}} Posten)</strong></td>
<td><strong>{{Kunde.GesamtOffen:N2}} €</strong></td>
<td colspan="2"></td>
</tr>
</tfoot>
</table>
<p>Bitte überweisen Sie den offenen Betrag von <strong>{{Kunde.GesamtOffen:C2}}</strong>.</p>
Voraussetzungen:
- WinLine FIBU mit offenen Posten in Tabelle T019
- Optional: MesoArchivWeb für Archiv-Anhänge (Konfiguration unter
MesoArchivWebin appsettings.json) - Optional: WinLine Server mit Report-Service (
/ewlservice/reports) für OP-Blatt-Download als PDF (Konfiguration unterWinLineServerin appsettings.json)
Konfiguration:
OP-Einstellungen werden pro Mandant in der Administrationsoberfläche unter "OpenItemSettings" konfiguriert. Die Konfiguration umfasst sieben Registerkarten: Allgemein, Selektion, Vorlage, Empfänger, Versand, Anhänge und Antwort-An/Absender.
Ü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
-
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)