SharePoint-Item-Update so auslösen, dass Triggered Actions zuverlässig reagieren

Trigger a SharePoint item update in a way that ensures Triggered Actions respond reliably

Problem

Wenn du in Triggered Actions oder Scheduled Actions ein SharePoint-Item mit „Update Item“ änderst, feuern nachgelagerte Triggered Actions (die auf Änderungen am selben Item hören) nicht zuverlässig.
Grund: Das Standard-Update setzt nicht alle Signale/Metadaten so, dass weitere Trigger definitiv erkannt werden.

Lösung (Workaround)

Nutze einen „Send HTTP request“ (SharePoint REST) Schritt, der das List Item per PATCH aktualisiert.
Das erzeugt ein „echtes“ REST-Update inkl. ETag/Concurrency-Headern – und nachgelagerte Trigger werden zuverlässig aktiviert.

Aufbau der Triggered- oder Scheduled-Action

1) Variablen anlegen

Lege zu Beginn folgende Variablen an:

  • ListName (Anzeigename der SharePoint-Liste)
  • ItemMetadata (Metadaten Aufbau)
  • ElementTitle (Titel Feld Aufbau / nicht unbedingt nötig)

2) ListItem Entity Type ermitteln (für ItemMetadata)

Hole den ListItemEntityTypeFullName deiner Liste, damit du __metadata korrekt befüllen kannst.

Request (lesen):

https://{site_url}/_api/web/lists/GetByTitle('{List Name}')?$select=ListItemEntityTypeFullName
  • Ersetze {site_url} durch die Site-URL.
  • Verwende den Anzeigenamen der Liste (gleich wie deine Variable '{List Name}' )
  • dynamischer Ausdruck ist korrekt, achte aber auf keine zusätzlichen Leerzeichen in der URL!

3) HTTP-Update des Items (PATCH)

Nutze in Teamsware die Aktion Send HTTP request mit folgenden Parametern:

URL (dynamisch):

${[[@Web.Url]]}/_api/web/lists/getbytitle('${[[@Variables.ListName]]}')/items(${[[ID]]})
  • [[ID]] ist die aktuelle Item-ID aus dem Trigger-Kontext
  • [[@Web.Url]] ist die Site-URL
  • [[@Variables.ListName]] ist deine Listen-Variable

Methode: POST

(Ja, POST – kombiniert mit X-HTTP-Method: PATCH als Header, siehe unten)

Header:

Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
X-HTTP-Method: PATCH
IF-MATCH: *
  • IF-MATCH: * ignoriert ETag-Prüfung (erzwingt Update).
    Alternativ: IF-MATCH: [[{ItemETag}]], wenn du Concurrency sauber durchsetzen willst.

Body (Daten):

=JSON.stringify([[@Variables.ItemMetadata]])

      Wichtig: Verwende genau die JSON-Serialisierung (JSON.stringify), damit der Body als korrektes JSON gesendet wird.


Häufige Fehler & Troubleshooting

  1. „The property ‘__metadata’ does not exist on type…“er type in __metadata ist falsch. Hole ListItemEntityTypeFullName aus genau dieser Liste (Anzeigename prüfen: Groß-/Kleinschreibung, Sonderzeichen).

  2. „A type named ‘SP.Data.*’ could not be resolved…“

    • Falscher Site-Kontext (andere Site URL) oder die Liste existiert nicht unter der angegebenen URL.
  3. „405 Method Not Allowed“ oder „Verb not supported“

    • Entweder X-HTTP-Method: PATCH fehlt oder du hast Methode=PATCH gesetzt ohne den Header.
    • In Teamsware/SharePoint-REST funktioniert der PATCH in der Regel via POST + X-HTTP-Method: PATCH.
  4. Keine nachgelagerten Trigger feuern

    • Prüfe, ob dein Trigger auf ItemUpdated/„Beim Ändern eines Elements“ hört und ob die betroffenen Felder tatsächlich geändert wurden.
    • Prüfe, ob du die richtige Liste/Site erwischt hast.
  5. Concurrency-Fehler (ETag mismatch)

    • Verwende IF-MATCH: * (überschreibt), oder lies vorab das aktuelle ETag und setze es präzise.
  6. Datentyp-Konflikte

    • Stelle sicher, dass Feldwerte den korrekten Typen entsprechen (z. B. Number ohne Anführungszeichen, Boolean true/false, Lookup via FieldNameId usw.).