You need to sign in to do that
Don't have an account?

Add user to specific group when checkbox is selected - Very Very Urgent
I have one custom field "Notify me on new release" whose data type is checkbox. I want to add those user to specific group name "Alert" when user select "Notify me on new release" check. How can i achieve this?? any help will be appericiated .
try the below code
trigger addingtoAlertPublicgroup on User (after insert,after Update) {
List<GroupMember> grpMemlist = new List<GroupMember>();
Set<Id> userIdsToProcess = new Set<Id>();
Set<Id> usersToBeRemoved = new Set<Id>();
Id alertGroupId;
for(User Usr : Trigger.New){
if(trigger.isInsert){
if(Usr.Notify_me_on_new_release__c){
userIdsToProcess.add(Usr.Id);
}
}
if(trigger.isUpdate){
if(Usr.Notify_me_on_new_release__c && !trigger.oldMap.get(Usr.Id).Notify_me_on_new_release__c){
userIdsToProcess.add(Usr.Id);
}
if(!Usr.Notify_me_on_new_release__c && trigger.oldMap.get(Usr.Id).Notify_me_on_new_release__c){
usersToBeRemoved.add(Usr.Id);
}
}
}
if(!userIdsToProcess.isEmpty() || !usersToBeRemoved.isEmpty()){
List<Group> alertGroup = [SELECT Id FROM Group Where DeveloperName='Alert' LIMIT 1];
if(!alertGroup.isEmpty()){
alertGroupId = alertGroup[0].Id;
}
}
for(User Usr : Trigger.New) {
if(Usr.Notify_me_on_new_release__c && userIdsToProcess.contains(Usr.Id) && alertGroupId != null) {
GroupMember gm = new GroupMember();
gm.GroupId = alertGroupId;
gm.UserOrGroupId = Usr.Id;
grpMemlist.add(gm);
}
}
if(!usersToBeRemoved.isEmpty() && alertGroupId != null){
List<GroupMember> grpMemToBeDeleted = [SELECT Id FROM GroupMember WHERE GroupId = :alertGroupId AND UserOrGroupId IN :usersToBeRemoved];
if(!grpMemToBeDeleted.isEmpty()){
delete grpMemToBeDeleted;
}
}
if(!grpMemlist.isEmpty()) {
insert grpMemlist;
}
}
Regards,
Bhanu Mahesh
All Answers
My understanding about your question is whenever a new user creates and Notify me checkbox is true, that user automatically added to one public group right?
try the below code
trigger addingtoAlertPublicgroup on User (after insert,after Update) {
List<GroupMember> grpMemlist = new List<GroupMember>();
Set<Id> userIdsToProcess = new Set<Id>();
Set<Id> usersToBeRemoved = new Set<Id>();
Id alertGroupId;
for(User Usr : Trigger.New){
if(trigger.isInsert){
if(Usr.Notify_me_on_new_release__c){
userIdsToProcess.add(Usr.Id);
}
}
if(trigger.isUpdate){
if(Usr.Notify_me_on_new_release__c && !trigger.oldMap.get(Usr.Id).Notify_me_on_new_release__c){
userIdsToProcess.add(Usr.Id);
}
if(!Usr.Notify_me_on_new_release__c && trigger.oldMap.get(Usr.Id).Notify_me_on_new_release__c){
usersToBeRemoved.add(Usr.Id);
}
}
}
if(!userIdsToProcess.isEmpty() || !usersToBeRemoved.isEmpty()){
List<Group> alertGroup = [SELECT Id FROM Group Where DeveloperName='Alert' LIMIT 1];
if(!alertGroup.isEmpty()){
alertGroupId = alertGroup[0].Id;
}
}
for(User Usr : Trigger.New) {
if(Usr.Notify_me_on_new_release__c && userIdsToProcess.contains(Usr.Id) && alertGroupId != null) {
GroupMember gm = new GroupMember();
gm.GroupId = alertGroupId;
gm.UserOrGroupId = Usr.Id;
grpMemlist.add(gm);
}
}
if(!usersToBeRemoved.isEmpty() && alertGroupId != null){
List<GroupMember> grpMemToBeDeleted = [SELECT Id FROM GroupMember WHERE GroupId = :alertGroupId AND UserOrGroupId IN :usersToBeRemoved];
if(!grpMemToBeDeleted.isEmpty()){
delete grpMemToBeDeleted;
}
}
if(!grpMemlist.isEmpty()) {
insert grpMemlist;
}
}
Regards,
Bhanu Mahesh
trigger AddToPG on User (after insert, after update) {
List<GroupMember> GMlist = new List<GroupMember>();
for(User U : Trigger.New) {
if(U.Notify me on new release) {
GroupMember GM = new GroupMember();
GM.GroupId = '00GU0000001Zjeq';//fetch the alert group id using soql query on groups
GM.UserOrGroupId = U.Id;
GMList.add(GM);
}
}
if(!GMList.isEmpty()) {
System.debug('Group Member List is ' + GMList);
insert GMList;
}
}
Use this above code.If you have any more doubts.
Please Mark as a Best Answer if your with requirement.
Thanks
Srinivas
The only problem we are facing is when i already added user to the group as per role base, then we are unable to remove that user even deselect the checkbox "Notify me on new release"
Can you please tell me what the trigger.oldMap… code is for.