はじめにこんにちは。今回の勉強会では、Salesforceの「データ共有」を取り上げました。 Salesforceは多くの部署やメンバーが使うシステムのため、「誰がどのデータを見られるか」といった設定は、正しい運用の土台となります。本記事を通じて、Salesforceを安全に活用するための基本的な設定について、少しでも理解を深めていただければ幸いです。勉強会の目的Salesforceの「データ共有」に関する基本的な知識を身につけること。データ共有の設定方法を身につけること。上記を通してシステムの安全性向上に役立てること。共有ルールの設定とレコードトリガーフローの活用本セクションでは、共有ルールおよびレコードトリガーフローによるデータの共有方法ついて学びます。下記のユースケースを想定しています。商談について、本人とその上司は参照できて良いが、同じ部門内の同列メンバーには見えてはいけない。全社重要案件に該当する商談については、部門を超えて営業部門の部長以上に共有したい。各営業部門はロール階層で管理されており、営業担当者は同一のマネージャーロール配下に所属している。契約金額が1億円以上の場合、当該商談に設定された「管理部門承認者」が所属するレビューチームのメンバーに共有したい。(「管理部門承認者」は商談項目で指定される)管理部門には複数のレビューチームが存在し、承認者ごとに所属チームは異なる。※全社重要案件に該当する商談を除き、『高橋 一郎』は『佐藤 太郎』の商談を参照できません。※『鈴木 花子』は公開グループ「直販営業部レビューチーム」に所属する管理部門承認者で、 Director, Direct Sales(直販営業部長)配下のメンバーが所有者、かつ契約金額が1億円以上の商談の場合のみ、参照できます。要件:本人とその上司は商談を参照できるが、同じ部門内の同列メンバーは参照できてはいけないケースを想定目標:特定条件下の商談に対して、適切なチームへの参照権限を付与することで、情報の共有を行うこと以下の条件で作成する。全社重要案件に該当する商談については、部門を超えて営業部門の部長以上に共有する。契約金額が1億円以上の場合、当該商談に設定された「管理部門承認者」が所属するレビューチームのメンバーに共有する。事前準備今回の勉強会では、Trailhead Playgroundを使用しました。ユーザを作成する1、「標準 Platform ユーザー」プロファイルで複数ユーザを作成します。・佐藤 太郎・鈴木 花子・高橋 一郎2、鈴木 花子のプロファイルを「標準ユーザー」に設定し、マネージャーを佐藤 太郎に設定します。3、設定>ログインアクセスポリシーの画面で「管理者は任意のユーザーでログインできる」を有効化します。手順以下操作はシステム管理者ユーザで実施します。①商談にカスタム項目を追加する②商談の組織全体のデフォルト(OWD)を「非公開」に設定する③営業部門の部長(Director, Channel Sales・Director, Direct Sales)以上用の公開グループを作成する④直販営業部レビューチーム用の公開グループを作成し、鈴木 花子をメンバーに含める⑤全社重要案件フラグがTrueの商談に対して、営業部門の部長以上(③の公開グループ)に参照権限を与える※共有ルール⑥金額が¥100,000,000以上、かつ、管理部門承認者が指定された商談に対して、管理部門承認者が所属するレビューチーム(④の公開グループ)に参照権限を与える※レコードトリガーフロー詳細手順は以下の通りです。①商談にカスタム項目を追加するホーム画面右上の歯車から「設定」を押下後、「オブジェクトマネージャ」タブをクリックします。その後、検索窓に「商談」と入力し、リスト内の[商談]をクリックします。「項目とリレーション」を選択し、[新規]を押下します。新規ボタン押下後、カスタム項目を二つ作成します。・項目名:「管理部門承認者」・データ型:参照関係(関連先:ユーザー)・項目名:「ManagementDepartmentApprover__c」・子リレーション名:「※英数字で適当なものを記入」・項目名:「全社情報案件フラグ」・データ型:チェックボックス・項目名:「CompanyInformationProjectFlag__c」②の組織全体のデフォルト(OWD)を「非公開」に設定するクイック検索に「共有設定」と入力し、押下します。「編集」から商談オブジェクトのデフォルトの内部アクセス権を「非公開に設定」し、保存します。③営業部門の部長(Director, Channel Sales・Director, Direct Sales)以上用の公開グループを作成するクイック検索に「公開グループ」と入力し、押下します。「新規」から表示ラベルとグループ名を入力し、検索を「ロール」にして選択済みのユーザーに以下ロールを含めます。 ロール: Director, Channel Sales ロール: Director, Direct Sales④直販営業部レビューチーム用の公開グループを作成し、鈴木 花子をメンバーに含める「新規」から表示ラベルとグループ名を入力し、検索を「ユーザー」にして選択済みのユーザーに「鈴木 花子」を含めます。⑤全社重要案件フラグがTrueの商談に対して、営業部門の部長以上(③の公開グループ)に参照権限を与えるクイック検索に「共有設定」と入力し、押下します。商談共有ルールの「新規」を押下し、表示ラベルとルール名を入力し、以下の条件を設定し、保存します。・条件:全社重要案件フラグ 次の文字と一致する True・商談のアクセス権:参照のみ⑥金額が¥100,000,000以上、かつ、管理部門承認者が指定された商談に対して、管理部門承認者が所属するレビューチーム(④の公開グループ)に参照権限を与える《作成手順》⑥-1:設定から、クイック検索ボックスに「フロー」 と入力し、[フロー]を選択します。その後、[新規フロー]をクリックし、[レコードトリガーフロー]を選択します。⑥-2:[開始を設定]の設定します。オブジェクト:[商談オブジェクト]トリガーを設定:レコードが作成または更新されたときエントリ条件を設定:すべての条件に一致(AND)・「金額」 以上 100000000・「管理部門承認者」 次の文字と一致しない Nullフローを最新化:アクションと関連レコード※この後設定する各コンポーネントの「表示ラベル」および「API参照名」は、適当な名前で問題ございません。⑥-3:[+]マークから[レコードを取得]を選択し、設定します。表示ラベル:グループメンバー取得API参照名:GetGroupMemberオブジェクト:グループメンバーグループメンバーレコードを絞り込み:すべての条件に一致(AND)・「ユーザー / グループID」 次の文字と一致する トリガーOppotunity>管理部門承認者グループメンバーレコードを並び替え:並び替えなし保存するレコード数:最初のレコードのみレコードデータの保存方法:すべての項目を自動的に保存⑥-4:[+]マークから[レコードを取得]を選択し、設定します。表示ラベル:グループ取得API参照名:GetGroupオブジェクト:グループグループレコードを絞り込み:すべての条件に一致(AND)・「グループID」 次の文字と一致する グループメンバー取得グループメンバー>グループIDグループレコードを並び替え:並び替えなし保存するレコード数:最初のレコードのみレコードデータの保存方法:すべての項目を自動的に保存⑥-5:[+]マークから[レコードを作成]を選択し、設定します。表示ラベル:商談の共有API参照名:OpportunityShareレコードの項目値の設定方法:手動オブジェクト:商談の共有商談の共有の項目値を設定:・「商談のアクセス権」 ← 参照のみ・「商談ID」 ← トリガーOppotunity>商談ID・「テリトリー割り当て方法」 ← 共有の直接設定・「ユーザー / グループID」 ← グループ取得グループ>グループID[保存]をクリック後、[有効化]をクリックします。補足今回、データを共有するために、「共有ルール」と「レコードトリガーフロー」を使い分けました。基本的には、標準機能である共有ルールで実現できる場合は、保守性や設定のシンプルさを考慮し、共有ルールを優先して使用します。一方で、今回フローを使用した理由は、共有条件が固定(静的)ではなく、レコードごとに変動する動的な条件だったためです。具体的には、「管理部門承認者が指定された商談に対して、管理部門承認者が所属するレビューチームに参照権限を与える」という要件があり、このとき「管理部門承認者」になるユーザーは毎回異なり、そのユーザーが所属するレビューチームも動的に変化します。共有ルールは、あらかじめ固定された公開グループなどに対する共有には適していますが、レコードごとに異なるユーザーの所属先を判定して共有先を変更するような動的制御には対応できません。そのため今回は、レコード更新時に動的に共有先を判定できるレコードトリガーフローを利用し、必要な共有レコードを作成する方式を採用しています。なお、フローで作成している商談の共有は「手動での直接共有」と同じ挙動になりますので、以下の制約が適用されます。(例えば、共有後にレコードの所有者が業務理由などで変更された場合には共有は解除されます。)Manual Sharing Considerations結果①以下条件の商談を『高橋 一郎』が参照できる・作成者が『佐藤 太郎』・全社重要案件フラグがTrue②以下条件の商談を『鈴木 花子』が参照できる・作成者が『佐藤 太郎』・金額が¥100,000,000以上・管理部門承認者に直販営業部レビューチームのユーザーが設定まとめ今回は、データ共有の設定方法として、共有ルールとレコードトリガーフローの2つのパターンを紹介しました。ぜひ皆さんの業務でも、それぞれの特徴を踏まえて使い分けながら、さまざまなケースに対応できる柔軟なデータ共有設定を実現してみてください!参考リンク・資料Salesforce公式ドキュメントTrailheadモジュールOptimizing Salesforce Role Hierarchies for Data SecurityImprove Data Security with Sharing Rules