Créer des commandes de travail à l’aide de l’API Web Dataverse

Cet article fournit des exemples de création de commandes de travail dans Dynamics 365 Field Service à l’aide de l’API web Dataverse Web. Les exemples utilisent l’entité msdyn_workorder .

Prerequisites

  • Un environnement Dynamics 365 Field Service avec le point de terminaison de l’API web (par exemple, https://yourorg.api.crm.dynamics.com/api/data/v9.2/).
  • Demande authentifiée à l’aide d’OAuth 2.0. En savoir plus sur l’authentification auprès de Dataverse avec l’API web.
  • Enregistrements existants pour les champs de recherche requis :
    • Compte de service (account entité)
    • Type d’ordre de travail (msdyn_workordertype entité)
    • Liste de prix (pricelevel entité)

Important

Les GUID dans les exemples suivants sont fictifs. Remplacez-les par les ID d’enregistrement réels de votre environnement de Dynamics 365.

Créer un ordre de travail unique

Envoyez une POST demande à l’ensemble msdyn_workorders d’entités pour créer une commande de travail. Pour en savoir plus, consultez Créer une ligne de table à l’aide de l’API web.

Requête HTTP

POST [Organization URL]/api/data/v9.2/msdyn_workorders
Accept: application/json
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer <access_token>

{
  "msdyn_serviceaccount@odata.bind": "/accounts(e1a2b3c4-5678-9abc-def0-1234567890ab)",
  "msdyn_workordertype@odata.bind": "/msdyn_workordertypes(a1b2c3d4-5678-9abc-def0-1234567890cd)",
  "msdyn_pricelist@odata.bind": "/pricelevels(f1e2d3c4-5678-9abc-def0-1234567890ef)",
  "msdyn_systemstatus": 690970000,
  "msdyn_taxable": false,
  "msdyn_instructions": "Install new equipment"
}

Réponse HTTP

Une requête réussie retourne HTTP 204 No Content avec un OData-EntityId en-tête contenant l’URL du nouvel enregistrement de commande de travail.

Créer plusieurs commandes de travail

Pour créer plusieurs commandes de travail dans une seule requête, utilisez l’action CreateMultiple . Cela est plus performant que les requêtes POST individuelles ou les opérations de traitement par lots. Pour plus d’informations : Utiliser les messages d’opération en bloc.

Requête HTTP

POST [Organization URL]/api/data/v9.2/msdyn_workorders/Microsoft.Dynamics.CRM.CreateMultiple
Accept: application/json
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer <access_token>

{
  "Targets": [
    {
      "@odata.type": "Microsoft.Dynamics.CRM.msdyn_workorder",
      "msdyn_serviceaccount@odata.bind": "/accounts(e1a2b3c4-5678-9abc-def0-1234567890ab)",
      "msdyn_workordertype@odata.bind": "/msdyn_workordertypes(a1b2c3d4-5678-9abc-def0-1234567890cd)",
      "msdyn_pricelist@odata.bind": "/pricelevels(f1e2d3c4-5678-9abc-def0-1234567890ef)",
      "msdyn_systemstatus": 690970000,
      "msdyn_taxable": false,
      "msdyn_instructions": "Work order 1 - Install new equipment"
    },
    {
      "@odata.type": "Microsoft.Dynamics.CRM.msdyn_workorder",
      "msdyn_serviceaccount@odata.bind": "/accounts(e1a2b3c4-5678-9abc-def0-1234567890ab)",
      "msdyn_workordertype@odata.bind": "/msdyn_workordertypes(a1b2c3d4-5678-9abc-def0-1234567890cd)",
      "msdyn_pricelist@odata.bind": "/pricelevels(f1e2d3c4-5678-9abc-def0-1234567890ef)",
      "msdyn_systemstatus": 690970000,
      "msdyn_taxable": false,
      "msdyn_instructions": "Work order 2 - Preventive maintenance check"
    }
  ]
}

Réponse HTTP

Une requête réussie retourne HTTP 200 OK avec les ID des enregistrements créés.

{
  "@odata.context": "[Organization URL]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CreateMultipleResponse",
  "Ids": [
    "c1d2e3f4-5678-9abc-def0-111111111111",
    "c1d2e3f4-5678-9abc-def0-222222222222"
  ]
}

Récupérer un ordre de travail

Après avoir créé une commande de travail, récupérez-la avec une GET demande.

GET [Organization URL]/api/data/v9.2/msdyn_workorders(<work-order-id>)?$select=msdyn_name,msdyn_systemstatus,msdyn_address1,msdyn_city
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer <access_token>

Réponse

{
  "@odata.context": "[Organization URL]/api/data/v9.2/$metadata#msdyn_workorders(msdyn_name,msdyn_systemstatus,msdyn_address1,msdyn_city)/$entity",
  "@odata.etag": "W/\"7998533\"",
  "msdyn_workorderid": "d4e5f6a7-1234-5678-9abc-def012345678",
  "msdyn_name": "00051",
  "msdyn_systemstatus": 690970000,
  "msdyn_address1": "205 108th Ave NE",
  "msdyn_city": "Bellevue"
}

Note

Le msdyn_name champ contient le numéro d’ordre de travail attribué automatiquement généré par Field Service. Les valeurs msdyn_address1 et msdyn_city sont remplies depuis l’enregistrement du compte de service.

Gestion des erreurs

Réponses d’erreur courantes lors de la création de commandes de travail :

Code de statut Reason Résolution
400 Bad Request Champs obligatoires manquants ou valeurs de champ non valides. Vérifiez que tous les champs obligatoires (msdyn_serviceaccount, msdyn_workordertype, msdyn_pricelist, msdyn_systemstatus, msdyn_taxable) sont inclus avec des valeurs valides.
400 Bad Request (code 0x80060888) La valeur du champ de recherche est un GUID pur sans chemin d’accès à l’ensemble d'entités. Utilisez le format de référence d’entité OData complet, par exemple /accounts(guid) au lieu du GUID uniquement.
401 Unauthorized Jeton d’accès manquant ou expiré. Actualisez ou obtenez un nouveau jeton d’accès OAuth 2.0.
403 Forbidden Privilèges insuffisants. Vérifiez que l’utilisateur dispose du rôle de sécurité Field Service - Dispatcher ou Field Service - Administrateur .
404 Not Found Un enregistrement de recherche référencé n’existe pas. Vérifiez que les GUID pour le compte de service, le type de commande de travail et la liste de prix référencent les enregistrements existants.