API de métadonnées Salesforce: lors de la mise à jour des FieldPermissions sur PermissionSet, les autres FieldPermissions sur d'autres objets sont réinitialisées

Nov 26 2020

Sur l'API de métadonnées version 50.0, lorsque je mets à jour FieldPermissions sur un PermissionSet, les autres FieldPermissions sur le même PermissionSet sont réinitialisés.

L'appel updateMetatdata a fonctionné correctement sur la version 30.0. Je ne sais pas quelle version le comportement a changé.

<?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>

Est-ce que je manque quelque chose?

Réponses

1 sfdcfox Nov 25 2020 at 23:50

Cela a changé dans la version 40.0 et a apparemment été envoyé aux développeurs par e-mail. J'avais déjà répondu à cela en 2017 lorsque nous avions une question à ce sujet . Vous devez récupérer le contenu d'un jeu d'autorisations et définir de nouvelles autorisations. Cette modification a été apportée pour faciliter la gestion des ensembles d'autorisations par rapport aux packages déverrouillés. Si vous voulez l'ancien comportement, utilisez la version d'API 39.0 ou inférieure. Ceci est conçu comme une solution provisoire pendant que vous mettez à jour votre code / logique pour anticiper le nouveau comportement.