2020.08.12

Salesforceにおける個人取引先導入の注意点

はじめに

Salesforceでは、B to B、B to C、はたまたB to B to Cといったさまざまな取引方法に対応しています。その中でも、「B to C(個人のお客さまを相手とした取引)」に対応するものとして、「個人取引先(Person Accounts)」という機能が提供されています。個人取引先を導入することで、個人をお客さまとしたデータ構造を組み立てることができるため便利な機能です。ただし、実際に導入・構築をする際には注意すべき点があります。この点を考慮せずに構築を行うと、後で運用を行う際につらい思いをすることとなりますので、これから構築を行う際の手助けとなれば幸いです。
なお、個人取引先の導入手順については記載しませんので、下記helpや別記事をご参照ください。
 (16950)

基本概念

個人取引先は、「取引先」「取引先責任者」の2レコードをワンセットとしたデータ構造となり、物理的な「個人取引先」というオブジェクトやデータが存在するわけではありません。そのため、レコードの作成・更新・削除は「取引先」レコードに対して操作を行うことを前提としています(個人取引先タブのようなものは存在しないため、ご注意ください)。

オブジェクト定義

個人取引先で定義しなければならないもの

・レコードタイプ
取引先レコードを新規作成する際には、「個人取引先定義のレコードタイプ」「取引先定義のレコードタイプ」の両方が表示されます。個人取引先定義のレコードタイプを選択すると、そのレコードは個人取引先として扱われるようになります。

・ページレイアウト、コンパクトレイアウト
個人取引先定義のレコードタイプで表示するページレイアウトを定義します。

取引先で定義しなければならないもの

下記の定義は、取引先責任者で定義した場合でも個人取引先レコードタイプのデータには使用できません。(無視されます)
・入力規則
・Lightningレコードページ
・アクション

場合により、取引先・取引先責任者で定義を分けるもの

・カスタム項目
取引先、取引先責任者のどちらで定義を行なっても、ページレイアウト配置、数式参照、Apexでの参照などができます。ただし、個人に関する項目は取引先責任者に統一をした方がデータとしては統一感が出ます。また、個人取引先と並行して、法人の取引先(通常の取引先レコードタイプのデータ)の場合は通常通り取引先に項目を作る必要があるため、項目数の上限を考慮しても、個人取引先の項目は取引先責任者に定義した方がよいと考えられます。
ただし、例外として、外部キーとして使用する項目は取引先に作成する必要があります。
上述の通り、個人取引先のデータを作成するには取引先(Account)に対して作成をする必要があるため、データのUpsertは取引先に対して行う必要があるためです。

・子オブジェクトのカスタム参照項目参照先
基本的にはどちらを使用してもデータ構造としては問題ありませんが、取引先に統一した方が望ましいです。理由としては、「取引先のアクション定義でレコード作成などを作る場合、取引先を参照先とした子オブジェクト以外選択できない」など、標準定義では個人取引先の子オブジェクトは取引先(Account)の子オブジェクトとして扱われているためです。個別開発機能であれば、取引先責任者の子オブジェクトをたどる機能は作成できますが、標準機能に制限が出てしまうことで選択肢が狭くなってしまいます。
なお、例外として、標準参照項目の関連はできる限り標準のまま活用するようにしましょう。例えば、ケースでは、取引先、取引先責任者の両方の参照項目を保持していますが、ページレイアウトでは、取引先責任者が必須として除去できないようになっています。この場合は、標準の取引先責任者項目を活用しましょう。
Tips
ケースの標準項目は、レコード作成・更新時に下記のように、取引先責任者項目に値がある場合はその値を優先して、取引先項目値を自動設定する動作をします。そのため、標準取引先責任者項目を使用する際には、データの不整合が発生しないように、Apexトリガー・プロセスビルダー等で取引先項目を常に空更新するような考慮が必要です。
入力値 保存後
取引先項目 取引先責任者項目 取引先項目 取引先責任者項目
値あり 取引先責任者入力値に該当するAccountId 入力値
値あり 入力値
値あり 値あり(取引先とは関連がないデータ) 入力値 入力値

項目値参照

標準項目

取引先(Account)オブジェクトから、取引先責任者(Contact)オブジェクトに定義した項目を参照する場合、下記のように項目名で参照する必要があります。
・取引先責任者の標準項目参照
 「PersonXXX」(XXXは取引先責任者の標準項目名)のように項目名が変わります。
 正確な項目名は下記URLに整理されています。
 https://developer.salesforce.com/docs/atlas.ja-jp.api.meta/api/sforce_api_objects_account.htm

・取引先責任者のId値参照
 「PersonContactId」項目に取引先責任者レコードのId値が格納されており、作成時に自動設定されます。

・取引先責任者のカスタム項目参照
 「hogehoge__pc」のように、サフィックスが通常のカスタム項目の"__c"ではなく、"__pc"となります。
Account acc = new Account();
acc.PersonEmail = 'test@hogehoge.com';
acc.hogehoge__pc = 'ABC';

Contact cnt = new Contact();
cnt.Email = 'test@hogehoge.com';
cnt.hogehoge__c = 'ABC';
個人取引先項目参照サンプル

運用関連

個人取引先レコードを作成すると、自動的に取引先(Account)、取引先責任者(Contact)にそれぞれレコードを作成し、1回のレコード作成アクションで物理的には2レコード作成します。
そのため、容量試算時には、取引先へ格納するデータの件数×2件として算出する必要があり、ディスク容量が溢れないよう、注意が必要です。

おわりに

個人取引先はB to CシステムをSalesforce上で構築する場合、ほぼ必須の機能になってくると思います。今回、個人取引先導入時の注意点として改めて整理を行いましたが、構築・運用の際の手助けになれば幸いです。
25 件
     
  • banner
  • banner

関連する記事