---
title: "ウォークスルー:カスタムコンタクトのファセット作成"
slug: "walkthrough--creating-a-custom-contact-facet"
abstract: "Microsoft DynamicsとSitecore間の連絡先データを同期させるためのカスタム連絡先ファセットの作成方法。"
---
# ウォークスルー:カスタムコンタクトのファセット作成

Sitecore Experience Platformでは、連絡先のファセットを使って連絡先のデータを保存します。このウォークスルーでは、カスタムコンタクトのファセットを作成し、Microsoft Dynamics 365 for Salesのデータをファセットに入力するための同期プロセスを設定する手順を案内します。

この例では、連絡先に関連付けられたアカウント名を保存するためのカスタムコンタクトファセットを作成します。このウォークスルーでは、以下の方法を説明しています:

-   Microsoft Visual Studioプロジェクトを作成してください
-   コレクションモデルを定義する
-   コレクションモデルの展開と設定
-   Dynamicsの連絡先から読み方を指定してください
-   コンタクト面への書き方を指定してください
-   接触面へのダイナミクスデータ
-   コンタクトのファセットをコンタクトにマッピングします
-   パイプラインに新しい側面を追加

## Microsoft Visual Studioプロジェクトを作成してください

コンタクトにカスタムデータを格納するには、カスタムコンタクトのファセットおよびコレクションモデルを作成する必要があります。カスタムコンポーネントをコードで実装するためのMicrosoft Visual Studioプロジェクトを作成する必要があります。

xConnectでは、コレクションモデルが利用可能なコンタクトファセットを定義します。カスタムコンタクトファセットにデータを保存する前に、カスタムコンタクトファセットを含むコレクションモデルが必要です。

カスタムコンポーネントでアセンブリを構築・展開するには:

1.  Visual Studioで以下のプロジェクトを作成します:
    
    **プロジェクトタイプ**
    
    *Class Library (.NET Framework)*
    
    **.NETバージョン**
    
    *.NET フレームワーク 4.6.2*
    
    **プロジェクト名**
    
    *例を挙げてください。Connect。ダイナミクス*
    
2.  以下のNuGetパッケージへの参照を追加してください:
    
    -   Sitecore.DataExchange.Tools.DynamicsConnect.NoReferences
    -   Sitecore.XConnect.NoReferences
    
    > !注Sitecoreの公開NuGetフィードは[https://nuget.sitecore.com/resources/v3/index.json](https://nuget.sitecore.com/resources/v3/index.json)で視聴可能です。
    
3.  アカウント名を保存するための連絡先ファセットを作成するには、Visual Studioで以下のクラスを追加してください:
    
    using Sitecore.XConnect;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Examples.Connect.Dynamics
    {
     FacetKey(DefaultFacetKey)
     Serializable
     public class DynamicsAccountInformationFacet : Facet
     {
     public const string DefaultFacetKey = "DynamicsAccount";
     public string AccountName { get; set; }
     public DynamicsAccountInformationFacet()
     {
     }
     }
    }
    
4.  コレクションモデルを実装するには、Visual Studioで以下のクラスを追加してください:
    
    using Sitecore.DataExchange.Tools.DynamicsConnect.Models;
    using Sitecore.XConnect;
    using Sitecore.XConnect.Schema;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Examples.Connect.Dynamics
    {
     public class DynamicsConnectCollectionModelEx
     {
     public DynamicsConnectCollectionModelEx()
     {
     }
     static DynamicsConnectCollectionModelEx()
     {
     \_model = BuildModel();
     }
     private static XdbModel \_model = null;
     public static XdbModel Model { get { return \_model; } }
     private static XdbModel BuildModel()
     {
     var builder = new XdbModelBuilder(typeof(DynamicsConnectCollectionModelEx).FullName, new XdbModelVersion(1, 0));
     builder.DefineFacet<Contact, DynamicsAccountInformationFacet>(DynamicsAccountInformationFacet.DefaultFacetKey);
     builder.ReferenceModel(DynamicsConnectCollectionModel.Model);
     return builder.BuildModel();
     }
     }
    }
    
5.  アセンブリをSitecoreサーバーにデプロイするには、Visual Studioプロジェクトを構築し、得られたExamples.Connect.Salesforce.dllファイルをSitecoreサーバーにコピーします。
    

## コレクションモデルを定義する

カスタムデータプロバイダーはコレクションモデルで定義されたファセットを公開します。これにより、xConnectエンティティを含むデータマッピングの設定が容易になり、ユーザーに利用可能なデータを表示し、誤って無効な値を入力する変更を減らすことができます。

カスタムコレクションモデルを登録する必要があり、それを使用するには許可されません。これには複数のSitecoreサーバーロールのコンポーネントと設定の更新が含まれます。

コレクションモデルを定義するために:

1.  Sitecoreで、コンテンツエディターで*Sitecore/System/Settings/Data Exchange/Providers/xConnect/Collection Models*に移動します。
    
2.  以下の項目を追加してください:
    
    **テンプレート**
    
    *Collection Model Folder*
    
    **アイテム名**
    
    *Custom Models*
    
3.  新しいコレクションのモデルフォルダ項目には、以下の項目を追加してください:
    
    **テンプレート**
    
    *Compiled Collection Model*
    
    **アイテム名**
    
    *ダイナミクスのためのカスタムコレクションモデル*
    
4.  新しくコンパイルされたコレクションモデル項目の **「Content** 」タブの **設定** セクションで、以下のフィールド値を設定します:
    
    フィールド
    
    価値
    
    **コレクションモデルタイプ**
    
    *例。Connect。Dynamics。DynamicsConnectCollectionModelEx、例。Connect。Dynamics*
    
5.  アイテムを保存してください。
    

## コレクションモデルの展開と設定

カスタムデータをxConnectに送信する前に、コレクションモデルをxConnectにデプロイする必要があります。これは、コレクションモデルを記述するJSONファイルをコピーすることで実現されます。

xConnectに接続するにはコレクションモデルを指定する必要があります。これにより、xConnectとxConnectクライアントがお互いに何を期待すべきか正確に把握できます。

構成のテストを行うことで、コレクションモデルが展開され、xConnectクライアントエンドポイントが適切に設定されていることが保証されます。

コレクションモデルの展開および設定:

1.  コレクションモデルを展開するには、カスタムコレクションモデルに移動します。リボンの **「データ交換** 」タブで「 **モデルをアイテムに変換**」をクリックします。次に **「モデルをJSONに変換**」をクリックします。
    
    ![Convert Model to JSON button](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/convert%20model%20to%20json%20button.png>)
    
2.  モデルファイルを保存し、以下のサーバーに展開します:
    
    -   xConnectコレクション
    -   xConnect インデックス
3.  コンテンツエディターで*Sitecore/System/Data Exchange*に移動します。
    
4.  xConnectクライアントエンドポイントをコレクションモデルで使用するように設定するには、次のサイトへ移動してください *Sitecore/System/Data Exchange//Endpoints/Providers/xConnect/xConnect Client Endpoint*
    
5.  以下のフィールド値を設定します:
    
    フィールド
    
    価値
    
    **コレクションモデル**
    
    *コレクションモデル/カスタムモデル/ダイナミクス用のカスタムコレクションモデル*
    
6.  アイテムを保存してください。
    
7.  設定をテストするには、リボン内の **「データ交換** 」タブで **「トラブルシューティング**を実行する」をクリックしてください。
    
    ![Run Troubleshooter button](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/run%20troubleshooter%20button.png>)
    
    xConnectの収集サービスとの接続が確立されたことを知らせるメッセージが表示されます。
    
    ![Connection successfully established message](<https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/connection%20established%20message.png>)
    

## Dynamicsの連絡先から読み方を指定してください

テナントはDynamicsから読み取るデータの構造を理解できるように設定されなければなりません。この節では、この情報を組み込むためにテナントを更新する方法について説明します。

値アクセス器は、Dynamicsにおいてアカウントが連絡先のプロパティであることを表現するために使われます。この値アクセス器はいくつかの目的を果たします:

-   Dynamicsからコンタクトを読む際は、Dynamicsにそのコンタクトのアカウントを含めるよう指示する必要があります。バリューアクセサセット内の値アクセサは、コンタクトオブジェクトのどのフィールドを読み取るべきかを決定するために使われます。バリューアクセサを追加することで、Dynamicsから追加のフィールドを読みたいと指定できます。
-   DynamicsからSitecoreへのデータのマッピングを設定する際、値インセリタを使ってDynamicsの連絡先からどの値を読み取るかを指定します。

連絡先にアカウントのバリューアクセクターを追加するには:

1.  コンテンツエディターで*Sitecore/System/Data Exchange*に移動します。
    
2.  入居者を選びましょう。
    
3.  *データアクセス/値アクセスセット/プロバイダー/ダイナミクス/ダイナミクスの連絡先*へ移動します。
    
    ![Dynamics Contact in content tree](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/value-accessor-set-for-dynamics-contact-fields.png)
    
4.  以下の項目を追加してください:
    
    **テンプレート**
    
    *Entity Attribute Value Accessor*
    
    **アイテム名**
    
    *Dynamics Contactのアカウント*
    
5.  新しいアイテムの **コンテンツ** タブの **属性** セクションで、以下のフィールド値を設定します:
    
    フィールド
    
    価値
    
    **属性名**
    
    *parentcustomerid*
    
    **価値タイプ**
    
    *Formatted Value*
    
6.  アイテムを保存してください。
    

## コンタクト面への書き方を指定してください

値アクセスセットを設定するには:

1.  コンテンツエディターで*Sitecore/System/Data Exchange*に移動します。
    
2.  入居者を選びましょう。
    
3.  *Data Access/Value Accessor Sets/Providers/xConnect*へナビゲート。
    
    ![xConnect provider in content tree](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/root-for-value-accessor-sets-for-xconnect.png)
    
4.  以下の項目を追加してください:
    
    **テンプレート**
    
    *xConnect エンティティ ファセット 値 アクセサセット*
    
    **アイテム名**
    
    *xConnect Contact Dynamics Account Information Facet*
    
5.  新しい項目には以下の項目を追加してください:
    
    **テンプレート**
    
    *xConnect エンティティ ファセットプロパティ バリュー アクセサ*
    
    **アイテム名**
    
    *Dynamics アカウント名 アカウント情報 xConnect Contact のファセット*
    
6.  新しいアイテムの **「コンテンツ** 」タブの **設定** セクションで、以下のフィールド値を設定します:
    
    フィールド
    
    価値
    
    **ファセット特性**
    
    *コレクションモデル/カスタムモデル/Dynamics/Facets/Contact/DynamicsAccount/AccountName 用のカスタムコレクションモデル*
    
7.  アイテムを保存してください。
    

## 接触面へのダイナミクスデータ

1.  コンテンツエディターを開き、*Sitecore/System/Data Exchange*に移動します。
    
2.  入居者を選びましょう。
    
3.  *xConnect Contact Mappingsの価値マッピングセット/ダイナミ*クスへナビゲーションしてください。
    
    ![Value Mapping Sets in content tree](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/root-for-mapping-sets.png)
    
4.  以下の項目を追加してください:
    
    **テンプレート**
    
    *Value Mapping Set*
    
    **アイテム名**
    
    *Dynamics Contact to xConnect Contact Dynamics Account Information Facet*
    
5.  新しい項目には以下の項目を追加してください:
    
    **テンプレート**
    
    *Value Mapping*
    
    **アイテム名**
    
    *Account Name*
    
6.  新しいアイテムの **「コンテンツ** 」タブで、以下のフィールド値を設定します:
    
    セクション
    
    フィールド
    
    価値
    
    **出典**
    
    **ソースアクセサル**
    
    *データアクセス/価値アクセスセット/プロバイダー/ダイナミクス/ダイナミクスコンタクト/ダイナミクスコンタクト上のアカウント*
    
    **ターゲット**
    
    **ターゲットアクセサ**
    
    *データアクセス/価値アクセス セット/プロバイダー/xConnect/xConnect Contact Dynamics アカウント情報ファセット/アカウント名 アカウント情報 ファセット xConnect Contact*
    
7.  アイテムを保存してください。
    

## コンタクトのファセットをコンタクトにマッピングします

接触面をマッピングするには:

1.  コンテンツエディターで*Sitecore/System/Data Exchange*に移動します。
    
2.  入居者を選びましょう。
    
3.  *データアクセス/値アクセスセット/プロバイダー/xConnect/xConnect 連絡先*へ移動してください。
    
    ![xConnect Contact in content tree](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/value-accessor-set-for-xconnect-contact.png)
    
4.  以下の項目を追加してください:
    
    **テンプレート**
    
    *xConnect エンティティ ファセットバリュー アクセサ*
    
    **アイテム名**
    
    *xConnect Contact のDynamics Account Information Facet*
    
5.  新しい項目の **「Content** 」タブの **設定** セクションで、以下のフィールド値を設定します:
    
    フィールド
    
    価値
    
    **面の定義**
    
    *コレクションモデル/カスタムモデル/Dynamics/Facets/Contact/DynamicsAccount 用のカスタムコレクションモデル*
    
    **マッピングセット**
    
    *価値マッピングセット/ダイナミクスからxConnectへの接触マッピング/ダイナミクスからの接触からxConnectへの連絡先 アカウント情報ファセット*
    
6.  アイテムを保存してください。
    
7.  入居者を選びましょう。
    
8.  *値マッピングセット/ダイナミクスからxConnectのコンタクトマッピング/ダイナミクスからコンタクトモデル*へナビゲーションしてください。
    
    ![Dynamics to xConnect contact mappings in content tree](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/dynamics-crm-connect/80/sitecore-connect-for-microsoft-dynamics-365-for-sales/images/mapping-set-for-contact.png)
    
9.  以下の項目を追加してください:
    
    **テンプレート**
    
    *Value Mapping*
    
    **アイテム名**
    
    *Dynamics Account Information Facet*
    
10.  新しいアイテムの **「コンテンツ** 」タブで、以下のフィールド値を設定します:
     
     セクション
     
     フィールド
     
     価値
     
     **出典**
     
     **ソースアクセサル**
     
     *データアクセス/値アクセス/共通/価値アクセス器(生値リーダーセット付き)*
     
     **ターゲット**
     
     **ターゲットアクセサ**
     
     *データアクセス/価値アクセスセット/プロバイダー/xConnect/xConnect Contact/Dynamics アカウント情報ファセット xConnect Contact*
     
11.  アイテムを保存してください。
     

## パイプラインに新しい側面を追加

新しい側面の情報を処理するには、*xConnectのRead Contacts*と*DynamicsパイプラインのProcess Single Contacts*に追加する必要があります。

パイプラインのステップにファセットを加えるために:

1.  パイプラインステップにファセットのフィールドを追加するには、コンテンツエディターで *Sitecore/System/Data Exchange*に移動します。
2.  */pipelines/xConnect ContactsからDynamicsへ、パイプライン/Contactsを同期し、xConnectパイプライン/xConnectからContactsを読み取*る。
3.  **コンテンツ**タブの「**Contact Settings**」セクションの「**Contact Facets to Read**」欄で、**選択した**列に *xConnect Contact Dynamics Account Information ファセット*を追加します。パイプラインのステップを保存します。
4.  *Salesforce パイプラインから単一接触*プロセスのファセットを追加するには、コンテンツエディターで */pipelines/Dynamics Contacts に移動し、xConnect Sync Pipelines/Process Single Contact from Dynamics Pipeline/Resolve Contact Model by Dynamics Connection from xConnect*。
5.  **コンテンツ**タブの**xConnect Settings**セクションの「**Facets to Read**」欄で、*Collection Models/Custom Models/Custom Collection Model for Dynamics/Facets/Contact/DynamicsAccount*を探してください。**それをSelected**欄に追加します。パイプラインのステップを保存します。