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
Daniel BlevinsDaniel Blevins 

Getting error in customer community case creation due to this trigger

I am using the following trigger which should look at the case being created, make it a default admin user for the time being (for permissions), look only for WEB based bases to change the user ( which i think isn't working right either) and then add everyone with a checkbox on their contact as a case team member. However I get an error but ONLY when adding a case from our community. What about those users would mess this up?

 

trigger CaseTeamAddition on Case (after insert) {
 
  if (Trigger.isAfter){
                If (Trigger.isInsert){
                                CaseTeamRole caseTeamRole = [SELECT Id 
                                                            FROM CaseTeamRole 
                                                            WHERE Name = 'Case Update Team'
                                                            LIMIT 1];
 
                                List<Id> accountIdList = new List<Id>();
                          List<Id> caseIdList = new List<Id>();
                                For (Case currentCase : Trigger.new){
                                     accountIdList.add(currentCase.AccountId);
                                    caseIdList.add(currentCase.Id);
                                }
                          
                          User dbUser = [SELECT Id
                                                    FROM User
                                                    WHERE Alias = 'dblevins'
                                                    LIMIT 1];
                          
                          List<Case> caseList = [SELECT Id, OwnerId
                                                      FROM Case
                                                      WHERE Id IN :caseIdList
                                                      AND Type = 'Web'];
                          
                                for (Case curCase : caseList){
                                    curCase.OwnerId = dbUser.Id;
                                }
                          
                          update caseList;
                                
                                List<Contact> contactList = [SELECT Id, AccountId
                                                             FROM Contact
                                                             WHERE AccountId IN : accountIdList
                                                             AND Get_Email_Updates__c = true];
                                
                                List<CaseTeamMember> caseMembersToInsert = new List<CaseTeamMember>();
                                For (Case currentCase : Trigger.new){
                                  For (Contact currentContact : contactList){
                                     If (currentContact.AccountId == currentCase.AccountId){
                                           CaseTeamMember newMember = new CaseTeamMember(ParentId = currentCase.Id,
                                                                             MemberId = currentContact.Id,
                                                                                         TeamRoleId = caseTeamRole.Id);
                                            caseMembersToInsert.add(newMember);
                                        }
                                   }
                                }

                                if (caseMembersToInsert.size() > 0){
                                  insert caseMembersToInsert;
                                
                                }
                                                               
              }
  }                               

Best Answer chosen by Daniel Blevins
Prashant Pandey07Prashant Pandey07
Hi Daniel,

The issue could be caused by case assignment rules which were adding case teams on cases. Salesforce does not let customer users add cases teams on cases and in our case when Customer creates a Case --> Assignment Rule Fire --> Matching step has a case team assignment --> Which fails for customer users.

 

All Answers

Daniel BlevinsDaniel Blevins

This is the error I am getting

 

CaseTeamAddition: execution of AfterInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: OP_WITH_INVALID_USER_TYPE_EXCEPTION, Operation not valid for this user type: [] Trigger.CaseTeamAddition: line 51, column 1

Prashant Pandey07Prashant Pandey07
Hi Daniel,

The issue could be caused by case assignment rules which were adding case teams on cases. Salesforce does not let customer users add cases teams on cases and in our case when Customer creates a Case --> Assignment Rule Fire --> Matching step has a case team assignment --> Which fails for customer users.

 
This was selected as the best answer