• Accueil / Salesforce / Mettre à jour…
, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact &#8211; Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee12 minutes de lecture


Remarque: cet article de blog a été créé à l’origine en 2018 et a été mis à jour pour faire référence à Flow Builder.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Ce billet de blog a été inspiré par le membre de la communauté Trailblazer, KC Brotherton.

Spécial S / O à Jason Teller, Salesforce Process Automation Product Management pour l’assistance sur la solution de contournement.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Plusieurs fois, les gens quittent une entreprise et vous devez mettre à jour la propriété de l’enregistrement à un utilisateur interne actif. Ce processus peut être automatisé à l’aide du flux Salesforce en créant un processus qui appelle un flux.

Facile peasy, non? Pas assez. Si le flux est appelé à partir d’une action immédiate dans le générateur de processus, lorsque le processus s’exécute, il en résultera une erreur de flux: «Le flux a tenté de mettre à jour ces enregistrements: null. Cette erreur s’est produite: MIXED_DML_OPERATION: l’opération DML sur l’objet de configuration n’est pas autorisée après la mise à jour d’un objet non configuré (ou vice versa): contact, objet d’origine: utilisateur. »

Au cours de l’été 2018, un traitement par lots plus granulaire des actions de processus planifiées et des entretiens de flux en attente a été introduit pour éviter les erreurs d’exécution lors de l’exécution d’opérations DML sur des objets standard et de configuration. Cependant, les erreurs d’exécution de flux continuent de se produire lors de l’exécution d’opérations DML sur des objets standard et de configuration dans la même transaction par lots. Pour contourner ce problème, nous utiliserons une action planifiée pour appeler le flux.

Remarque: si vous vous demandez si vous pouvez tout faire dans un flux déclenché par enregistrement. La réponse est non. Vous obtiendrez une erreur de flux lorsque vous tenterez d’exécuter le flux. Tant qu’il n’y a pas un moyen dans le flux déclenché par l’enregistrement d’interrompre la transaction pour éliminer l’opération DML mixte, vous ne pourrez pas vous en sortir avec la configuration dans un enregistrement déclenché après le flux de sauvegarde.

FLOW_ELEMENT_ERROR | Le flux a tenté de mettre à jour ces enregistrements: null. Cette erreur s’est produite: MIXED_DML_OPERATION: l’opération DML sur l’objet de configuration n’est pas autorisée après avoir mis à jour un objet non-setup (ou vice versa): contact, objet d’origine: utilisateur.

Voici quelques leçons tirées de la mise en œuvre de ce cas d’utilisation:

  • Apprenez à appeler un flux à partir d’un processus.
  • Évitez d’avoir à coder en dur les ID dans nos flux. Dans cet exemple, nous utilisons une étiquette personnalisée. Il existe des alternatives à cette conception, telles que l’utilisation d’un type de métadonnées personnalisé ou la recherche d’enregistrement de l’objet utilisateur dans le flux pour obtenir l’ID en fonction du nom de l’utilisateur. (Remarque: Les identifiants codés en dur sont une mauvaise pratique.)
  • N’effectuez pas de validation de base de données dans une boucle.
  • Fournissez des descriptions, le cas échéant, dans Salesforce. Cela peut être une étape fastidieuse, je sais, mais votre futur moi vous remerciera lorsque vous essayez de vous souvenir de ce que vous avez configuré ou d’aider d’autres / futurs administrateurs lors du dépannage ou de l’amélioration de ce qui a été construit. Cela inclut les variables, le but d’un flux, ce que fait chaque élément de flux, etc.

Cas d’utilisation métier: Addison Dogster est l’administrateur système chez Universal Containers. Mary Markle est la directrice des opérations. Elle a mentionné à Addison qu’il y a des contacts dans le propriétaire du système par des personnes qui ne font plus partie de l’entreprise. Elle aimerait que ces contacts soient attribués à un utilisateur «générique» désigné jusqu’à ce que les contacts soient attribués aux utilisateurs réels. Mary souhaite automatiser le processus d’attribution des contacts au compte utilisateur générique.

Le processus que Mary aimerait automatiser est le suivant:

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Afficher l’image en plein écran

Solution: En tant que #AwesomeAdmin qu’Addison est, elle a pu résoudre ce problème de manière déclarative en utilisant Salesforce Flow. Elle construit la première partie du processus à l’aide de Process Builder exécuté sur l’objet utilisateur et la dernière partie du processus dans Flow Builder (appelée Cloud Flow Designer dans l’illustration ci-dessous) en créant un flux. Remarque: Fast Lookup est désormais Get Records et Fast Update est désormais Update Records dans Flow Builder.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Afficher l’image en plein écran

Le résultat ressemble à ceci:

Processus créé dans Process Builder sur l’objet Utilisateur qui s’exécute lorsque le champ actif est modifié et que le champ actif est faux. Ensuite, 0 heure après la date de dernière modification, appelez le flux créé dans Flow Builder.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Ce flux effectue les opérations suivantes: (1) recherche tous les enregistrements de contact où le propriétaire du contact est l’utilisateur inactif, (2) détermine s’il y a des enregistrements dans la collection, (3) s’il existe une collection, puis prenez chaque enregistrement et faites ce qui suit: (3a) attribuer le nouvel utilisateur comme propriétaire du contact et (3b) ajouter l’enregistrement de contact à la collection à mettre à jour et enfin, en dehors de la boucle, mettre à jour tous les enregistrements de contact de la collection.

Remarque: L’action de mise à jour est exécutée À L’EXTÉRIEUR de la boucle, pas à l’intérieur. Similaire à apex, lorsque les instructions DML (insérer, mettre à jour, supprimer, restaurer) sont placées dans un for boucle, les opérations de base de données sont appelées une fois par itération de la boucle, ce qui permet d’atteindre très facilement ces limites de gouverneur. À la place, déplacez toutes les opérations de base de données en dehors de la boucle for. Il en va de même pour le flux (rappelez-vous que Salesforce traduit le flux en code dans les coulisses).

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Afficher l’image en plein écran

Étapes rapides:

1. Nous allons créer une étiquette personnalisée pour contenir l’identifiant Salesforce de l’utilisateur qui sera attribué aux contacts lorsqu’un utilisateur est désactivé *. Dans Classic, les étiquettes personnalisées se trouvent sous Créer | Étiquettes personnalisées. Dans Lightning, vous pouvez le trouver sous Interface utilisateur | Étiquettes personnalisées.

Comme mentionné ci-dessus, il existe plusieurs façons de ne pas coder en dur les identifiants dans le flux. L’étiquette personnalisée n’est qu’un des moyens. Des types de métadonnées personnalisés, effectuer une recherche d’enregistrement dans le flux fera également l’affaire. Nous ne voulons tout simplement pas coder en dur l’ID dans le flux afin de pouvoir modifier l’ID sans avoir à créer une nouvelle version du flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

2. Créons le flux. Pour ceux qui utilisent Salesforce Classic, le flux se trouve dans Créer | Flux de travail et approbations | Les flux. Dans Lightning Experience, il se trouve sous Automatisation des processus | Les flux.

A. Créons nos ressources de flux.

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert cette ressource de flux.

Créez une variable varUserId pour stocker l’ID de l’utilisateur inactif qui sera transmis par le générateur de processus en tant qu’entrée dans le flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Cette variable de collection sObject contiendra tous les enregistrements de contact qui seront mis à jour pour refléter le nouveau propriétaire du contact.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Enfin, nous allons créer une ressource de formule pour appeler l’étiquette personnalisée UserId dans le flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

B. Premièrement, nous devons effectuer une recherche pour extraire tous les contacts associés à l’utilisateur désactivé. Nous utilisons le Obtenir des enregistrements ressource, car nous extrayons une collection d’enregistrements Salesforce. Nous recherchons l’objet Contact où le OwnerId est égal au userId désactivé. Une fois trouvés, nous stockerons les enregistrements et stockerons l’ID et le OwnerId.

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert cet élément de flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>Afficher l’image en plein écran

C. Ensuite, nous allons un Décision élément de flux pour déterminer si la recherche rapide de l’étape précédente a donné lieu à des contacts. Le résultat « Trouvé » examine les éléments dans {! Lookup_contacts_ Own_by_inactive_user} (collection de Get Records) est null false. Deux négatifs équivalent à un positif, ce qui signifie que la collection a au moins un ou plusieurs enregistrements de contact.

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert cet élément de flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>Afficher l’image en plein écran

D. Nous devons maintenant créer un Boucle élément de flux afin que nous puissions parcourir chaque enregistrement de contact de la collection. Il examine la variable de collection sObject à partir de Get Records {! Lookup_contacts_own_by_inactive_user} et place chaque enregistrement de contact dans une variable de boucle {! Loop_de_loop}.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

E. Pour chaque enregistrement en boucle, dans le Affectation élément de flux, nous attribuerons le nouvel utilisateur comme propriétaire du contact. La variable est {! Loop_de_loop.OwnerId} (c’est-à-dire le champ ownerId de l’enregistrement de boucle) est égal à {! NewUser}.

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert ce flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

F. Pour chaque enregistrement de boucle, dans le Affectation élément flow, nous ajouterons l’enregistrement de contact en boucle à une nouvelle collection qui sera mise à jour. {! sCollectionUpdateContact} ajouter {! Loop_de_loop}

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert ce flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

G. Maintenant, nous devons créer le Mettre à jour les enregistrements élément flow pour mettre à jour tous les contacts dans la variable de collection sObject {! sCollectionUpdateContact}.

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert ce flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

H. Réglez votre point de départ du débit. Et connecter les éléments de flux, connecteur de résultat et connecteur de boucle pour correspondre à ce qui suit…

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

JE. Enregistrer / Enregistrer sous et fournissez les propriétés suivantes.

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert ce flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

J. Cliquez sur le bouton «Activer».

3. Maintenant, créez un nouveau processus en utilisant constructeur de processus. Dans la configuration, accédez à Créer | Flux de travail et approbations | Générateur de processus dans Salesforce Classic ou Automatisation des processus | Générateur de processus dans Lightning Experience.

A. Cliquez sur le bouton Nouveau pour créer notre nouveau processus. Complétez les informations ci-dessous et sélectionnez «Un enregistrement change».

Conseil de bonne pratique: Fournissez une description afin que vous et les autres / futurs administrateurs sachiez à quoi sert ce processus.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

B. Précisez Utilisateur comme objet, lorsqu’un enregistrement est créé ou modifié.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

C. Spécifiez le Nœud de critères. Cela doit être évalué à vrai pour qu’il s’exécute. Nous appellerons les critères «inactifs». Dans cette situation, nous allons utiliser la formule car nous ne pouvons pas spécifier la condition IsChanged avec la spécification Les conditions sont remplies. Le critère est si le champ actif de l’utilisateur est modifié ET le champ actif de l’utilisateur est faux (non coché).

Nous devons cocher la case Oui sous Avancé « Voulez-vous exécuter les actions uniquement lorsque des modifications spécifiées sont apportées à l’enregistrement. » Si ce n’est pas coché, vous ne verrez pas les actions planifiées.

EST CHANGÉ([User].C’est actif) &&
[User].IsActive = faux

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

D. Pour éviter l’action mixte DML sur les objets standard et de configuration qui se produirait si vous appelez le flux à partir d’une action immédiate, nous allons configurer une action planifiée pour qu’elle se déroule «0 heure après la LastModifiedDate».

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

Sélectionnez Flow comme action, sélectionnez le flux créé à l’étape 2. Spécifiez la variable de flux varUserId et passez dans le champ de référence [User].Id sur le flux.

, Mettre à jour un utilisateur inactif en un utilisateur actif en tant que propriétaire du contact – Blog Salesforce de Jenwlee<span class="wtr-time-wrap after-title"><span class="wtr-time-number">12</span> minutes de lecture</span>

E. Cliquez sur le bouton Activer pour activer le générateur de processus.

Maintenant, avant de déployer les modifications dans Production, n’oubliez pas de tester vos modifications de configuration.

  1. Faire d’un utilisateur le propriétaire du contact pour plusieurs enregistrements de contact.
  2. Désactivez l’utilisateur.
  3. Vérifiez que tous les contacts appartenant à l’utilisateur désactivé ont été mis à jour vers le nouvel utilisateur.

Notes / conseils de déploiement:

  • Le générateur de processus, le flux et l’étiquette personnalisée peuvent être déployés en production dans un ensemble de modifications (ou peuvent être déployés à l’aide d’un outil tel que l’instantané de Metazoa).
  • Vous trouverez le générateur de processus et le flux dans un ensemble de modifications sous le type de composant Définition de flux.
  • Activez les générateurs de processus et les flux post-déploiement lorsqu’ils se déploient inactifs dans la production, à moins qu’avec Winter ’19, vous n’ayez activé sur l’écran Paramètres d’automatisation de processus, «Déployer les processus et les flux comme actifs» REMARQUE: avec cette modification, pour déployer avec succès un processus ou un flux, les tests Apex de votre organisation doivent lancer au moins 75% du nombre total de processus actifs et de flux lancés automatiquement dans votre organisation.





Source de l’article traduit automatiquement en Français

Besoin d'aide ?
Voulez-vous utiliser Pardot à sa capacité maximale et avoir
+ DE LEADS QUALIFIÉS

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

Fermer