構成可能な伝播 - 割り当て - の動作について

今週は CRM 4.0 Update Rollup 8 において追加された構成可能な伝播 - 割り当て - の動作について紹介します。

従来の動作

カスタマイズを行われてる方にはお馴染みの機能ですが、関連付け動作に '構成可能な伝播' を指定すると、各アクション(割り当て、共有、共有解除、リペアレント、削除、重複レコードの統合)が発生した場合に、どのレコードに対してアクションを適用するかを定義することができます。

ここでは、'割り当て' アクションについて取り上げます。
'割り当て' アクションを適用する関連レコードの特定方法として次の4つの方法があります。

  • すべてのレコードに伝播 : すべての関連レコードに適用する。
  • 同一所有者のレコードのみに伝播 : 親レコードの所有者と同じ所有者が関連レコードを所有している場合、関連レコードに適用する。
  • アクティブレコードのみに伝播 : アクティブな関連レコードにのみ適用する。
  • 伝播しない : どの関連レコードにも適用しない。

'割り当て' アクションに対して、上記 4 つの内から選択された適用方法を、ここでは伝播ルールと呼ぶこととします。
親レコードが別の所有者に割り当てられると、伝播ルールに則った下位エンティティレコードが別の所有者に割り当てられ、親レコードの前所有者から継承されたアクセス権は削除されます。

しかしながら、この動作には親レコードの所有者から継承されたアクセス権の削除に関する次の 2 つ問題がありました。

  1. 親レコードの前所有者から継承されたアクセス権のみが削除される。
  2. 伝播ルールに則ったレコードからのみ継承されたアクセス権が削除される。

次のシナリオを使って、この 2 つの問題を具体的に説明します。

シナリオを見る前に...

シナリオでは、問題を把握しやすいように次のカスタム セキュリティ ロールを作成し、各ユーザーにこのカスタム セキュリティ ロールを割り当てます。

CRM の既定のセキュリティ ロール '営業担当者' をコピーし、シナリオで使用する 3 つのエンティティのアクセス レベルを次のように変更します。

  • '取引先企業' エンティティ '読み込み' 特権のアクセスレベルを 'ユーザー' に変更します。
  • '取引先担当者' エンティティ '読み込み' 特権のアクセスレベルを 'ユーザー' に変更します。
  • '活動' エンティティ '読み込み' 特権のアクセスレベルを 'ユーザー' に変更します。

ユーザーは、取引先企業、取引先担当者、および活動の 3 エンティティについては、自分の所有するレコードのみを参照することができ、所有者が異なるレコードは参照することができない、という設定です。

シナリオ 1 : 異なる所有者によって作成された 3 レコードがある場合

  1. ユーザー1 user01 が取引先企業 A を作成します。
  2. ユーザー2 user02 が取引先担当者 C を作成します。
  3. ユーザー3 user03 が仕事 T を作成します。
  4. 取引先企業 A を取引先担当者 C の所属取引先企業として指定します。
    user01 は継承されたアクセス権 (IA1) を 'リペアレント' アクションによって付与され、取引先担当者 C を参照することができます。
  5. 取引先担当者 C を仕事 T の関連に指定します。
    user01user02 は継承されたアクセス権 (IA1)(IA2) を 'リペアレント' アクションによって付与され、本来参照できない仕事 T を参照することができます。
  6. 取引先企業 A を別のユーザー4 user04 に割り当てます。

結果 :
3 つのレコード(取引先企業 A 、取引先担当者 C 、仕事 T は新しい所有者 user04 に割り当てられ、取引先企業 A の前所有者 user01 から継承されたアクセス権 (IA1) は、下位エンティティレコード取引先担当者 C 、および仕事 T から削除されます。
user01 は、取取引先担当者 C、および仕事 T のどちらも参照することができません。
しかしながら、取引先担当者 C レコードの前所有者 user02 から継承されたアクセス権 (IA2) は、下位エンティティレコード仕事 T から削除されず、user02 は引き続き継承されたアクセス権 (IA2) を使用して仕事 T にアクセスすることができます。

シナリオ 2 : 下位エンティティレコードが構成可能な伝播ルールに則った動作をしない場合

1:N の関連付け 'Account_Tasks' (既定では、動作の種類= '上位下位') を次のように設定します。(下記スクリーンショットを参考にしてください。)

  • 割り当て = 同一所有者のレコードのみに伝播
  • リペアレント = すべてのレコードに伝播

  

  1. ユーザー1 user01 が取引先企業 A を作成します。
  2. ユーザー2 user02 が仕事 T を作成します。
  3. 仕事 T の関連に取引先企業 A を指定します。
    user01 は継承されたアクセス権 (IA1) を 'リペアレント' アクションによって付与され、仕事 T を参照することができます。
  4. 取引先企業 A を別の所有者 user03 に割り当てます。

結果 :
仕事 T の所有者は取引先企業 A の所有者と異なるので、定義された伝播ルール(親レコード A と同一所有者の関連レコードのみに '割り当て' アクションを適用する)に該当しないため、仕事 T は所有者 user03 への割り当て対象外レコードとなります。
取引先企業 A の前所有者 user01 から継承されたアクセス権 (IA1) が保持されており、アクセス権 (IA1) を使用して他者の所有する仕事 T を引き続き参照することができます。

Update Rollup 8 適用後の動作

ここからは、Update Rollup 8 を適用した場合の伝播ルール '割り当て' の動作について説明します。
Update Rollup 8 以降を適用すると、伝播ツリーの全レコードが対象となり、次のように処理されます。

  • (新規) 伝播ツリー下の全下位エンティティレコードが対象となり、これまで伝播ルールに則っていないために適用対象外とされていたレコードもすべて対象となります。
  • 伝播ルールに則った全レコードは、最上位レコードの新しい所有者に割り当てられます。
  • (新規) 再割り当てが行われた親レコードの前所有者から継承されるアクセス権は削除されますが、存続したアクセス権を引き続き親レコードと共有している場合は例外として処理されます。

注意 :
あるレコードが親レコードの伝播ルールに該当しない場合、伝播ルールはサブツリーに対しては適用されません。
個々のレコードが親レコードに定義された伝播ルールに該当するかどうかに関わらず、サブツリー下の全レコードは伝播対象外として扱われます。

詳細情報

新しい動作は、Update Rollup 8 以降の適用により有効となります。
従来の伝播ルール '割り当て' によって残ったままとなっている継承されたアクセス権については、ツール Microsoft.Crm.SE.FixPOAForCascadeAssign.exe を使用して組織毎、またはエンティティレコード毎に継承されたアクセス権の問題を解決することができます。

Microsoft.Crm.SE.FixPOAForCascadeAssign.exe のコマンドラインは次の通りです。

Microsoft.Crm.SE.FixPOAForCascadeAssign.exe <OrgName> [ <ObjectId > <ObjectTypeCode> ]

例)
Microsoft.Crm.SE.FixPOAForCascadeAssign.exe AdventureWorksCycle
または
Microsoft.Crm.SE.FixPOAForCascadeAssign.exe AdventureWorksCycle 21315527-0C71-DB11-8F1D-0017A41F0DE7 1

本ツールの使用方法は、サポート技術情報 974529 (https://support.microsoft.com/kb/974529/ja) にも掲載されていますので、参考にしてください。
なお、Microsoft.Crm.SE.FixPOAForCascadeAssign.exe が C:\Program Files\Microsoft Dynamics CRM\Tools にない場合は次の方法をお試しください。

次のコマンドで Update Rollup パッケージを展開します。例は、Update Rollup 11 を展開する場合です。

例) crmv4.0-kb981328-i386-server-jpn.exe /x

展開先を入力するダイアログが表示されますので、展開先を指定します。
<展開先>\tools\FixPOAForCascadeAssign フォルダに Microsoft.Crm.SE.FixPOAForCascadeAssign.exe があります。

情報元 : Behavior Change in Cascading Assign for Microsoft Dynamics CRM 4.0
https://blogs.msdn.com/crm/archive/2009/12/11/behavior-change-in-cascading-assign-for-microsoft-dynamics-crm-4-0.aspx

- Dynamics CRM サポート 斎藤 さち江