ゲストレコードのデフォルト所有者の使用に関するベストプラクティスと考慮事項
Experience Cloud サイトでゲストユーザーが作成したレコードにデフォルトの所有者を割り当てるときは、次のベストプラクティスと考慮事項に留意してください。
必要なエディション
| 使用可能なエディション: Essentials Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
一般的なベストプラクティスと考慮事項
- 組織内の有効ユーザー (ゲストユーザーを除く) は、ゲストユーザーが作成したレコードのデフォルトの所有者として割り当てることができます。ただし、少なくともレコードに対する参照アクセス権を持つユーザーのみが実際にそれらのレコードにアクセスできます。デフォルトの所有者として選択されたユーザーに、少なくともゲストユーザーが作成したレコードへの参照アクセス権があることを確認します。
- 新しいデフォルトのゲストユーザー項目は、ゲストユーザーが作成したレコードにレコード所有者を割り当てるのに役立ちますが、ユーザーを割り当てる唯一の方法としてその項目を使用することはお勧めできません。オブジェクトまたは条件に基づいて異なるユーザーまたはキューにレコードを適切に割り当てるように、割り当てルール、プロセス、またはトリガーを設定します。
- ゲストユーザーが作成したレコードの所有者として複数のユーザーが割り当てられていることを確認します。ゲストが作成したすべてのレコードを 1 人のユーザーが所有しているとパフォーマンス上の問題が発生する可能性があり、そのユーザーが組織で無効になった場合にエラーが発生します。
- 可能な場合は、キューを作成し、ゲストユーザーが作成したレコードの所有者として割り当てます。
- ゲストが作成したレコードのデフォルトの所有者の設定は、Experience Cloud サイトでは省略可能です。
- すべての標準を確認します。
- ゲストユーザーサイトユーザーが所有する組織内のレコードを再割り当てします。データローダーを使用して、ゲストユーザーが所有している既存レコードの所有権を、組織で指定した新しいユーザーに移行します。
- Apex の future メソッドを使用してゲストユーザーの ContentVersion を挿入するのは避けてください。
OwnerID 項目と CreatedByID 項目
- ゲストユーザー ID と等しい OwnerId に基づくルールとプロセスの既存の条件 (割り当てルール、プロセス、条件に基づく共有ルール、フロー、リストビューなど) は、CreatedByID に更新する必要があります。所有者としてゲストユーザー ID に依存しているルールまたはプロセスを削除します。
- 内部プロセスを確認し、従業員とチームが引き続きゲストユーザーレコードにアクセスできることを確認します。
Apex without sharing
Apex without sharing の使用を選択できますが、あまり使用せず、使用する場合は細心の注意を払ってください。
- ゲストとして (1 つのトランザクションで) レコードを作成および更新する Apex コードは、without sharing (システムモードとも呼ばれる) で実行する必要があります。そのような場合、without sharing で Apex コードを実行すると、ゲストユーザーが作成したばかりのレコードのみが更新され、Salesforce の他のレコードは更新されません。
メモ Apex クラス without sharing を使用するフローのコンポーネントコードの例は、「ゲストユーザーフローのカスタムコンポーネントの作成」を参照してください。 - レコードを作成してからレコードを更新するゲストユーザー向けの複数ステップフローが使用されている場合があります。ゲストユーザーがフローを実行できるようにするには、[システムコンテキスト共有なし — すべてのデータにアクセス] オプションを使用してフローを保存します。
- レコードを作成し、後でそのレコードを表示または更新するカスタム実装では、暗号化鍵を使用して、レコード (通常は暗号化されたレコード ID)、Apex without sharing、および Apex クラスの追加チェック (後続の表示または更新プロセス用) を識別してアクセスし、レコードの公開を制限します。鍵の暗号化の範囲を制限し、特定の使用事例に更新できるようにレコードを絞り込みます。レコードがゲストユーザーによって作成されていることを常に確認します。
レコード作成後の動作の変更
- 実装がレコード作成の標準動作を使用している場合、レコードを作成したゲストユーザーにはトーストメッセージが表示され、レコードを作成する前に使用していたページにリダイレクトされます。ゲストユーザー用の別の環境を作成する場合は、ゲストユーザーがレコードを作成した後に別のカスタム画面にリダイレクトするフローをシステムモードで使用します。
- カスタム実装により、ゲストユーザーはレコードを作成できるようになる場合があります。その後、ゲストユーザーには作成したばかりのレコードのレコード詳細ページが自動的に表示されます。ただし、レコード所有者は組織内の別のユーザーに割り当てられているため、ゲストユーザーは作成したばかりのレコードへのアクセス権を失います。この場合、レコードの作成後にゲストユーザーがサイトの別の部分に移動するように実装を変更することを検討してください。
- ゲストユーザーには、ルックアップを介して新しく作成されたレコードを親レコードに関連付ける (たとえば、取引先責任者を作成して取引先に関連付ける) オプションが表示される場合があります。ゲストユーザーがルックアップを介して新しい親レコードを作成した場合、組織にエラーが表示されます (作成時にゲストユーザーは親レコードへのアクセス権を失うため)。エラーメッセージを回避するには、次のいずれかの操作を実行します。
- 新しく作成されたレコードを親レコードに関連付けることができるように、共有ルールを介してゲストユーザーと共有される親レコードが組織に存在することを確認する。親レコードには機密データを含めないでください。
- ゲストユーザーのオブジェクト作成権限を削除する。
この記事で問題は解決されましたか?
ご意見をお待ちしております。
