function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
RarLopzRarLopz 

Show only Some Picklist Values to Certain Users in a Profile

I have a Profile with 20 users asssigned to this Profile
Custom_Picklist__c field on the Activity object has several values in it. Now, not all of these values need to be seen by all users in the profile. 

e.g User 1, User 2, User 3, User 4 should only see Val78, Val79,Val80. They  should be able to access all other values. I want to restrict rest of the users from accessing Val78, Val79,Val80.

Any way to achive this ? 
Best Answer chosen by RarLopz
AbhishekAbhishek (Salesforce Developers) 
Hi,

1.
You can accomplish this (by profile) with Apex and Visualforce, but if you want to use native capabilities you can do this with RecordTypes. you can have different pick-list values based on recordTypes and then have different users assigned different recordTypes based on their profile.
https://developer.salesforce.com/docs/atlas.en-us.salesforce_recordtypes_cheatsheet.meta/salesforce_recordtypes_cheatsheet/recordtypes_cheatsheet.htm
https://help.salesforce.com/articleView?id=customize_recordtype.htm&type=5
2.
Another method could be- set the default picklist value based on a hierarchy Custom Setting.
3. 
Deve'sc Sarilla's Validation Rule method is great if you don't mind the users seeing (and being able to errantly select the unacceptable options), but I don't think it's user-friendly to show options that will throw errors if selected/saved. So, I solved this same issue with the following approach:

     a. Copy original field "Picklist" for each profile, e.g. "Picklist_Standard_User", "Picklist_Contract_Manager", etc. 
     b. For each profile-specific picklist, only include options desired for that profile.
     c. Use Field Accessibility and/or Field-Level Security to control the visibility and/or editability of each field.
     d. Build a process that updates the other corresponding picklists when any user updates their picklist.
 
So, for example, when Standard User updates "Picklist_Standard_User", the process updates "Picklist_Contract_Manager" to an option appropriate for that user.

For your reference,

https://success.salesforce.com/answers?id=90630000000461kAAA


I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.


Thanks.
 

All Answers

Agustin BAgustin B
Hi Rar, you cant do this using profiles, it could be done with record types.
Check this link with more information and a workaround with validation rules(but the values will be shown)
https://success.salesforce.com/answers?id=90630000000461kAAA

if it helps please mark as correct, it may help others
AbhishekAbhishek (Salesforce Developers) 
Hi,

1.
You can accomplish this (by profile) with Apex and Visualforce, but if you want to use native capabilities you can do this with RecordTypes. you can have different pick-list values based on recordTypes and then have different users assigned different recordTypes based on their profile.
https://developer.salesforce.com/docs/atlas.en-us.salesforce_recordtypes_cheatsheet.meta/salesforce_recordtypes_cheatsheet/recordtypes_cheatsheet.htm
https://help.salesforce.com/articleView?id=customize_recordtype.htm&type=5
2.
Another method could be- set the default picklist value based on a hierarchy Custom Setting.
3. 
Deve'sc Sarilla's Validation Rule method is great if you don't mind the users seeing (and being able to errantly select the unacceptable options), but I don't think it's user-friendly to show options that will throw errors if selected/saved. So, I solved this same issue with the following approach:

     a. Copy original field "Picklist" for each profile, e.g. "Picklist_Standard_User", "Picklist_Contract_Manager", etc. 
     b. For each profile-specific picklist, only include options desired for that profile.
     c. Use Field Accessibility and/or Field-Level Security to control the visibility and/or editability of each field.
     d. Build a process that updates the other corresponding picklists when any user updates their picklist.
 
So, for example, when Standard User updates "Picklist_Standard_User", the process updates "Picklist_Contract_Manager" to an option appropriate for that user.

For your reference,

https://success.salesforce.com/answers?id=90630000000461kAAA


I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.


Thanks.
 
This was selected as the best answer
RarLopzRarLopz
Thanks @Augustin, @Abhishek
I made a separate record type 'Operations', and a separate page layout  'Operations Layout' for these users. 
Will assign the 'Operations Layout'  page to the record type 'Operations' 
Will chekc if I can make the Operations record type as default for these users. 
Will test and let you know. 

Thanks
Agustin BAgustin B
Hi Rar, thats great.
If it works please mark the correct answer so this question can be solved.

Good luck
RarLopzRarLopz
Certinly, i will Augustin! 
Terry GarvinTerry Garvin
The Salesforce global help-desk support and you can log a case and thier Customer Success Agents will help you solve this issue. You can also speak to them on live chat.