Opprett arbeidsordrer ved hjelp av Power Automate

Du kan automatisk opprette arbeidsordrer i Dynamics 365 Field Service ved hjelp av Power Automate flyter. Dette er nyttig når arbeidsordrer må opprettes basert på eksterne utløsere, for eksempel et IoT-varsel, en skjemainnsending, en tjenesteforespørsel fra et annet system eller en endring i en relatert post.

Power Automate-flyter bruker Microsoft Dataverse-koblingen til å samhandle med oppføringer i Field Service. Hvis du vil ha informasjon om hvordan du oppretter arbeidsordrer gjennom kode, kan du gå til Opprett arbeidsordrer ved hjelp av datavers web-API-en.

Forutsetninger

  • En Power Automate lisens (inkludert med de fleste Dynamics 365 lisenser).
  • Minst én av følgende sikkerhetsroller for felttjenester er tilordnet til kontoen som er knyttet til flyten. Finn ut mer i Konfigurere brukere og sikkerhetsroller.
    • Field Service – ordrefordeler
    • Field Service – administrator
  • Eksisterende poster for de nødvendige oppslagsfeltene:
    • Tjenestekonto (account enhet)
    • Arbeidsordretype (msdyn_workordertype enhet)
    • Prisliste (pricelevel enhet)

Alternativ 1: Opprette en arbeidsrekkefølge når en dataverspost endres

Bruk dette mønsteret til å opprette en arbeidsordre som svar på en endring i en annen dataverstabell, for eksempel når statusen til et kundeaktiva endres.

Konfigurere utløseren

  1. I Power Automate velger du Opprett>Automatisert skyflyt.

  2. Søk etter og velg Når en rad legges til, endres eller slettes (Microsoft Dataverse kobling).

  3. Når du blir bedt om det, logger du på Microsoft Dataversekoblingen ved hjelp av Dynamics 365 legitimasjonen. Hvis du allerede har en tilkobling til miljøet, velger du det fra rullegardinlisten. Konfigurasjonsfeltene for utløseren fylles ikke ut før en aktiv tilkobling er opprettet.

  4. Konfigurer utløseren:

    Felt Verdi
    Endre type endret
    Tabellnavn Kundeaktiva
    Scope Organisasjon
  5. Du kan også legge til en filterradbetingelse for å begrense når flyten kjøres. Eksempel: msdyn_operationalstatus eq 690970001 (Trenger tjeneste).

Tips

Hvis du vil teste opprettingstrinnene for arbeidsordren uten å endre en Dataverse-oppføring, oppretter du en kopi av flyten og erstatter Dataverse-utløseren med Utløs en flyt manuelt. Legg til inndataparametere (for eksempel tekstinndata for tjenestekonto-ID, ID for arbeidsordretype og prisliste-ID), slik at du kan bestå testverdier når du kjører flyten. Når du har bekreftet at arbeidsordren er opprettet på riktig måte, bytter du tilbake til dataversutløseren i produksjonsflyten.

Legg til handlingen Opprett arbeidsordre

  1. Velg + Nytt trinn og søk etter Tillegg til en ny rad (Microsoft Dataverse kobling).

  2. Velg den samme dataverse tilkoblingen du brukte for utløseren. Tabellnavn-feltet vises bare etter at en tilkobling er valgt.

  3. Angi tabellnavn til Arbeidsordrer.

  4. Fyll ut de nødvendige feltene:

    Felt Verdi
    Arbeidsordrenummer Skriv inn uttrykket guid() som en plassholder. Feltet Arbeidsordrenummer kreves av brukergrensesnittet for dataversekoblinger, men Felttjenestens plugin-modul for autonummer tilordner automatisk riktig sekvensielt arbeidsordrenummer når posten lagres. Hvis du vil skrive inn et uttrykk, velger du feltet, bytter til uttrykk-fanen i det dynamiske innholdspanelet, skriver inn guid()og velger OK.
    Tjenestekonto Velg kontoen ved hjelp av søkefeltet, eller skriv inn uttrykket concat('/accounts(', 'service-account-guid', ')') i uttrykksfanen hvis du trenger å bruke en hardkodet eller dynamisk GUID. Se nedenfor for hvordan du finner dette.
    Arbeidsordretype Velg arbeidsrekkefølgetypen ved hjelp av søkefeltet, eller skriv inn uttrykket concat('/msdyn_workordertypes(', 'work-order-type-guid', ')') i uttrykksfanen hvis du trenger å bruke en hardkodet eller dynamisk GUID. Se nedenfor for hvordan du finner dette.
    Prisliste Velg prislisten ved hjelp av søkefeltet, eller skriv inn uttrykket concat('/pricelevels(', 'your-price-list-guid', ')') i uttrykksfanen hvis du trenger å bruke en hardkodet eller dynamisk GUID. Hvis du henter prislisten dynamisk ved hjelp av en listeradhandling i en For hver løkke, bruker concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')') du i stedet, og erstatter YourLoopName med løkkens navn. Se nedenfor for hvordan du finner dette.
    Systemstatus 690970000 (Ikke planlagt)
    Skattbar false
    Instruksjoner Bruk dynamisk innhold fra utløseren, for eksempel aktivanavnet

    Tjenestekonto: Skriv inn kontonavnet direkte i Tjenestekonto-feltet for å søke etter og velge det. Hvis utløseren er en kundeaktivaendring og aktivaet er koblet til en konto, kan du i stedet velge Konto (Kundeaktiva) fra det dynamiske innholdspanelet. Hvis du trenger å bruke en GUID direkte, går du til tjenesteområdet>Kunder-kontoer> i Felttjeneste, åpner kontoen og kopierer post-ID-en fra nettadressen for nettleseren (verdien mellom %7B og %7D, eller den vanlige GUID-en hvis url-adressen ikke er kodet).

    Arbeidsordretype: Skriv inn navnet på arbeidsrekkefølgetypen direkte i feltet Arbeidsrekkefølgetype for å søke etter og velge det. Hvis du trenger å bruke en GUID direkte, kan du gå til Arbeidsrekkefølgetyper>> i Felttjeneste, åpne arbeidsordretypen og kopiere post-ID-en fra nettadressen for nettleseren.

    Prisliste: Skriv inn navnet på prislisten direkte i Prisliste-feltet du vil søke etter, og velg det. Hvis du trenger å bruke en GUID direkte, går du tilGenerelle>prislister for > i felttjenesten, åpner prislisten og kopierer post-ID-en fra nettadressen for nettleseren.

    Bemerkning

    Datavers-koblingen krever oppslagsfelt for å bruke en OData-enhetsreferansebane (for eksempel /accounts(guid)) i stedet for en vanlig GUID. Hvis du skriver inn en ren GUID, fører det til en ODataUnrecognizedPathException under kjøring. Uttrykkene concat ovenfor konstruerer riktig baneformat.

  5. Lagre og test flyten.

Alternativ 2: Opprette en arbeidsordre fra en HTTP-forespørsel

Bruk dette mønsteret til å opprette en arbeidsordre fra et eksternt system, for eksempel en kundeportal, billettsystem eller IoT-plattform.

Konfigurere utløseren

  1. Velg Create>Instant cloud flow i Power Automate.

  2. Gi flyten et navn, og velg Når en HTTP-forespørsel mottas som utløser.

  3. Velg Opprett.

  4. Lim inn følgende skjema i feltet JSON-skjema for forespørselstekst :

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. Velg ett av følgende alternativer for Hvem som kan utløse flyten:

    Alternativ Når den brukes
    Bare brukere i min leier Anbefales for produksjon. Innringere må godkjenne med Microsoft Entra ID og presentere et gyldig OAuth-bærertoken. Bruk dette for interne systemer eller klarerte tjenesteprinsipper.
    Noen Selve URL-adressen fungerer som legitimasjonen . Det kreves ingen ekstra godkjenningshode. Bruk bare når anropssystemet ikke kan hente et Entra ID token, og du kan sikre at nettadressen lagres på en sikker måte.

    Finn ut mer om sikring av HTTP-utløste flyter i Legg til OAuth-godkjenning for HTTP-forespørselsutløsere.

  6. HTTP URL-adressefeltet er skrivebeskyttet – ikke fyll det ut. Power Automate fyller den ut automatisk når du lagrer flyten for første gang.

  7. Lagre flyten. HTTP URL-adressefeltet er nå fylt ut med URL-adressen for endepunktet. Kopier denne URL-adressen, og oppgi den til den som konfigurerer det eksterne systemet (for eksempel en utvikler eller systemansvarlig). Det eksterne systemet utløser flyten ved å sende en HTTP POST-forespørsel til denne URL-adressen med en JSON-brødtekst som samsvarer med skjemaet du definerte. Eksempel:

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

    Hver gang det eksterne systemet sender denne forespørselen, kjører Power Automate flyten og oppretter en arbeidsordre i Felttjeneste.

Legg til handlingen Opprett arbeidsordre

  1. Velg + Nytt trinn og søk etter Tillegg til en ny rad (Microsoft Dataverse kobling).

  2. Logg på Microsoft Dataverse-koblingen, eller velg en eksisterende tilkobling. Tabellnavn-feltet vises bare etter at en tilkobling er valgt.

  3. Angi tabellnavn til Arbeidsordrer.

  4. Tilordne brødtekstfeltene for HTTP-forespørselen til arbeidsrekkefølgefeltene:

    Arbeidsordrefelt Verdi
    Arbeidsordrenummer Skriv inn uttrykket guid() som en plassholder. Feltet Arbeidsordrenummer kreves av brukergrensesnittet for dataversekoblinger, men Felttjenestens plugin-modul for autonummer tilordner automatisk riktig sekvensielt arbeidsordrenummer når posten lagres. Hvis du vil skrive inn et uttrykk, velger du feltet, bytter til uttrykk-fanen i det dynamiske innholdspanelet, skriver inn guid()og velger OK.
    Tjenestekonto concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Arbeidsordretype concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Prisliste concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    Systemstatus 690970000 (Ikke planlagt)
    Instruksjoner @{triggerBody()?['instructions']}
  5. Du kan eventuelt legge til en svarhandling for å returnere den nye bestillings-ID-en for arbeid til ringesystemet:

    1. Velg + Nytt trinn , og søk etter svar (fra Forespørsel-koblingen ).
    2. Angi statuskode til 200.
    3. Velg ikonet for dynamisk innhold i Brødtekst-feltet , og velg msdyn_workorderid fra trinnet Legg til en ny rad . Dette er den unike ID-en for arbeidsrekkefølgen som nettopp ble opprettet.

    Uten dette trinnet mottar anropssystemet ingen svar, og HTTP-forespørselen blir tidsavbrutt etter venting. Hvis du legger til dette trinnet, mottar anropssystemet et svar med arbeidsordre-ID-en 200 så snart flyten er fullført.

Angi verdier for systemstatusalternativ

Bruk disse heltallsverdiene når du angir systemstatus i et flyt- eller API-kall.

Etikett Verdi
Ikke planlagt 690970000
Tidsplanlagt 690970001
Pågår 690970002
Avsluttet 690970003
Bokført 690970004
Avbrutt 690970005

Vurderinger

Eierskap for tilkoblingskonto

Arbeidsordrer som opprettes av en flyt, eies av tilkoblingskontoen som brukes i Dataverse-koblingen. Kontroller at denne kontoen har riktig sikkerhetsrolle, og at arbeidsordrer som opprettes av flyten, vises i de forventede visningene og køene.

Underordnede poster

Handlingen Legg til en ny rad oppretter bare toppteksten for arbeidsordre. Hvis du vil legge til produkter, tjenester eller tjenesteoppgaver for arbeidsordrer, legger du til separate trinn for å legge til en ny rad for hver underordnede tabell (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) og angir oppslagsfeltet Arbeidsordre til IDen som returneres av opprettingstrinnet.

API-rentegrenser

Power Automate-flyter er underlagt Dataverse API-begrensninger. For scenarioer med høyt volum kan du vurdere å bruke det satsvise endepunktet for Dataverse Web API eller spre flytkjøringer ved hjelp av en planlagt utløser med satsvis behandling.

Unngå dupliserte arbeidsordrer

Hvis en flyt kjører ofte på samme utløser, legger du til en betingelse for å kontrollere om det allerede finnes en arbeidsordre før du oppretter en ny. Bruk en listeradhandling filtrert etter kildepost-ID-en for å se etter eksisterende arbeidsordrer.

Feilhåndtering

For produksjonsflyter kan du pakke inn Legg til en ny rad trinnet i en Scope-handling og legge til en parallell gren som er konfigurert til å kjøre når har mislyktes. Bruk denne grenen til å logge feilen eller sende et varsel. Når det gjelder HTTP-utløste flyter, må du alltid legge til en svarhandling , slik at anropssystemet får en vellykket eller mislykket statuskode i stedet for tidsberegning.

Neste trinn