Dynamics CRM Online 2015 Update 1 SDK 新機能: 特殊フィールドの更新

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能より、特殊フィールドの更新を紹介します。

概要

Microsoft Dynamics CRM のエンティティには、通常の更新では
変更できない、以下の特殊フィールドがあります。

所有者: Assign が必要
ステータス: SetState が必要
部署: SetParentBusinessUnit が必要
上司: SetParentSystemUser が必要

今回のリリースでは、これらの特殊フィールドも通常の更新
処理と同じように変更できるようになりました。

動作確認

今回はステータスについて動作を確認してみます。

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 以下のコードを追加します。取引先企業レコードを作成します。

Entity account = new Entity("account");
account["name"] = "特殊フィールド更新テスト";
account["accountnumber"] = "UpdateSF0001";

Guid accountId = service.Create(account);

7. 次に以下のコードでステータスを更新します。

account.Id = accountId;
account["statecode"] = new OptionSetValue(1);
account["statuscode"] = new OptionSetValue(2);

service.Update(account);

8. F5 キーを押下してプログラムを実行します。

9. プログラムの実行後、作成したレコードが非アクティブに
なっていることを確認します。

image

代替えキーや Upsert との組み合わせ

特殊フィールドの更新機能と、既に紹介済みの代替えキーおよび
Upsert を組み合わせると、さらに柔軟にコードを記述することが
可能です。

// 代替えキーを利用してレコードを特定
Entity account = new Entity("account", "accountnumber", "企業番号001");
// 所有者を代替えキーと特殊フィールドの更新で変更
account["ownerid"] = new EntityReference("systemuser", "internalemailaddress", crmuser1@contoso.local);
// ステータスを特殊フィールドの更新で変更
account["statecode"] = new OptionSetValue(1);
account["statuscode"] = new OptionSetValue(2);

まとめ

特殊フィールドを通常の更新処理で変更できるため、REST を
利用した処理でも所有者の変更が可能になります。これまで
SOAP の利用を余儀なくされていた部分が少しでも解消される
ため開発者には嬉しい機能です。

是非お試しください!

- 中村 憲一郎