Dynamics CRM Online 2015 Update 1 SDK 新機能: 代替えキー
みなさん、こんにちは。
今回から、Dynamics CRM Online 2015 Update 1 で提供される
プラットフォームと SDK の新機能を紹介します。
今回はその中から 代替えキーについて紹介します。
概要
Dynamics CRM は、レコードの固有キーとして、GUID を利用
しています。そのため、特定のレコードを更新するには、まず
レコードの GUID を取得する必要がありました。
代替えキーは任意のフィールドまたは複数フィールドを組み
併せたキーを設定できます。これによりレコードの更新処理を
行う際、GUID を取得するステップが省略できます。
早速試してみましょう。
代替えキーの設定
まず代替えキーを設定します。
1. ブラウザで Dynamics CRM Online に接続します。
2. 設定 | カスタマイズ | システムのカスタマイズより、代替え
キーを設定するエンティティを開きます。今回は取引先企業
を使います。
3. キーをクリックします。右側の画面で「新規」ボタンを
クリックします。
4. キーとなる列を選択します。今回は取引先企業番号をキー
として指定しました。任意の表示名と名前を付けます。
尚、ここで選択したキーは全てのレコードで一意である
必要があります。
5. 「保存して閉じる」をクリックします。状態が保留と
なります。
6. しばらく待ってから画面を更新します。状態が保留中
からアクティブになると準備完了です。
SDK からの利用
準備が整ったので SDK から設定した代替えキーを利用します。
1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。
2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。
3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。
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. 続いて以下のコードを追加します。取引先企業レコードが 1 件
追加されます。
Entity account = new Entity("account");
account["name"] = "テスト取引先企業";
account["accountnumber"] = "Test0001";
account["telephone1"] = "00-0000-0000";
Guid id =service.Create(account);
7. 続いて以下のコードを追加します。ここでレコードに GUID
を渡していない点と Entity のコンストラクタに代替えキーを
指定している点がポイントです。
Entity updateAccount = new Entity("account", "accountnumber", "Test0001");
updateAccount["telephone1"] = "11-1111-1111";
service.Update(updateAccount);
8. F5 キーを押下してプログラムを実行します。プログラムが
終了したら、ブラウザで Dynamics CRM Online 上の取引先
企業を確認します。
9. 再度プログラムを実行します。今後はレコードの作成で
以下のエラーで失敗します。代替えキーが一意のものとして
機能していることが分かります。
使いどころ
実際の利用シナリオとしては、他システム連携があります。
他システム連携から定期的にレコードを移す場合、今までは
レコードの更新時に、都度 RetrieveMultiple を利用して対象
レコードの GUID を取得していましたが、今回の機能を利用
すれば、1 度のリクエストで処理が完了します。
まとめ
今回は代替えキーを紹介しましたが、次回は関連の深い機能
として、Upsert を紹介します。お楽しみに!
- 中村 憲一郎
Comments
Anonymous
June 01, 2015
いつも参考にさせて頂いております。 本機能についての質問なのですが、代替キーはRESTを利用してのアップデート等でもサポートされていますでしょうか?Anonymous
June 01, 2015
コメントありがとうございます。 WebAPI および REST エンドポイントでは代替えキーは対応しておりません。 現状はレコードの GUID でレコードを特定する必要があります。 中村 憲一郎Anonymous
June 02, 2015
迅速なご回答ありがとうございます。 承知致しました。