Salesforce-Metadaten-API: Beim Aktualisieren von FieldPermissions in PermissionSet werden andere FieldPermissions in anderen Objekten zurückgesetzt

Nov 26 2020

Wenn ich in Metadata API Version 50.0 FieldPermissions auf einem PermissionSet aktualisiere, werden die anderen FieldPermissions auf demselben PermissionSet zurückgesetzt.

Der Aufruf von updateMetatdata funktionierte in Version 30.0 ordnungsgemäß. Ich bin mir nicht sicher, in welcher Version sich das Verhalten geändert hat.

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

Vermisse ich etwas

Antworten

1 sfdcfox Nov 25 2020 at 23:50

Dies änderte sich in Version 40.0 und wurde anscheinend per E-Mail an Entwickler gesendet. Ich habe dies bereits 2017 beantwortet, als wir eine Frage dazu hatten . Sie müssen den Inhalt eines Berechtigungssatzes abrufen und neue Berechtigungen festlegen. Diese Änderung wurde vorgenommen, um die Verwaltung von Berechtigungssätzen für nicht gesperrte Pakete zu vereinfachen. Wenn Sie das alte Verhalten möchten, verwenden Sie API-Version 39.0 oder niedriger. Dies ist als Notlösung gedacht, während Sie Ihren Code / Ihre Logik aktualisieren, um das neue Verhalten zu antizipieren.