DocuSign eSignature pour Salesforce : Boutons URL pour Mobile et Lightning - configuration / limitations

Introduction

Pour diverses raisons de sécurité, Salesforce Lightning n’autorise plus les boutons JavaScript. Nous ne pouvons donc plus utiliser nos boutons personnalisés JavaScript standard. À partir de DFS 7.0, nous offrons désormais un constructeur de boutons personnalisé qui est une excellente alternative, même s’il existe actuellement des limitations à ce constructeur, mais que le code peut résoudre.

Installation

Pour créer un nouveau bouton d’URL, vous pouvez suivre les premières étapes de l’article suivant, mais l’ajout à la présentation et ce qui suit ci‑dessous seront les principales différences : https://support.docusign.com/fr/articles/How-to-Create-a-SalesForce-Custom-Button

Image ajoutée par l’utilisateur

*La source de contenu doit être URL, la sélection relative au Comportement peut être comme vous le souhaitez, cependant si vous utilisez un mobile, l’option ci‑dessus sera la meilleure.

Exemple de code

Exemple 1 :
{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope', null, [
SourceID = Opportunity.Id,
CCRM = 'Decision Maker~Signer 1',
CCTM = 'Decision Maker~Signer',
DST = 'a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e',
LA = '0',
LF = '0',
OCO = 'Tag'
]
)}

Ici, nous utilisons le format URLFOR car cela sera requis à partir de la version 7.0 et plus. Nous avons avec cette méthode tous les paramètres contenus dans un tableau ou une liste séparée par des virgules entre crochets. Nous pouvons utiliser tous les mêmes paramètres DocuSign qu’avec JavaScript. Cela comporte certaines limites et quelques mises en garde :
  • Certains champs de fusion, comme les champs de liste déroulante, ne peuvent pas être utilisés dans ce tableau mais la méthode suivante vous montrera comment le faire.
  • Les champs de fusion dans la fonction URLFOR (tout ce qui se trouve entre accolades) sera simplement Object.Field, et non pas le {!Object.Field} habituel. Vous remarquerez dans l’exemple ci‑dessus que nous avons « SourceID = Opportunity.Id ».


Exemple 2 :
{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope', null, [SourceID=Opportunity.Id])}
&DSEID=0&LA=0&LF=0&OCO=&CEM=Please+sign+for+{!Opportunity.Name}&DST={!Opportunity.Template_GUIDS__c}&CCRM=Decision+Maker~Signer+1

Ici, la différence est que nous ajoutons les paramètres en dehors du tableau et en dehors de la fonction URLFOR (en dehors des accolades) et les ajoutons comme paramètres de requête qui seront ajoutés à la fin de l’URL pour transmettre ces valeurs à nos classes APEX DFS.
  • Dans cet exemple, j’ai fait une liste de sélection pour les identifiants de modèle et ceci n’est pas supporté dans le tableau (Erreur : le champ Opportunity.Template_GUIDS__c est un champ de liste de sélection. Les champs de liste de sélection ne sont pris en charge que dans certaines fonctions).   
  • Remarquez que nous allons maintenant utiliser des accolades autour des champs Salesforce tels que {!Opportunity.Template_GUIDS__c}
  • Vous remarquerez aussi que nous ne faisons qu’enchaîner tous les paramètres, ne les séparons qu’avec & et n’utilisons pas de guillemets simples, ceux‑ci ne sont pas utilisés à l’extérieur d’URLFOR
  • Dans les valeurs des paramètres en dehors de la fonction URLFOR, une bonne pratique consiste à mettre des signes plus plutôt que des espaces, bien que la plupart des navigateurs le fassent automatiquement si nous ne le faisons pas.


Exemple 3 : héberger en personne ~ signer maintenant :
{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope', null, [
SourceID = Opportunity.Id,
DSEID = '0',
CRL = 'Email~' + User.Email + ';FirstName~' + User.FirstName + ';LastName~' + User.LastName + ';SignInPersonName~Signer Name;SignNow~1;RoutingOrder~1;Role~Client1,Email~' + User.Email + ';FirstName~' + User.FirstName +';LastName~' + User.LastName + ';SignInPersonName~Signer Two;SignNow~1;RoutingOrder~2;Role~Client2',
OCO = 'Send',
CCTM = 'Client1~Host in person - sign now;Client2~Host in person - sign now', 
CCRM = 'Client1~Client1;Client2~Client2',
LF = 1
]
)}

Il s’agit d’un cas d’utilisation assez courant où le client veut pouvoir cliquer sur un bouton et démarrer une session de signature en personne directement dans son navigateur ou dans l’application mobile.
  • Les aspects importants ici sont le CRL et le CCTM, car pour faire en sorte que le « signer maintenant » fonctionne, nous devons nous assurer d’utiliser le nom et l’adresse e-mail exacts de l’utilisateur Salesforce actuel, d’où l’utilisation de champs comme User.Email. Pour CCTM, les rôles doivent être mappés exactement comme « Host in person - sign now »
  • Ce bouton fonctionne sur l’application mobile Salesforce à partir de la version 7.0, mais en raison de certaines limitations de l’application mobile, nous devons contourner la page Visualforce et l’étiqueteur, ce qui explique pourquoi nous avons OCO = 'Send'. La page Visualforce sur mobile a une fonctionnalité très limitée et elle ignore tout paramètre et réglage personnalisés. L’étiqueteur n’est pas non plus très bien optimisé pour mobile, et il est donc recommandé de ne faire fonctionner le workflow qu’en un seul clic et d’envoyer une option pour contourner tous ces problèmes. Les destinataires doivent être automatiquement ajoutés, les tags doivent être auto‑disposés ou ajoutés en utilisant un modèle, et tout le reste doit être fait en utilisant le code du bouton.
  • L’hôte de la session de signature en personne devra s’assurer que son e-mail Salesforce correspond à son e‑mail DocuSign, sinon nous ne pourrons pas aller directement au « sign now » et lui demanderons à la place, de commencer la session de signature via son e‑mail.
  • À partir de la version 7.0.1, nous aurons un paramètre dans l’objet DocuSign Admin pour permettre la signature en personne séquentielle pour que ce problème avec des signataires multiples puisse fonctionner avec l’application mobile SF ou un navigateur, sans quitter Salesforce.

Ajouter à la présentation pour une utilisation Lightning et mobile

Le bouton sera en fait ajouté dans une section de présentation différente de celle des boutons Classic, voyez comment accéder dans Classic et Lightning à la page d’édition des présentations et, à partir de là, comment ajouter des boutons.

Dans Salesforce Classic :
À partir de l’objet auquel vous ajoutez le bouton, accédez à n’importe quel enregistrement et sélectionnez « Modifier la présentation » :
Image ajoutée par l’utilisateur

Dans Salesforce Lightning :
Image ajoutée par l’utilisateur

 


Ajouter à la page Présentations dans Classic et Lightning

A partir d’un enregistrement, cliquez sur l’icône de configuration dans le coin supérieur droit de la page > sélectionnez « Modifier l’objet » > sélectionnez « Présentations de page » > sélectionnez la présentation que vous souhaitez mettre à jour > ceci devrait vous amener à la même page d’édition que vous voyez dans Classic.


Image ajoutée par l’utilisateur
  1. Cliquez sur « Actions mobiles et Lightning »
  2. Trouvez votre nouveau bouton URL
  3. Faites défiler jusqu’à la section « Actions de Salesforce mobile et de Lightning Experience »
  4. Glissez‑déposez le bouton dans la section « Actions de Salesforce mobile et de Lightning Experience ».
  5. Cliquez sur « Enregistrer » et revenez à votre enregistrement Salesforce.

Limites connues

  • Il est impossible d’utiliser la logique JavaScript comme les instructions if-else ou for-loops ou d’utiliser des variables déclarées. Celles‑ci doivent être faites en dehors du code du bouton, par exemple dans un champ de formule sur l’enregistrement ou via un composant personnalisé ou un déclencheur.
 

En savoir plus

  • Guide de configuration des boutons personnalisés