WEB API /api/data/v8.x を使用して fetch XML を実行しようとしています。「属性に数値が含まれる場所」を含むクエリがある場合を除いて、すべて問題ありません。たとえば、電話番号でアカウントを検索する次の fetchXML には「03」が含まれています。
<fetch mapping="logical">
<entity name="account">
<attribute name="name" />
<attribute name="telephone1" />
<order attribute="name" descending="false" />
<filter type="and">
<condition attribute="telephone1" operator="like" value="%03%" />
</filter>
</entity>
</fetch>
WEB API で GET 経由で実行すると、次のようになります。
https://CRM_URL/api/data/v8.0/accounts?fetchXml=<fetch%20mapping%3D"logical"><entity%20name%3D"account"><attribute%20name%3D"name"%20%2F><attribute%20name%3D"telephone1"%20%2F><order%20attribute%3D"name"%20descending%3D"false"%20%2F><filter%20type%3D"and"><condition%20attribute%3D"telephone1"%20operator%3D"like"%20value%3D"%2503%25"%20%2F><%2Ffilter><%2Fentity><%2Ffetch>
CRM Web API は、次のように無効な XML エラーを返します。
{ "エラー":{ "コード":"","メッセージ":"無効な XML.","innererror":{ "メッセージ":"無効な XML.","タイプ":"System.ServiceModel.FaultException`1 [[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]" } } }
フィルター値が数字で始まらない場合、またはフィルター値の「%」を削除した場合、クエリは正常に実行されます。私の結論は、これはフィルター値の「% + number」のエンコードとデコードに関係しているということです。
クエリに何か問題がありますか、それとも Dynamics CRM Web API のバグですか? 回避策はありますか?