前回の投稿でSalesForceのレコードの監査項目にinsert時のみ任意の値を設定できることを書きました。↓
今回は、「監査項目に任意の値を設定したいのはなぜ?」ということについて書きたいと思います。
ToDoの割り当て通知が来ない
SalesForceLightning上には、画面右上にベルマークのアイコンがあります。
承認申請やToDoが割り当てられたときに、このベルマークに通知が届くのですが・・・
ToDoの割り当て通知は、通常はToDoの作成時に、ToDoレコードの「担当者」項目に設定されているユーザに通知が届きます。しかし、作成者と担当者が同一ユーザの場合、担当者に割り当ての通知が来ません。
例えば、商談が成立したとき商談レコードの所有者に「ToDo:上司に口頭で報告」を割り当てるApexトリガを実装している場合、Apexトリガを起動させた処理を行ったユーザがToDoレコードの作成者となるため、そのユーザにはToDoの通知が来ません。この場合、自動で作成されているToDoをユーザは認知できないことになります。
このSalesForceの仕様を確認したときに、「ToDoの作成処理で作成者を割り当て者と別のユーザに設定すれば割り当てユーザ(担当者)に通知が届くじゃん」と思ったことが、監査項目の値をいじりたいと思ったきっかけです。
トリガ実装
以下のトリガを実装してみました。
trigger OpportunityTrigger on Opportunity (after update) {
List<Task> newToDoList = new List<TasK>();
for (Opportunity obj : Trigger.new) {
if (Trigger.oldMap.get(obj.Id).StageName != 'Closed Won' && obj.StageName == 'Closed Won') {
Task newToDo = new Task(
CreatedById = '0052v00000fZv2vAAC', // ユーザ[検証用ユーザ]を常に作成者に設定
OwnerId = '0052v00000cnatoAAA', // 取引先の所有者をToDoの担当者に設定
Subject = 'テスト'
);
newToDoList.add(newToDO);
}
}
insert newToDoList;
}
これで、自動で作成されたToDoでもユーザにベルマークに通知が届く!と、思ったのですが...
ベルマーク通知は届きませんでした。
どうやらToDoの作成時の割り当て通知は、SalesForce標準画面UIからの作成時にしか、届かないみたいです。
ベルマーク通知に関しては、承認プロセスの通知に関しても仕様が少しおかしいところもあるみたいです。残念......
その代わり、Summer'19で実装されたカスタム通知を設定することで、ベルマーク通知の仕様を作りこみことも可能になったみたいです。
まとめ
SalesForce標準画面での通知のみを頼りにしているシステムはあまりないと思いますが(重要な通知などはだいたいメール通知を設定していると思いますが)、通知の挙動ロジックに整合性がないのは少し、不快感がありますね。どうしてもベルマーク通知を作りこみたいときは、カスタム通知を使用してみてください。