Dynamics CRM 2016 SDK 新機能: Web API その 10: 現状の制限
みなさん、こんにちは。
前回に引き続き、Dynamics CRM 2016 SDK の新機能として、正式版と
なった Web API について紹介します。
今回は現時点での Web API の制限について紹介します。
概要
Web API は今回のリリースで正式版となりましたが、まだ一部機能に
制限があります。以下に主な制限の内容を紹介します。
ナビゲーションプロパティ値でのフィルターが行えない
参照フィールドのように特定できる関連の値であっても現時点では
ナビゲーションプロパティの値を利用したフィルターは行えません。
例えば以下の例では、取引先責任者の名前 ’Renee' で取引先企業の
レコードのフィルターをしますが、失敗して501 エラーが返されます。
GET [Organization URI] /api/data/v8.0/accounts?$select=name&$filter=primarycontactid/firstname eq 'Renee' HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
一部の組織サービス要求に対応する Function か Action がない
以下の組織サービスに対応する Function や Action がまだ存在しません。
BookRequest
CalculateRollupFieldRequest
CheckIncomingEmailRequest
FindParentResourceGroupRequest
GetQuantityDecimalRequest
IncrementKnowledgeArticleViewCountRequest
InitializeFromRequest
IsValidStateTransitionRequest
QualifyLeadRequest
QueryMultipleSchedulesRequest
ReactivateEntityKeyRequest
RemoveItemCampaignActivityRequest
RemoveItemCampaignRequest
RemoveMemberListRequest
RescheduleRequest
RetrieveByResourcesServiceRequest
RetrieveDuplicatesRequest
RetrieveFilteredFormsRequest
RetrieveLocLabelsRequest
RetrievePrincipalAccessRequest
RetrieveRecordWallRequest
SearchByBodyKbArticleRequest
SearchByKeywordsKbArticleRequest
SearchByTitleKbArticleRequest
ValidateRecurrenceRuleRequest
$expand クエリにおける $select クエリが無視される
2 つ以上のナビゲーションプロパティをクエリした際、最後のナビゲーション
プロパティで $select を利用しないと、1 つ目のナビゲーションプロパティは
すべての列を返します。
例えば以下のクエリは取引先企業の名前、関連する担当者の名前、関連する
営業案件の名前だけを返します。
GET [Organization URI] /api/data/v8.0/accounts(D05B5D26-2F99-E511-80DB-C4346BC51068)?$select=name&$expand=contact_customer_accounts($select=fullname),opportunity_customer_accounts($select=name)
しかし最後の select を省略すると、関連する取引先担当者の列も fullname
だけではなく、すべてが返されます。
GET [Organization URI] /api/data/v8.0/accounts(D05B5D26-2F99-E511-80DB-C4346BC51068)?$select=name&$expand=contact_customer_accounts($select=fullname),opportunity_customer_accounts
公開前のメタデータが取得できない
Web API を利用してメタデータを取得することができますが、公開済みの
メタデータのみ取得可能です。メタデータの操作については次回以降で
紹介します。
ナビゲーションプロパティの値がない場合、Null が返されない
OData 4.0 の仕様では、ナビゲーションプロパティの値が存在しない場合
Null が返されるべきですが、現状は項目が返されません。
ActivityPointer をリンクした FetchXML の制限
ActivityPointer をリンクエンティティとして指定した FetchXML を利用
した場合、リンクエンティティ側のフィールド値が返りません。
例えば以下の FetchXML を利用した場合、subject フィールドの値は
返りません。
<fetch version="1.0"
output-format="xml-platform"
mapping="logical"
distinct="true">
<entity name="account">
<attribute name="name" />
<link-entity name="activitypointer"
from="regardingobjectid"
to="accountid"
link-type="inner">
<attribute name="subject" />
</link-entity>
</entity>
</fetch>
まとめ
Web API で開発する場合に、現時点でいくつか制限があることを知っておく必要が
あります。期待した動作をしない場合にはそれが制限であるか、まず SDK をご確認ください。
- 中村 憲一郎
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります