Erstellen von Arbeitsaufträgen mithilfe von Power Automate

Mit Power Automate Flows können Sie automatisch Arbeitsaufträge in Dynamics 365 Field Service erstellen. Dies ist nützlich, wenn Arbeitsaufträge basierend auf externen Triggern erstellt werden müssen, z. B. eine IoT-Warnung, eine Formularübermittlung, eine Serviceanfrage von einem anderen System oder eine Änderung an einem verknüpften Datensatz.

Power Automate Flows verwenden den Connector Microsoft Dataverse für die Interaktion mit Field Service-Datensätzen. Um Informationen zum Erstellen von Arbeitsaufträgen über Code zu erhalten, gehen Sie zu Arbeitsaufträge mit der Dataverse-Web-API erstellen.

Voraussetzungen

  • Eine Power Automate-Lizenz (in den meisten Dynamics 365 Lizenzen enthalten).
  • Mindestens eine der folgenden Field Service-Sicherheitsrollen muss dem Konto für Verbindungen des Flows zugewiesen sein. Weitere Informationen finden Sie unter "Einrichten von Benutzern und Sicherheitsrollen".
    • Vor-Ort-Service – Disponent
    • Field Service – Administrator
  • Vorhandene Datensätze für die erforderlichen Nachschlagefelder:
    • Dienstkonto (account Entität)
    • Arbeitsauftragstyp (msdyn_workordertype Entität)
    • Preisliste (pricelevel Entität)

Option 1: Erstellen einer Arbeitsreihenfolge, wenn sich ein Dataverse-Datensatz ändert

Verwenden Sie dieses Muster, um eine Arbeitsreihenfolge als Reaktion auf eine Änderung in einer anderen Dataverse-Tabelle zu erstellen, z. B. wenn sich der Status eines Kundenobjekts ändert.

Trigger einrichten

  1. Wählen Sie in Power AutomateCreate>Automated cloud flow aus.

  2. Suchen Sie nach Wenn eine Zeile hinzugefügt, geändert oder gelöscht wird (Microsoft Dataverse-Konnektor).

  3. Melden Sie sich bei der Microsoft Dataverse connector mit Ihren Dynamics 365 Anmeldeinformationen an, wenn Sie dazu aufgefordert werden. Wenn Sie bereits über eine Verbindung mit Ihrer Umgebung verfügen, wählen Sie sie aus der Dropdownliste aus. Die Konfigurationsfelder des Triggers werden erst ausgefüllt, wenn eine aktive Verbindung hergestellt wird.

  4. Konfigurieren Sie den Trigger:

    Feld Value
    Änderungstyp Geändert
    Tabellenname Kundenobjekte
    Umfang Organisation
  5. Fügen Sie optional eine Bedingung Zeilen filtern hinzu, um einzuschränken, wann der Flow ausgeführt wird. Beispiel: msdyn_operationalstatus eq 690970001 (Needs Service).

Tipp

Um die Schritte zum Erstellen von Arbeitsreihenfolgen zu testen, ohne einen Dataverse-Datensatz zu ändern, erstellen Sie eine Kopie Ihres Flusses, und ersetzen Sie den Dataverse-Trigger durch manuellen Auslösen eines Flusses. Fügen Sie Eingabeparameter hinzu (z. B. Texteingaben für die Dienstkonto-ID, Arbeitsauftragstyp-ID und Preislisten-ID), damit Sie Testwerte beim Ausführen des Flows verwenden können. Nachdem Sie überprüft haben, ob der Arbeitsauftrag ordnungsgemäß erstellt wurde, wechseln Sie zurück zum Dataverse-Trigger in Ihrem Produktionsablauf.

Hinzufügen der Aktion "Arbeitsreihenfolge erstellen"

  1. Wählen Sie + Neuer Schritt aus, und suchen Sie nach Neue Zeile hinzufügen (Microsoft Dataverse Connector).

  2. Wählen Sie dieselbe Dataverse-Verbindung aus, die Sie für den Trigger verwendet haben. Das Feld "Tabellenname " wird erst angezeigt, nachdem eine Verbindung ausgewählt wurde.

  3. Legen Sie den Tabellennamen auf "Arbeitsaufträge" fest.

  4. Füllen Sie die erforderlichen Felder aus:

    Feld Value
    Nummer des Arbeitsauftrags Geben Sie den Ausdruck guid() als Platzhalter ein. Das Feld "Arbeitsauftragsnummer" ist von der Dataverse-Konnektor-Benutzeroberfläche erforderlich, aber das Autonummerierungs-Plugin von Field Service weist automatisch die richtige sequenzielle Arbeitsauftragsnummer zu, wenn der Datensatz gespeichert wird. Um einen Ausdruck einzugeben, wählen Sie das Feld aus, wechseln Sie im Bereich für dynamische Inhalte zur Registerkarte „Ausdruck“, geben Sie guid() ein und wählen Sie „OK“ aus.
    Dienstkonto Wählen Sie das Konto im Suchfeld aus, oder geben Sie den Ausdruck concat('/accounts(', 'service-account-guid', ')') in der Registerkarte Ausdruck ein, wenn Sie eine hartcodierte oder dynamische GUID verwenden müssen. Hier erfahren Sie, wie Sie dies finden.
    Art des Arbeitsauftrags Wählen Sie den Arbeitsauftragstyp mithilfe des Suchfelds aus, oder geben Sie den Ausdruck concat('/msdyn_workordertypes(', 'work-order-type-guid', ')') auf der Registerkarte Ausdruck ein, wenn Sie eine hartcodierte oder dynamische GUID verwenden müssen. Hier erfahren Sie, wie Sie dies finden.
    Preisliste Wählen Sie die Preisliste mithilfe des Suchfelds aus oder geben Sie den Ausdruck concat('/pricelevels(', 'your-price-list-guid', ')') auf der Registerkarte Expression ein, wenn Sie eine fest codierte oder dynamische GUID verwenden müssen. Wenn Sie die Preisliste dynamisch mithilfe der Aktion Listenzeilen in einer Schleife Für jede abrufen, verwenden Sie stattdessen concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')'), indem Sie YourLoopName durch den Namen Ihrer Schleife ersetzen. Hier erfahren Sie, wie Sie dies finden.
    Systemzustand 690970000 (Ungeplant)
    Steuerpflichtig false
    Anweisungen Verwenden von dynamischen Inhalten aus dem Trigger, z. B. den Objektnamen

    Dienstkonto: Geben Sie den Kontonamen direkt in das Feld "Dienstkonto " ein, nach dem gesucht und ausgewählt werden soll. Wenn es sich bei dem Trigger um eine Änderung des Kundenobjekts handelt und die Ressource mit einem Konto verknüpft ist, können Sie stattdessen im bereich dynamischer Inhalte Konto (Kundenobjekte) auswählen. Wenn Sie eine GUID direkt verwenden müssen, wechseln Sie zu "Dienstbereich>Kundenkonten>" im Felddienst, öffnen Sie das Konto, und kopieren Sie die Datensatz-ID aus der Browser-URL (der Wert zwischen%7B und , %7Doder die einfache GUID, wenn die URL nicht codiert ist).

    Arbeitsauftragstyp: Geben Sie den Namen des Arbeitsauftragstyps direkt in das Feld Arbeitsauftragstyp ein, um danach zu suchen und ihn auszuwählen. Wenn Sie eine GUID direkt verwenden müssen, wechseln Sie zum Bereich Einstellungen in >Arbeitsauftrag>Arbeitsauftragstypen im Felddienst, öffnen Sie den Arbeitsauftragstyp und kopieren Sie die Datensatz-ID aus der Browser-URL.

    Preisliste: Geben Sie den Namen der Preisliste direkt in das Feld " Preisliste " ein, nach dem gesucht und ausgewählt werden soll. Wenn Sie eine GUID direkt verwenden müssen, gehen Sie in Einstellungen>Allgemein>Preislisten von Field Service, öffnen Sie die Preisliste und kopieren Sie die Datensatz-ID aus der Browser-URL.

    Notiz

    Der Dataverse-Connector erfordert, dass Nachschlagefelder einen OData-Entitätsverweispfad (z. B. /accounts(guid)) anstelle einer einfachen GUID verwenden. Das Eingeben einer rohen GUID verursacht zur Laufzeit einen ODataUnrecognizedPathException Fehler. Die concat obigen Ausdrücke erstellen das richtige Pfadformat.

  5. Speichern und testen Sie den Flow.

Option 2: Erstellen einer Arbeitsreihenfolge aus einer HTTP-Anforderung

Verwenden Sie dieses Muster, um einen Arbeitsauftrag aus einem externen System zu erstellen, z. B. ein Kundenportal, ein Ticketsystem oder eine IoT-Plattform.

Trigger einrichten

  1. Wählen Sie in Power Automate Create>Instant cloud flow aus.

  2. Benennen Sie den Fluss, und wählen Sie aus , wann eine HTTP-Anforderung als Trigger empfangen wird .

  3. Wählen Sie Erstellen aus.

  4. Fügen Sie im Feld "Json-Schema des Anforderungstexts " das folgende Schema ein:

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. Wählen Sie für "Wer den Fluss auslösen kann" eine der folgenden Optionen aus:

    Option Wann verwendet werden soll
    Nur Benutzer in meinem Mandanten Empfohlen für die Produktion. Aufrufer müssen sich mit Microsoft Entra ID authentifizieren und ein gültiges OAuth-Bearertoken präsentieren. Verwenden Sie dies für interne Systeme oder vertrauenswürdige Dienstprinzipale.
    Jeder Die URL selbst fungiert als Anmeldeinformationen – es ist kein zusätzlicher Authentifizierungsheader erforderlich. Wird nur verwendet, wenn das aufrufende System kein Entra ID-Token abrufen kann und Sie sicherstellen können, dass die URL sicher gespeichert ist.

    Erfahren Sie mehr über die Sicherung von durch HTTP ausgelösten Flows in OAuth-Authentifizierung für HTTP-Anforderungstrigger hinzufügen.

  6. Das HTTP-URL-Feld ist schreibgeschützt – füllen Sie es nicht aus. Power Automate füllt ihn automatisch auf, wenn Sie den Fluss zum ersten Mal speichern.

  7. Speichern Sie den Flow. Das HTTP-URL-Feld wird jetzt mit der Endpunkt-URL aufgefüllt. Kopieren Sie diese URL, und geben Sie sie an, wer das externe System konfiguriert (z. B. einen Entwickler oder Systemadministrator). Das externe System löst den Fluss aus, indem eine HTTP POST-Anforderung an diese URL mit einem JSON-Textkörper gesendet wird, der dem von Ihnen definierten Schema entspricht. Beispiele:

    POST <paste the HTTP URL here>
    Content-Type: application/json
    
    {
      "serviceAccountId": "<account record GUID>",
      "workOrderTypeId": "<work order type record GUID>",
      "priceListId": "<price list record GUID>",
      "instructions": "Reported issue: equipment not functioning"
    }
    

    Jedes Mal, wenn das externe System diese Anfrage sendet, führt Power Automate den Flow aus und erstellt eine Arbeitsreihenfolge in Field Service.

Hinzufügen der Aktion "Arbeitsreihenfolge erstellen"

  1. Wählen Sie + Neuer Schritt aus, und suchen Sie nach Neue Zeile hinzufügen (Microsoft Dataverse Connector).

  2. Melden Sie sich beim Microsoft Dataverse Connector an, oder wählen Sie eine vorhandene Verbindung aus. Das Feld "Tabellenname " wird erst angezeigt, nachdem eine Verbindung ausgewählt wurde.

  3. Legen Sie den Tabellennamen auf "Arbeitsaufträge" fest.

  4. Ordnen Sie die Felder des HTTP-Anforderungstexts den Arbeitsauftragsfeldern zu.

    Arbeitsauftragsfeld Value
    Nummer des Arbeitsauftrags Geben Sie den Ausdruck guid() als Platzhalter ein. Das Feld "Arbeitsauftragsnummer" ist von der Dataverse-Konnektor-Benutzeroberfläche erforderlich, aber das Autonummerierungs-Plugin von Field Service weist automatisch die richtige sequenzielle Arbeitsauftragsnummer zu, wenn der Datensatz gespeichert wird. Um einen Ausdruck einzugeben, wählen Sie das Feld aus, wechseln Sie im Bereich für dynamische Inhalte zur Registerkarte „Ausdruck“, geben Sie guid() ein und wählen Sie „OK“ aus.
    Dienstkonto concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Art des Arbeitsauftrags concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Preisliste concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    Systemzustand 690970000 (Ungeplant)
    Anweisungen @{triggerBody()?['instructions']}
  5. Fügen Sie optional eine Antwortaktion hinzu, um die neue Arbeitsauftrags-ID an das aufrufende System zurückzugeben:

    1. Wählen Sie + Neuer Schritt aus und suchen Sie nach Antwort (aus dem Anfrage-Connector).
    2. Statuscode festlegen auf 200.
    3. Wählen Sie im Feld "Textkörper" das Symbol für dynamische Inhalte aus, und wählen Sie im Schritt "Neue Zeile hinzufügen" msdyn_workorderid aus. Dies ist die eindeutige ID des soeben erstellten Arbeitsauftrags.

    Ohne diesen Schritt empfängt das aufrufende System keine Antwort, und die HTTP-Anforderung läuft nach einer Wartezeit ab. Wenn Sie diesen Schritt hinzufügen, empfängt das aufrufende System eine 200 Antwort mit der Arbeitsauftrags-ID, sobald der Ablauf abgeschlossen ist.

Systemstatusoptionssatzwerte

Verwenden Sie diese ganzzahligen Werte, wenn Sie den Systemstatus in einem Fluss- oder API-Aufruf festlegen.

Beschriftung Value
Nicht geplant 690970000
Geplant 690970001
In Bearbeitung 690970002
Fertiggestellt 690970003
Veröffentlicht 690970004
Storniert 690970005

Überlegungen

Kontoinhaberschaft der Datenflussverbindung

Arbeitsaufträge, die von einem Flow erstellt wurden, gehören dem Verbindungskonto, das im Dataverse-Connector verwendet wird. Stellen Sie sicher, dass dieses Konto über die richtige Sicherheitsrolle verfügt und dass Arbeitsaufträge, die vom Flow erstellt wurden, in den erwarteten Ansichten und Warteschlangen erscheinen.

Untergeordnete Datensätze

Die Aktion Neue Zeile hinzufügen erstellt nur den Arbeitsauftragskopf. Um Arbeitsauftragsprodukte, Dienste oder Dienstaufgaben hinzuzufügen, fügen Sie separate Schritte für Neue Zeile hinzufügen für jede untergeordnete Tabelle (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) hinzu und legen Sie das Suchfeld Arbeitsauftrag auf die ID fest, die vom Erstellungsschritt zurückgegeben wird.

API-Ratenbeschränkungen

Power Automate Flüsse unterliegen Datenverse-API-Grenzwerten. Für Szenarien mit großem Datenvolumen sollten Sie den Dataverse-Web-API-Batchendpunkt verwenden oder die Flowausführungen mithilfe eines geplanten Triggers mit Batchverarbeitung verteilen.

Vermeiden doppelter Arbeitsaufträge

Wenn ein Fluss häufig auf demselben Trigger ausgeführt wird, fügen Sie eine Bedingung hinzu, um zu überprüfen, ob bereits eine Arbeitsreihenfolge vorhanden ist, bevor Sie eine neue erstellen. Verwenden Sie eine Listenzeilenaktion, die nach der Quelldatensatz-ID gefiltert ist, um nach vorhandenen Arbeitsaufträgen zu suchen.

Fehlerbehandlung

Schließen Sie für Produktionsflows den Schritt Neue Zeile hinzufügen in eine Aktion Bereich ein und fügen Sie einen Parallelzweig hinzu, der so konfiguriert ist, dass er ausgeführt wird, wenn es zu einem Fehler gekommen ist. Verwenden Sie diese Verzweigung, um den Fehler zu protokollieren oder eine Benachrichtigung zu senden. Fügen Sie bei HTTP-ausgelösten Flows immer eine Antwort-Aktion hinzu, sodass das aufrufende System einen Erfolgs- oder Fehlerstatuscode empfängt, anstatt in einen Timeout zu laufen.

Nächste Schritte