# Salesforce連携の移行

レガシーSalesforce Legacyデータコネクタから新しいSalesforceコネクタへ移行するには、以下の手順を完了してください。レガシーデータコネクタはREST APIのみを使用してデータをインポートします。新しいSalesforceデータコネクタでは、BulkインポートとREST APIを使用できます。

- [取り込まれたデータの特性](/ja/int/migrating-salesforce-integrations#characteristics-of-ingested-data)
  - [Campaign](/ja/int/migrating-salesforce-integrations#campaign)
  - [Contact](/ja/int/migrating-salesforce-integrations#contact)
  - [Data Extension](/ja/int/migrating-salesforce-integrations#data-extension)
  - [Email Event](/ja/int/migrating-salesforce-integrations#email-event)
- [新しいSalesforce V2コネクタの作成](/ja/int/migrating-salesforce-integrations#create-a-new-salesforce-v2-connector)
  - [設定を保存してレガシーSalesforceデータコネクタを最後にもう一度実行](/ja/int/migrating-salesforce-integrations#save-settings-and-run-the-legacy-salesforce-data-connector-one-last-time)
  - [Treasure コンソールを使用する場合](/ja/int/migrating-salesforce-integrations#using-td-console)
  - [CLIとワークフローを使用する場合](/ja/int/migrating-salesforce-integrations#using-cli-and-workflow)
- [結果出力について](/ja/int/migrating-salesforce-integrations#for-result-output)
  - [Treasure コンソールを使用する場合](/ja/int/migrating-salesforce-integrations#using-td-console-1)
  - [CLIを使用する場合](/ja/int/migrating-salesforce-integrations#using-cli)
  - [ワークフローを使用する場合](/ja/int/migrating-salesforce-integrations#using-workflow)


# 取り込まれたデータの特性

ある場所やバージョンからデータを移行する際は、そのデータがどのように変換されるかを認識しておく価値があります。以下のセクションでは、注意すべきいくつかの重要な特性について概説します。

## Campaign

50を超えるアセットを取り込むことができます。

| **カラム** | **旧データ型** | **新データ型** |
|  --- | --- | --- |
| **createdDate** | string | timestamp |
| **modifiedDate** | string | timestamp |


### Campaign Assets

| **カラム** | **旧データ型** | **新データ型** |
|  --- | --- | --- |
| **createdDate** | string | ISO 8601 string |


その他の日時値はUTCに変換されます。

## Contact

取り込みは以下に制限されています：

- ルートおよびシステム定義データ
- **one-to-one**および**one-to-many**のリレーションシップ
  - one-to-oneのリレーションシップは単一のJSONとして保存されます
  - one-to-manyのリレーションシップはJSON配列として保存されます


その他の属性は、Treasure Dataのインジェスチョン機能を使用して取り込む必要があります。

Contact属性はルートとシステムに対して収集され、取り込む属性を制限することはできません。

ページあたりのレコード数はデフォルト値の2000を使用します。

## Data Extension

取り込みは以下に制限されています：

- 一度に1つのData Extension


| **旧カラム名** | **新カラム名** |
|  --- | --- |
| data-extension-column-name | column-name |


| **カラム** | **旧データ型** | **新データ型** | **データの形式** |
|  --- | --- | --- | --- |
| **any-datetime** | string | timestamp | UTC |


Treasure Dataが生成したプロパティには、簡単に識別できるようにアンダースコアのプレフィックス「_」が付いています。

ページあたりのレコード数はデフォルト値の2500を使用します。

## Email Event

取り込みは、イベントに関連付けられたサブスクライバーを除外します。

# 新しいSalesforce V2コネクタの作成

Treasure Data Catalogに移動し、Salesforce v2を検索して選択します。

![](/assets/image-20190920-220512.90e6a331b9492e4811a07d129b52ba372e154827afd21d8b2a86d6bd77e11dfc.a47fdf65.png)

ダイアログボックスに、レガシーSalesforceコネクタで入力した値を入力します。

Salesforce v2コネクタでは、Login URLパラメータから不要な文字を削除する必要があります。たとえば、[https://login.salesforce.com/?locale=jp](https://login.salesforce.com/?locale=jp)の代わりに、[https://login.salesforce.com/](https://login.salesforce.com/?locale=jp)を使用します。

ユーザー名（メールアドレス）とパスワード、およびClient ID、Client Secret、Security Tokenを入力します。

![](/assets/image-20190920-220620.ea9aff1d36519f589b82fc46eaa23d60b1cabf146a991e1477cd3366738b1e69.a47fdf65.png)

# 設定を保存してレガシーSalesforceデータコネクタを最後にもう一度実行

レガシー設定は、Treasure コンソールまたはCLIから保存できます。

- [Campaign](/ja/int/migrating-salesforce-integrations#h2__1588150676)
- [Contact](/ja/int/migrating-salesforce-integrations#h2_447307630)
- [Data Extension](/ja/int/migrating-salesforce-integrations#h2__804191579)
- [Email Event](/ja/int/migrating-salesforce-integrations#h2_1257724182)
- [Treasure コンソールを使用する場合](/ja/int/migrating-salesforce-integrations#h2_1852359361)
- [CLIとワークフローを使用する場合](/ja/int/migrating-salesforce-integrations#h2_748752854)
- [Treasure コンソールを使用する場合](/ja/int/migrating-salesforce-integrations#h2_1113801507)
- [CLIを使用する場合](/ja/int/migrating-salesforce-integrations#h2__1909512552)
- [ワークフローを使用する場合](/ja/int/migrating-salesforce-integrations#h2__22747403)


## Treasure コンソールを使用する場合

### スケジュール設定されたレガシーSalesforceコネクタの設定を保存し、最終インポートを実行

Integration Hub > Sourcesに移動します。スケジュール設定されたSalesforceソースを検索し、ソースを選択して**Edit**を選択します。

![](/assets/image-20190920-220740.bd3854fa9c1f86b66293dcfd44b1707bb6e5d01075ea7b919f906ef9500e5e2b.a47fdf65.png)

ダイアログボックスで、後で使用するために設定をコピーします：

![](/assets/image-20190920-223337.2adf53d0abfebe0118affc5a062201916f90eb341fdb34565cbabfa162b58965.a47fdf65.png)

また、詳細設定もコピーします：

![](/assets/image-20190920-223416.c23211b8d05c516ff679ff1e03ddd3d78a6a1e46bb0062cb642387c2c0f05a36.a47fdf65.png)

次に、レガシーデータコネクタで最後の実行を設定して、config-diffを実行できる一時テーブルを作成します。diffを使用して、Treasure Dataにインポートされた最新のデータを特定し、確認します。

![](/assets/image-20190920-223452.4bf2fa218a9517425dacb967c12df40769e981e8c13a7c1f2ae45db5ba8decb8.a47fdf65.png)

レガシーコネクタで最終インポートを実行する前に、スケジュールを1回のみの実行に変更してください：

![](/assets/image-20190920-223521.97b218bd0b67056dd5358973c55e88e9b4c4c667b32526fa94565b7750d59a96.a47fdf65.png)

ジョブが完了したら、ジョブクエリ情報の**config_diff**を確認し、後で使用するためにどこかにコピーします。

![](/assets/image-20190920-223541.b56a9ac85b1cd27d402643428847df0a61045b7641ee3f81a8284d27a18b0493.a47fdf65.png)

### **新しいSalesforce V2ソースの作成**

Integration Hub > Authentication に移動します。作成した新しい Salesforce v2 接続を検索します：

![](/assets/image-20190920-223620.7c996d3ecda4cd5281739073f28ce744338c3093e24dae3b0a3db44fe6044d77.a47fdf65.png)

新しいソースを選択します。前のステップでコピーしたすべての基本設定と詳細設定を入力します。次に、新しいソースがレガシーコネクタが中断した地点から取り込みを続行する場合は、前のジョブでコピーした config_diff 情報を Last Record フィールドに入力します。

![](/assets/image-20190920-223653.2f41e4091afd038a05037227d49d15c460bc098eafc64af39b885d9c225d5f22.a47fdf65.png)

設定を完了したら、データを投入するデータベースとテーブルジョブを選択し、ジョブをスケジュールして、新しいデータコネクタの名前を指定します。**Save** を選択してから、新しいデータコネクタを実行します。

## CLI と Workflow の使用

in: type を sfdc から sfdc_v2 に yml 設定で更新します。

例えば、既存の workflow 設定は次のようになっているかもしれません：


```
in:
  type: sfdc
  username: ${secret:sfdc.username}
  password: ${secret:sfdc.password}
  client_id: ${secret:sfdc.client_id}
  client_secret: ${secret:sfdc.client_secret}
  security_token: ${secret:sfdc.security_token}
  login_url: ${secret:sfdc.login_url}
  target: Lead
out: {}
exec: {}
filters: []
```

新しい workflow 設定は次のようになります：


```
in:
  type: sfdc_v2
  username: ${secret:sfdc.username}
  password: ${secret:sfdc.password}
  client_id: ${secret:sfdc.client_id}
  client_secret: ${secret:sfdc.client_secret}
  security_token: ${secret:sfdc.security_token}
  login_url: ${secret:sfdc.login_url}
  target: Lead
out: {}
exec: {}
filters: []
```

# Result Output について

SFDC 接続はデータコネクタと Result Output で共有されていますが、Result Output には変更はありませんが、いずれかを使用している場合は、こちらもアップグレードする必要があります。

## Treasure コンソール の使用

### **レガシー Export コネクタの設定を保存する**

Treasure コンソール に移動します。Query Editor に移動します。SFDC を接続に使用している Query を開きます。

![](/assets/image-20190920-223748.6045bf691a26e9cff3e37e890e76be4628cf82bb8e01eb79af5bdbdb26902e42.a47fdf65.png)

SFDC コネクタを選択し、既存の接続の詳細をコピーして保存し、後で使用できるようにします。

![](/assets/image-20190920-223817.da15e7766ba6d24cc18ba368e4d32ed9a2376d2faa5bb7282b57c604f05f76c8.a47fdf65.png)

**DELETE** を選択してレガシーのものを削除します。

### **既存の Query を変更する（レガシー接続を置き換える）**

Query で Output Results を選択します。次に、作成した SFDC v2 Export コネクタを検索して選択することで、SFDC v2 コネクタをセットアップします。

![](/assets/image-20190920-223850.847f20da49fae475453d03d1fb0c5c966d1486f75499c347f0016a29f2841f28.a47fdf65.png)

Configuration ペインで、前のステップで保存したフィールドを指定し、**Done** を選択します。

Output results to... を確認して、作成した Output 接続を使用していることを確認します。**Save** を選択します。

|  |
|  --- |
| 最初のデータエクスポートにテストターゲットを作成して使用し、エクスポートされたデータが期待通りに見えること、および新しいエクスポートが既存のデータを破損しないことを確認することを強くお勧めします。テストケースでは、テストターゲットに別の「Object」を選択してください。 |


## CLI の使用

Result type プロトコルは sfdc から sfdc_v2 に更新する必要があります。例えば、次のように：


```
sfdc://username:passwordsecurity_token@hostname/object_name
```

から：


```
sfdc_v2://username:passwordsecurity_token@hostname/object_name
```

## Workflow の使用

SFDC を使用した workflow がある場合、result 設定は同じままにできますが、**result_connection** を新しい connection_name に更新する必要があります。

古い workflow の result output 設定の例は次のとおりです：


```
+td-result-output-sfdc:
  td>: queries/sample.sql
  database: sample_datasets
  result_connection: your_old_connection_name
  result_settings:
    object: object_name
    mode: append
    concurrency_mode: parallel
    retry: 2
    split_records: 10000
```

新しい workflow の result output 設定の例は次のとおりです：


```
+td-result-output-sfdc:
  td>: queries/sample.sql
  database: sample_datasets
  result_connection: your_new_connection_name
  result_settings:
    object: object_name
    mode: append
    concurrency_mode: parallel
    retry: 2
    split_records: 10000
```