フローで実現する動的な積み上げ集計 〜契約終了管理の自動化〜
#Salesforce #フロー #自動化 #積み上げ集計 #契約終了管理
目次
Salesforceを使っていると、「契約期間が終了した案件の数を自動的に集計したい」「期限切れのライセンス数を取引先ごとに表示したい」といった要望に出会うことがあります。一見すると積み上げ集計項目で簡単に実現できそうですが、日付に関する動的な条件を扱う際に思わぬ壁にぶつかることがあります。
たとえば、ある製造業のお客様では、取引先ごとの契約管理を行う中で「現時点で期限切れとなっている契約数」を把握する必要がありました。単純に考えれば、契約終了日が今日より前のレコードを数える積み上げ集計を設定すれば良さそうです。しかし、実際に設定しようとすると「TODAY関数などの動的な関数は積み上げ集計の条件として使用できない」という制限に気づきます。
この記事では、フローを活用してこの制限を克服する方法をご紹介します。フローを使うことで、日々変化する条件に応じた集計を実現し、より柔軟な運用が可能になります。設定手順も決して複雑ではありません。
積み上げ集計の課題を理解する
積み上げ集計項目は、Salesforceの中でも特に重宝される機能の一つです。親子関係のあるオブジェクト間で、子オブジェクトのレコード数や金額などを自動的に集計し、親オブジェクトに表示できます。
しかし、この便利な機能にも制限があります。その最たるものが、動的な条件を使用できないという点です。たとえば以下のような集計ができません。
- 今日が契約終了日を過ぎている契約の数
- 先月から今月の間に終了した案件の合計金額
- 直近30日以内に期限切れとなった証明書の数
このような制限が生じる理由は、積み上げ集計の仕組みにあります。積み上げ集計は常にリアルタイムで結果を返す必要があるため、日々変化する条件での集計は処理負荷が高くなってしまいます。そのため、Salesforceではこれらの動的な条件を制限しているのです。
フローによる解決策の設計
この課題を解決するために、私たちは発想を少し変える必要があります。「契約終了日が今日より前」という動的な条件を、「契約が終了している」という静的な状態に置き換えるのです。
具体的には以下のような仕組みを作ります。
- 契約管理オブジェクトに「契約終了フラグ」というチェックボックス項目を追加
- フローで毎日自動的にチェックの状態を更新
- このチェックボックスの状態を基に積み上げ集計を行う
この方法には、いくつかの重要な利点があります。まず、積み上げ集計の条件として静的なチェックボックス項目を使用するため、Salesforceの制限に抵触しません。また、フローによる更新は必要なタイミングでのみ実行されるため、システムへの負荷も最小限に抑えられます。
システム設計のポイント
フローを設計する際は、以下の点に注意を払う必要があります。
契約終了日の扱い: 契約終了日が設定された時点で、その日付を基準にフローのスケジュールを設定します。これにより、契約終了日の翌日に自動的にフラグが更新されます。
データの整合性: 契約終了日が変更された場合も適切に対応できるよう、フローの開始条件を設定します。契約終了日が更新されると、既存のスケジュールは自動的にキャンセルされ、新しい日付でスケジュールが再設定されます。
エラー処理: フローの実行中にエラーが発生した場合の影響を最小限に抑えるため、適切なエラーハンドリングを実装します。特に、一括更新時の処理についても考慮が必要です。
この設計アプローチを採用することで、システム管理者は以下のような柔軟な運用が可能になります。
- 契約終了条件の変更が必要な場合は、フローの条件のみを修正
- フラグ更新のタイミングを業務要件に合わせて調整
- 必要に応じて、追加の通知や関連処理をフローに組み込む
次章では、この設計に基づいた具体的な実装手順をご説明します。
実装手順の詳細
それでは、具体的な実装手順を見ていきましょう。大きく分けて、チェックボックス項目の作成、フローの設定、積み上げ集計項目の設定という3つのステップで進めていきます。
チェックボックス項目の作成
まずは契約管理オブジェクトに、契約終了を示すフラグを追加します。この項目は、フローによって自動的に更新される重要な管理項目となります。
設定手順は次の通りです。設定画面から「オブジェクトマネージャ」を開き、契約管理オブジェクトの「項目とリレーション」セクションに移動します。ここで新しいカスタム項目を作成します。
重要なポイントは項目のデフォルト値です。新規レコード作成時は必ずチェックが外れている状態にしたいため、デフォルト値は「チェックなし」に設定します。また、この項目は自動更新される管理項目のため、ページレイアウト上では参照のみとすることをお勧めします。
フローの構築
続いて、契約終了日を監視し、適切なタイミングでフラグを更新するフローを作成します。このフローは「スケジュール済みパス」という機能を使用して、特定の日時に処理を実行します。
フローの作成手順は以下の通りです。
設定画面から「フロー」を選択し、新規フローを作成します。ここでは「レコードトリガーフロー」を選びます。このタイプのフローを選ぶことで、契約管理レコードの作成や更新をトリガーとして処理を開始できます。
フローの開始条件として、「契約終了日が入力されているレコードが作成または更新された場合」を指定します。これにより、契約終了日が設定された時点でフローが起動します。
スケジュール済みパスでは、契約終了日の翌日にフラグを更新するよう設定します。具体的には以下のような設定となります。
- 基準時刻:契約管理オブジェクトの契約終了日
- オフセット:1日後
- 実行するアクション:チェックボックスをTrueに更新
このフローでは、契約終了日が更新された場合の処理も考慮する必要があります。契約終了日が変更されると、既存のスケジュールは自動的にキャンセルされ、新しい日付でスケジュールが再設定されます。
積み上げ集計項目の設定
最後に、フラグが立っているレコードを集計する積み上げ集計項目を取引先オブジェクトに作成します。
この設定では以下の点に注意が必要です。
- 集計対象のオブジェクトを契約管理に指定
- 集計の種類を「件数」に設定
- フィルタ条件として「契約終了フラグ = True」を指定
これで、動的な条件による集計が実現できました。フローによって適切なタイミングでフラグが更新され、その結果が積み上げ集計項目に反映されます。
まとめ
この仕組みを実際の業務で活用する際は、いくつかの重要なポイントがあります。また、この方法は様々な業務シーンで応用が可能です。
テストと確認の重要性
フローが設定通りに動作しているかを確認するため、以下のような手順でテストを行います。
まず、Sandboxで動作確認を行います。契約終了日を当日に設定したテストレコードを作成し、翌日にフラグが自動的に更新されることを確認します。また、契約終了日を変更した場合に、スケジュールが適切に再設定されることも確認しておきましょう。
本番環境に適用する前には、「設定」の「監視」セクションにある「時間ベースのワークフロー」画面で、スケジュールの状態を確認できます。ここで、フローによって設定されたスケジュールを確認し、想定通りの日時で登録されているかを確認します。
応用可能なシーン
この手法は、契約管理以外にも様々な場面で活用できます。
例えば:
- 商品の保守期限管理
- ライセンスの有効期限監視
- 定期メンテナンス案件の進捗管理
- 認証や資格の更新時期管理
特に、日付に関連する動的な条件が必要な場面で、この方法は効果を発揮します。
パフォーマンスへの配慮
この仕組みを運用する際は、以下の点に注意を払うことで、より安定した運用が可能になります。
- 大量のレコードが一括で更新される際のフローの動作
- 契約終了日が頻繁に変更される場合のスケジュール再設定の影響
- 積み上げ集計項目の再計算タイミング
必要に応じて、バッチサイズの調整やエラーハンドリングの追加を検討しましょう。
フローを活用することで、Salesforceの標準機能だけでは実現が難しかった「動的な条件による集計」を実現できました。この方法のポイントは、動的な条件を静的なフラグに変換することで、標準の積み上げ集計機能を活用できるようにした点にあります。
この手法は、以下のような利点があります。
- 標準機能の範囲内で実現可能
- システムへの負荷を最小限に抑制
- 保守性の高い設計
- 様々な業務シーンへの応用が可能
一方で、運用を始める前に以下の点について十分な検討と準備が必要です。
- データ量の増加に応じたパフォーマンスの考慮
- バックアップやリカバリー手順の確立
- システム管理者への引き継ぎドキュメントの整備
フローを活用したこの方法は、Salesforceの進化の方向性とも合致しています。今後、さらに多くの自動化がフローに移行していく中で、このような柔軟な発想での課題解決力が、より一層重要になっていくでしょう。
<Salesforce>
弊社ではSalesforceをはじめとするさまざまな無料オンラインセミナーを実施しています!
>>セミナー一覧はこちら
また、弊社ではSalesforceの導入支援のサポートも行っています。ぜひお気軽にお問い合わせください。
>>Salesforceについての詳細はこちら
>>Salesforceの導入支援実績はこちらからご覧いただけます!
医療業界に特化した営業支援、顧客管理(SFA/CRM)のコンサルティングも提供しております。こちらもぜひお気軽にお問い合わせください。
>>顧客管理(SFA/CRM)のコンサルティングの詳細はこちら