Where Can I set the permissions for this object? I can see the record as an admin, because of Modify All permission. As a sales user, I can see only the records which were created by me. How to extend the visibility of EmailMessage records? I couldn't find this object on OWD objects list.
2 Answers
Determine the current access with the help of UserRecordAccess object. In general, you need to enable Email to case in the Org to have access to EmailMessage Object
SELECT RecordId, HasReadAccess, HasTransferAccess, MaxAccessLevel
FROM UserRecordAccess
WHERE UserId = [single ID]
AND RecordId = [single ID] //or Record IN [list of IDs]
Create an EmailMessage record anonymously (As an admin and affected user. For affected user, you can determine access using System.runAs()in a test class) to confirm if you are seeing the same error. See sample code below
If you are running into the same issue, you need to check if you have Enhanced Email enabled
I also suggest verifing the following permissions on the affected user's profile:
'Send Email' permission is enabled.
User 'Read' access on Accounts & User has 'Read' access on Contacts
EmailMessage emailMessage = new EmailMessage();
emailMessage.status = '3'; // email was sent
emailMessage.relatedToId = '006B0000003weZGIAY'; // related to record e.g. an opportunity
emailMessage.fromAddress = '[email protected]'; // from address
emailMessage.fromName = 'Dan Perkins'; // from name
emailMessage.subject = 'This is the Subject!'; // email subject
emailMessage.htmlBody = '<html><body><b>Hello</b></body></html>'; // email body
// Contact, Lead or User Ids of recipients
String[] toIds = new String[]{'003B000000AxcEjIAJ'};
emailMessage.toIds = toIds;
// additional recipients who don’t have a corresponding contact, lead or user id in the Salesforce org (optional)
emailMessage.toAddress = '[email protected], [email protected]';
insert emailMessage; // insert
// Add Email Message Relation for id of the sender
EmailMessageRelation emr = new EmailMessageRelation();
emr.emailMessageId = emailMessage.id;
emr.relationId = '005B0000003qHvOIAU'; // user id of the sender
emr.relationType = 'FromAddress';
insert emr;
If none of the above helps, please create a support case
-
Hi @Anudeep, my user has access to see the EmailMessage records which were created by him, but not the one which was created by another user. I think it's about visibility issue. I just can't find the place where I can see the sharing model of EmailMessage, can you help ? Commented Dec 14, 2020 at 12:32
-
-
As EmailMessage has no visibility settings in the profile, I would assume it's visibility is controlled by its parent. Can you execute this query and check if the sales user has access to the ParentId Select Id, ParentId, ActivityId, Subject, IsDeleted FROM EmailMessage WHERE Id = '02s1n00000VGtPMAA1' Commented Dec 15, 2020 at 13:09
Just resolved the issue by changing the EmailMessage object "Status" field from '5' (Draft) to '3' (Sent). And the record now is visible! Not sure why drafts are visible only to their creators.