背景
皆さんこんにちは、寺田です。
業務で作成した結合レポートにおいて、レコードへのアクセス権限があるにも関わらず、ユーザにより表示されるレコード数が異なるという事象に突き当たりました。
調べたところ、商談オブジェクトを主とするカスタムレポートタイプと標準レポートタイプでは、実行ユーザのロールにより表示されるレコードが異なるようであることが分かったため、動きを確認することにしました。
発生事象
- 商談オブジェクトを主とするカスタムレポートタイプを使用し、結合レポートを作成したところ、検索条件に「すべての商談」を選択しても、システム管理者ユーザとレポートを表示したいユーザで、商談オブジェクトブロックに表示されるレコード数が異なる
- レポートを表示したいユーザにも、システム管理者ユーザと同じレコードを表示させたい
- レポートを表示したいユーザで該当の結合レポートを「編集」する際、プレビュー画面ではシステム管理者ユーザと同様にレコードが表示されるが、「実行」すると表示されなくなる
発生時の設定
組織の共有設定
デフォルトの内部アクセス権 | 階層を使用したアクセス許可 | |
---|---|---|
商談 | 公開/参照のみ | ☑ |
プロファイル
標準オブジェクト権限(商談オブジェクト)
参照 | 作成 | 編集 | 削除 | すべて表示 | すべて変更 | |
---|---|---|---|---|---|---|
システム管理者ユーザ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ |
レポート表示ユーザ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ |
項目レベルセキュリティ
- システム管理者ユーザ:レポート表示項目に編集アクセス権あり
- レポート表示ユーザ:レポート表示項目に少なくとも参照アクセス権あり
ロール
システム管理者ユーザの属するロール
├ レポート表示ユーザの属するロール
└ 営業担当の上司用ロール
└ 営業担当用ロール(=商談所有者)
テリトリー管理
新旧問わず、使用なし
解決方法
商談オブジェクトのカスタムレポートタイプではなく、標準レポートタイプを使用する
原因
- 商談オブジェクトのカスタムレポートタイプを使用しており、商談オブジェクトの組織の共有設定が「公開/参照のみ」であることにより、ロール階層において実行ユーザと同じかそれより下のロールを持つユーザが所有する商談のみ表示されていた
- ロール階層において自分より上のロールを持つユーザによって所有されている場合、実行ユーザは階層セレクタでそのロールをクリックする必要があるが、結合レポートでは、レポートのロール階層を変更できない
- レポート編集時のプレビュー画面では、ロールの絞り込みを実施していないレコードが表示される
プレビュー時はロールでの絞り込みを実施していないデータが表示されますが、 実行すると実行ユーザのロール階層に応じた絞り込みが実施されるためプレビューとは異なる表示となります。
Salesforceサポート回答より
レポートタイプの設定によるレコード数の違いを確認する
同一プロファイルで異なるロールに属するユーザを作成し、以下を確認します。
- カスタムレポートタイプを使用した場合、ロールによってレポートに表示されるレコード数が異なること
- 標準レポートタイプを使用した場合、実行ユーザの属するロールに関わらずレコードが表示されること
環境
組織のエディション:Developer Edition
各種設定
レポートを作成して表示を確認する前に、各種アクセス権限に関わる設定を行います。
組織の共有設定
デフォルトの内部アクセス権 | 階層を使用したアクセス許可 | |
---|---|---|
商談 | 公開/参照のみ | ☑ |
商談共有ルール
何も設定しません。
ロール
以下のロール階層を作成します。
最上位ロール(システム管理者やマネージャを想定)
├ レポート表示ユーザ用ロール(営業担当とは異なる部署を想定)
└ 商談所有者の上司用ロール
└ 商談所有者ユーザ用ロール(営業担当を想定)
テリトリー管理
使用しません。
プロファイル
デフォルトの「システム管理者」プロファイルを使用します。
- 標準オブジェクト権限について、商談などのレポート使用オブジェクトに以下権限があります。
- 参照、作成、編集、削除
- (設定できるものは)すべての編集、すべての変更
- 項目レベルセキュリティについて、レポート表示項目に少なくとも参照アクセス権があります。
- 結合レポート作成に使用するため、注文オブジェクトの「商談」項目に参照アクセス権を付与します。
ユーザ
以下のようにユーザを作成します。
システム管理者については、デフォルトのシステム管理者ユーザにロールを設定します。
プロファイル | ロール | |
---|---|---|
システム管理者ユーザ | システム管理者 | 最上位ロール |
レポート表示ユーザ | システム管理者 | レポート表示ユーザ用ロール |
レコードの作成
レポート表示用に、商談オブジェクトのレコードをいくつか作成します。
商談所有者は、以下いずれかとします。
- 商談所有者の上司用ロールに属するユーザ
- 商談所有者ユーザ用ロールに属するユーザ
また、カスタムレポートタイプ作成、結合レポート作成に、商談オブジェクトに加え以下オブジェクトを使用するため、レコード作成、各レコードへの商品の追加を行っておきます。
- 商品オブジェクト
- 注文オブジェクト
- 注文商品オブジェクト
注文レコードは、各商談レコードを参照するよう設定します。
カスタムレポートタイプの作成
以下カスタムレポートタイプを作成します。
レポートタイプの表示ラベル | オブジェクトリレーション | レポートで選択可能な項目 |
---|---|---|
商談_商品 | 商談 (A) ー 少なくとも 1 つの関連レコードが存在する: 商品 (B) | 価格表エントリ: 商品: 商品名 を追加 |
注文_注文商品 | 注文 (A) ー 少なくとも 1 つの関連レコードが存在する: 注文商品 (B) | 注文: 商談: 商談ID を追加 |
レポートの作成 – カスタムレポートタイプ使用
作成したカスタムレポートタイプを使用した結合レポートを作成します。
ある商談に紐づく、指定商品における商談時の数量・合計金額と、注文時の数量・合計金額を表示するレポートとするイメージです。
フォルダ
公開レポート
形式
結合レポート
レポートタイプ
- ブロック1:カスタムレポートタイプ「商談_商品」
- ブロック2:カスタムレポートタイプ「注文_注文商品」
アウトライン
- ブロックをまたいでグループ化
- 商談名
- 列
- 商談_商品ブロック
- 取引先名:取引先名
- 価格表エントリ: 商品: 商品名
- 数量
- 合計金額
- 商談 所有者: 氏名
- 注文_注文商品ブロック
- 商品: 商品名
- 数量
- 合計金額
- 商談_商品ブロック
検索条件
商談_商品ブロック
項目 | 条件 |
---|---|
表示 | すべての商談 |
作成日 | 常時 |
価格表エントリ: 商品: 商品名 | 次の文字列と一致する 商品01,商品02 |
注文_注文商品ブロック
項目 | 条件 |
---|---|
表示 | すべての注文 |
作成日 | 常時 |
商品: 商品名 | 次の文字列と一致する 商品01,商品02 |
レポートの表示 – カスタムレポートタイプを使用したレポート
システム管理者ユーザでログインして表示
商談6レコード分が表示されます。
レポート表示ユーザでログインして表示
「商談_商品ブロック」にレコードが表示されません。
商談オブジェクトのカスタムレポートタイプを使用しており、商談オブジェクトの組織の共有設定が「公開/参照のみ」であることにより、ロール階層において実行ユーザと同じかそれより下のロールを持つユーザが所有する商談のみ表示されますが、レポート表示ユーザの属するロールまたはそれより下のロールで所有する商談は存在しないためです。
ただし、レポート表示ユーザで該当レポートを「編集」する際のプレビュー画面ではレコードが表示されます。
レポート編集時のプレビュー画面では、ロールの絞り込みを実施していないレコードが表示されるためです。
プレビュー時はロールでの絞り込みを実施していないデータが表示されますが、 実行すると実行ユーザのロール階層に応じた絞り込みが実施されるためプレビューとは異なる表示となります。
Salesforceサポート回答より
レポートの作成 – 標準レポートタイプ使用
先程作成した、カスタムレポートタイプを使用したレポートの「商品_商談ブロック」を、標準レポートタイプ使用に変更した結合レポートを作成します。
以下記載する箇所以外は、カスタムレポートタイプ使用時と同様の設定とします。
レポートタイプ
- ブロック1:標準レポートタイプ「商品が関連する商談」
- ブロック2:カスタムレポートタイプ「注文_注文商品」
アウトライン
- 列
- 商品が関連する商談ブロック
- 取引先名
- 商品名
- 数量
- 合計金額
- 商談 所有者
- 商品が関連する商談ブロック
検索条件
商品が関連する商談ブロック
項目 | 条件 |
---|---|
表示 | すべての商談 |
作成日 | 常時 |
商談状況 | すべて |
確度 | すべて選択 |
商品名 | 次の文字列と一致する 商品01,商品02 |
レポートの表示 – 標準レポートタイプを使用したレポート
システム管理者ユーザでログインして表示
カスタムレポートタイプを使用したレポートと同様のレコードが表示されています。
レポート表示ユーザでログインして表示
システム管理者ユーザと同様のレコードが表示されるようになりました。
標準レポートタイプを使用したことで、ユーザが属するロールでは所持していないが、レポート表示ユーザが表示権限のあるレコードが表示されたことが確認できました。
おわりに
表示されるレコード数が異なるとわかった際、アクセス権限の設定周りを必死に調査してしまいましたが、
今後レポートの表示で意図しない結果となった場合は、各アクセス権限の設定だけではなく、選択したレポートタイプも確認した方がよいことを学びました。
また、この件で初めてSalesforceサポートを頼りましたが、解決につながらないやり取りが何ターンかあったため、的確な回答を得るために端的に詳細を伝えるようにします。