Отключение <userPermissions> в *.profile-meta.xml через Metadata API

Делюсь опытом работы с some.profile-meta.xml через Metadata API :slight_smile:
Не мог понять одно, почему мои отключенные permission в profile на scratch org не попадают на developer org после деплоя.

Мои шаги вроде верны:

  1. Создал новую scratch org
  2. Push на новосозданную scratch org - sfdx force:source:push
  3. Делаю изминения в profile - отключаю (снимаю галку) “Send Email”, “Mass Email”, “Allow sending of List Emails”
  4. Pull изминений c scratch org - sfdx force:source:pull
  5. Deploy на developer org sfdx force:source:deploy -u dev_name -p force-app/main/default
  6. Проверяю изминенный profile на developer org , а эти опции включены (галки стоят) …

Что я выяснил:
Когда ты отключаешь один из <userPermissions> он становиться соответственно в false , а следуя документации, через Metadata API при ретриве будут извлечены только включенные (установленные в true ) <userPermissions> - http://prntscr.com/omfhag
Т.е. в *.profile-meta.xml не будет:

   <userPermissions>
       <enabled>false</enabled>
       <name>EmailSingle</name>
   </userPermissions>
   <userPermissions>
       <enabled>false</enabled>
       <name>EmailMass</name>
   </userPermissions>
   <userPermissions>
       <enabled>false</enabled>
       <name>ListEmailSend</name>
   </userPermissions>

Соответственно после pull изминений c scratch org их там не будет.
Но вот в чем боль , эти все <userPermissions> включены на developer org и после deploy они не отключаются, так как в XML их нет установленных в false .
Даже после удаления кастомного профайла и деплоя его по новой.
Т.е. под капотом создается profile с установленными значениями по умолчанию .

В итоге:
Что бы быть на 100500% уверенным, что эти опции ( <userPermissions> ) будут от отключины в profile , нужно вручную их добавить с <enabled>false</enabled>
Это так “неочень” как по мне …

Еще одна боль в том, что не нашел полный список всех <userPermissions> для profile.
Мне пришлось их узнавать методом “тыка”.
Если кто знает, буду рад, если вы поделитесь.
В доке ссылка битая - https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm?search_text=profile

5 Likes

полный список всех <userPermissions> для profile.

Вы имеете в виду список настроек для userPermission по типу enabled и name ?

Вот какой-то список нашел. Однако не уверен что он поможет именно в xml файле, однако уже что-то.

https://help.salesforce.com/articleView?language=en_US&type=1&mode=1&id=000332385

1 Like

Нашел ещё пару интересных файлов, думаю с предыдущей ссылкой и этим файлами вы сможете решить свой вопрос.

github1

github2

Список c permission типа:
label - API Name

А то пойди догадайся какой API Name у permission с label - "Enables testing a sandbox community in the Mobile Publisher for Community Cloud app."

1 Like

Спасибо за помошь.
Вопрос был решен, но методом тыка (что мне не понравилось), для этого и создал эту тему, может кому будет полезна такая информация.

1я ссылка да, хорошая, с описанием и ссылкой на доку, но там нет главного для нас - API Name
2е последующие ссылки - к сожалению это все не полные.

Да… Методом тыка это не самое лучшее что может быть.
а за API Name обидно

Если конечно никто намеренно не менял API Name, то потребуется только расставить нижние подчерки “_” между каждым словом.
Каждый дефис заменить на “_