Salesforceフローで実現する安全なデータ管理 – レコード削除制御の実装方法
目次
営業活動の記録が詰まった商談データ。その一つ一つが組織の貴重な資産です。でも、時にはうっかり大切なデータを削除してしまいそうになることはありませんか?
特にクローズした商談は、売上実績の分析や監査で必要になることも多く、安易な削除は避けたいものです。
以前は、このようなデータの削除制御を実装するには、Apexによる開発が必要でした。しかし、今ではSalesforceフローを使って、管理者が簡単に実装できるようになっています。しかも、単に削除を防ぐだけでなく、ユーザーに分かりやすいエラーメッセージを表示することもできます。
この記事では、フローを使って「クローズ済み商談の削除を防ぐ」機能を実装する方法をご紹介します。手順はとてもシンプルですが、効果は絶大。データの整合性を保ちながら、ユーザーにも優しい仕組みを作っていきましょう。
ビジネスプロセスを守るレコード削除制御
データの削除は、一度実行してしまうと取り返しがつきません。特に商談データは、組織の売上実績や営業活動の履歴を示す重要な記録です。クローズした商談には、成約に至るまでの経緯や、最終的な取引条件など、ビジネスの意思決定に欠かせない情報が詰まっています。
商談データの保護が特に重要なのは、以下のようなケースです。
売上実績の分析や予測に使用される場合。過去の成約パターンは、将来の売上予測の重要な指標となります。クローズした商談が誤って削除されると、分析の精度に影響を与えかねません。
監査やコンプライアンスの要件を満たす必要がある場合。特に上場企業や規制の厳しい業界では、取引記録の保持が義務付けられていることもあります。
このような状況で、データの削除を適切に制御する仕組みが必要になります。従来は、この制御をApexで実装する必要がありましたが、Salesforceフローを使うことで、次のような利点が得られます。
開発者に依頼することなく、管理者が直接実装できます。急な要件変更にも、素早く対応することが可能です。
ユーザーに分かりやすいエラーメッセージを表示できます。なぜ削除できないのか、その理由を明確に伝えることで、ユーザーの混乱を防ぎます。
レコードの状態に応じて、きめ細かな制御が可能です。商談のフェーズや金額、関連する取引先の状況など、様々な条件に基づいて削除の可否を判断できます。
実装の手間も最小限で済みます。画面上での設定だけで、堅牢な削除制御の仕組みを作ることができるのです。
では次章から、具体的な実装方法を見ていきましょう。
フローによる削除制御の基本
フローでレコードの削除を制御するには、レコードトリガーフローを使用します。この仕組みを理解するところから始めましょう。
レコードトリガーフローの基本的な考え方
レコードトリガーフローは、レコードの作成や更新、削除といったイベントをトリガーとして実行されます。削除制御の場合、レコードが削除される直前にフローが起動し、削除を許可するか否かの判断を行います。
このとき重要なのが、削除を試みたユーザーへのフィードバックです。単に削除を防ぐだけでなく、なぜ削除できないのか、どうすれば良いのかを伝えることで、ユーザーの混乱を防ぐことができます。
削除条件の設計ポイント
フローで削除制御を実装する際は、以下の点に注意して設計を行います。
まず、どのような状態のレコードを保護する必要があるのかを明確にします。商談であれば、フェーズや金額、最終更新日など、様々な条件が考えられます。これらの条件は、組織のビジネスプロセスや規定に基づいて決定します。
次に、条件の組み合わせを考えます。たとえば、「クローズ済みかつ成約金額が一定以上」といった複合的な条件も設定できます。この際、条件が複雑になりすぎると保守が難しくなるため、必要最小限の条件設定を心がけましょう。
カスタムエラーメッセージの設計
カスタムエラーメッセージは、ユーザーとのコミュニケーションの要となります。メッセージの内容は以下の3点を含めると効果的です。
- 何が問題なのか(例:「クローズ済みの商談は削除できません」)
- その理由(例:「売上実績の記録として保持が必要なため」)
- 対処方法(例:「削除が必要な場合は、システム管理者にお問い合わせください」)
エラーメッセージは簡潔かつ明確に。専門用語は避け、一般のユーザーにも分かる言葉で表現することを心がけます。
エラー表示の選択肢
フローのカスタムエラーでは、エラーメッセージの表示方法を選択できます。主な選択肢は以下の2つです。
レコードページのウィンドウでの表示: ユーザーの作業の文脈を保ったまま、エラーを通知できます。一般的なユースケースではこちらが推奨されます。
画面フローでの表示:より詳細な説明や、代替手段の提示が必要な場合に適しています。
次章では、これらの基礎知識を踏まえて、実際の実装手順を見ていきましょう。
クローズ済み商談の削除制御を実装する
では、実際にクローズ済み商談の削除を制御するフローを作成していきましょう。手順を追って実装していきます。
フローの作成と基本設定
まず、新しいフローを作成します。Setupメニューから「フロー」に移動し、「新規フロー」ボタンをクリックします。
表示された選択肢から「レコードトリガーフロー」を選択します。このタイプのフローが、レコード削除時の制御に最適です。
トリガー条件の設定
フローの基本情報を設定していきます。
- オブジェクトの選択で「商談」を指定します
- 「レコードが削除された」を実行条件として選択します
- 実行要件は「レコードが条件を満たす場合のみ実行」を選びます
判定ロジックの実装
次に、クローズ済み商談かどうかを判定する条件を設定します。決定要素を追加し、以下の条件を設定します。
Copy
{!$Record.StageName} EQUALS "Closed Won" OR {!$Record.StageName} EQUALS "Closed Lost"
この条件式で、商談がクローズ(成約または不成立)状態にあるかどうかを判定します。
カスタムエラーの設定
判定結果が真の場合のパスに、カスタムエラー要素を追加します。
エラーメッセージは以下のように設定します。
- 表示場所:「レコードページのウィンドウで」を選択
- エラーメッセージ:このクローズ済み商談は削除できません。売上実績の記録として保持が必要なため、クローズ済みの商談は削除することができません。削除が必要な場合は、システム管理者にご相談ください。
フローの有効化と動作確認
設定が完了したら、フローを保存して有効化します。動作確認は以下の手順で行います。
-
- テスト用の商談レコードを2つ作成します
・1つ目:フェーズが「商談進行中」
・2つ目:フェーズが「成立」-
- それぞれの商談で削除を試みます
・進行中の商談:通常通り削除できることを確認
・クローズ済みの商談:設定したエラーメッセージが表示されることを確認このように、段階的なテストを行うことで、意図した通りの動作を確認できます。
補足:エラーメッセージのカスタマイズ
エラーメッセージは、必要に応じてカスタマイズできます。たとえば、
- 商談金額に応じて異なるメッセージを表示
- 多言語環境の場合、ユーザーの言語設定に応じたメッセージを表示
- 社内の申請プロセスへのリンクを含める
など、組織の要件に合わせた調整が可能です。
まとめ
フローによるレコード削除制御の実装について、具体的な手順を見てきました。開発の知識がなくても、管理者がポイントを押さえることで、効果的なデータ保護の仕組みを作ることができます。
この機能は、クローズ済み商談以外にも様々な場面で活用できます。例えば、
- 進行中の案件に関連する取引先の削除を防止する
- 特定の承認プロセスが完了したレコードの削除を制御する
- 月次や年次の締め処理後のデータ変更を防ぐ
重要なのは、単にデータの削除を防ぐだけでなく、なぜ削除できないのかをユーザーに分かりやすく伝えること。適切なメッセージを表示することで、ユーザーの混乱を防ぎ、データ管理の意識向上にもつながります。
フローによる削除制御の実装は、Salesforceの基本機能だけで実現できる、シンプルかつ効果的なデータ保護の手段です。組織のデータ管理ポリシーに合わせて、ぜひ活用を検討してみてください。
<Salesforce>
弊社ではSalesforceをはじめとするさまざまな無料オンラインセミナーを実施しています!
>>セミナー一覧はこちらまた、弊社ではSalesforceの導入支援のサポートも行っています。ぜひお気軽にお問い合わせください。
>>Salesforceについての詳細はこちら
>>Salesforceの導入支援実績はこちらからご覧いただけます!医療業界に特化した営業支援、顧客管理(SFA/CRM)のコンサルティングも提供しております。こちらもぜひお気軽にお問い合わせください。
>>顧客管理(SFA/CRM)のコンサルティングの詳細はこちら -