この記事では、Dataverse Web API を使用してDynamics 365 Field Serviceで作業指示書を作成する例を示します。 この例では、 msdyn_workorder エンティティを使用します。
前提条件
- Web API エンドポイントを持つDynamics 365 Field Service環境 (たとえば、
https://yourorg.api.crm.dynamics.com/api/data/v9.2/)。 - OAuth 2.0 を使用して認証された要求。 詳細については、 Web API を使用した Dataverse への認証に関するページを参照してください。
- 必要なルックアップフィールドに対する既存のレコード:
-
サービス アカウント (
accountエンティティ) -
作業指示書の種類 (
msdyn_workordertypeエンティティ) -
価格表 (
pricelevelエンティティ)
-
サービス アカウント (
Important
次の例の GUID は架空のものです。 それらを、Dynamics 365環境の実際のレコード ID に置き換えます。
1 つの作業指示書を作成する
作業指示書を作成するために、POST エンティティ セットにmsdyn_workorders要求を送信します。 詳細については、「 Web API を使用してテーブル行を作成する」を参照してください。
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"
}
HTTP 応答
要求が成功すると、新しい作業指示書レコードの URL を含む HTTP 204 No Content ヘッダーを含むOData-EntityIdが返されます。
複数の作業指示書を作成する
1 つの要求で複数の作業指示書を作成するには、 CreateMultiple アクションを使用します。 これは、個々の POST 要求やバッチ操作よりもパフォーマンスが高くなります。 詳しくは「一括操作メッセージを使用する」をご覧ください。
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"
}
]
}
HTTP 応答
要求が成功すると、作成されたレコードの ID を持つ HTTP 200 OK が返されます。
{
"@odata.context": "[Organization URL]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CreateMultipleResponse",
"Ids": [
"c1d2e3f4-5678-9abc-def0-111111111111",
"c1d2e3f4-5678-9abc-def0-222222222222"
]
}
作業指示書を取得する
作業指示書を作成した後、 GET 要求を使用して取得します。
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>
応答
{
"@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"
}
注
msdyn_nameフィールドには、Field Service によって生成された自動割り当て作業指示番号が含まれます。
msdyn_address1とmsdyn_cityの値は、サービス アカウント レコードから設定されます。
エラー処理
作業指示書を作成するときの一般的なエラー応答:
| 状態コード | 理由 | Resolution |
|---|---|---|
400 Bad Request |
必須フィールドがないか、フィールド値が無効です。 | すべての必須フィールド (msdyn_serviceaccount、 msdyn_workordertype、 msdyn_pricelist、 msdyn_systemstatus、 msdyn_taxable) が有効な値に含まれていることを確認します。 |
400 Bad Request (コード 0x80060888) |
ルックアップ フィールドの値は、エンティティ セット パスのない純粋な GUID です。 | 完全な OData エンティティ参照形式を使用します。たとえば、GUID ではなく /accounts(guid) します。 |
401 Unauthorized |
アクセス トークンが見つからないか期限切れです。 | 新しい OAuth 2.0 アクセス トークンを更新または取得します。 |
403 Forbidden |
特権が不十分です。 | ユーザーが Field Service - Dispatcher または Field Service - Administrator セキュリティ ロールを持っていることを確認します。 |
404 Not Found |
参照先レコードが存在しません。 | サービス アカウント、作業指示書の種類、および価格表の GUID が既存のレコードを参照していることを確認します。 |