Salesforce Metadata API: ao atualizar FieldPermissions em PermissionSet, outros FieldPermissions em outros objetos são redefinidos
Na API de metadados versão 50.0, quando eu atualizo FieldPermissions em um PermissionSet, os outros FieldPermissions no mesmo PermissionSet são redefinidos.
A chamada updateMetatdata funcionou corretamente na versão 30.0. Não tenho certeza de qual versão o comportamento mudou.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://soap.sforce.com/2006/04/metadata" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="http://soap.sforce.com/2006/04/metadata">
<env:Header>
<ins0:SessionHeader>
<ins0:sessionId>XXX</ins0:sessionId>
</ins0:SessionHeader>
</env:Header>
<env:Body>
<ins0:updateMetadata>
<ins0:metadata xsi:type="ins0:PermissionSet">
<tns:fieldPermissions>
<tns:field>Receipt__c.Notes__c</tns:field>
<tns:editable>true</tns:editable>
<tns:readable>true</tns:readable></tns:fieldPermissions>
<ins0:fullName>JasminePermissionSet</ins0:fullName>
<tns:label>JasminePermissionSet</tns:label>
</ins0:metadata>
</ins0:updateMetadata>
</env:Body>
</env:Envelope>
Estou esquecendo de algo?
Respostas
Isso mudou na versão 40.0 e aparentemente foi enviado aos desenvolvedores por e-mail. Eu já respondi isso em 2017, quando tínhamos uma pergunta sobre isso . Você deve recuperar o conteúdo de um Conjunto de permissões e definir quaisquer novas permissões. Essa alteração foi feita para facilitar o gerenciamento de conjuntos de permissões em relação a pacotes desbloqueados. Se você deseja o comportamento antigo, use a versão 39.0 da API ou inferior. Isso é uma solução temporária enquanto você atualiza seu código / lógica para antecipar o novo comportamento.