
Andrew Hanna

Andrew Hanna

Réponse courte : placez les permission sets sous contrôle de source comme véritable source de vérité, décomposez-les pour que deux personnes puissent les modifier sans conflit de fusion, gardez les profils minces et traitez chaque déploiement de profil comme une superposition et non un remplacement complet. Ensuite, cessez volontairement de suivre ce qui dépend de l'environnement, car l'essentiel du bruit des profils dans un dépôt n'est lu par personne.
Deux comportements documentés rendent les profils différents de tout autre fichier du dépôt.
Combinez les deux et le même profil produit un diff différent selon qui l'a récupéré et ce qu'il y avait d'autre dans son paquet. Voilà pourquoi les diffs de profils sont les fichiers les plus discutés et les moins fiables de la plupart des dépôts Salesforce.
Salesforce avait annoncé le retrait des permissions dans les profils à partir de Spring '26. Le 6 juin 2026, cette application a été annulée, au motif des retours clients et de fonctionnalités encore manquantes, Salesforce continuant de recommander un modèle de sécurité mené par les permission sets (aide Salesforce).
Lecture pratique : l'échéance a disparu, la direction non. Les profils restent pris en charge, donc aucune migration précipitée, mais si vous devez choisir où investir votre discipline de gestion de sources, investissez-la dans les permission sets. Ils sont additifs, ils se décomposent et ils fusionnent.
Un permission set récupéré est un gros fichier XML listant chaque permission d'objet, de champ et d'utilisateur. Deux administrateurs travaillant sur deux champs sans rapport entrent en collision dans le même fichier. Salesforce livre un remède dans la CLI : des options de comportement de source qui découpent le fichier en un fichier par groupe de permissions (guide développeur Salesforce DX).
sf project convert source-behavior --behavior decomposePermissionSetBeta2
--dry-run.
sfdx-project.json est mis à jour pour que le
comportement s'applique à tous, et la source existante est convertie sur place.
Le même mécanisme couvre les étiquettes personnalisées, les workflows, les règles de partage et les enregistrements de services externes. Notez la lacune : les profils ne figurent pas dans la liste des types décomposables. Objets et traductions d'objets se décomposent par défaut, le reste est en bêta optionnelle, et les profils restent un seul fichier.
La moitié de la douleur est auto-infligée. Ceci a sa place hors du dépôt, ou derrière une exclusion assumée.
Écrivez ces exclusions comme une règle dans le dépôt, pas comme un savoir tribal dans l'historique CLI d'une seule personne. Une règle logée dans l'alias shell de quelqu'un casse dès la première récupération d'un nouvel arrivant.
Ne faites jamais les étapes trois et quatre dans la même release. Les changements additifs et soustractifs de permissions n'ont pas du tout le même scénario de retour arrière, et les mélanger, c'est ainsi qu'on se retrouve bloqué un lundi matin. D'autres guides d'ingénierie de release sont dans notre bibliothèque SF Guides.
Profils ou permission sets comme source de vérité ?
Les permission sets. Ils sont additifs, se décomposent en fichiers fusionnables, et Salesforce recommande un modèle mené par les permission sets. Gardez les profils pour les valeurs de base : licence, types d'enregistrement par défaut, mises en page.
Les permissions dans les profils sont-elles retirées ?
Non. Le retrait prévu pour Spring '26 a été annulé le 6 juin 2026. La migration suit désormais votre calendrier, pas une échéance.
Pourquoi mon diff de profil change-t-il alors que je n'y ai pas touché ?
Parce qu'une récupération de profil ne renvoie que les paramètres des métadonnées présentes dans la même requête. Changez le contenu du paquet et le fichier change. Corrigez le manifeste de récupération, pas le fichier.
Les profils peuvent-ils être décomposés comme les permission sets ?
Pas aujourd'hui. Les options de comportement de source couvrent permission sets, étiquettes personnalisées, workflows, règles de partage et services externes. Les profils restent un fichier, argument de plus pour les garder minces.
Sans engagement.