Mein erstes echtes Projekt war ein schlankes DMS rund um SharePoint Online. Wir mussten Papierkram (Rechnungen, technische Dokumente) digitalisieren, sauber verschlagworten und für Teams auffindbar machen. Kernprinzipien, die ich dort gelernt habe: klein starten, klar trennen (Erkennung vs. Semantik) und Integration zuerst denken. Genau diese Prinzipien liebe ich an Azure Logic Apps: wenig Overhead, klare Steps, super Debugging.

Heute zeige ich dir zwei Dinge:

  1. kurz, wie ich das damalige DMS gedacht habe,
  2. ein hands-on Beispiel, wie du mit einer Logic App WordPress automatisierst – komplett ohne Plugin-Orgien, nur über die REST-API.

Das DMS – ganz leicht erklärt

  • Quelle: E-Mails und gescannte PDFs.
  • Ablage: SharePoint-Bibliothek mit Metadaten (Dokumenttyp, Projekt, Kunde, Gültig-bis).
  • Automatisierung (Logic Apps):
    • Trigger auf Posteingang / SharePoint-Upload
    • OCR (Azure AI Document Intelligence – „Read“), extrahierte Infos in Felder schreiben
    • Benachrichtigung/Approval in Teams
    • Retention/Rules via SharePoint Policies

Das Entscheidende: Jeder Schritt war sichtbar und testbar – das macht Logic Apps im Betrieb so angenehm.


Praxis: Eine kleine Logic App, die WordPress-Posts erstellt

Use-Case: Du pflegst Inhalte in SharePoint (oder sammelst sie z. B. per Formular). Bei einem neuen Eintrag soll automatisch ein WordPress-Beitrag (Entwurf) entstehen – inkl. Titel, Inhalt und optionalem Beitragsbild.

Voraussetzungen

  • WordPress mit Application Passwords (ab WP 5.6, Benutzer → Profil → „Anwendungs-Passwörter“).
  • Deine WordPress-URL, z. B. https://deine-seite.de.
  • Benutzername und App-Password (werden zu Basic Auth zusammengefügt).
  • Eine SharePoint-Liste „Posts“ mit Spalten:
    • Title (Einzeilig)
    • Content (Mehrzeilig, HTML/Markdown)
    • FeaturedImageUrl (optional, Link zu einer Bilddatei in SharePoint)

Sicherheit: Benutzername/App-Passwort in Azure Key Vault ablegen und in der Logic App als Parameter/Secrets referenzieren.


Schritt für Schritt in Logic Apps

1) Trigger

  • SharePoint – When an item is created
    Site + Liste „Posts“ auswählen.

2) (Optional) Basis-Auth Header bauen

Im Compose-Schritt (Aktion „Datenvorgang → Zusammenstellen“) erzeugen wir den Basic-Auth Header:

Eingabe (Ausdruck):

lessCopyEditconcat('Basic ', base64(concat(parameters('WpUserName'), ':', parameters('WpAppPassword'))))

Lege WpUserName und WpAppPassword als sichere Parameter an.

3) (Optional) Bild nach WordPress hochladen

Wenn FeaturedImageUrl gefüllt ist, laden wir das Bild als Media hoch:

  • HTTP (Aktion)
    • Methode: POST
    • URI: https://deine-seite.de/wp-json/wp/v2/media
    • Headers:
      • Authorization: @outputs('Compose_BasicAuth')
      • Content-Disposition: attachment; filename=@{last(split(triggerBody()?['FeaturedImageUrl'],'/'))}
      • Content-Type: image/jpeg (oder passend)
    • Body: Datei-Bytes. Wenn das Bild in SharePoint liegt:
      • Vorher Get file content (SharePoint) auf FeaturedImageUrl
      • Body = @body('Get_file_content')

Antwort-Wert merken: @body('Upload_Media')?['id']

4) WordPress-Post erstellen

  • HTTP (Aktion)
    • Methode: POST
    • URI: https://deine-seite.de/wp-json/wp/v2/posts
    • Headers:
      • Authorization: @outputs('Compose_BasicAuth')
      • Content-Type: application/json
    • Body:
jsonCopyEdit{
  "title": "@{triggerBody()?['Title']}",
  "content": "@{triggerBody()?['Content']}",
  "status": "draft",
  "featured_media": @{coalesce(body('Upload_Media')?['id'], 0)}
}

5) Fehler behandeln

  • Bei beiden HTTP-Schritten „Configure run after“:
    • Wenn „Upload Media“ fehlschlägt → Post trotzdem ohne Bild anlegen.
  • Response 201 (Created) prüfen; body('Create_Post')?['link'] als Bestätigung speichern oder an Teams senden.

Minimal-Snippet: HTTP-Aufruf als Logic-App-Aktion (JSON)

Falls du gern mit IaC arbeitest, so sieht die Create-Post-Aktion ungefähr aus:

jsonCopyEdit"Create_WP_Post": {
  "type": "Http",
  "inputs": {
    "method": "POST",
    "uri": "https://deine-seite.de/wp-json/wp/v2/posts",
    "headers": {
      "Authorization": "@{outputs('Compose_BasicAuth')}",
      "Content-Type": "application/json"
    },
    "body": {
      "title": "@{triggerBody()?['Title']}",
      "content": "@{triggerBody()?['Content']}",
      "status": "draft",
      "featured_media": "@{coalesce(body('Upload_Media')?['id'], 0)}"
    }
  },
  "runAfter": {}
}

Warum Logic Apps hier glänzen

  • Schnell gebaut: Trigger + 2 HTTP-Calls, fertig.
  • Transparenz: Jede Antwort siehst du in der Run-History.
  • Erweiterbar: Kategorien/Tags (categories, tags) sind nur weitere Felder im JSON.
  • Sicher: Secrets via Key Vault, gedrosselte Wiederholungen via Retry Policy.

Typische Stolperfallen & Fixes

  • 401 Unauthorized → Basic Auth falsch (Leerzeichen, Doppelpunkt, Base64), App-Password widerrufen?
  • 403 / REST blockiert → Security-Plugins; wp-json muss erreichbar sein.
  • 415 Unsupported Media Type → Falsches Content-Type beim Media-Upload.
  • HTML/Markdown → WordPress akzeptiert HTML im content. Für Markdown nutze ein WP-Plugin oder konvertiere vorher (z. B. kleine Azure Function).

Fazit

Mein erstes DMS bei Verder hat mir gezeigt, wie viel Wert klare, kleine Integrations-Schritte liefern. Azure Logic Apps sind genau dafür gemacht – egal ob DMS-Workflows, ERP-Anbindung oder, wie hier gezeigt, ein schneller Push nach WordPress.
Wenn du willst, passe ich dir das Beispiel auf deine Site an (Custom-Felder, Kategorien, Medien-Galerie, mehrsprachige Posts) und hebe die Secrets in Key Vault.