[SalesForce] ContactAccessLevel is ‘Read’ on AccountShare object but user cannot access the contact still

I have a user who is trying to view a "Contact A" related to "Account A" and here are the settings.

  1. User has read access for the "Account A" and all the contacts related to "Account A" as per the record in AccountShare object for this user:
+--------------------+--------------------+----------+
| AccountAccessLevel | ContactAccessLevel | RowCause |
+--------------------+--------------------+----------+
| Read               | Read               | Manual   |
+--------------------+--------------------+----------+
  1. OWD setting for Contact object is "Controlled by Parent"
  2. There is no record in ContactShare object for the user but I think it does not matter because user already has read access as per ContactAccessLevel field value from the AccountShare object.
  3. I have checked this salesforce article and I am not sure it matters because user already has read access for all the contacts related to "Account A" as per the record in AccountShare object.

EDIT:

  1. I checked the UserRecordAccess and it shows MaxAccessLevel = None for the contact.
  2. Yes, user profile has Read and Edit access to Contact object.

Anything I am missing here?

Best Answer

According to the Object Reference Guide of Salesforce and Force.com the definition of the field "ContactAccessLevel" as follows:-

Level of access that the User or Group has to contacts associated with the account. The possible values are:

• None • Read • Edit

This field must be set to an access level that is at least equal to the organization’s default ContactAccessLevel. This field can't be updated via the API if the ContactAccessLevel field is set to “Controlled by Parent.” You can't update this field for the associated account owner using the API. You must update the account owner’s ContactAccessLevel via the Salesforce user interface

So the field is very much related to the sharing object model. I would like to interpret the technical specification as the Contact can be associated with the single user or we can create the group of users and associate this contact with the newly created group.

The Link - https://resources.docs.salesforce.com/204/latest/en-us/sfdc/pdf/object_reference.pdf

Related Topic