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
Jon FoyJon Foy 

Help With Trigger For Case Team...

I have the following trigger that adds a member to the case team, whenever a custom object "Case_Resource__c" is added to the Case.  The only problem is, the Resource_Name__c on the Case_Resource__c is a lookup value of the Contact object.  So when the Trigger creates a case team memeber, it is created as a Contact.  I want it to be created as a User, or Partner User.

Is there a way to update this code so that the Case Team Memeber Added is for the UserId (or Name...not sure which one) that matches the Contact Name?

trigger CaseResource_CaseTeamMemberCreation on Case_Resource__c (after insert) {
    CaseTeamRole role = [select Name from CaseTeamRole where Name = 'Team Member'];
    List<CaseTeamMember> members = new List<CaseTeamMember>();
   
    for (Case_Resource__c resource: Trigger.new) {
        if (resource.Resource_Name__c != null && resource.Case__c != null) {
            members.add(new CaseTeamMember(
                ParentID = resource.Case__c,
                MemberID = resource.Resource_Name__c,
                TeamRoleID = role.Id

           ));
        }
    }
   
    if (!members.isEmpty()) {
        insert members;
    }
   

}
Shashikant SharmaShashikant Sharma
You have to so this 
Set<Id> setContactIds = new Set<ID>();
for (Case_Resource__c resource: Trigger.new) {
        if (resource.Resource_Name__c != null && resource.Case__c != null) {
            members.add(new CaseTeamMember(
                setContactIds.add( resource.Resource_Name__c);
           ));
        }
    }

// query all portal users having this contactid
Map<Id, User> mapContactIdToUser = new Map<Id, User>();
for( User u : [ Select Id, ContactId From User Where ContactId in: setContactIds]) {
mapContactIdToUser.put( u.ContactId, u );
}

for (Case_Resource__c resource: Trigger.new) {
        if (resource.Resource_Name__c != null && resource.Case__c != null) {
            members.add(new CaseTeamMember(
                ParentID = resource.Case__c,
                // assign user id is user exists for the contact     
                MemberID = mapContactIdToUser.containsKey(resource.Resource_Name__c) ? ( mapContactIdToUser.get(resource.Resource_Name__c) : resource.Resource_Name__c ),

                TeamRoleID = role.Id

           ));
        }
    }


Let me know if you have issues.
Jon FoyJon Foy
There were a couple parenthesis issues, but after I debugged and fixed those, I'm getting the following error on this line:

members.add(new CaseTeamMember(

Error: SObject constructor must ue name=value pairs at line 8 column 25.

Any idea what that's about?  Here the full code I have now:

trigger CaseResource_CaseTeamMemberCreation on Case_Resource__c (after insert) {
    CaseTeamRole role = [select Name from CaseTeamRole where Name = 'Team Member'];
    List<CaseTeamMember> members = new List<CaseTeamMember>();
   
Set<Id> setContactIds = new Set<ID>();
for (Case_Resource__c resource: Trigger.new) {
        if (resource.Resource_Name__c != null && resource.Case__c != null) {
            members.add(new CaseTeamMember(
                setContactIds.add( resource.Resource_Name__c)));
        }
    }

// query all portal users having this contactid
Map<Id, User> mapContactIdToUser = new Map<Id, User>();
for( User u : [ Select Id, ContactId From User Where ContactId in: setContactIds]) {
mapContactIdToUser.put( u.ContactId, u );
}

for (Case_Resource__c resource: Trigger.new) {
        if (resource.Resource_Name__c != null && resource.Case__c != null) {
            members.add(new CaseTeamMember(
                ParentID = resource.Case__c,
                // assign user id is user exists for the contact    
                MemberID = mapContactIdToUser.containsKey(resource.Resource_Name__c) ? ( mapContactIdToUser.get(resource.Resource_Name__c)) : resource.Resource_Name__c ),
                TeamRoleID = role.Id

           );
        }
    }
}
Shashikant SharmaShashikant Sharma
In this : members.add(new CaseTeamMember(
                setContactIds.add( resource.Resource_Name__c)));

You have to put Field and Value for the field for instance of CaseTeamMember . Like

members.add(new CaseTeamMember(
ParentID = resource.Case__c,
                // assign user id is user exists for the contact    
                MemberID = mapContactIdToUser.containsKey(resource.Resource_Name__c) ? ( mapContactIdToUser.get(resource.Resource_Name__c) : resource.Resource_Name__c ),
                TeamRoleID = role.Id

           ));
Jon FoyJon Foy
I'm having a hard time understanding all this.  I'm not sure what code goes where :S