Administrator 練習問題 Q196
別の金融システムからレコードをインポートおよび更新する場合、管理者は識別子として何を使用する必要がありますか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:B. 外部ID
解説
前提知識
インポートと更新の違い
外部のファイル(CSVなど)をSalesforceに取り込む作業には、大きく2種類あります。
- 挿入(Insert):すべて新規レコードとして作る
- アップサート(Upsert):一致するレコードがあれば更新し、無ければ新規作成する 設問は「インポートおよび更新」と言っています。つまり毎回まっさらに作るのではなく、金融システム側の同じレコードがSalesforceの同じレコードに対応し続ける必要があります。ここで必要になるのが識別子、つまり「両者が同じものだと判断するための目印」です。
外部ID(External ID)とは
「外部システム側でそのレコードを一意に表している番号」を保管しておくためのSalesforce側の項目です。項目の種類ではなく、テキスト・数値・メール項目に付ける属性です。項目作成時に[外部ID]にチェックを入れると、その項目が取り込み時の一致キーとして指定できるようになり、自動的に索引も張られます。 金融システムが「口座番号 A-10023」で顧客を管理しているなら、Salesforce側に「口座番号」というカスタム項目を作って外部IDにします。以後、連携ファイルには口座番号を入れておくだけで、Salesforceが既存レコードを探し当てて更新してくれます。
💡 ここがまだモヤッとする方へ。外部IDとアップサートの仕組みを一から整理した記事を用意しています → 外部IDとは何か:外部システムのキーでSalesforceのレコードを一意に特定する
レコードIDとは
Salesforceがレコード作成時に自動発行する一意なIDです。15文字形式は大文字と小文字を区別し、18文字形式は大文字・小文字を区別しないシステムでも安全に扱えます。外部システムがSalesforceのレコードIDを保存する設計なら更新キーとして利用できますが、外部システム自身の識別子を使って連携する場合は外部IDが適します。
自動採番項目とは
レコードが作られるたびにSalesforceが連番を振る項目です。ORD-0001、ORD-0002 のように採番されます。番号を決めるのはSalesforceであり、取り込みファイル側から値を指定することはできません。
設問の状況を分解する
- データの正は別の金融システムにある
- そのデータをSalesforceに取り込む
- 一度きりではなく、更新も継続的に行う
- よって「金融システムの◯◯番」と「Salesforceのこのレコード」を毎回結びつける必要がある 初学者がつまずくのは「Salesforceには一意なレコードIDがあるのだから、それを使えばよい」と考えてしまう点です。SalesforceのレコードIDを外部システム側でも保存する設計なら、そのIDで更新できます。しかし本問は、別の金融システムが持つ識別子で継続的に照合する場面です。その外部キーをSalesforce側で一致キーとして扱うために、外部IDを使用します。
選択肢の検討
A. 自動採番項目 → ✕
採番するのはSalesforceであって金融システムではありません。金融システムのレコードと対応づける役には立たず、そもそも取り込み時に値を指定できないため一致キーにも使えません。「Salesforce内で人が読める通し番号を振りたい」ときの選択肢です。
B. 外部ID → ⭕ 正解
外部システムの識別子をSalesforce側に保持し、アップサートの一致キーとして使えます。Salesforce公式も、外部IDを使うことでインポート時の重複レコード作成を防げると明記しています。設問の「インポートおよび更新」に真正面から答える唯一の選択肢です。
C. リッチテキスト項目 → ✕
書式付きの長文を入れるためのメモ欄です。索引も一意性の保証もなく、一致キーには指定できません。
D. レコードID → △(惜しいが不正解)
SalesforceのレコードIDも一意な更新キーとして利用できます。ただし、その方法には外部システム側がSalesforce IDを保存し、次回の更新時に返す設計が必要です。本問は外部システム自身の識別子を使う一般的な連携を問うため、外部IDを選びます。外部システムのキーをSalesforceに持たせるなら外部ID、Salesforce IDを外部システムが保持しているならレコードIDも利用可能、と切り分けてください。
管理者としての対処手順
- [設定]→[オブジェクトマネージャ]→ 対象オブジェクト →[項目とリレーション]→[新規]
- データ型にテキストを選択
- 項目名を「口座番号」などにして**[外部ID]にチェック**する。連携キーの重複を禁止する設計なら、[一意]もオンにする
- 保存し、項目レベルセキュリティを設定する
- データローダで操作に**[アップサート]**を選び、一致キーにこの項目を指定して実行する
| 一致キー | 外部システムが値を保持しているか | 事前準備 |
|---|---|---|
| 外部ID | 外部システム自身のキーとして通常保持している | Salesforce側に外部ID項目を作る |
| レコードID | 連携設計によっては保持できる | Salesforce IDを外部側へ書き戻し、継続保持する仕組みが必要 |
あわせて覚えておきたいポイント
- 外部IDは関連レコードの紐付けにも使えます。商談の取り込みファイルに取引先のSalesforce IDではなく取引先の外部IDを書くだけで、親を特定できます。
- [外部ID]と[一意]は別の設定です。外部IDに重複値を許すこと自体は可能ですが、アップサート時に一致先を一意に決められずエラーになるため、連携キーには[一意]を併用する設計を推奨します。
- ほぼ同じ設問が ID 98 にもあります。選択肢の並び順が違うだけで、答えは同じ外部IDです。
出典(Salesforce公式)
- Can I import using external IDs? — 外部IDを利用すると、外部システムのキーで既存レコードを照合し、重複作成を防ぎながら更新できる。
- Difference between External ID and Unique ID fields — 外部IDと一意制約は別の属性であり、外部IDに重複値を許す設定も可能である。
- Convert 15-character IDs to 18-character IDs — SalesforceのレコードIDには15文字形式と18文字形式があり、18文字形式は大文字・小文字を区別しない環境で安全に利用できる。
- Import Related Records with an External ID in Salesforce — アップサート時にSalesforceレコードIDの代わりに外部IDを使って関連レコードを特定できる。