As we all should know, the OOTB Salesforce way of doing manual sharing is give a user (who is typically not belonging to the same recordType) access to VIEW the record. As in below screenshot :
However , there is some user requirement where all the Case RECORDS can be seen by all divisions (division A & B).
The exceptions are that on these records, they can only see:
- Global fields that can be seen by all (e.g. Subject, Description, OwnerId)
- Division A specific fields can be seen by their own division (e.g. Div_A_Specific__c)
- Division B specific fields can be seen by their own division (e.g. Div_B_Specific__c)
- The real head-scratcher is when the user wants to share a Division A record with a user with Division B PROFILE, the Field-Level-Security (FLS) of Div_A_Specific__c field should be read-only from no visibility for that specific user
So my initial setup is like this :
- Case OWD = Private
- Case Sharing Rules: Criteria based sharing rule of Case Record Type = Division A to be shared with Division A & B (Read Only)
- Case Sharing Rules: Criteria based sharing rule of Case Record Type = Division B to be shared with Division A & B (Read Only)
- Division A Profile/permission set access : Case Record Type = Division A, Remove FLS for Div_A_Specific__c and Edit for the rest of the Case fields
- Division B Profile/permission set access : Case Record Type = Division B, Remove FLS for Div_B_Specific__c and Edit for the rest of the Case fields
- Have a custom button that will somehow update FLS for the specific user of Division B profile of Div_A_Specific__c from no visibility to read-only??
Any ideas how this can be done in a easily maintainable way?