エンティティ マッピングおよび属性マッピングのカスタマイズ

エンティティの関連付けを持つエンティティ間で属性をマップできます。 これにより、他のレコードのコンテキストで作成したレコードの既定値を設定できます。 属性をマップするには、アプリケーションのカスタマイズ ツールを使用します。 エンティティの関連付けの作成および編集: エンティティのフィールドのマッピング を参照してください。

アプリケーションの動作

Dynamics 365 Customer Engagement (on-premises) では、マッピングにより、別のレコードに関連付けられた新しいレコードを作成するときのデータ入力の効率が上がります。 エンティティに他のエンティティとのエンティティ関連付けがある場合、リボンの関連項目の作成タブを使用して新しい関連エンティティ レコードを作成できます。 この方法で新しいレコードを作成すると、主エンティティ レコードからマップされたデータが、新しい関連エンティティ レコードのフォームにコピーされます。 エンティティ属性をマップすることにより、コピーされるデータの種類は、2 つのエンティティ間の関連付けに新しいマッピングを追加して制御します。 主エンティティの関連ビューから作成する以外の方法でレコードを作成した場合、データはマップされません。

たとえば、取引先企業の住所フィールドと取引先担当者の住所フィールドの間にマッピングを設定して、 ユーザーが特定の取引先企業と関連付けられた取引先担当者を追加すると、取引先担当者の住所フィールドに自動的に入力されるようにすることができます。

1 つの属性を複数のターゲット属性にマップできます。 たとえば、取引先の住所情報を、受注の請求先住所と送付先住所の両方にマップできます。

マッピングは、新しい関連レコードが作成される前に適用されます。 ユーザーはレコードを保存する前にデータを変更することができます。 保存後に主レコードのデータに加えられた変更は、関連レコードに適用されません。

エンティティおよび属性のマッピング データの使用

Web API の使用

Web API を使用する場合、テーブル間にマッピングが存在する既存のレコードのコンテキストで InitializeFrom 関数を使用して新しいレコードを作成することができます。

InitializeFrom 要求から受け取った反応は、ソース エンティティとターゲット エンティティ間でマッピングされた属性値と親レコードの GUID で構成されます。 エンティティの関連付けを持つエンティティ間の属性マッピングは、違うエンティティ セットでは異なりカスタマイズ可能であるため、InitializeFrom 関数要求からの応答は違うエンティティおよび組織では異なる可能性があります。 この応答が新しいレコードの作成要求のボディに渡されるとき、これらの属性値は新しいレコードで複製されます。 カスタム マッピングした属性の値も、プロセス中に新しいレコード内のセットを取得します。

Note

2 つのエンティティがマッピング可能か判断するには、次の Web API 要求を使用します。
GET [Organization URI]/api/data/v9.1/entitymaps?$select=sourceentityname,targetentityname&$orderby=sourceentityname

詳細については、別のエンティティから新しいエンティティを作成する を参照してください。

組織サービスの使用

エンティティ間のマッピングが存在する既存のレコードのコンテキストで新しいレコードを作成する場合、InitializeFromRequest メッセージを使用して、マッピングに指定された値を含む新しいレコードを定義できます。 IOrganizationService が使用可能になります。 レコードを保存する Create メソッド。 この方法で、ユーザーが定義したあらゆるマッピングが適用されます。

エンティティの関連付けを作成すると、有効なエンティティ マップが作成されます。 エンティティ マップによって指定されたエンティティ ペアの属性マップを取得するには、entity_map_attribute_maps エンティティ関連付けを使用します。
属性マップのレコードを作成または更新できます。 その際、属性マップに関する以下の要件を満たす必要があります。

  • AttributeMetadata の型が一致している必要があります。
  • ターゲット フィールドの長さはソース フィールドの長さ以上にする必要があります。
  • 形式が一致している必要があります。
  • ターゲット フィールドが別のマッピングに使用されていない必要があります。
  • ソース フィールドがエンティティ フォーム上で表示可能である必要があります。
  • ターゲット フィールドが、ユーザーがデータを入力可能なフィールドである必要があります。
  • アドレス ID の値はマップできません。
  • AttributeMetadata.AttributeTypeAttributeTypeCode PartyList である PartyList 属性はマップできません。

エンティティ間の属性の自動マッピング

マッピングをサポートするエンティティの関連付けに対して、エンティティ間の属性マッピングを編集できます。

各属性マップを手動で作成する以外に、AutoMapEntity メッセージ ( AutoMapEntity Action または AutoMapEntityRequest クラス) を使用して新しい属性マッピング セットを生成することもできます。 このメッセージは、ツール バーのその他の操作メニューのマッピングの生成の操作を実行します。 このメッセージにより、同じ属性名と種類を持つ 2 つの関連するエンティティ間の属性すべてがマップされます。 このメッセージでは、すべての属性マッピングを手動で追加する必要がないため、生産性が向上します。 一連の類似したマッピングを生成することで、要件に合わせて個々のマッピングを追加または削除するための手動による作業を削減できます。

Note

この方法でマッピングを自動生成することにより、以前に定義した、不要なマッピングが含まれている可能性がある属性マッピングは削除されます。

エンティティ マッピングおよび属性マッピングの取得

作成されているマッピングを確認する簡単な方法は、次の FetchXML クエリを使用することです。 このクエリの実行方法の詳細については、FetchXML の使用によるクエリの作成 を参照してください。


<fetch version='1.0' mapping='logical' distinct='false'>
   <entity name='entitymap'>
      <attribute name='sourceentityname'/>
      <attribute name='targetentityname'/>
      <link-entity name='attributemap' alias='attributemap' to='entitymapid' from='entitymapid' link-type='inner'>
         <attribute name='sourceattributename'/>
         <attribute name='targetattributename'/>
      </link-entity>
   </entity>
 </fetch>

関連項目

Dynamics 365 Customer Engagement (on-premises) のメタデータ モデルの拡張
エンティティの関連付けの作成および編集: エンティティのフィールドのマッピング