Dynamics CRM 4 標準のインポート機能では多対多関連をインポートすることはできません。 なんらなかのツールを作成することも考えられますがクライアントにツールを配布するとメンテナンスが大変そうなのでその対応はとりたくありませんし、任意の多対多関連をインポートできるようにしたいです。アドオン画面として作成する場合エラーレポート、大量データをインポートする場合の処理を考慮する必要があります。

以上のことからDynamics CRM 4 標準のインポート機能を使用して 多対多関連をインポートする方法を考えました。紹介する方法では、多対多関連用の汎用エンティティを作成し、そのレコードをインポートもしくはエンティティフォームから作成したときにプラグインが関連を生成します。紹介する方法の事前条件として多対多関連を構成する2つのエンティティのそれぞれのレコードは主属性で一意に特定できる必要があります。

記事が長くなるのでカスタムプラグインのソースファイルは[Dynamics CRM] 多対多関連設定汎用プラグイン で紹介しています。本記事では作成したプラグインとカスタムエンティティの定義をまとめたzipファイルを使用して多対多関連をインポートする手順の説明を記載します。

1. 多対多関連用エンティティと関連設定用プラグインのセットアップ

プラグインとエンティティのカスタマイズを格納したファイルをここからダウンロードします。zipファイルを展開すると 下図のようにカスタマイズファイルとプラグインのdll, Plugin Registrationtool 用の 設定ファイル(xml)が作成されます。

カスタマイズcustomizations.zip をインポートします。

インポートするとカスタムエンティティの一覧に Many to Many Relationship というエンティティが追加されます。追加された np_manytomanyrelationshipエンティティを公開します。下図の np_importtest は 取引先企業(account)と N:N関連を持つインポートテスト用のカスタムエンティティです。

Many to Many Relationship エンティティの属性の一部は下図のようになります。重要なのは赤枠で囲まれた属性で、 np_entity1(entity1)とnp_entity2(entity2) は多対多関連を構成する各エンティティレコードの主属性の値を設定します。np_relationshipname(Relationship Name)は 多対多関連名を設定する属性です。 後程設定するプラグインはこれらの属性を見て、多対多関連を設定します。

PluginRegistratoinTool を起動してMayToManyRelationshipPlugin の設定をインポートします。Plugin Registration Tool を起動して、Import/Export から Import Solution XML を選択します(下図参照)。

下図のようにダウンロードしたファイルに含まれる ExportSolution.xml を選択します。ExportSlution.xml と dll は同じフォルダに存在しる必要があるので注意してください。Import Selected Items ボタンをクリックします。

 

インポートが成功すると 下図ダイアログが表示されます。

登録された プラグインのステップを確認すると下図のように np_manytomanyrelationship エンティティが作成されたとき、Preステージに同期的にプラグインが起動するようになっていることが確認できます。

以上で準備は完了です。

2. 動作確認

 カスタムエンティティとプラグインの設定が完了したので、動作をテストしてみましょう。今回は下図のように importtest というカスタムエンティティに設定した N:N関連をインポートしてみます。インポートファイルに設定するのが関連名 np_np_importtest_account と、 entity1, entity2 にそれぞれ importtest, Account の主属性の値です。

次のようなCSVファイルを用意しインポートウィザードを起動します。

"Relationship Name","entity1","entity2"
"np_np_importtest_account","ABCD","MortorCycle A"
"np_np_importtest_account","ABCD","CompanyRXAA"

 インポートウィザードでは、エンティティのレコードを選択するときに Many to Many Relationship を選択してください。

インポートに選択すると、下図のように、インポート時に関連が作成されたことが確認できます。

Many to Many Relationship エンティティのレコードを確認すると、インポートしたレコードが作成されていることが確認できます。

N:N関連の設定によってentity1とentity2に多対多関連のどちらのエンティティを設定するかが決まります。そのため、インポートに失敗する場合、entity1とentity2に設定するエンティティの主属性の値を入れ変えると成功する可能性があります。

3.まとめ

説明は以上です。質問は指摘事項があればご連絡ください。

本関連作成プラグインは、汎用性を高めるため、実行時にエンティティの関連や主属性などのメタ情報を解決しています。そのためパフォーマンスはあまり期待できないので注意してください。プラグインのソースファイルは別の記事にて紹介します。