Skapa arbetsorder med hjälp av Power Automate

Du kan automatiskt skapa arbetsorder i Dynamics 365 Field Service med hjälp av Power Automate flöden. Detta är användbart när arbetsorder måste skapas baserat på externa utlösare, till exempel en IoT-avisering, en formuläröverföring, en tjänstbegäran från ett annat system eller en ändring av en relaterad post.

Power Automate-flöden använder Microsoft Dataverse-anslutningen för att interagera med Field Service-poster. Information om hur du skapar arbetsorder via kod finns i Skapa arbetsorder med hjälp av Dataverse Web API.

Förutsättningar

  • En Power Automate licens (ingår i de flesta Dynamics 365 licenser).
  • Minst en av följande fälttjänstsäkerhetsroller som tilldelats flödets anslutningskonto. Läs mer i Konfigurera användare och säkerhetsroller.
    • Field Service-avsändare
    • Field Service-administratör
  • Befintliga poster för de nödvändiga uppslagsfälten:
    • Tjänstkonto (account entitet)
    • Typ av arbetsorder (msdyn_workordertype entitet)
    • Prislista (pricelevel entitet)

Alternativ 1: Skapa en arbetsorder när en Dataverse-post ändras

Använd det här mönstret för att skapa en arbetsorder som svar på en ändring i en annan Dataverse-tabell, till exempel när en kundtillgångs status ändras.

Konfigurera utlösaren

  1. I Power Automate väljer du Skapa>Automatiserat molnflöde.

  2. Sök efter och välj När en rad läggs till, ändras eller tas bort (Microsoft Dataverse-koppling).

  3. När du uppmanas att göra det loggar du in på anslutningsappen Microsoft Dataverse med dina Dynamics 365 autentiseringsuppgifter. Om du redan har en anslutning till din miljö väljer du den i listrutan. Utlösarens konfigurationsfält fylls inte förrän en aktiv anslutning har upprättats.

  4. Konfigurera utlösaren:

    Fältet Value
    Ändra typ Modifierad
    Tabellnamn Kundtillgångar
    Scope Organisation
  5. Du kan också lägga till ett villkor för filterrader för att begränsa när flödet körs. Till exempel: msdyn_operationalstatus eq 690970001 (Behöver tjänst).

Tips/Råd

Om du vill testa stegen för att skapa arbetsorder utan att ändra en Dataverse-post skapar du en kopia av flödet och ersätter Dataverse-utlösaren med att utlösa ett flöde manuellt. Lägg till indataparametrar (till exempel textindata för tjänstkontots ID, arbetsordertyps-ID och prislist-ID) så att du kan skicka testvärden när du kör flödet. När du har kontrollerat att arbetsordningen har skapats korrekt växlar du tillbaka till Dataverse-utlösaren i produktionsflödet.

Lägg till åtgärden Skapa arbetsorder

  1. Välj + Nytt steg och sök efter Lägg till en ny rad (Microsoft Dataverse anslutning).

  2. Välj samma Dataverse-anslutning som du använde för utlösaren. Fältet Tabellnamn visas bara när en anslutning har valts.

  3. Ange Tabellnamn till Arbetsorder.

  4. Fyll i de obligatoriska fälten:

    Fältet Value
    Nummer på arbetsorder Ange uttrycket guid() som platshållare. Fältet Arbetsordernummer krävs av användargränssnittet för Dataverse-anslutningsappen, men Fälttjänstens plugin-program för automatisk numrering tilldelar automatiskt rätt sekventiellt arbetsordernummer när posten sparas. Om du vill ange ett uttryck väljer du fältet, växlar till fliken Uttryck i panelen dynamiskt innehåll, skriver guid()och väljer OK.
    Servicekonto Välj kontot med hjälp av sökfältet eller ange uttrycket concat('/accounts(', 'service-account-guid', ')') på fliken Uttryck om du behöver använda ett hårdkodat eller dynamiskt GUID. Se nedan för att hitta detta.
    Arbetsordertyp Välj arbetsordningstypen med hjälp av sökfältet eller ange uttrycket concat('/msdyn_workordertypes(', 'work-order-type-guid', ')') på fliken Uttryck om du behöver använda ett hårdkodat eller dynamiskt GUID. Se nedan för att hitta detta.
    Prislista Välj prislistan med hjälp av sökfältet eller ange uttrycket concat('/pricelevels(', 'your-price-list-guid', ')') på fliken Uttryck om du behöver använda ett hårdkodat eller dynamiskt GUID. Om du hämtar prislistan dynamiskt med hjälp av en listradsåtgärd i en För varje loop använder du concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')') i stället och ersätter YourLoopName med loopens namn. Se nedan för att hitta detta.
    Systemstatus 690970000 (Ej schemalagt)
    Skattepliktig false
    Instruktioner Använd dynamiskt innehåll från utlösaren, till exempel tillgångsnamnet

    Tjänstkonto: Skriv kontonamnet direkt i fältet Tjänstkonto för att söka efter och välja det. Om utlösaren är en ändring av kundtillgången och tillgången är länkad till ett konto kan du i stället välja Konto (Kundtillgångar) från panelen för dynamiskt innehåll. Om du behöver använda ett GUID direkt går du till> i tjänstområdet> i Fälttjänst, öppnar kontot och kopierar post-ID:t från webbläsar-URL:en (värdet mellan %7B och %7Deller det vanliga GUID:t om URL:en är avkodad).

    Typ av arbetsorder: Skriv namnet på arbetsordertypen direkt i fältet Arbetsordertyp för att söka efter och markera det. Om du behöver använda ett GUID direkt går du till Inställningsområdet>Arbetsordertyper>i Field Service, öppnar arbetsordertypen och kopierar post-ID:t från webbläsarens URL.

    Prislista: Ange namnet på prislistan direkt i fältet Prislista för att söka efter och välja det. Om du behöver använda ett GUID direkt går du till Inställningar>Allmänna>prislistor i Fälttjänst, öppnar prislistan och kopierar post-ID:t från webbläsarens URL.

    Anmärkning

    Dataverse-anslutningsappen kräver uppslagsfält för att använda en OData-entitetsreferenssökväg (till exempel /accounts(guid)) i stället för ett vanligt GUID. Om du anger en GUID utan inramning orsakas en ODataUnrecognizedPathException vid körning. Uttrycken concat ovan konstruerar rätt sökvägsformat.

  5. Spara och testa flödet.

Alternativ 2: Skapa en arbetsorder från en HTTP-begäran

Använd det här mönstret för att skapa en arbetsorder från ett externt system, till exempel en kundportal, ett biljettsystem eller en IoT-plattform.

Konfigurera utlösaren

  1. I Power Automate väljer du Create>Instant cloud flow.

  2. Namnge flödet och välj När en HTTP-begäran tas emot som utlösare.

  3. Markera Skapa.

  4. I fältet JSON-schema för begärandetext klistrar du in följande schema:

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. För Vem kan utlösa flödet väljer du något av följande alternativ:

    Alternativ När du ska använda
    Endast användare i min klientorganisation Rekommenderas för produktion. Anropare måste autentisera med Microsoft Entra ID och presentera en giltig OAuth-ägartoken. Använd detta för interna system eller betrodda tjänstprincipaler.
    Alla Själva URL:en fungerar som autentiseringsuppgifter – ingen ytterligare autentiseringsrubrik krävs. Använd endast när det anropande systemet inte kan hämta en Entra ID token och du kan se till att URL:en lagras på ett säkert sätt.

    Läs mer om att skydda HTTP-utlösta flöden i Lägg till OAuth-autentisering för HTTP-begärandeutlösare.

  6. FÄLTET HTTP-URL är skrivskyddat – fyll inte i det. Power Automate fyller i det automatiskt när du sparar flödet för första gången.

  7. Spara flödet. FÄLTET HTTP-URL fylls nu i med slutpunkts-URL:en. Kopiera den här URL:en och ange den till den som konfigurerar det externa systemet (till exempel en utvecklare eller systemadministratör). Det externa systemet utlöser flödet genom att skicka en HTTP POST-begäran till den här URL:en med en JSON-brödtext som matchar det schema som du definierade. Till exempel:

    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"
    }
    

    Varje gång det externa systemet skickar den här begäran kör Power Automate flödet och skapar en arbetsordning i Fälttjänst.

Lägg till åtgärden Skapa arbetsorder

  1. Välj + Nytt steg och sök efter Lägg till en ny rad (Microsoft Dataverse anslutning).

  2. Logga in på Microsoft Dataverse-anslutningsappen eller välj en befintlig anslutning. Fältet Tabellnamn visas bara när en anslutning har valts.

  3. Ange Tabellnamn till Arbetsorder.

  4. Mappa fälten för HTTP-begärandetexten till arbetsordningsfälten:

    Arbetsordningsfält Value
    Nummer på arbetsorder Ange uttrycket guid() som platshållare. Fältet Arbetsordernummer krävs av användargränssnittet för Dataverse-anslutningsappen, men Fälttjänstens plugin-program för automatisk numrering tilldelar automatiskt rätt sekventiellt arbetsordernummer när posten sparas. Om du vill ange ett uttryck väljer du fältet, växlar till fliken Uttryck i panelen dynamiskt innehåll, skriver guid()och väljer OK.
    Servicekonto concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Arbetsordertyp concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Prislista concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    Systemstatus 690970000 (Ej schemalagt)
    Instruktioner @{triggerBody()?['instructions']}
  5. Du kan också lägga till en svarsåtgärd för att returnera det nya arbetsorder-ID:t till anropssystemet:

    1. Välj + Nytt steg och sök efter Svar (från anslutningsappen för begäran ).
    2. Ange Statuskod till 200.
    3. I fältet Brödtext väljer du ikonen för dynamiskt innehåll och väljer msdyn_workorderid från steget Lägg till en ny rad . Det här är det unika ID:t för arbetsordningen som just skapades.

    Utan det här steget får det anropande systemet inget svar och HTTP-begäran överskrider tidsgränsen efter väntan. Om du lägger till det här steget får det anropande systemet ett 200 svar med arbetsorder-ID så snart flödet har slutförts.

Ange värden för systemstatusalternativ

Använd dessa heltalsvärden när du anger systemstatus i ett flöde eller API-anrop.

Etikett Value
Inte schemalagt 690970000
Schemalagd 690970001
Pågår 690970002
Slutförd 690970003
Bokfört 690970004
Annullerat 690970005

Överväganden

Ägarskap för flödesanslutningskonto

Arbetsorder som skapas av ett flöde ägs av anslutningskontot som är kopplat till Dataverse-anslutningen. Kontrollera att det här kontot har rätt säkerhetsroll och att arbetsorder som skapats av flödet visas i förväntade vyer och köer.

Underordnade poster

Åtgärden Lägg till en ny rad skapar bara arbetsorderrubriken. Om du vill lägga till produkter, tjänster eller tjänstuppgifter för arbetsorder lägger du till separata Lägg till nya radsteg för varje underordnad tabell (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) och anger uppslagsfältet Arbetsorder till det ID som returneras av steget skapa.

API-hastighetsgränser

Power Automate flöden omfattas av Dataverse API-gränser. För scenarier med stora volymer bör du överväga att använda batchslutpunkten för Dataverse Web API eller sprida flödeskörningar genom att använda en schemalagd utlösare och batchbearbetning.

Undvika duplicerade arbetsorder

Om ett flöde körs ofta på samma utlösare lägger du till ett villkor för att kontrollera om det redan finns en arbetsorder innan du skapar en ny. Använd en Listarader-åtgärd som filtrerats efter källpostens ID för att kontrollera befintliga arbetsorder.

Felhantering

För produktionsflöden omsluter du steget Lägg till en ny rad i en Scope-åtgärd och lägger till en parallell gren som konfigurerats att köras om det har misslyckats. Använd den här grenen för att logga felet eller skicka ett meddelande. För HTTP-utlösta flöden lägger du alltid till en Svar så att det anropande systemet får en lyckad eller misslyckad statuskod i stället för att få timeout.

Nästa steg