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

Salesforce: Apex Contact sharing not working
I do have an issue with sharing a contact with partner users. The objective of the trigger is that, if a partner tries to create a contact in our system and if the email he uses to create the new contact is already in a contact, then share that existing contact with the partner rather than creating new contact.
Below is trigger that I used.
The code doesn't shows any error and debug log says it created a row on contactsshare.
But when looking into the SOQL, I don't see any new rows of data being added. Any help appreciated.
Below is trigger that I used.
trigger checkContactExists on Contact(before insert) { String us = userinfo.getUserType(); String emailValue = ''; List<ContactShare> sharesToCreate = new List<ContactShare>(); if(us == 'PowerPartner' || us == 'CSPLitePortal' || us == 'CustomerSuccess' || us == 'PowerCustomerSuccess') { for(Contact c: Trigger.New){ emailValue = c.Email; list<contact> contact1 = [SELECT Id FROM contact WHERE Email =:emailValue]; if(contact1.size()>0) { for (Contact cont :contact1){ Contactshare cs = new ContactShare(ContactAccessLevel='Read', ContactId = cont.Id, userOrGroupId = UserInfo.getUserId()); sharesToCreate.add(cs); } } c.addError('Duplicate contact found with the same email. The existing contact has been shared with you.'); } } if (!sharesToCreate.isEmpty()) { //Database.SaveResult[] insertResults = Database.insert(sharesToCreate,true); insert sharesToCreate; } }
The code doesn't shows any error and debug log says it created a row on contactsshare.
:57:25.0 (49336464)|STATEMENT_EXECUTE|[20] 16:57:25.0 (49337911)|STATEMENT_EXECUTE|[22] 16:57:25.0 (49400693)|DML_BEGIN|[22]|Op:Insert|Type:ContactShare|Rows:1 16:57:25.0 (49430731)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:8 16:57:25.0 (94617974)|DML_END|[22]
But when looking into the SOQL, I don't see any new rows of data being added. Any help appreciated.