• Accueil / Salesforce / Comment j’ai résolu…
, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Comment j’ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets10 minutes de lecture


Problème clé de l’entreprise :

En tant qu’administrateur d’une instance Salesforce avec un modèle de partage privé, vous vous appuyez sur l’ensemble des profils, autorisations, rôles et règles de partage pour faciliter l’accès aux enregistrements afin de répondre aux besoins de votre entreprise. Cependant, il vous a été demandé de partager et de fournir un accès à des utilisateurs individuels définis sur une base d’enregistrement par enregistrement qui ne correspond pas parfaitement à un rôle, un groupe ou une hiérarchie. Votre modèle de partage ressemble à ce qui est ci-dessous, vous devez donc trouver une solution qui permet un partage dynamique spécifique à chaque enregistrement.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Fond:

Lorsque les paramètres de partage par défaut d’un objet sont Privés, seuls le propriétaire de l’enregistrement et ceux directement au-dessus d’eux dans la hiérarchie des rôles ont accès à un enregistrement. Un accès supplémentaire peut être accordé aux utilisateurs disposant de l’autorisation Afficher tout au niveau du profil/ensemble d’autorisations ou via des règles de partage avec des rôles et/ou des groupes publics.

Bien que ces outils couvrent certainement un large éventail d’exigences de partage, il y a des moments où, en tant qu’administrateurs, nous avons besoin de pouvoir partager des données avec des utilisateurs liés à un enregistrement via une valeur de recherche de la même manière que les ensembles de partage permettent aux administrateurs d’accorder à la communauté les utilisateurs accèdent aux enregistrements où leur valeur User.ContactId est indiquée via un champ de recherche Contact.

Les administrateurs qui ne sont pas familiarisés avec les objets « partager » peuvent croire à tort que le partage géré Apex est la seule approche pour ce type d’accès dynamique aux enregistrements. Un rapide coup d’oeil à la Référence d’objet pour Salesforce et Lightning Platform révèle que pour tous les objets où le partage est disponible, il existe également un objet de partage correspondant ; par exemple, Compte, ComptePartage ; Cas, Partage de cas ; Contact, ContactShare ; et ainsi de suite, y compris pour les objets personnalisés qui ne sont pas dans une relation maître-détails. Ce sont les « tables de partage » magiques qui sont souvent abordées lors de la conception de la sécurité et du partage.

Conseil de pro : Marquez le site Référence d’objet pour Salesforce et Lightning Platform. Je l’utilise plusieurs fois par jour lorsque je conçois et planifie ; c’est extrêmement utile.

Chaque objet de partage a un champ « RowCause » qui indique la raison pour laquelle une entrée de partage existe. Il est important de noter qu’en tant qu’administrateurs, nous ne pouvons écrire dans un objet de partage que lors de l’insertion, de la mise à jour ou de la suppression d’un enregistrement dont RowCause = Manual. Armés de ces informations, nous pouvons désormais mettre en œuvre une approche évolutive et dynamique du partage d’enregistrements qui nous permet d’utiliser un seul flux lancé automatiquement pour accorder l’accès à tout objet où le partage est autorisé.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Comment je l’ai résolu :

Foundation — Création d’un flux de partage d’enregistrements d’objet unique

Pour commencer, il est utile de comprendre les mécanismes d’utilisation de Flow pour le partage dynamique d’enregistrements sur un seul objet. Nous le ferons en utilisant un flux déclenché par un enregistrement (après), déclenché lors de la création ou de la mise à jour.

1. La première étape consiste à créer un champ de recherche pour l’objet utilisateur sur l’objet que vous cherchez à partager.

Il est important de comprendre toutes les relations impliquées dans le cadre de ce processus ; par exemple, un objet qui est le côté détail d’une relation maître-détails ne peut pas être partagé puisque le partage est déterminé par l’objet parent. Cela s’applique également aux objets standard qui n’ont pas leur propre table de partage, comme les rôles de contact d’opportunité. L’accès à l’opportunité associée donne accès aux enregistrements OCR.

Pour notre exemple, j’ajoute une recherche sur l’objet de compte appelé « Recherche personnalisée » qui nous permettra de définir l’utilisateur avec lequel nous voulons partager cet enregistrement de compte.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

2. Créez votre flux déclenché par un enregistrement.

Dans mon exemple, j’utiliserai l’objet Account puisque ma recherche est là.

  • Sur l’écran « Configurer le démarrage », sélectionnez l’objet où se trouve votre recherche d’utilisateur.
  • Définissez le déclencheur du flux quand sur « Un enregistrement est créé ou supprimé ».
  • Remarque : Je ne spécifie aucun critère car j’utilise un élément Décision pour acheminer mes flux déclenchés par un enregistrement (discussion différente pour un autre blog !).

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

3. Construisez le reste de votre flux (détails ci-dessous).

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Devons-nous d’abord supprimer un ancien partage ?

  • La décision « Valeur antérieure mise à jour ou effacée » détermine si nous devons supprimer le partage d’enregistrement manuel associé à un utilisateur/une valeur antérieure dans notre champ de recherche personnalisé. Si la valeur précédente était vide ou non modifiée, elle passe à l’élément de décision suivant ; si la valeur précédente a été effacée ou modifiée, elle se dirige vers le chemin « Oui, c’était ».
  • Cette décision vérifie si la valeur a été effacée (1 et 2) OU si la valeur actuelle est différente de la valeur précédente après avoir confirmé que la valeur précédente n’était pas nulle (2 et 3 et 4).
  • Le chemin « Yes it Was » envoie le flux dans une étape « Get Old Share », où l’utilisation de la valeur $Record.ID et $RecordPrior.Custom_Lookup__c pour trouver un partage où RowCause = « Manual. S’il en trouve un, nous le supprimons, puis nous poursuivons notre flux en revenant à notre décision « Nouvel utilisateur peuplé ».

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Avons-nous besoin de créer un nouveau partage manuel ?

  • La décision « Nouvel utilisateur peuplé » détermine si nous devons créer un nouveau partage d’enregistrement en examinant la valeur actuelle de $Record.Custom_Lookup__c par rapport à ses valeurs $RecordPrior.
  • Cette décision vérifie si la valeur était vide avant et maintenant remplie (1 et 2) OU si la valeur actuelle est différente de la valeur précédente après avoir confirmé que la valeur précédente n’était pas nulle (2 et 3 et 4).
  • La branche « Oui, nouvel utilisateur » envoie le flux à notre chemin de création ; sinon, nous laissons le résultat par défaut mettre fin au flux.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Création de notre nouveau partage manuel

  • Nous vérifions toujours si un enregistrement existe avant d’en créer un, pas seulement avec les tables de partage. En général, c’est la bonne façon d’aborder l’automatisation de la création d’enregistrements. Nous le faisons dans notre flux via l’étape « Vérifier l’accès existant » Obtenir les enregistrements où nous recherchons un enregistrement de partage pour cette combinaison $Record.Id & $Record.Custom_Lookup__c où RowCause = « Manual ».
  • Notre prochaine décision détermine si un enregistrement a été trouvé ; sinon, nous le créons.
  • S’il en a trouvé un, nous vérifions si l’accès correct se trouve sur l’enregistrement de partage existant ; sinon, nous en créons un nouveau. Exemple : Un utilisateur dispose d’un accès en lecture seule via le partage manuel, mais notre flux souhaite lui accorder la lecture/écriture.
  • Fait amusant : lors de l’insertion d’un enregistrement de partage pour un utilisateur qui en a déjà un, l’enregistrement existant sera mis à jour, il n’est donc pas nécessaire d’avoir une étape de mise à jour distincte !

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Maintenant que nous avons établi nos bases, en utilisant un champ de recherche utilisateur pour partager dynamiquement des enregistrements via Flow, il est temps de transformer cela en un outil multi-objets qui peut être étendu en permanence !

Création d’un flux de partage d’enregistrements multi-objets

Maintenant que nous connaissons les mouvements impliqués dans le partage manuel d’enregistrements avec Flow, nous devons simplement apporter quelques modifications pour le mettre à l’échelle de manière appropriée.

1. Créez des champs de recherche.

Créez des recherches personnalisées pour l’objet Utilisateur sur tous les objets pour lesquels vous souhaitez utiliser le partage d’enregistrement dynamique avec Flow.

2. Créez un flux lancé automatiquement.

Créez un nouveau flux avec le type « Lancé automatiquement ».

Déplacement professionnel total : Dans le flux ci-dessus, sélectionnez Enregistrer sous, ensuite un nouveau flux en haut de l’écran suivant, et sous « Afficher avancé », vous pouvez l’enregistrer en tant que flux lancé automatiquement. Vous devrez mettre à jour toutes nos références $Record et $RecordPrior, mais c’est utile !

3. Ajoutez vos variables.

Créez quatre variables de texte pour prendre en charge notre flux :

  • CurrentUser — saisissez du texte, une valeur unique, disponible pour la saisie
  • PriorUser — saisissez du texte, valeur unique, disponible pour la saisie
  • ObjectName — saisissez du texte, une valeur unique, disponible pour la saisie
  • RecordId — tapez du texte, une valeur unique, disponible pour la saisie

4. Créez le flux.

Construire le flux à partir de la fondation étape ci-dessus pour chaque objet pour lequel vous avez créé un champ de recherche à l’étape 1. Vous pouvez copier et coller la branche. Notez simplement que vous devrez mettre à jour les étiquettes d’étape, les noms d’API et les références d’objet pour les faire fonctionner correctement (je me rends compte vous n’avez pas besoin de mettre à jour les étiquettes et les noms d’API… mais allez, faites-le !).

5. Ajoutez un élément Décision directement après le début.

Déterminer l’objet défini dans la variable ObjectName et l’envoyer à la branche Flow spécifique à l’objet actuelle créée à l’étape 4.

Dans mon exemple ci-dessous, j’ai trois objets : Accounts, Opportunities et un ExampleCustomObject. La décision initiale vérifie la variable ObjectName, puis l’achemine vers la branche appropriée.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

6. Appelez votre flux de partage à partir d’un flux déclenché par un enregistrement.

Si vous avez un flux déclenché par un enregistrement existant sur un objet, ajoutez-le à cela ; sinon, créez un nouveau flux déclenché par un enregistrement pour chaque objet que vous souhaitez partager. Puisque nous voulons que nos flux déclenchés par enregistrement soient évolutifs, j’ignore tous les critères d’entrée initiaux et j’utilise des éléments de décision pour déterminer si un certain chemin doit être suivi.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Dans l’exemple ci-dessous, mes critères vérifient les conditions suivantes :

  1. L’enregistrement est nouveau et la recherche est remplie.
  2. La valeur précédente est vide et est maintenant renseignée.
  3. La valeur précédente n’est pas vide et la valeur actuelle est vide.
  4. Les valeurs précédentes et actuelles ne sont pas vides mais sont différentes.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Nous appelons ensuite notre sous-flux, en définissant nos variables d’entrée comme indiqué ci-dessous.

, Comment j&rsquo;ai résolu ce problème : partager dynamiquement des enregistrements pour plusieurs objets<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Résultats commerciaux :

En vous appuyant sur ces compétences #AwesomeAdmin, vous avez créé un flux multi-objets qui gère le partage dynamique entre plusieurs objets via un champ de recherche convivial. Votre équipe peut rapidement accorder l’accès à d’autres utilisateurs tout en mettant à jour leurs enregistrements et sans avoir à se soucier du partage manuel. Les utilisateurs et la direction sont ravis que l’extension de l’outil à des objets supplémentaires soit une tâche rapidement réalisable, leur permettant de se concentrer sur leurs rôles plutôt que d’essayer d’accorder aux membres de leur équipe l’accès aux données.

Essayez ceci à la maison

Économisez les ressources

le Guide de référence des objets mentionné au début de cet article est quelque chose que tous les administrateurs, développeurs, consultants, etc. devraient avoir mis en signet. Je reçois souvent des questions de collègues dont je sais qu’il est possible de répondre en parcourant cet outil, donc un sourire narquois et un « Je parie que vous avez les outils pour comprendre celui-ci » est une réponse assez standard au bureau.

Sous-le

La possibilité de créer des sous-flux à partir de flux déclenchés par des enregistrements a été fournie dans Winter ’22 (désolé, Process Builder… nous rompons officiellement maintenant). Vous devez essayer de créer votre version à l’aide de flux déclenchés par un enregistrement appelant le flux de partage multi-objets en tant que sous-flux.

Ressources

Vous voulez voir plus de bonnes choses? Abonnez-vous à notre chaîne !

INSCRIVEZ-VOUS AUJOURD’HUI



Source de l’article traduit automatiquement en Français

Besoin d'aide ?
Vous utilisez Pardot depuis un certain temps mais vous n'êtes pas sûr d'en
exploiter tout le potentiel

Notre analyse de votre Pardot offerte dès aujourd'hui
Merci, vous pouvez compléter notre questionnaire
Nous allons revenir vers vous rapidement !

Fermer