Salesforce:標準機能を使わずに特定の項目の変更履歴を追いたい

1 min read読了の目安(約900字

前提:標準機能:[項目履歴管理]の仕様

・データ保持期間が24ヶ月
 → 履歴オブジェクトには保持されるがデータローダーが必要
・別のオブジェクトに保存されるため、ビュー,レポートには表示できない

結論

プロセスビルダーを使って、別の項目に値を追加するように設定する
レコード作成時に初期値を取得しておくことで変更前の値を保持する

要件

  1. 特定項目が変更されたときに、変更前→変更後 の値を保持しておきたい
  2. 無期限に保持したい
  3. いつ、誰が、何を、何に変更したかを一つの項目に保存しておきたい

手順

設定 → プロセスビルダー → 新規作成

対象オブジェクト選択

このアクショングループの条件を定義

ルール適用時のアクション:レコードを更新

関数

SUBSTITUTE(
      TEXT(
         Today()),
           "-", "/")
 & ":  " 
 & PRIORVALUE([CustomObject1__c].shodanstatus__c ) 
 & "→" 
 & Text([CustomObject1__c].shodanstatus__c)
 & ": (" & [CustomObject1__c].LastModifiedBy.LastName
 & " " & [CustomObject1__c].LastModifiedBy.FirstName  & ")"
 & BR()
 & [CustomObject1__c].StatusChangeHistory__c

以上でかんりょ

備考

変更前の値を明確に取得したい場合はApexトリガーを書く必要がある。