function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Che SFDCChe SFDC 

Help with update trigger

Dear All,
Here is my trigger. I want to update "Deactivated on" text field everytime Opportunty "Active" field changes to False. Trigger works fine but the issue is that it runs everytime Inactive user record is updated. I only want this trigger to run when user changes from True to False. Can someone please help?
 
trigger DeactivateDate on User (before update) {

String deastat = 'User license is deactivated on ';


User us = [select Name from user where id=:userinfo.getuserid()];
string username = us.Name;


            for (User u : Trigger.new) {
            
                DateTime dt = u.LastModifieddate;
                String formattedDt = dt.format('MM-dd-yyyy @ hh:mm:ss');

            if (u.IsActive == False){
            u.Deactivated_On__c = deastat + formattedDt   + ' by ' +  username;

            }
            
            } 
            

}

 
Best Answer chosen by Che SFDC
ManojjenaManojjena
Hi SB SFDC,

Try with below code
 
trigger DeactivateDate on User (before update) {
	String deastat = 'User license is deactivated on ';
	User us = [select Name from user where id=:userinfo.getuserid()];
	string username = us.Name;
	for (User u : Trigger.new) {
		DateTime dt = u.LastModifieddate;
		String formattedDt = dt.format('MM-dd-yyyy @ hh:mm:ss');
		if (u.IsActive == False && Trigger.oldMap.get(u.Id).IsActive != False){
			u.Deactivated_On__c = deastat + formattedDt   + ' by ' +  username;
		}
	} 
}
Let me know if it helps !!
Thanks
Manoj

All Answers

ManojjenaManojjena
Hi SB SFDC,

Try with below code
 
trigger DeactivateDate on User (before update) {
	String deastat = 'User license is deactivated on ';
	User us = [select Name from user where id=:userinfo.getuserid()];
	string username = us.Name;
	for (User u : Trigger.new) {
		DateTime dt = u.LastModifieddate;
		String formattedDt = dt.format('MM-dd-yyyy @ hh:mm:ss');
		if (u.IsActive == False && Trigger.oldMap.get(u.Id).IsActive != False){
			u.Deactivated_On__c = deastat + formattedDt   + ' by ' +  username;
		}
	} 
}
Let me know if it helps !!
Thanks
Manoj
This was selected as the best answer
Che SFDCChe SFDC
Thank you Manoj. Works great.