SalesforceでB2C向けの顧客管理を行うときは個人取引先を使用します。
個人取引先のデータは取引先オブジェクトに格納されます。取引先責任者の標準項目はPerson〜というAPI名でアクセスできます。
Accountオブジェクトにクエリを投げると値を取得できます。
Updateも普通にできます。
個人取引先はPersonContactIdに取引先責任者のIDを保持しています。
個人取引先のContact側の情報はAccountと同じようにクエリで取得できます。
ContactレコードでUpdateも実行できます。
取引先責任者に外部IDがあった場合です。
カスタム項目は取引先オブジェクトで「__pc」という拡張子でアクセスできます。
外部ID項目が存在しているのでUPSERTで利用できるかと思いきや、エラーとなりました。
通常の取引先だったら外部IDでUPSERTできるので処理の書き方自体は大丈夫。
Contactオブジェクトの場合はどうでしょう。
こちらは正常に実行できました。取引先責任者が更新されれば個人取引先のデータにも自動で反映されます。
取引先責任者の外部ID項目をつかってUPSERT処理を行う場合は、Contactオブジェクトに対して処理を行えばいいみたいです。
個人取引先はパッと複雑ですがB2Cのデータを管理するときにはかなり柔軟な対応が可能となる機能です。ストレージの消費量の懸念点はありますが、システム構築のしやすさ向上の効果は大きいのでおすすめの機能です。