商談オブジェクトのカスタムレポートタイプと標準レポートタイプで表示されるレコード数が異なる事象の確認

Salesforce
Salesforce

背景

皆さんこんにちは、寺田です。

業務で作成した結合レポートにおいて、レコードへのアクセス権限があるにも関わらず、ユーザにより表示されるレコード数が異なるという事象に突き当たりました。

調べたところ、商談オブジェクトを主とするカスタムレポートタイプと標準レポートタイプでは、実行ユーザのロールにより表示されるレコードが異なるようであることが分かったため、動きを確認することにしました。

発生事象

  • 商談オブジェクトを主とするカスタムレポートタイプを使用し、結合レポートを作成したところ、検索条件に「すべての商談」を選択しても、システム管理者ユーザとレポートを表示したいユーザで、商談オブジェクトブロックに表示されるレコード数が異なる
    • レポートを表示したいユーザにも、システム管理者ユーザと同じレコードを表示させたい
  • レポートを表示したいユーザで該当の結合レポートを「編集」する際、プレビュー画面ではシステム管理者ユーザと同様にレコードが表示されるが、「実行」すると表示されなくなる

発生時の設定

組織の共有設定

デフォルトの内部アクセス権階層を使用したアクセス許可
商談公開/参照のみ

プロファイル

標準オブジェクト権限(商談オブジェクト)

参照作成編集削除すべて表示すべて変更
システム管理者ユーザ
レポート表示ユーザ

項目レベルセキュリティ

  • システム管理者ユーザ:レポート表示項目に編集アクセス権あり
  • レポート表示ユーザ:レポート表示項目に少なくとも参照アクセス権あり

ロール

システム管理者ユーザの属するロール
 ├ レポート表示ユーザの属するロール
 └ 営業担当の上司用ロール
   └ 営業担当用ロール(=商談所有者)

テリトリー管理

新旧問わず、使用なし

解決方法

商談オブジェクトのカスタムレポートタイプではなく、標準レポートタイプを使用する

原因

  • 商談オブジェクトのカスタムレポートタイプを使用しており、商談オブジェクトの組織の共有設定が「公開/参照のみ」であることにより、ロール階層において実行ユーザと同じかそれより下のロールを持つユーザが所有する商談のみ表示されていた
  • ロール階層において自分より上のロールを持つユーザによって所有されている場合、実行ユーザは階層セレクタでそのロールをクリックする必要があるが、結合レポートでは、レポートのロール階層を変更できない
  • レポート編集時のプレビュー画面では、ロールの絞り込みを実施していないレコードが表示される

プレビュー時はロールでの絞り込みを実施していないデータが表示されますが、 実行すると実行ユーザのロール階層に応じた絞り込みが実施されるためプレビューとは異なる表示となります。

Salesforceサポート回答より

レポートタイプの設定によるレコード数の違いを確認する

同一プロファイルで異なるロールに属するユーザを作成し、以下を確認します。

  • カスタムレポートタイプを使用した場合、ロールによってレポートに表示されるレコード数が異なること
  • 標準レポートタイプを使用した場合、実行ユーザの属するロールに関わらずレコードが表示されること

環境

組織のエディション:Developer Edition

各種設定

レポートを作成して表示を確認する前に、各種アクセス権限に関わる設定を行います。

組織の共有設定

デフォルトの内部アクセス権階層を使用したアクセス許可
商談公開/参照のみ
組織の共有設定(商談)

商談共有ルール

何も設定しません。

商談共有ルール

ロール

以下のロール階層を作成します。

最上位ロール(システム管理者やマネージャを想定)
 ├ レポート表示ユーザ用ロール(営業担当とは異なる部署を想定)
 └ 商談所有者の上司用ロール
  └ 商談所有者ユーザ用ロール(営業担当を想定)

作成したロール階層
最上位ロール
最上位ロール
レポート表示ユーザ用ロール
レポート表示ユーザ用ロール
商談所有者の上司用ロール
商談所有者の上司用ロール
商談所有者ユーザ用ロール
商談所有者ユーザ用ロール

テリトリー管理

使用しません。

プロファイル

デフォルトの「システム管理者」プロファイルを使用します。

システム管理者プロファイル
  • 標準オブジェクト権限について、商談などのレポート使用オブジェクトに以下権限があります。
    • 参照、作成、編集、削除
    • (設定できるものは)すべての編集、すべての変更
  • 項目レベルセキュリティについて、レポート表示項目に少なくとも参照アクセス権があります。
  • 結合レポート作成に使用するため、注文オブジェクトの「商談」項目に参照アクセス権を付与します。

ユーザ

以下のようにユーザを作成します。
システム管理者については、デフォルトのシステム管理者ユーザにロールを設定します。

プロファイルロール
システム管理者ユーザシステム管理者最上位ロール
レポート表示ユーザシステム管理者レポート表示ユーザ用ロール
作成したユーザ

レコードの作成

レポート表示用に、商談オブジェクトのレコードをいくつか作成します。
商談所有者は、以下いずれかとします。

  • 商談所有者の上司用ロールに属するユーザ
  • 商談所有者ユーザ用ロールに属するユーザ

また、カスタムレポートタイプ作成、結合レポート作成に、商談オブジェクトに加え以下オブジェクトを使用するため、レコード作成、各レコードへの商品の追加を行っておきます。

  • 商品オブジェクト
  • 注文オブジェクト
  • 注文商品オブジェクト
商談レコードイメージ

注文レコードは、各商談レコードを参照するよう設定します。

注文レコードイメージ01
注文レコードイメージ02

カスタムレポートタイプの作成

以下カスタムレポートタイプを作成します。

レポートタイプの表示ラベルオブジェクトリレーションレポートで選択可能な項目
商談_商品商談 (A) ー 少なくとも 1 つの関連レコードが存在する: 商品 (B)価格表エントリ: 商品: 商品名 を追加
注文_注文商品注文 (A) ー 少なくとも 1 つの関連レコードが存在する: 注文商品 (B)注文: 商談: 商談ID を追加

レポートの作成 – カスタムレポートタイプ使用

作成したカスタムレポートタイプを使用した結合レポートを作成します。
ある商談に紐づく、指定商品における商談時の数量・合計金額と、注文時の数量・合計金額を表示するレポートとするイメージです。

フォルダ

公開レポート

形式

結合レポート

レポートタイプ

  • ブロック1:カスタムレポートタイプ「商談_商品」
  • ブロック2:カスタムレポートタイプ「注文_注文商品」

アウトライン

  • ブロックをまたいでグループ化
    • 商談名
    • 商談_商品ブロック
      • 取引先名:取引先名
      • 価格表エントリ: 商品: 商品名
      • 数量
      • 合計金額
      • 商談 所有者: 氏名
    • 注文_注文商品ブロック
      • 商品: 商品名
      • 数量
      • 合計金額
レポートアウトライン_カスタム

検索条件

商談_商品ブロック

項目条件
表示すべての商談
作成日常時
価格表エントリ: 商品: 商品名次の文字列と一致する 商品01,商品02

注文_注文商品ブロック

項目条件
表示すべての注文
作成日常時
商品: 商品名次の文字列と一致する 商品01,商品02
レポート検索条件_カスタム

レポートの表示 – カスタムレポートタイプを使用したレポート

システム管理者ユーザでログインして表示

商談6レコード分が表示されます。

レポート表示_システム管理者_カスタム

レポート表示ユーザでログインして表示

「商談_商品ブロック」にレコードが表示されません。

レポート表示_レポート表示ユーザ_カスタム

商談オブジェクトのカスタムレポートタイプを使用しており、商談オブジェクトの組織の共有設定が「公開/参照のみ」であることにより、ロール階層において実行ユーザと同じかそれより下のロールを持つユーザが所有する商談のみ表示されますが、レポート表示ユーザの属するロールまたはそれより下のロールで所有する商談は存在しないためです。

ただし、レポート表示ユーザで該当レポートを「編集」する際のプレビュー画面ではレコードが表示されます。

レポート表示ユーザ_編集

レポート編集時のプレビュー画面では、ロールの絞り込みを実施していないレコードが表示されるためです。

プレビュー時はロールでの絞り込みを実施していないデータが表示されますが、 実行すると実行ユーザのロール階層に応じた絞り込みが実施されるためプレビューとは異なる表示となります。

Salesforceサポート回答より

レポートの作成 – 標準レポートタイプ使用

先程作成した、カスタムレポートタイプを使用したレポートの「商品_商談ブロック」を、標準レポートタイプ使用に変更した結合レポートを作成します。

以下記載する箇所以外は、カスタムレポートタイプ使用時と同様の設定とします。

レポートタイプ

  • ブロック1:標準レポートタイプ「商品が関連する商談」
  • ブロック2:カスタムレポートタイプ「注文_注文商品」

アウトライン

    • 商品が関連する商談ブロック
      • 取引先名
      • 商品名
      • 数量
      • 合計金額
      • 商談 所有者
レポートアウトライン_標準

検索条件

商品が関連する商談ブロック

項目条件
表示すべての商談
作成日常時
商談状況すべて
確度すべて選択
商品名次の文字列と一致する 商品01,商品02
レポート検索条件_標準

レポートの表示 – 標準レポートタイプを使用したレポート

システム管理者ユーザでログインして表示

カスタムレポートタイプを使用したレポートと同様のレコードが表示されています。

レポート表示_システム管理者_標準

レポート表示ユーザでログインして表示

システム管理者ユーザと同様のレコードが表示されるようになりました。

レポート表示_レポート表示ユーザ_標準

標準レポートタイプを使用したことで、ユーザが属するロールでは所持していないが、レポート表示ユーザが表示権限のあるレコードが表示されたことが確認できました。

おわりに

表示されるレコード数が異なるとわかった際、アクセス権限の設定周りを必死に調査してしまいましたが、
今後レポートの表示で意図しない結果となった場合は、各アクセス権限の設定だけではなく、選択したレポートタイプも確認した方がよいことを学びました。

また、この件で初めてSalesforceサポートを頼りましたが、解決につながらないやり取りが何ターンかあったため、的確な回答を得るために端的に詳細を伝えるようにします。

参考

タイトルとURLをコピーしました