べにおブログ

学んだことを、ゆっくり深く。

外部IDとは何か:外部システムのキーでSalesforceレコードを照合する

結論:まずこれだけ覚える

外部IDは、外部システムの識別子をSalesforce側に保持し、データ取込や連携でレコードを照合するためのカスタム項目属性です。 既存レコードがあれば更新し、なければ新規作成するアップサートでは、SalesforceレコードIDの代わりに外部IDを一致キーとして使用できます。

⚠️ [外部ID]を選択しただけでは値の一意性は保証されません。重複を禁止するには、別の設定である[一意]も有効にします。


外部IDとは

テキスト、数値、メールのカスタム項目に[外部ID]属性を設定できます。たとえば、基幹システムの顧客番号、会員番号、社員番号などを保存します。 外部IDには主に次の役割があります。

  • 外部システムのキーでSalesforceレコードを検索・照合する
  • Data LoaderやAPIのアップサートで一致キーとして使う
  • 関連レコードをSalesforce IDではなく外部IDで指定する
  • 項目にデータベースインデックスを作成する 外部IDは「外部システムのキーを保存する用途」を表す属性であり、項目のデータ型そのものではありません。

アップサートとの関係

アップサート(Upsert)は、指定した一致キーの値に応じて更新または新規作成を行う処理です。

  • 一致するレコードが1件ある → そのレコードを更新する
  • 一致するレコードがない → 新しいレコードを作成する
  • 同じ外部IDを持つレコードが複数ある → 更新対象を一意に決められず、エラーの原因になる たとえば、外部システムの顧客番号 C-10025 を取引先の外部ID項目に保存しておけば、次回以降の連携ではその顧客番号を使って同じ取引先を更新できます。

[外部ID]と[一意]の違い

設定役割重複値
外部ID外部キーとして検索・照合・アップサートに利用する単独では許可される
一意同じ値を複数レコードへ保存できないようにする禁止される

連携キーとして確実に1件を特定する必要がある場合は、通常[外部ID]と[一意]を併用します。[一意]を付けない外部IDは、並列処理などで重複レコードが作成され、その後のアップサートで DUPLICATE_EXTERNAL_ID エラーが発生する原因になり得ます。


SalesforceレコードIDとの使い分け

一致キー適する設計注意点
外部ID外部システムが自分の識別子を正として管理するSalesforce側にカスタム外部ID項目を作る
SalesforceレコードID外部システムがSalesforce IDを受け取り、継続して保持する外部側へのID書き戻しと保管が必要

Salesforce IDも更新キーとして利用できます。「外部システムから取り込み、外部側のキーで継続更新する」という要件で外部IDを選びます。


関連レコードの指定

外部IDは親子関係の取込にも利用できます。 たとえば、商談を取り込む際に、親取引先のSalesforce IDをファイルへ入れる代わりに、取引先の外部IDを指定して関連付けることができます。これにより、外部システムのキー体系を使ったまま関連レコードを照合できます。


設定手順

  1. [設定]→[オブジェクトマネージャ]→対象オブジェクトを開く
  2. [項目とリレーション]→[新規]をクリックする
  3. テキスト、数値、またはメールを選択する
  4. 外部システムのキーを保存する項目名を設定する
  5. [外部ID]を選択する
  6. 重複を禁止する場合は[一意]も選択する
  7. 項目レベルセキュリティを設定して保存する
  8. Data Loaderなどでアップサートを実行し、この外部ID項目を一致キーに指定する

試験での判別ポイント

  • 外部システムのキーでインポートと継続更新を行う → 外部ID
  • 既存なら更新、なければ作成する → アップサート
  • Salesforce IDを外部側が保管している → Salesforce IDでも更新可能
  • 外部IDの値を重複禁止にする → [一意]を併用
  • 自動採番項目 → Salesforceが値を発行するため、外部側のキーを取り込む項目ではない

出典(Salesforce公式)