Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【Dynamics CRM】【7.1新機能】ExcelOnlineによる上書き更新時の注意

Dynamics CRM 7.1新機能でExcelOnlineによる編集がサポートされていました。

kageura.hatenadiary.jp

その使い方で一点困った点がありましたので記載しておきたいと思います。

概要

ExcelOnlineでは実行した際に、現在表示していたビューを元にExcelOnline上にデータが表示されます。

そこから例えば電話番号の一括編集とかをしたとしますと、処理されるのは電話番号かとおもいきや、それ以外のフィールドももともとの値で上書き(表面的には変更されない)処理がされてしまうのです。

また、そこに検索フィールドの値が含まれいた場合は、再度プライマリフィールドが検索されてしまいます。

困った点 1

例えば、更新処理時に動作するワークフロー・Pluginなどがありますと、値が変更されていないのに、処理が働いてしまうおそれがあります。

履歴などを作成しているときは不要に作成されてしまう恐れがありますね。

困った点 2

検索フィールドの再検索は結構困ったものです。 例えば、プライマリフィールドが重複しているデータを参照していると、必ず重複エラーが返ってきてしまいます。

ユーザーや企業名などのデータは名前が重複してもいいように別でIDを持つことが多いので、一番引っかかりやすいです。

以下にどんな感じに発生するかを記載してみました。

発生手順

例として企業エンティティに同一企業名(プライマリフィールド)のレコードを作成します。

f:id:sugimomoto:20150731171414p:plain

顧客担当者では手動で上記同一企業名の片方を関連付けている状態です。

f:id:sugimomoto:20150731171426p:plain

この状態で顧客担当者をExcelOnlineで開き

f:id:sugimomoto:20150731171435p:plain

検索フィールド以外のフィールド(下記ではメールアドレス)を編集し、保存します。

f:id:sugimomoto:20150731171449p:plain

f:id:sugimomoto:20150731171510p:plain

そうすると、検索フィールドは編集していないにもかかわらず、重複エラーが発生し、データインポートを実施することができません。

f:id:sugimomoto:20150731171526p:plain

f:id:sugimomoto:20150731171530p:plain

回避策

正直このシチュエーションはCRMの仕様上結構起こりうると思います。

対応策としては、以下のとおりかなと思います。

・インポートするときに対象列を削除してから実施する。

・検索フィールドではなく、検索フィールド先のプライマリフィールドをビューに表示する。(ただし編集ができなくなる)

もちろん、プライマリフィールドは必ず一意にするようにしていれば、起こりえないですが、CRMのプライマリフィールドの性質上そのようにすることが難しいシチュエーションもあるかと思いますので、その場合は運用回避しかないかなぁというところです。