---
title: "xDBからの連絡先やインタラクションの削除"
slug: "deleting-contacts-and-interactions-from-the-xdb"
abstract: "xDBから連絡先やインタラクションを削除する方法。"
---
# xDBからの連絡先やインタラクションの削除

Sitecore 9.2以降では、連絡先および関連するすべてのインタラクション、ファセット、識別子を削除できます。この機能を使って、ビジネスにとってもはや価値のないデータを削除できます。例えば、過去2年間のやり取りがない連絡先を削除したい場合などです。以下の動画では、非アクティブな連絡先の見つけ方と削除方法を紹介しています:

以下の点にご注意ください:

-   連絡先を削除することは、[忘れられる権利を行使](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/deleting-contacts-and-interactions-from-the-xdb.html#UUID-c2f0beed-83f8-1d94-a818-49e77b3ddef6_section-5c9defe3d3657-idm46265903150144 "Delete and the right to be forgotten")することとは異なります。
    
-   Sitecore 10.2以降は、[XConnectのパージツール](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/xconnect-purging-tool.html "xConnect purging tool") を使って一部のインタラクションを削除したり、連絡先を削除せずにインタラクションを削除したりします。
    
-   連絡先を削除するとその連絡先のやり取りが消え、再構築を選択するとxDBレポートデータベースの集計データに影響が出ます。
    
    > !注xDB Reportingデータベースには、再 [構築](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/rebuild-the-reporting-database.html "Rebuild the reporting database")を選択するまで削除されたデータが含まれています。
    
-   アクティブなセッション中に削除された連絡先は、セッション終了時にトラッカーによって部分的に再作成されます。
    

以下の例は、2つの連絡先のバッチを削除する方法を示しています:

using System;
using System.Threading.Tasks;
using Sitecore.XConnect;
using Sitecore.XConnect.Client;

namespace Documentation
{
 public class DeleteContact
 {
 // Async example
 public async void ExampleAsync()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {
 // Get contact
 var referenceOne = new Sitecore.XConnect.ContactReference(Guid.Parse("A9812105-2D45-A612-82E6-34E6D7117DCB"));
 var referenceTwo = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F45-E611-82E6-34E6D7117DCB"));

 Task<Sitecore.XConnect.Contact> contactTaskOne = client.GetAsync<Sitecore.XConnect.Contact>(referenceOne, new ContactExecutionOptions(new ContactExpandOptions() { }));
 Task<Sitecore.XConnect.Contact> contactTaskTwo = client.GetAsync<Sitecore.XConnect.Contact>(referenceTwo, new ContactExecutionOptions(new ContactExpandOptions() { }));

 Contact contactOne = await contactTaskOne;
 Contact contactTwo = await contactTaskTwo;

 // Delete contact
 client.DeleteContact(contactOne);
 client.DeleteContact(contactTwo);

 await client.SubmitAsync();
 }
 catch (XdbExecutionException ex)
 {
 // Manage exceptions
 }
 }
 }

 // Sync example
 public void Example()
 {
 using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
 {
 try
 {
 // Get contact
 var referenceOne = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F55-E611-12E6-22E6D7117DCB"));
 var referenceTwo = new Sitecore.XConnect.ContactReference(Guid.Parse("DB814105-1F45-E611-82E6-34E6D7117DCB"));

 var contactOne = client.Get<Sitecore.XConnect.Contact>(referenceOne, new ContactExecutionOptions(new ContactExpandOptions() { }));
 var contactTwo = client.Get<Sitecore.XConnect.Contact>(referenceTwo, new ContactExecutionOptions(new ContactExpandOptions() { }));

 // Delete contact
 client.DeleteContact(contactOne);
 client.DeleteContact(contactTwo);

 client.Submit();
 }
 catch (XdbExecutionException ex)
 {
 // Manage exceptions
 }
 }
 }
 }
}

## コンタクト削除ロジック

連絡先を削除するとき:

-   以下のデータはxDBコレクションデータベースから削除されています:
    
    -   相互作用の側面
    -   相互作用
    -   接触面
    -   連絡先
    -   連絡先識別子インデックス
    
    > !注連絡先に関連付けられたデバイスプロファイルは削除されません。
    
-   xDB SearchインデクサーはxDBインデックスからすべての接触および相互作用データを除去します。
    
-   マーケティングオートメーションエンジンのxConnectサービスプラグイン(Sitecore.XConnect.Service.Plugins.MarketingAutomation.XdbContactEventWatcher)は、すべての自動化プランから削除された連絡先を削除するために優先度の高い作業項目を追加します。
    

削除操作を使用する際には以下の点を覚えておいてください:

-   削除操作は並行トークン検証を無視します。つまり、並列スレッドで更新されている場合でも連絡先は削除され、連絡先識別子インデックスがロックされていても連絡先識別子は削除されます。
-   削除操作はトランザクションレスであり、プロバイダーレベルでシステムエラーが発生した場合(SQL)がデータの一部を削除されることがあります。

### 連絡先を削除・統合する

2つの接点がマージされると、ソースコンタクトとターゲットコンタクトの間に参照が追加されます。ターゲットコンタクトはマージ識別子を介してソースコンタクトを参照し、ソースコンタクトはファセットプロパティを通じてターゲットコンタクトを参照します。

複数のマージ操作に関与した接触は、関連する接触のマージ木になります。以下の図では、*Known2*が複数のマージ操作の対象であり、現在のマージ木のルートです。

> !注この例では、読みやすさのためにGUIDの代わりにテキスト識別子を使用しています。

![merge-and-delete.PNG](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/105/sitecore-experience-platform/images/merge-and-delete.PNG)

Sitecore 9.2と9.3は、以下のシナリオの扱い方で若干異なります。

-   マージツリーの中央にある接触を削除すること(例: *Known1*)。
-   ルート接触を削除すること(例えば、 *Known2*)。

#### 9.2で連絡先を削除・統合する

Sitecore 9.2では、連絡先を削除する際に以下のロジックが適用されます:

-   マージツリーの中央で連絡先を削除した場合(例えば*Known1*)、*Anon1*と*Anon2**Known2*をつなぐ連鎖が断たれます。*Anon1*して*Anon2*孤児になります。
-   ルート連絡先を削除しても、他の連絡先は削除されません。図で *Obsolete* とマークされた連絡先はxDBコレクションデータベースに残ります。

#### 9.3以降の連絡先を削除・統合する

9.3以降では、連絡先を削除する際に以下の論理が適用されます:

-   マージツリーの中央にあるコンタクト(例: *Known1*)を削除すると、ルートコンタクトとブランチ内の残りのコンタクト間に新しい参照が作成されます。次の例では、*Known2*と*Anon1*/*Anon2*の間に参照が追加されます。
    
    ![merge-and-delete-2.PNG](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/105/sitecore-experience-platform/images/merge-and-delete-2.PNG)
    
-   ルート連絡先を削除すると、マージツリー全体が削除されます。つまり、*Known2*を削除すると*Anon1*、*Anon2*、*Anon3*、*Known1*も削除されます。
    

## 削除と忘れられる権利

連絡先を削除することは、[xConnectの「忘れられる権利」機能を使う](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/execute-right-to-be-forgotten.html "Execute right to be forgotten")のとは同じではありません。あなたの組織は、あなたのケースでGDPRやその他のデータプライバシー法の要件を満たす選択肢を決めなければなりません。

> !警告アクティブなセッション中に削除された連絡先は、既知または匿名の識別子を含め、トラッカーによって部分的に再作成されることにご注意ください。