検索ソリューションとレポートを効率化する
学習の目的
この単元を完了すると、次のことができるようになります。
- Salesforce Object Search Language (SOSL) とレポートに関するアンチパターンを認識する。
- ロールを階層内で使用することの重要性を理解する。
シナリオ 2: ロール階層とレポートの特定
ある企業が先頃、Salesforce ライセンスを 10 万件購入しました。この企業は、最終的にレガシーシステムを Salesforce に置き換えるつもりです。差し当たり、すべてのデータを Salesforce 外でマスター管理したいと考えています。以下は、現在実装しているソリューションの概要です。
組織のロール階層は 15 層に設定されています。当面は Salesforce を少数のビジネスユニットのみで運用するため、その後ほかのビジネスユニットに運用を拡大したときに、どのようなロールが必要になるかは定かでありません。そのため、組織階層全体をそのまま再現し、将来のニーズに応じて再利用できるようにしました。
この企業は Salesforce に 2 億件近くの取引先を保持しています。どのエージェントも、各自の代理店がサービスを実施するすべての取引先にアクセスできます。ただし、シームレスなカスタマーエクスペリエンスを実現するために、お客様が代理店に来店した場合は、既存のお客様かどうかに関係なく、エージェントがすべてのお客様に対応することが求められています。そのため、カスタムの SOSL 検索ソリューションを実装して、エージェントが新しい取引先レコードを作成する前に、名前でそのお客様を検索できるようにしました。ところが、Salesforce に顧客レコードが存在していても、この検索では大半の結果が返されないことが判明しました。この結果、不要な重複レコードが多数作成されています。この問題を解決するために、現在はお客様の姓を使ったワイルドカード検索ではなく、グローバル検索を実行するようエージェントに指示しています。
また、エージェントの業務効率を高めるために、レポートとダッシュボードを公開し、各エージェントが独自のレポートを作成できるようにしました。当初は順調に進み、エージェントが合計 10 万件近くのレポートを作成しました。最近になって、エージェントから IT 部門に、レポートがタイムアウトする、実行にかなりの時間がかかるといった苦情が多数寄せられています。
シナリオの重要な詳細情報
- 「企業が先頃、Salesforce ライセンスを 10 万件購入しました。」
- 「組織のロール階層は 15 層に設定されています。」
- 「2 億件近くの取引先を保持しています。」
- 「カスタムの SOSL 検索ソリューションを実装しています。」
注意点
- 必要に応じてロールを再編成する場合、大規模な階層構造ではこの作業に多大なコストがかかる。
- カスタム SOSL 検索は、実装とメンテナンスのオーバーヘッドを伴う。
- 階層の上位にいるユーザー向けのレポートは、処理に時間がかかり、非効率的である。
- ユーザーが非公開フォルダーに多数のレポートやダッシュボードを作成できるようにすると、リリースに関する問題が生じる可能性がある。
- また、レポートをオープンアクセスにすれば、同じような内容の重複レポートが多数作成される原因になる。
アンチパターン
アンチパターン: 将来に備えて一時的なプレースホルダーロールを作成したうえで、組織構造を再現したロール階層を作成する。
ベストプラクティス: パフォーマンスを向上させるために、ロール階層の層数を抑えることをお勧めします。現時点で要件を満たすロールのみを作成します。それぞれのロールがどのように使用されるかを正確に把握することが重要です。また、組織階層とロール階層を一致させる必要がない点に留意します。組織の共有ルールがいくつあるか確認します。共有ルールがたくさんある場合、ロール階層のパフォーマンスが低下している可能性があります。そのため、ロール階層内ですでに共有されているレコードへのアクセス権を付与する共有ルールを削除します。
アンチパターン: レポート作成上のニーズに基づいて、Salesforce で必要な階層の最大数を決定する。
ベストプラクティス: レポートで返されるレコード数は、共有モデルによって異なります。この数がパフォーマンスに直接影響します。
アンチパターン: 大規模な組織で SOSL を使用して、ワイルドカードを使ったグローバル検索を実行するカスタム検索ソリューションを実装する。
ベストプラクティス: SOSL を使用する際は、パフォーマンスを向上させるために、ワイルドカードを避け、検索語をできる限り具体的に指定します。検索対象のデータが多いほど、クエリの実行速度が低下します。
アンチパターン: 適切な検索条件を設定せずにレポートを使用する。
ベストプラクティス: 検索条件と範囲を効率的に使用すれば、レポート実行時に照会するデータ量が減少し、データが速やかに返されるようになります。企業の成長に合わせてスケールできる効率的なレポートの作成方法をユーザーに指導することが極めて重要です。
アンチパターン: 可能であれば、日付検索条件とインデックス付き項目を使用してレポートの範囲を絞り込む。
ベストプラクティス: 可能な限り、数式項目ではなく、日付検索条件とインデックス付き項目を使用します。「今週」「来週」「来月」など、相対日付の値を使用します。「次の値を含む」を使用するとワイルドカード検索が実行されるため、「次の値を含む」の代わりに「次の値と一致する」を使用します。「次の値を含まない」と「次の値と一致しない」の使用は避けることをお勧めします。
アンチパターン: 日常業務に定型レポートを使用する。
ベストプラクティス: 一貫性を確保し、メンテナンスを容易にするために、ガバナンスプロセスをできるだけ早い段階で開始します。特定の分析要件やユースケースに合わせてユーザーをグループに分類し、検索条件のベストプラクティスに従って、ユーザーグループごとに定型レポートを作成します。
インテグレーションに不具合が生じそうな箇所をすばやく特定するツールを備えておけば、チームにとって欠かせない存在になります。適切にスケールするための境界と制限をきちんと理解していれば、一括処理、ガバナンス、ロック、後処理に関連するアンチパターンの対処に費やす時間を低減できます。
リソース
- Salesforce ヘルプ: ロールを使いこなすためのガイドライン
- Trailhead: 検索ソリューションの基礎
- Trailhead: データセキュリティ
- Trailhead: データベースと .NET の基本
- Salesforce ヘルプ: Things to Know About Duplicate Rules (重複ルールに関する考慮事項)
