
SystemModstampの更新における標準オブジェクトとカスタムオブジェクトの違い
ごあいさつ
はじめまして。カスタマーサクセス部 Salesforceグループの藤富です。 Salesforceの標準オブジェクトとカスタムオブジェクトにはいくつか相違点があるかと思いますが、
今回はシステム項目である SystemModstamp の更新に関して、違いをご紹介させていただきます。
SystemModstamp の更新を条件として何らかのシステムを制御する場合に考慮すべき内容だと思われますので参考いただければ幸いです。
SystemModstampとは
Salesforce プラットフォームのオブジェクトリファレンスには下記のように記述されております。
===抜粋===
このレコードがユーザまたは自動化されたプロセス (トリガなど) によって最後に更新された日時。このコンテキストでは、「トリガ」は、標準機能を実装するために実行する Salesforce コードを意味します。Apex トリガではありません。 SystemModstamp 項目には、Defaulted on create および Filter アクセスがあります。
通常、SystemModstamp はユーザまたは自動化プロセスが最後にレコードを変更した日時を示します。ただし、場合によっては、SystemModstamp はすべての項目変更を取得するわけではありません。たとえば、オブジェクト A がオブジェクト B から値を取得する場合、オブジェクト B のレコードの項目値に対する変更は、オブジェクト B のレコードの SystemModstamp 項目には反映されますが、オブジェクト A では反映されません。
========
このように、ユーザまたは自動化されたプロセス (トリガなど) によってシステム側で更新される項目です。
SystemModstamp の更新における標準オブジェクトとカスタムオブジェクトの違いとは
では SystemModstamp の更新における標準オブジェクトとカスタムオブジェクトの違いは何かというと、
結論としては積み上げ集計項目の検索条件を変更した場合に標準オブジェクトでは SystemModstamp が更新されないが、
カスタムオブジェクトでは更新される、というものです。
以降、標準オブジェクトとカスタムオブジェクトそれぞれで SystemModstamp がどのように更新されたのかを 検証を元にご紹介させていただきます。
標準オブジェクトでの検証内容
今回は標準オブジェクトでの検証に Account を使用しました。 手順としては以下の通りです。
1.Account に Opportunity の積み上げ集計項目を作成しAccountの検証用に作成したレコードにて SystemModstamp の値を確認

2.積み上げ集計項目の検索条件を変更し、Accountの検証用レコードにて SystemModstamp の値を確認

SystemModstamp の値は以下の通りです。

結果としては、積み上げ集計項目の検索条件を変更しても SystemModstamp の値は更新されませんでした。
ちなみに、積み上げ集計の対象になる Opportunityレコードの値を変更した場合は
Account の検証用レコードにて SystemModstamp の値は更新されました。
※今回は下記の通り Opportunityレコードの「フェーズ」を「Prospecting」から「Needs Analysis」へ更新


カスタムオブジェクトでの検証内容
カスタムオブジェクトでの検証は「カスタムオブジェクトA」、「カスタムオブジェクトB」の
2つのカスタムオブジェクトを作成し、「カスタムオブジェクトB」に「カスタムオブジェクトA」を主とする
主従関係を設定いたしました。その後、標準オブジェクトと同様に積み上げ集計項目を作成しております。
1.「カスタムオブジェクトA」に「カスタムオブジェクトB」の積み上げ集計項目を作成し、検証用に作成したレコードにて SystemModstamp の値を確認

2.積み上げ集計項目の検索条件を変更し、「カスタムオブジェクトA」の検証用レコードにて SystemModstamp の値を確認

SystemModstamp の値は以下の通りです。

結果、積み上げ集計項目の検索条件を変更したタイミングで SystemModstamp の値が更新されることを確認しました。
まとめ
上記の通り、標準オブジェクトとカスタムオブジェクトでは SystemModstamp の更新される条件が異なる場合があることが確認できました。
今回は積み上げ集計項目の検索条件を変更した場合で検証しましたが、他にも相違点がある可能性もございます。
冒頭にも述べましたが、 SystemModstamp の更新を条件に何らかのシステムを制御する、といった場合はこの更新条件の違いを考慮する必要があると思いますのでご参考いただければ幸いです。
※今後、メジャーリリースなどで本仕様は改修される場合も考えられます。
※本ブログの内容は検証ベースでのご紹介となります。
執筆者プロフィール:藤富 裕亮
福岡生まれ福岡育ち、転勤を機に鎌倉へ引っ越し。 部署異動がきっかけでSalesforceと出会う。その出会いがきっかけとなりSalesforceに面白みを感じ、より深く関わっていきたいと思い、転職を志しSHIFTへ入社。
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/