Salesforceでは項目履歴管理で項目の変更履歴を残せるようになっています。
変更前後の値も記録してくれるので便利なのですが、制約もあってロングテキストやリッチテキストなど255 文字を超える項目に対する変更は、編集済みとして追跡され元の値と新しい値は記録されません。
できないなら諦めようとも思いましたが、社内の利用者から熱い要望があったので、Flow Builderとカスタムオブジェクトを使って自前の変更履歴を作ってみました。
対応概要
今回は以下のような対応をとりました。
詳細手順はこの後まとめます。
- 記録保存用のカスタムオブジェクト作成
→項目単位でオブジェクトを作成 - 記録用カスタムオブジェクトと商談の関連付け
→商談を親にして小オブジェクトとして用意 - Flow Builderでカスタムオブジェクトに項目の値を挿入してレコード作成
→対象項目のデータを格納
対応手順
今回は商談に作ったリッチテキスト項目の「リッチテキスト(10,000文字)」の履歴を保存するようにします。
1. 記録保存用のカスタムオブジェクト作成
最初に履歴記録用の履歴オブジェクトを作成します。
詳細は省きますが、データ型は自動採番としています。
履歴オブジェクトの項目とリレーションで項目を作ります。
ラベル | 項目名 | データ型 | 桁数 | 備考 |
---|---|---|---|---|
商談 | opportunity | 参照関係(商談) | ||
変更前 | old | リッチテキスト | 10000 | 履歴を残したい元の項目に桁数を合わせる |
変更後 | new | リッチテキスト | 10000 | 履歴を残したい元の項目に桁数を合わせる |
ポイント
履歴は勝手に変更されたくないので、権限を参照のみ可とすることを推奨します。
ページレイアウトを調整する。(お好みで良いです)
2. 記録用カスタムオブジェクトと商談の関連付け
商談の関連リストに履歴を追加します。
表示項目はお好みで。新規で作成する必要は無いのでボタンは全部非表示とします。
3. Flow Builderでカスタムオブジェクトに商談の値を挿入してレコード作成
「新規フロー」をクリックします。
「レコードトリガフロー」を選択して「作成」をクリックします。
開始の設定の各項目を設定して「完了」をクリックします。
項目 | 内容 |
---|---|
オブジェクトの選択(オブジェクト) | 商談 |
トリガを設定(フローをトリガする条件) | レコードが更新された |
エントリ条件を設定(条件の要件設定) | すべての条件に一致(AND) |
エントリ条件を設定(項目) | 履歴を保存したい項目 |
エントリ条件を設定(演算子) | 変更済み |
エントリ条件を設定(値) | True |
フローを最適化 | アクションと関連レコード |
「要素を追加」から「レコードを作成」をクリックします。
「新規のレコードの作成」の各項目を入力して「完了」をクリックします。
項目 | 内容 | 備考 |
---|---|---|
表示ラベル | 任意 | |
API参照名 | 任意 | |
説明 | 任意 | |
作成するレコード数 | 1 | |
このオブジェクトのレコードを作成(オブジェクト) | 履歴 | 履歴保存用に作成したオブジェクト |
このオブジェクトのレコードを作成(項目)1個目 | new__c | 履歴オブジェクトの変更後に商談からリッチテキスト(10,000文字)の変更後の値をコピー |
このオブジェクトのレコードを作成(値)1個目 | $Record > リッチテキスト(1,000文字) | 履歴オブジェクトの変更後に商談からリッチテキスト(10,000文字)の変更後の値をコピー |
このオブジェクトのレコードを作成(項目)2個目 | old__c | 履歴オブジェクトの変更前に商談からリッチテキスト(10,000文字)の変更前の値をコピー |
このオブジェクトのレコードを作成(値)2個目 | $Record__Prior > リッチテキスト(1,000文字) | 履歴オブジェクトの変更前に商談からリッチテキスト(10,000文字)の変更前の値をコピー |
このオブジェクトのレコードを作成(項目)3個目 | opportunity__c | 履歴オブジェクトの参照項目に関連付けるため商談IDをコピー |
このオブジェクトのレコードを作成(値)3個目 | $Record > 商談 ID | 履歴オブジェクトの参照項目に関連付けるため商談IDをコピー |
ポイント
「$Record」はトリガーとなるオブジェクトの変更後のレコード情報が「$Record__Prior」はトリガーとなるオブジェクトの変更前のレコード情報が格納されています。
参照項目はIDによって関連付けされるので商談IDをセットしています。
「保存」をクリックします。
各項目を入力して「保存」をクリックする。
項目 | 値 | 備考 |
---|---|---|
フローの表示ラベル | 任意 | わかりやすい名前を付ける |
フローのAPI参照名 | 任意 | 履歴を残したい元の項目に桁数を合わせる |
説明 | 任意 | 履歴を残したい元の項目に桁数を合わせる |
「有効化」をクリックする。
4. 動作確認
商談を開いて適当に内容を編集して保存します。
ポイント
トリガーで「変更」をチェックしているので、変更せずに保存をしただけでは履歴は記録されません。
履歴が作成されていればOKです。
履歴の詳細を開くと更新者や更新日時、更新前後の内容が確認できます。
これで、リッチテキストでも更新内容が履歴として残せるようになりました!