Salesforce Metadata API: podczas aktualizowania FieldPermissions w PermissionSet, inne FieldPermissions w innych obiektach są resetowane

Nov 26 2020

W przypadku interfejsu Metadata API w wersji 50.0, kiedy aktualizuję FieldPermissions w PermissionSet, inne FieldPermissions w tym samym PermissionSet są resetowane.

Wywołanie updateMetatdata działało poprawnie w wersji 30.0. Nie jestem pewien, w której wersji zachowanie się zmieniło.

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

Czy coś mi brakuje?

Odpowiedzi

1 sfdcfox Nov 25 2020 at 23:50

Zmieniło się to w wersji 40.0 i najwyraźniej zostało wysłane do programistów pocztą elektroniczną. Wcześniej odpowiadałem na to pytanie w 2017 roku, kiedy mieliśmy na ten temat pytanie . Musisz pobrać zawartość zestawu uprawnień i ustawić wszelkie nowe uprawnienia. Ta zmiana została wprowadzona, aby ułatwić zarządzanie zestawami uprawnień w odniesieniu do odblokowanych pakietów. Jeśli chcesz zachować stare zachowanie, użyj interfejsu API w wersji 39.0 lub starszej. Ma to służyć jako tymczasowe rozwiązanie podczas aktualizowania kodu / logiki w celu przewidywania nowego zachowania.