π€ mk360 β Automation & Workflow Optimierung¶
π Γbersicht: Automation ΓΌberall!¶
Ziel: Manuelle Prozesse eliminieren, Zeit sparen, Fehler reduzieren
π KERN-WORKFLOWS (n8n)¶
1. Client-Onboarding (VOLLAUTOMATISCH)¶
Trigger¶
Workflow: "Client-Onboarding-Complete"¶
NODES:
1. Webhook (Trigger)
ββ Input: {name, email, firma, projekttyp}
ββ Output: Validierter Datensatz
2. Datenvalidierung (Function Node)
ββ Email gΓΌltig?
ββ Pflichtfelder vollstΓ€ndig?
ββ Firma nicht leer?
ββ ELSE: Stop + Error Email
3. Vorbereitung Vertrag
ββ Lade Vertrag-Template aus Paperless
ββ Ersetze Platzhalter: {{name}}, {{firma}}, {{datum}}
ββ Output: HTML mit Daten
4. PDF Generierung (Gotenberg)
ββ HTML β PDF/A-3 (wichtig fΓΌr Archive!)
ββ Output: PDF Bytes
5. zu Paperless hochladen
ββ Tag: #neukunde, #vertrag, #{{firma}}
ββ Correspondent: {{name}}
ββ Output: Document ID
6. OpenSign Signatur-Request
ββ PDF hochladen
ββ Signatur-Request an {{email}}
ββ Webhook-URL setzen (fΓΌr Completion)
ββ Output: Signatur-Request ID
7. Warten auf Signatur
ββ Timeout: 14 Tage
βββ Falls nach 7 Tagen nicht signiert:
β ββ Reminder Email versenden
ββ Output: Signiertes PDF (wenn erfolg)
8. POST-SIGNATURE (nur wenn Signatur erfolg):
8a. AVV-Generierung (n8n Function)
ββ Template laden: AVV-Vorlage v2.0
ββ Platzhalter: Name, Firma, Leistungsbeschreibung
ββ Datenfluss: Welche Daten? Wie lange? Wo?
ββ SicherheitsmaΓnahmen: SSL, Backups, Zugriff
ββ Output: HTML-AVV
8b. AVV zu PDF (Gotenberg)
ββ HTML β PDF/A-3
8c. AVV zu OpenSign (zur Signatur)
ββ Tag: #avv, #dsgvo
ββ Signatur-Request
8d. Monica CRM: Kontakt anlegen
ββ Name, Email, Firma
ββ Tag: #neukunde, #{{projekttyp}}
ββ Projekt anlegen: Status "Active"
ββ Reminder: "Follow-up in 3 Monaten"
8e. Paperless: Customer Token generieren
ββ REST API: Generate Auth Token
ββ Speichere: Monica CRM (Projekt-Notiz)
ββ Output: {{customer_token}}
8f. Email an Kunde (Welcome)
ββ Template: "Willkommen bei mk360!"
ββ AnhΓ€nge: Signierter Vertrag, AVV
ββ Portal-Link: https://portal.mk360.de?token={{customer_token}}
ββ CC: Marco@mk360.de
8g. Email an Marco (Admin)
ββ Subject: "Neuer Kunde: {{firma}}"
ββ Infos: Vertrag signiert, nΓ€chste Schritte
ββ Action: "Projekt in Monica bestΓ€tigen"
9. DSGVO-Dokumentation
ββ Verarbeitungsverzeichnis Update
ββ Datenfluss dokumentieren
ββ Speichere in dsgvo_system DB
10. Error Handling
ββ If any node fails:
β ββ Log error detailliert
β ββ Email an Marco mit Error Details
β ββ Paperless: Dokumentiere Fehler
ββ If Signatur nach 14 Tagen nicht erfolgt:
ββ Final Reminder
ββ CRM: Status = "Pending Signature"
ββ Monica-Reminder fΓΌr Marco
Zeitaufwand: - Manuell: 2β3 Stunden pro Kunde - Automatisiert: 15 Minuten (nur Warten auf Signatur) - Ersparnis: >90%
Fehlerquoten: - Manuell: ~5-10% (Name vergessen, Adresse falsch, etc.) - Automatisiert: <0.5% (nur Validierungsfehler)
2. Rechnungs-Generierung (VOLLAUTOMATISCH)¶
Trigger¶
Option A: Manuell (Admin-Panel)
ββ Button: "Generate Invoice"
Option B: Automatisch nach Projekt-Abschluss
ββ Monica CRM: Status = "Completed"
ββ Webhook an n8n
Workflow: "Generate-Invoice-With-ZugFERD"¶
NODES:
1. Trigger (Manual oder Monica Webhook)
ββ Input: {{project_id}} oder {{customer_id}}
ββ Output: Projekt-Details
2. Daten laden aus Monica CRM
ββ Customer Name, Adresse, Tax ID
ββ Projekt: Titel, Beschreibung, Dauer
ββ Festpreis oder Stunden + Rate
ββ Output: Komplette Invoice-Daten
3. Rechnung berechnen (Function Node)
ββ Berechne:
β ββ Nettobetrag
β ββ MwSt 19% (oder 7% wenn BΓΌcher/Medien)
β ββ Rabatt (falls vorhanden, aus Projekt-Notizen)
β ββ Bruttobetrag
ββ Rechnungsnummer: 2025-{{counter}}
ββ Rechnungsdatum: Heute
ββ FΓ€lligkeitsdatum: Heute + 14 Tage
ββ Output: Invoice Object
4. HTML-Template befΓΌllen (Function Node)
ββ Template laden: "Invoice-Template-v2.0"
ββ Mustache/Handlebars:
β ββ {{customer.name}}
β ββ {{customer.address}}
β ββ {{invoice.number}}
β ββ {{invoice.date}}
β ββ {{line_items}}
β ββ {{totals.net}}
β ββ {{totals.tax}}
β ββ {{totals.gross}}
ββ FΓΌge Unternehmensdaten ein:
β ββ Logo
β ββ Bankverbindung
β ββ Steuernummer
β ββ Ustd-Nummer
β ββ Kontaktdaten
ββ Output: GefΓΌlltes HTML
5. PDF generieren (Gotenberg)
ββ HTML β PDF/A-3
ββ Format: A4 Portrait
ββ Margin: 10mm
ββ Output: PDF Bytes
6. ZugFERD integrieren (Python Function)
```python
import facturx
# Lade PDF von Gotenberg
pdf_data = {{5.output}}
# Vorbereite XML-Daten (EN 16931)
facturx_data = {
"invoice_number": "{{3.invoice.number}}",
"invoice_date": "{{3.invoice.date}}",
"due_date": "{{3.invoice.due_date}}",
"seller": {
"name": "mk360 - Marco Weber",
"street": "{{config.seller.street}}",
"postcode": "{{config.seller.postcode}}",
"city": "{{config.seller.city}}",
"country": "DE",
"tax_id": "{{config.seller.tax_id}}"
},
"buyer": {
"name": "{{2.customer.name}}",
"street": "{{2.customer.address.street}}",
"postcode": "{{2.customer.address.postcode}}",
"city": "{{2.customer.address.city}}",
"country": "DE",
"tax_id": "{{2.customer.tax_id}}"
},
"lines": [
{
"description": "{{project.title}}",
"quantity": 1,
"unit_price": "{{3.net_amount}}",
"tax_percent": 19.0
}
],
"totals": {
"net": "{{3.net_amount}}",
"tax": "{{3.tax_amount}}",
"gross": "{{3.gross_amount}}"
},
"payment_terms": "Zahlbar innerhalb von 14 Tagen",
"bank": {
"name": "{{config.bank.name}}",
"iban": "{{config.bank.iban}}",
"bic": "{{config.bank.bic}}"
}
}
# Generiere ZugFERD (PDF + XML)
zugferd_pdf = facturx.generate_from_file(
pdf_data,
facturx_data,
profiles=["EN16931"] # WICHTIG: Korrekt Profil
)
return zugferd_pdf
```
ββ Output: ZugFERD PDF mit eingebettetem XML
7. zu Paperless hochladen
ββ Tag: #rechnung, #ausgang, #{{customer.firma}}
ββ Document Type: "Invoice (Outgoing)"
ββ Correspondent: {{customer.name}}
ββ Output: Document ID
8. Signaturpad generieren (optional)
ββ PDF mit QR-Code zu Rechnung
ββ QR-Code: Link zur Rechnungs-BestΓ€tigung
ββ Output: PNG QR-Code
9. Email an Kunde
ββ Subject: "Rechnung {{number}} - mk360"
ββ Body: Template mit:
β ββ PersΓΆnlicher GruΓ
β ββ Rechnungsdetails zusammengefasst
β ββ Zahlungshinweis
β ββ Bankdaten
β ββ Kontakt bei Fragen
ββ Attachment: ZugFERD-PDF
ββ Attachment: CSV (fΓΌr Buchhaltung)
ββ Output: Email Delivery Confirmation
10. Email an Marco (Admin)
ββ Subject: "Rechnung {{number}} erstellt"
ββ Body:
β ββ Kundenname
β ββ Bruttobetrag
β ββ Zahlbarkeitsdatum
β ββ Link zu Paperless
ββ Output: Email Delivery Confirmation
11. Monica CRM Update
ββ Projekt: Status = "Invoiced"
ββ Projekt: Invoice ID = {{7.document_id}}
ββ Projekt: Invoice Date = {{3.invoice.date}}
ββ Reminder: "Check payment in 14 days"
ββ Output: Updated Project
12. Buchhaltungs-Daten speichern
ββ Tabelle: accounting_invoices
ββ Spalten:
β ββ invoice_number
β ββ customer_id
β ββ net_amount
β ββ tax_amount
β ββ gross_amount
β ββ status (pending/paid/overdue)
β ββ issued_date
β ββ due_date
β ββ paperless_document_id
ββ Output: DB Record
13. DSGVO-Log
ββ Verzeichnis: dsgvo_system.processing_log
ββ Eintrag: "Invoice generated for {{customer.name}}"
ββ Output: DB Record
14. Error Handling
ββ If any node fails:
β ββ Log Error detailliert
β ββ Email an Marco mit Fehlerbericht
β ββ Invoice Status = "Error"
β ββ Monica: Reminder fΓΌr Manual Review
ββ If ZugFERD-Validierung fehlschlΓ€gt:
ββ Generiere PDF-Fallback (ohne ZugFERD)
ββ Email an Marco: "ZugFERD failed, PDF sent"
ββ Output: Invoice trotzdem erstellt
Zeitaufwand: - Manuell: 30β45 Min (Word, PDF, Email, Buchhaltung) - Automatisiert: <2 Minuten (nur Workflow-Execution) - Ersparnis: 95%
Compliance: - β ZugFERD EN 16931 konform - β Audit-Trail in Monica - β Backup in Paperless - β DSGVO-Dokumentation - β Zahlungs-Tracking automatisiert
3. Zahlungs-Monitoring (HALBAUTOMATISCH)¶
Trigger¶
Workflow: "Monitor-Invoice-Payments"¶
NODES:
1. Timer: TΓ€glich 08:00 Uhr
ββ Trigger
2. Lade alle ausstehenden Rechnungen
ββ Query: SELECT * FROM accounting_invoices WHERE status = 'pending'
ββ Filter: due_date <= TODAY
ββ Output: Array von ΓΌberfΓ€lligen Rechnungen
3. FΓΌr jede ΓΌberfΓ€llige Rechnung:
3a. Berechne Tage ΓΌberfΓ€llig
ββ overdue_days = TODAY - due_date
ββ Output: Tage
3b. Bestimme Reminder-Stufe
ββ 1β3 Tage: "Freundliche Erinnerung"
ββ 4β7 Tage: "2. Erinnerung"
ββ 8β14 Tage: "Mahnung 1"
ββ 15β30 Tage: "Mahnung 2"
ββ >30 Tage: "Inkasso/Alert Marco"
3c. Email an Kunde (nur wenn Status-Change)
ββ Subject: "Zahlungserinnerung: Rechnung {{number}}"
ββ Body: Template je nach Reminder-Stufe
ββ Attachment: Rechnung nochmal
ββ Output: Email Delivery
3d. Monica CRM Update
ββ Projekt: last_reminder = TODAY
ββ Projekt: reminder_count += 1
ββ Output: Updated Project
3e. Update DB
ββ SET last_reminder = TODAY
ββ SET reminder_count = reminder_count + 1
ββ Output: DB Update
4. Zusammenfassung an Marco
ββ Email am Ende der AusfΓΌhrung
ββ Γbersicht:
β ββ Anzahl ausstehende Rechnungen
β ββ Gesamtbetrag ausstehend
β ββ Rechnungen gesendet heute
β ββ Rechnungen ΓΌberfΓ€llig >30 Tage
ββ Output: Admin Email
5. Error Handling
ββ If Email-Versand fehlschlΓ€gt:
β ββ Log Error
β ββ Email an Marco: "Reminder email failed"
ββ Output: Fehlerbericht
Zeitaufwand: - Manuell: 30 Minuten pro Tag (durchschauen, Emails schreiben) - Automatisiert: 0 Minuten (lΓ€uft im Hintergrund) - Ersparnis: 100% (nur Montag-Freitag ~150 Min/Monat)
4. DSGVO-Anfragen Auto-Handling¶
Trigger¶
Workflow: "Handle-DSGVO-Request"¶
NODES:
1. Webhook (Email oder Form)
ββ Input: {type, email, message, customer_id}
ββ Types: auskunft, berichtigung, lΓΆschung, dataporabilitΓ€t
2. Authentifizierung
ββ Ist {{email}} in unserer Kundendatenbank?
ββ IF NOT: Email mit "Wir kennen Sie nicht"
ββ IF YES: Speichere {{customer_id}}
3. Ticket in PostgreSQL anlegen
ββ Tabelle: dsgvo_requests
ββ Felder:
β ββ request_id (UUID)
β ββ customer_id
β ββ request_type
β ββ created_at
β ββ status = "pending"
β ββ message
ββ Output: Ticket ID
4. Je nach Request-Type:
4a. TYPE: "Auskunft"
ββ Lade alle Kundendata:
β ββ Monica CRM
β ββ Paperless Dokumente
β ββ Vaultwarden (nur Passwort-Count!)
β ββ Accounting Rechnungen
ββ Exportiere als JSON
ββ Hochladen zu Paperless
ββ Link generieren (48h gΓΌltig)
ββ Email mit Download-Link
4b. TYPE: "Berichtigung"
ββ Erstelle Ticket fΓΌr Marco
ββ Email: "Bitte Daten berichtigen"
ββ Link: Kundendetails in Monica
ββ Status: "requires_manual_review"
4c. TYPE: "LΓΆschung"
ββ Check: Sind offene Rechnungen?
β ββ IF YES: "Kann nicht gelΓΆscht werden (laufend GeschΓ€ft)"
β ββ IF NO: "Folgen Sie dem Link zur BestΓ€tigung"
ββ Generiere BestΓ€tigungs-Link (24h gΓΌltig)
ββ Email mit BestΓ€tigungs-Link
ββ Status: "requires_confirmation"
4d. TYPE: "DatenportabilitΓ€t"
ββ Exportiere alle Daten:
β ββ JSON (Paperless)
β ββ CSV (Rechnungen)
β ββ PDF (VertrΓ€ge)
β ββ ZIP-Datei
ββ Hochladen zu Paperless (24h verfΓΌgbar)
ββ Download-Link mit 48h GΓΌltigkeit
ββ Email mit Link
5. Auto-Response Email an Kunde
ββ Subject: "Ihre Datenschutz-Anfrage erhalten"
ββ Body:
β ββ BestΓ€tigung der Anfrage
β ββ Ticket-ID
β ββ Bearbeitungszeit: "3-5 Tage"
β ββ KontaktmΓΆglichkeit
ββ Output: Email Delivery
6. Alert fΓΌr Marco (Admin)
ββ Email sofort
ββ Inhalt:
β ββ Anfrage-Typ
β ββ Kunde
β ββ Ticket-Link
β ββ Aktion nΓΆtig?
ββ Output: Admin Email
7. DSGVO-Dokumentation
ββ Speichere Anfrage in dsgvo_system DB
ββ Timestamp: Wann gestellt
ββ Bearbeitungszeit: Wie lange
ββ Compliance fΓΌr Audits
ββ Output: DB Record
8. Error Handling
ββ If Customer nicht gefunden:
β ββ Email: "KΓΆnnen Sie nicht verifizieren"
ββ If LΓΆschung zu komplex:
ββ Eskalation an Marco
Vorteile: - β Automatische Ticketierung - β Compliance-Dokumentation - β 3-5 Tage Bearbeitungszeit automatisch garantiert - β Keine manuellen Fehler - β Audit-Trail fΓΌr PrΓΌfungen
5. Dokumenten-Backup & Archivierung (VOLLAUTOMATISCH)¶
Trigger¶
Workflow: "Backup-Documents-To-NAS"¶
NODES:
1. Timer: TΓ€glich 03:00 Uhr
ββ Trigger
2. Lade alle neuen Dokumente (seit letztem Backup)
ββ Query Paperless API:
β ββ GET /api/documents/?created__gte={{yesterday}}
ββ Filter: nur geΓ€nderte/neue Dokumente
ββ Output: Document Array
3. FΓΌr jedes Dokument:
3a. Download von Paperless
ββ GET /api/documents/{{doc_id}}/download
ββ Output: PDF Bytes
3b. VerschlΓΌsselung (optional aber empfohlen)
ββ GPG Encryption mit Public-Key
ββ Output: Encrypted PDF
3c. Upload zu NAS via SMB
ββ Pfad: /mnt/nas/business/paperless-archive/{{year}}/{{month}}/
ββ Dateiname: {{doc_id}}_{{created_date}}_{{title}}.pdf
ββ Output: Upload Status
3d. Verifizierung (Checksum)
ββ Berechne MD5 Checksum
ββ Vergleiche mit Original
ββ IF nicht identisch: Alert Marco
ββ Output: Verification Status
3e. Indexierung
ββ Aktualisiere Backup-Database:
β ββ doc_id
β ββ backup_date
β ββ backup_path
β ββ checksum
β ββ status = "backed_up"
ββ Output: DB Record
4. PostgreSQL Backup
ββ FΓΌhre aus: pg_dumpall -U postgres
ββ Komprimierung: gzip
ββ Ziel: /mnt/nas/backups/daily/postgres_{{date}}.sql.gz
ββ Aufbewahrung: 7 Tage (Cron-job lΓΆscht Γ€ltere)
ββ Output: Backup Status
5. Redis Backup
ββ FΓΌhre aus: redis-cli BGSAVE
ββ Pfad: /mnt/nas/backups/daily/redis_{{date}}.rdb
ββ Output: Backup Status
6. Zusammenfassung an Marco
ββ Email: "Daily Backup Report"
ββ Inhalt:
β ββ Anzahl Dokumente gesichert
β ββ GrΓΆΓe Backup
β ββ Dauer
β ββ Fehler (falls welche)
β ββ NΓ€chster Backup: Morgen 03:00
ββ Output: Admin Email
7. Error Handling
ββ If any backup fails:
β ββ Retry 3x mit 5 Min Abstand
β ββ Alert Marco sofort
β ββ Email mit Error Details
ββ Output: Failure Report
Sicherheit: - β TΓ€gliche vollstΓ€ndige Backups - β Checksummen-Verifizierung - β VerschlΓΌsselung optional - β Audit-Trail - β RPO: <24h
6. Email-Backup Auto-Monitoring (n8n + mbsync)¶
Trigger¶
Workflow: "Monitor-Email-Backup"¶
NODES:
1. Timer: TΓ€glich 02:00 Uhr
ββ Trigger
2. SSH zu Synology
ββ FΓΌhre mbsync aus
ββ Command: mbsync -a (alle Accounts)
ββ Output: Sync Status
3. Verifiziere Maildir
ββ Check: /volume1/private/email/ existiert
ββ GrΓΆΓe: Heute grΓΆΓer als gestern?
ββ Dateien: Neue Emails da?
ββ Output: Verification Status
4. Speichere Backup-Metadaten
ββ Tabelle: backup_status
ββ Spalten:
β ββ backup_date
β ββ email_count
β ββ total_size_mb
β ββ status (success/error)
β ββ last_sync_time
ββ Output: DB Record
5. Alert bei Fehlern
ββ If mbsync fails:
β ββ Retry 3x
β ββ Email an Marco: "Email Backup Failed"
β ββ Action Required
ββ Output: Error Email
6. Status-Report an Marco
ββ Email weekly (Sonntag 09:00)
ββ Inhalt:
β ββ Emails gesichert diese Woche
β ββ GesamtgrΓΆΓe Backup
β ββ Dovecot Zugriff funktioniert?
β ββ Fehler?
ββ Output: Weekly Report
7. SSL-Zertifikat Monitoring (Uptime Kuma)¶
Konfiguration¶
Uptime Kuma Settings:
1. SSL Certificate Checks
ββ Hostname: *.mk360.de
ββ Warnung bei: <30 Tage
ββ Check Interval: TΓ€glich
ββ Benachrichtigungen: Email + Telegram
2. Expiry Alert
ββ Email Template: "SSL Cert expires in {{days}} days"
ββ Eskalation:
β ββ <30 Tage: Email
β ββ <14 Tage: Email + Telegram + SMS
β ββ <7 Tage: TΓ€glich Reminder
ββ Output: Multi-Channel Alerts
3. Auto-Renewal (Caddy macht das!)
ββ Caddy erneuert automatisch
ββ Uptime Kuma verifiziert Erneuerung
ββ Marco erhΓ€lt BestΓ€tigungsmail
π οΈ ZUSΓTZ-AUTOMATISIERUNGEN¶
8. Audit-Log Maintenance¶
Cron: WΓΆchentlich Montag 03:00¶
NODES:
1. Archive alte Logs
ββ Query: Logs Γ€lter als 90 Tage
ββ Export: ZIP-Datei
ββ Upload zu: /mnt/nas/backups/logs/
ββ LΓΆsche aus Active DB
2. Komprimiere Archive
ββ tar -czf audit_logs_{{month}}.tar.gz
ββ Speichere auf NAS
3. Report an Marco
ββ Anzahl archivierte EintrΓ€ge
ββ GrΓΆΓe Archive
ββ Storage gespart
9. Datenbank-Maintenance¶
Cron: WΓΆchentlich Sonntag 02:00¶
NODES:
1. PostgreSQL VACUUM + ANALYZE
ββ VACUUM FULL; (Defragmentierung)
ββ ANALYZE; (Statistiken aktualisieren)
ββ Index Rebuild
2. Backup-Kompression
ββ Alte Backups (>30 Tage)
ββ Neu komprimieren
ββ Speicher sparen: 40-50%
ββ Output: Storage Report
3. Email Report
ββ Database Size
ββ Backup Size
ββ Trend
ββ Warnung bei schnellem Wachstum
10. Team-Report (Weekly)¶
Cron: Freitag 17:00¶
NODES:
1. Sammle Woche-Daten
ββ Neue Kunden (Monica)
ββ Rechnungen erstellt
ββ Rechnungen bezahlt
ββ Uptime Prozentuale
ββ Fehlerrate
ββ Service-Performance
2. Erstelle Report
ββ HTML-Template
ββ Tabellen + Charts
ββ Wochentrends
ββ KPIs
3. Email an Team
ββ To: Marco@mk360.de
ββ Subject: "Weekly Business Report - KW {{week}}"
ββ Body: Formatted HTML mit Metriken
ββ Attachment: PDF fΓΌr Archiv
π AUTOMATION DASHBOARD (Monitoring)¶
Status-Γbersicht in n8n¶
Dashboard Node zeigt in Real-Time:
1. Workflows
ββ Laufende Workflows: X
ββ Fehlerquote: X%
ββ Durchschnitt Execution-Zeit: Xs
ββ Letzter Fehler: {{error_detail}}
2. Datenfluss
ββ Rechnungen diese Woche: X
ββ Kunden onboardet: X
ββ Dokumente gesichert: X GB
ββ Email-Backup: X GB
3. Uptime
ββ Paperless: 99.X%
ββ PostgreSQL: 99.X%
ββ Gotenberg: 99.X%
ββ All Services: 99.X%
4. Fehler
ββ Aktuelle Fehler: X
ββ Diese Woche: X
ββ Kritisch: X (rot)
ββ Warnung: X (gelb)
π¨ ALERT & ERROR HANDLING¶
Automatische Eskalation¶
SEVERITY LEVELS:
Level 1: INFO (normal)
ββ Nur Log, kein Alert
Level 2: WARNING (wichtig)
ββ Log
ββ Email an Marco (tΓ€glich gebΓΌndelt)
ββ n8n Dashboard Alert
Level 3: ERROR (kritisch)
ββ Log
ββ Email sofort an Marco
ββ Telegram Message (falls konfiguriert)
ββ Retry 3x mit Backoff
ββ Wenn weiterhin fehlt: CRITICAL
Level 4: CRITICAL (NOTFALL)
ββ Log
ββ Email sofort + Telefon/SMS (falls nΓΆtig)
ββ Telegram + Slack
ββ Paged Alert (Marco muss reagieren)
ββ Automatisches Rollback (falls mΓΆglich)
ββ Status-Seite aktualisiert
Automatisches Retry-Logik¶
FΓΌr jeden Workflow-Fehler:
1. Retry 1: Nach 5 Sekunden
ββ Gleicher Code, neuer Versuch
ββ If success: OK, log success
2. Retry 2: Nach 1 Minute
ββ If service down: exponential backoff
ββ If success: OK, log success
3. Retry 3: Nach 5 Minuten
ββ Letzer Versuch
ββ If success: OK, log success + alert Marco
ββ If fail: CRITICAL ALERT
4. Fallback-Prozess
ββ Manuelles Intervention nΓΆtig
ββ Marco bekommt Fehler-Details
ββ Dokumentation fΓΌr Future
ββ Workflow geparkt bis manuell gelΓΆst
n8n Automation fΓΌr OCR + Auto-Tagging fΓΌr Paperless-GPT
β±οΈ ZEITEINSPARUNGEN ZUSAMMENFASSUNG¶
| Prozess | Manuell | Automatisiert | Ersparnis | Monatlich |
|---|---|---|---|---|
| Client-Onboarding | 2β3 h | 15 min | 90% | ~40 h/Monat |
| Rechnungsstellung | 30β45 min | 2 min | 95% | ~30 h/Monat |
| Zahlungs-Reminders | 30 min/Tag | 0 min | 100% | ~10 h/Monat |
| DSGVO-Anfragen | 1β2 h | 10 min | 92% | ~15 h/Monat |
| Email-Backup | 15 min/Tag | 0 min | 100% | ~5 h/Monat |
| Datenbank-Maintenance | 30 min/Woche | 0 min | 100% | ~2 h/Monat |
| Dokumenten-Backup | 20 min/Tag | 0 min | 100% | ~7 h/Monat |
| SSL-Monitoring | 5 min/Woche | 0 min | 100% | ~20 min/Monat |
| Reporting | 1 h/Woche | 0 min | 100% | ~4 h/Monat |
| Log-Management | 30 min/Monat | 0 min | 100% | ~0.5 h/Monat |
| TOTAL | ~113 h/Monat | |||
| ~27 h/Woche | ||||
| 5.4 h/Tag |
Das ist im Grunde eine halbe Vollzeitstelle, die Automation spart!
π IMPLEMENTIERUNGS-ROADMAP¶
Phase 1: Kern-Workflows (Woche 1-4)¶
WOCHE 1: Setup
ββ n8n Installation & Konfiguration
ββ PostgreSQL fΓΌr n8n selbst
ββ Basic Error Handling Template
ββ Uptime Kuma Integration
ββ Logging-System
WOCHE 2-3: Onboarding + Invoicing
ββ Client-Onboarding Workflow
β ββ Webform Trigger
β ββ Validierung
β ββ Template-Engine
β ββ Gotenberg Integration
β ββ Paperless Upload
β ββ OpenSign Integration
ββ Invoice-Generation Workflow
β ββ Manual Trigger
β ββ Data Loading (Monica)
β ββ Berechnung
β ββ Template Fill
β ββ Gotenberg β PDF
β ββ **facturx β ZugFERD** β WICHTIG!
β ββ Paperless Upload
β ββ Email Versand
ββ Test mit echten Daten
WOCHE 4: Feintuning + Deployment
ββ Error Handling testen
ββ Retry-Logik verifizieren
ββ Performance-Optimierung
ββ Security Hardening
ββ Dokumentation
ββ Go-Live mit erstem Kunden
Phase 2: Zahlungs- & DSGVO-Automation (Woche 5-8)¶
WOCHE 5-6: Payment Monitoring
ββ Invoice Payment Workflow
ββ Daily Reminder Automation
ββ Monica Integration
ββ Email Templates pro Reminder-Stufe
ββ Testing mit Testdaten
WOCHE 7-8: DSGVO Automation
ββ DSGVO-Request Handler
ββ Auto-Response System
ββ Data Export Generator
ββ Deletion Confirmation Workflow
ββ Audit-Trail Logging
ββ Compliance Documentation
Phase 3: Backup & Maintenance (Woche 9-10)¶
WOCHE 9: Backup-Automation
ββ Paperless Daily Backup
ββ PostgreSQL Daily Backup
ββ Redis Daily Backup
ββ Checksum Verification
ββ NAS SMB Upload
ββ Backup Monitoring Workflow
WOCHE 10: Maintenance Jobs
ββ Database VACUUM + ANALYZE
ββ Log Archivierung
ββ Alte Backups LΓΆschen
ββ Storage Monitoring
ββ Reporting Workflows
π§ n8n BEST PRACTICES¶
Workflow-Struktur¶
Alle Workflows sollten diesem Pattern folgen:
1. TRIGGER Node
ββ Webhook, Cron, Manual, oder Event
2. GUARD Node (Error Prevention)
ββ Input Validation
ββ Authorization Check
ββ Rate Limiting
ββ If fail: STOP + Error Response
3. MAIN LOGIC Nodes
ββ Data Transformation
ββ API Calls
ββ Database Operations
ββ File Operations
4. ERROR HANDLING
ββ Try-Catch Blocks
ββ Retry Logic
ββ Fallback Paths
ββ Error Logging
5. NOTIFICATION Nodes
ββ Email on Success
ββ Email on Failure
ββ Log to Database
ββ Metric Recording
6. CLEANUP Node
ββ Close Connections
ββ Delete Temp Files
ββ Release Resources
ββ Final Logging
Workflow Naming Convention¶
Format: [TRIGGER]_[ACTION]_[OBJECT]_[VERSION]
Examples:
β
WEBHOOK_ONBOARD_CLIENT_V2
β
CRON_DAILY_INVOICE_MONITOR_V1
β
MANUAL_GENERATE_INVOICE_V3
β
WEBHOOK_HANDLE_DSGVO_REQUEST_V1
β
CRON_WEEKLY_BACKUP_VERIFY_V2
β New Workflow (zu vague)
β Test123 (unprofessionell)
β n8n_workflow (keine Info)
Shared Resources (Custom Node Library)¶
Schreibe wiederverwendbare Custom Nodes:
1. VALIDATORS
ββ validate_email()
ββ validate_iban()
ββ validate_tax_id()
ββ validate_customer_exists()
2. TRANSFORMERS
ββ format_currency()
ββ format_date_de()
ββ sanitize_string()
ββ escape_sql()
3. API WRAPPERS
ββ paperless_api()
ββ monica_api()
ββ gotenberg_convert()
ββ facturx_generate()
4. EMAIL TEMPLATES
ββ welcome_email()
ββ invoice_email()
ββ reminder_email()
ββ admin_report_email()
5. ERROR HANDLERS
ββ log_error()
ββ notify_admin()
ββ retry_with_backoff()
ββ fallback_process()
π MONITORING & OBSERVABILITY¶
n8n Metrics tracken¶
PostgreSQL Tabelle: n8n_metrics
Spalten:
ββ workflow_id
ββ workflow_name
ββ execution_date
ββ execution_time_ms
ββ status (success/error/retry)
ββ input_count
ββ output_count
ββ error_message
ββ error_node
ββ retry_count
Queries fΓΌr Dashboards:
ββ Success Rate by Workflow
ββ Average Execution Time
ββ Error Rate Trend
ββ Most Common Errors
ββ Slowest Workflows
SLA Targets¶
FΓΌr jeden Workflow definieren:
Client-Onboarding:
ββ Availability: 99.5%
ββ Max Time: 2 Minuten
ββ Error Rate: <0.5%
ββ SLA: 99.5% uptime
Invoice Generation:
ββ Availability: 99.9%
ββ Max Time: 5 Minuten
ββ Error Rate: <0.1%
ββ SLA: 99.9% uptime
Payment Monitoring:
ββ Availability: 99%
ββ Max Time: 30 Sekunden
ββ Error Rate: <1%
ββ SLA: 99% uptime (nicht kritisch)
DSGVO Requests:
ββ Availability: 99.9%
ββ Max Time: 10 Minuten
ββ Error Rate: 0% (legal compliance!)
ββ SLA: 99.9% uptime
π SECURITY FΓR AUTOMATIONEN¶
Secrets Management¶
NIEMALS Secrets in n8n Workflows hardcoden!
Stattdessen:
1. Environment Variables
ββ .env Datei (git-ignored)
ββ Docker Secrets
ββ Vaultwarden fΓΌr PasswΓΆrter
2. n8n Credentials
ββ API Keys in n8n Credentials
ββ Nicht in Workflow-Nodes
ββ Encryptierte Speicherung
ββ Access Logging
3. OAuth2 (wo mΓΆglich)
ββ Kein Passwort nΓΆtig
ββ Token-basiert
ββ Scope-Limited
ββ Easy Revocation
4. Audit Trail
ββ Wer hat welche Secret zugegriffen?
ββ Wann?
ββ Logging
ββ Alerting bei Misuse
API-Rate-Limiting¶
Implementiere in jedem Workflow:
Node: Rate Limiter
ββ Max Requests pro Minute: 60
ββ Max Concurrent: 5
ββ Backoff Strategy: exponential
ββ Error on Limit: yes (queue statt fail)
Pro Service:
ββ Paperless: 30 req/min
ββ Monica: 50 req/min
ββ Gotenberg: 20 concurrent
ββ PostgreSQL: Connection pool limit
ββ Email: 10 pro Minute (Spam-Vermeidung)
Workflow Versioning¶
Maintain in Git:
Repository: mk360-workflows/
ββ .github/
β ββ workflows/
β ββ deploy.yml (Auto-deploy bei Push)
ββ workflows/
β ββ onboarding-client/
β β ββ v1-original.json
β β ββ v2-with-zugferd.json
β β ββ v3-optimized.json
β ββ invoice-generation/
β ββ payment-monitoring/
β ββ dsgvo-handling/
ββ docs/
β ββ workflow-guide.md
β ββ error-codes.md
β ββ runbooks/
ββ tests/
β ββ unit-tests.js
β ββ integration-tests.js
β ββ fixtures/
ββ README.md
π§ͺ TESTING WORKFLOWS¶
Unit Tests (Node-Level)¶
Teste jeden Node einzeln:
Test: Email Validation Node
ββ Input: "marco@mk360.de"
ββ Output: true
ββ Input: "invalid-email"
ββ Output: false (error)
ββ Input: "" (empty)
ββ Output: false (error)
Test: Currency Formatting
ββ Input: 1234.56
ββ Output: "1.234,56 β¬"
ββ Locale: de-DE
Test: Date Formatting
ββ Input: 2025-01-15
ββ Output: "15. Januar 2025"
ββ Locale: de-DE
Integration Tests (Workflow-Level)¶
Teste komplette Workflows:
Test: Client-Onboarding Flow
ββ Trigger: Webform Submit
ββ Verify: Email an Kunde versendet
ββ Verify: Vertrag in Paperless
ββ Verify: Kunde in Monica CRM
ββ Verify: OpenSign Request erstellt
ββ Expected Time: <2 min
Test: Invoice Generation
ββ Trigger: Manual Button
ββ Input: Customer ID 123
ββ Verify: Invoice PDF generiert
ββ Verify: ZugFERD valid
ββ Verify: Email versendet
ββ Verify: Monica aktualisiert
ββ Expected Time: <5 min
Load Tests¶
Simuliere Last-Szenarien:
Scenario 1: 10 Onboardings parallel
ββ Workflow Time: <2 min (pro Workflow)
ββ Error Rate: 0%
ββ Database Impact: <20% CPU
ββ Result: PASS/FAIL
Scenario 2: 100 Payment Reminders
ββ Workflow Time: <30 sec
ββ Email Queue: <5 min processing
ββ Database Impact: <10% CPU
ββ Result: PASS/FAIL
π DOKUMENTATION¶
FΓΌr jeden Workflow:¶
FILE: workflows/[NAME]/README.md
## Workflow Name
Kurze Beschreibung
## Trigger
- Webhook / Cron / Manual
- URL: {{url}}
- Headers: {{headers}}
- Payload: {{example}}
## Nodes
1. Validation
- Input: {{input}}
- Logic: {{logic}}
- Output: {{output}}
2. Data Processing
...
## Error Handling
- If validation fails: {{action}}
- If API down: {{action}}
- Retry strategy: {{strategy}}
## Testing
- Test command: {{command}}
- Test data: {{location}}
- Expected result: {{result}}
## Deployment
- Branch: main/develop
- Deploy trigger: {{condition}}
- Rollback: {{procedure}}
## Monitoring
- SLA: {{sla}}
- Alerts: {{alerts}}
- Dashboard: {{url}}
## Troubleshooting
Common issues:
1. {{issue}} β {{solution}}
2. {{issue}} β {{solution}}
## Contact
- Owner: Marco
- On-Call: {{schedule}}
π― NΓCHSTE KONKRETE SCHRITTE¶
Woche 1: Planning & Setup¶
[ ] n8n Installation planen
ββ Docker Setup
ββ PostgreSQL fΓΌr n8n
ββ Backup-Strategie
[ ] Credentials vorbereiten
ββ Paperless API Token
ββ Monica API Keys
ββ Email-Account SMTP
ββ Gotenberg URL
[ ] Webforms vorbereiten
ββ Webflow Form fΓΌr Onboarding
ββ Webhook URL generieren
ββ Test-Submit durchfΓΌhren
[ ] Testing-Umgebung
ββ n8n Development Instance
ββ Test-Kunden in Monica
ββ Test-Rechnung vorbereiten
ββ Staging Dokumente
Woche 2-3: First Workflow¶
[ ] Client-Onboarding implementieren
ββ Nodes nach Reihe bauen
ββ Jeder Node testen
ββ Error Handling hinzufΓΌgen
ββ Mit Test-Daten durchlaufen
ββ Mit echtem Kunden-Formular testen
[ ] Invoice-Generation + ZugFERD
ββ facturx Library installieren
ββ Python Node konfigurieren
ββ ZugFERD Generator testen
ββ Mit echten Rechnungsdaten testen
ββ Validierung durchfΓΌhren
ββ Email-Versand testen
[ ] Monitoring einrichten
ββ Uptime Kuma Checks
ββ Error Email Configuration
ββ n8n Logging
ββ Metrics Tracking
Woche 4: Go-Live¶
[ ] Production Deployment
ββ Secrets in .env migrieren
ββ Backups einrichten
ββ Monitoring aktivieren
ββ Documentation aktualisieren
[ ] Mit erstem Kunden testen
ββ Reales Onboarding durchfΓΌhren
ββ Reale Rechnung generieren
ββ ZugFERD validieren
ββ Zahlungs-Monitoring testen
ββ Feedback dokumentieren
[ ] Runbooks erstellen
ββ Fehlerbehandlung
ββ Manual Intervention Prozess
ββ Eskalations-Kette
ββ Contact-Liste
π‘ PRO-TIPPS ZUM SPAREN¶
1. Batching statt Individual Processing¶
β Falsch: 100 Emails einzeln verschicken
ββ 100 n8n Executions = Overhead
β
Richtig: 100 Emails in Batch
ββ 1 n8n Execution
ββ Array Loop
ββ 1 Email API Call mit Batch-Mode
2. Caching fΓΌr hΓ€ufig genutzte Daten¶
Customer Data:
ββ Lade 1x pro Workflow
ββ Cache in Redis
ββ TTL: 1 Stunde
ββ Bei neuen Daten invalidate
3. Async Processing¶
Lange Tasks (Backup, Archive):
ββ Nicht im Workflow selbst
ββ In Background Job
ββ n8n startet Job, nicht warten
ββ Callback-Email wenn fertig
4. Workflow Deduplication¶
Duplikate vermeiden:
ββ Unique ID fΓΌr jeden Request
ββ Cache recent IDs (1 Stunde)
ββ PrΓΌfe vor Execution
ββ If duplicate: Skip + Log
ββ Verhindert doppelte Rechnungen!
π LANGFRISTIGE ROADMAP¶
Q1 2025: Kern-Automation¶
- Client Onboarding
- Invoice Generation + ZugFERD
- Payment Monitoring
- Backup Automation
Q2 2025: Erweiterte Features¶
- DSGVO Auto-Handling
- Advanced Analytics
- Email-Campaign Tracking
- API-Gateway fΓΌr Kunden
Q3 2025: AI/ML Integration (Optional)¶
- Auto-Categorization (Paperless)
- Predictive Invoice Amounts
- Anomaly Detection (Payments)
- Smart Email Routing
Q4 2025: Scale & Optimize¶
- Performance Tuning
- Cost Optimization
- Team On-Boarding Tools
- Advanced Reporting
β CHECKLISTE: AUTOMATION READY¶
- n8n Installation & Config
- Alle Credentials konfiguriert
- Workflow 1: Client-Onboarding
- Workflow 2: Invoice + ZugFERD
- Workflow 3: Payment Monitoring
- Workflow 4: DSGVO Requests
- Workflow 5: Backup Automation
- Error Handling implementiert
- Monitoring aktiv (Uptime Kuma)
- Metrics Tracking (PostgreSQL)
- Runbooks geschrieben
- Tests durchgefΓΌhrt
- Documentation complete
- Go-Live mit Kunden
- Post-Launch Monitoring
π― FAZIT¶
Mit dieser Automation-Strategie sparst Du: - β ~113 Stunden pro Monat (ca. 27 Stunden pro Woche!) - β Fehlerquote auf <1% reduziert - β 24/7 Coverage fΓΌr Prozesse - β Skalierbar ohne Extra-Arbeit (mehr Kunden = gleiche Automation) - β Compliance by Default (DSGVO, Audit-Trails, ZugFERD)
Einmalige Investition: ~80-120 Stunden Setup ROI: Bereits nach 1-2 Monaten amortisiert!