Skip to main content

#Sharing Setting2 人がディスカッション中

Hey there,  

 

I was reading the 

KB article 

on asynchronous sharing recalculation after group membership or role changes (the one about high ownership skew). It only talks about users who own hundreds of thousands of records, and it never mentions queues. 

 

My thinking is that queues probably aren't affected. A queue has no role or profile and isn't a user. But queue membership changes do update the same group tables, and a queue can own a huge number of records, so I can't rule it out. 

 

Has anyone tested this or heard it confirmed? If you've changed membership on a big queue, did you see the async recalculation show up in the Setup Audit Trail or under Background Jobs? 

 

I'm trying to figure out if our Apex tests and flows that touch queue membership need a look. 

 

Thanks! 

Mit 

 cc@Chad Good

#Release Updates Announcements  #Security  #Sharing Setting

1 件の回答
  1. 10月14日 18:58

    @Mit Chandola The KB article you read focuses on User Ownership Skew. When a User owns more than 10,000 records, their position in the sharing architecture is heavily embedded in the platform's security model. If that User changes Roles or is moved in/out of a Public Group, Salesforce must re-evaluate the sharing access for every single record they own. Because the Role Hierarchy or Owner-Based Sharing Rules might now dictate that entirely different branches of the company should (or shouldn't) see those 10,000+ records, Salesforce pushes this massive row-level update to an asynchronous background job to prevent system lockups.  

    Queues operate completely differently under the hood:

    • No Roles: Queues do not sit in the Role Hierarchy.
    • No Public Group Memberships: Queues cannot be placed inside Public Groups for the sake of Owner-Based Sharing Rules.
    • Pointer-Based Access: When a Queue owns 500,000 records, the internal [Object]Share tables do not write individual rows for every user in the queue. They simply write one pointer per record where the UserOrGroupId equals the Queue's ID.

    When your Flow or Apex adds a user to a queue, Salesforce only inserts a single row into the GroupMember table. The sharing engine dynamically looks at this table at runtime to determine who has access to the queue's contents.

    Because the underlying [Object]Share rows for the records are never actually modified or re-evaluated, there is no massive recalculation required. The group maintenance is handled synchronously and nearly instantly. You will not see an async job pop up in the Background Jobs or Setup Audit Trail for this action.

    While you don't have to worry about asynchronous sharing recalculation, you should still keep an eye out for Group Membership Skew. If your Apex or Flow is trying to add or remove members from a queue that contains tens of thousands of nested users or public groups, you could hit synchronous CPU time limits or UNABLE_TO_LOCK_ROW errors on the Group or GroupMember tables.

    As long as your queue memberships are relatively normal in size, your current automation does not need to be refactored to account for async delays. 

0/9000

Hi,

I want to create a permission set that allows those who own it to edit the profile pictures of all users.

Indeed, I looked in the object settings > user but the fields linked to the profile photo are not there.

Do you know how to do it ?

Thanks a lot for your help,

#Object Permissions #Trailhead #User Management #Sharing Setting

4 件の回答
  1. 2023年10月20日 9:24

    Hi @Julien SALENSON, 

    Thank you very much for this response.

    I don't necessarily need to modify in bulk but just allow certain users to modify the profile photos of other users (like what an administrator can already do)

0/9000
0/9000

Hi all,

my org-wide sharing is private on the opportunity.

 

Now I have created a sharing rule that share (Read/Write) opportunity with a public group.

 

I can assign to this public group using one of these profiles A or B

A is read-only on the opportunity

B is read/edit on the opportunity

 

The effect is that a user (in this pubic group) with profile A can only see the opportunities shared with the group. Instead, a user (in this pubic group) with profile B can see the opportunities shared with the group AND edit them.

 

Can you confirm?

 

I hope so!

 

Now, in case of a user with profile A (read-only) is correct he can't edit opportunities owned?

 

tks

3 件のコメント
0/9000

Introducing BRAND 🔥  *NEW* 🔥  Getting Started with Security and Access

 (Feel Free to Download)

************************************************************************************************

Salesforce provides a flexible, layered data sharing design that allows you to expose different data sets to different sets of users, so users can do their job without seeing data they don't need to see. Use permission sets and profiles to specify the objects and fields users can access. Use organization-wide sharing settings, user roles, sharing rules to specify the individual records that users can view and edit.

 

***Be sure to Check Page 2 for our complete content catalogue. Join *Answers Connect* Group, Download the File👇 and keep blazing new trails!

 

Resource Included:

1. The Organization (Login Access, IP Restrictions) (Video)

2. Restrict Where and When User can Log In to Salesforce (Article)

3. Set Trusted IP Ranges for your Organization (Article)

4. Object Permissions (Article | Video)

  • ”View All” and “Modify All” Permissions Overview (Article)
  • Comparing Security Models (Article)
  • Field Permission (Article)

5. Profiles (Article)

  • Standard Profiles (Article)
  • Manage Profile Lists (Article)
  • Clone Profiles (Article)
  • Work in the Enhanced Profile User Interface Page (Article)
  • Work with Assigned Apps in the Enhanced Profile User Interface (Article)
  • Assign Record Type and Page Layouts in the Enhanced Profile User Interface (Article)
  • Edit Object Permissions in Profiles (Article)

6. Permission Sets (Article)

  • Create Permission Sets (Article)
  • Assign Permission Sets to a Single User (Article)
  • Standard Permission Sets (Article)
  • Use Permission Set Lists (Article)

7. Sharing Settings (Article)

  • Organization-Wide Defaults (Article)
  • Sharing Rules (Article)
  • Control Access Using Hierarchies (Article)

8. Field Level Security (Article)

  • Set Field Permission in Permission Sets and Profiles (Article)
  • Set Field-Level Security for a Single Field on All Profiles (Article)

Trailhead, and more…

6 件のコメント
0/9000

Sharing Custom Object over Custom Junction Object

I have the requirement to share a record of a Custom Object "Trial" to multiple Contacts in a Community if they have a connection. The connection between the two object is a junction object called "Trial Contact".

  • As example, there are two Trials named "A" and "B"
    • Contact X of Account E should only see Trial "A" - 1 record in "Trial Contact"
    • Contact Y of Account F should see Trial "A" and "B" - 2 records in "Trial Contact"
    • Contact Z of Account G should only see Trail "B" - 1 record in "Trial Contact"

What is the best setup of relationships (lookup/master detail) to fullfill this requirement?

Thanks for any advice!

2 件のコメント
  1. 2020年11月2日 20:44
    @Jürg Steudler I haven't actually attempted this, but my first instinct is to create a lookup relationship on Trial Contact to Trial. To actually share, trigger creation/removal of Trial Share records based on the Trial Contact records created/deleted.
0/9000

A sharing question team - I have shared an App and a Dashboard on it to a user - both their Role and them directly, but they can't see it - they get the error message 

This dashboard doesn't exist, has been deleted, or you may not have access to it

User has access to Analytics Studio

What other sharing consideration do I need to look for? Thanks!

16 件のコメント
0/9000

@Admin Communities I am looking out to share Partner owned Opportunities with non-Managers inside my Org. Is it possible for an Internal User who is not a Manager for the Partner to view and edit opportunities?

I understand there is always sharing Rules because Partner users have a different line of Role Hierarchy and only roll up to a single Account Manager. 

 

I am looking out for options like default Teams and Sharing sets in community Settings. More granular sharing of data depending on partner region.

Thanks

2 件のコメント
0/9000

Happy Tuesday Trailblazers! Check out the screencast 👇 that walks you through 3 scenarios that are all related to sharing issues.

[Troubleshoot Why a User Can't See a Record: Incorrect Sharing Settings]

4 件のコメント
0/9000

I am using a Hiring Manager (permission set) on a Standard Employee (Profile),

looking to give: Create Read Edit - Access to Records of Position(custom object), such that: 

 

Only those Position Records to which the Hiring Manager has been assigned are displayed.

 

1. I have created User: Ben Holder 

2. Assigned him to Profile: Standard Employee

3. Added him to Permission Set: Hiring Manager

4. Position Object OWD set to Private. 

5. Created Role: Hiring Manager, assigned to the user above

6. I have created Position Records; logged in from Admin. 

 

However, now when I log in as Ben Holder, I can see all Position Object Records created ever!

 

Can someone help me please?

3 件のコメント
  1. 2020年5月19日 15:19

    hi Abhra,

    I think you should be clear about roles and permission sets here . As far as I have learnt on trailhead modules ( i am not a very experienced learner here) , Roles are not always clear in a company ( for the purpose of record sharing ) , so they use " groups" instead .

    Moreover , permission sets are used to give object/field level security ,not record level security !!

    Now in your situation , if a role ( of hiring manager )is explicitly defined , then please clarify if the hiring manager wants read/write access on those records only where he himself is the manager ? any other situation changes the way we define sharing rules

0/9000