Salesforce introduced a new setting under system permissions of profiles and permission sets named "View all Custom Settings". I changed this settings in all the profiles to true in my Sandbox and tried to push the profiles to the upper environments. The new setting in the destination org did not get updated. I downloaded all the profiles using data loader, I could not find the API name of this setting. Did anyone faced this before where they could not deploy a newly introduced custom setting between environments.
I was able to deploy it by including the profile in a package.xml. Retrieving just the profile(s) should bring you userPermissions which View all Custom Settings is a part of.
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>Profile Name</members> <name>Profile</name> </types> <version>48.0</version> </Package>
The retrieval included the following user permission for the profile
<userPermissions> <enabled>true</enabled> <name>ViewAllCustomSettings</name> </userPermissions>
I could then use the retrieved profile metadata and package.xml to deploy that profile successfully.
One key is to make sure your target org has Restrict access to custom settings enabled and you're using the latest API version.
Setup --> Schema Settings --> Restrict access to custom settings