Pourquoi Salesforce fait bande à part
La plupart des CRM pris en charge par Anexus vous donnent un jeton API à coller. Pas Salesforce. L’accès à une organisation Salesforce passe par une Application Connectée — le conteneur OAuth propre à Salesforce — il n’y a donc aucune clé à générer, à copier ou à protéger. Vous cliquez sur un bouton, Salesforce vous demande votre accord, et les deux systèmes échangent des jetons en arrière-plan. Rien ne se tape.
La contrepartie : une organisation Salesforce est administrée, elle n’appartient pas à la personne qui se trouve connectée. La plupart des problèmes de connexion Salesforce n’en sont pas — ce sont des problèmes de configuration de l’organisation : une édition sans accès API, un profil auquel il manque une autorisation, une règle de validation que plus personne ne se rappelle avoir écrite, ou une connexion autorisée sur un sandbox au lieu de la production.
D’abord, sachez quelle organisation vous vous apprêtez à autoriser
Salesforce n’est pas un lieu unique. Presque tous les clients disposent d’une organisation de Production et d’un ou plusieurs Sandbox — des copies utilisées pour les tests et la formation. Ce sont des bases de données distinctes avec des connexions distinctes :
- Production se connecte sur
login.salesforce.comavec votre nom d’utilisateur habituel. - Sandbox se connecte sur
test.salesforce.com, et le nom d’utilisateur porte le nom du sandbox en suffixe —vous@entreprise.com.uatplutôt quevous@entreprise.com.
À savoir également : rafraîchir un sandbox le reconstruit à partir de la production et invalide tout ce qui avait été autorisé sur l’ancienne copie. Après un rafraîchissement de sandbox, attendez-vous à devoir vous reconnecter.
Ce qui doit être vrai dans votre organisation avant de commencer
- Une organisation Salesforce à laquelle vous pouvez vous connecter — Production, Sandbox ou Developer Edition.
- L’accès API sur votre édition. Enterprise, Unlimited, Performance et Developer Edition l’incluent. Professional Edition ne l’a que si l’option API a été achetée, et les plus petites éditions ne l’ont pas du tout. Sans accès API, aucune intégration — la nôtre comme n’importe quelle autre — ne peut écrire dans l’organisation.
- L’autorisation API Enabled sur le profil ou l’ensemble d’autorisations de la personne qui clique sur Connecter, ainsi que Créer et Modifier sur l’objet Contact. Un administrateur accorde les deux dans Configuration.
- L’application Anexus doit être installée dans votre organisation Salesforce pour permettre l’accès inter-organisations. Si vous testez dans votre propre organisation, votre administrateur (qui peut être vous) doit installer le module Anexus. Contactez-nous pour obtenir l’URL d’installation si vous êtes un client de la première heure.
- L’approbation initiale. De nombreuses organisations règlent la politique Utilisateurs autorisés de l’Application Connectée sur « Les utilisateurs approuvés par l’administrateur sont préautorisés », ce qui oblige un administrateur à affecter l’application à un profil ou à un ensemble d’autorisations avant que quiconque puisse franchir l’écran de consentement.
Connecter Anexus à votre organisation
Dans Anexus, ouvrez Paramètres → Intégrations CRM et repérez la carte Salesforce.
Cliquez sur Se connecter à Salesforce. Vous quittez Anexus et arrivez sur la page de connexion de Salesforce.
Connectez-vous avec vos identifiants Salesforce habituels — et prenez une seconde de plus pour vérifier dans quelle organisation vous vous connectez. Un nom d’utilisateur de sandbox porte le nom du sandbox en suffixe : le nom d’utilisateur lui-même est donc l’indice le plus rapide.
Salesforce affiche un écran de consentement indiquant ce qu’Anexus demande l’autorisation de faire :
- Accéder à vos données et les gérer via les API — l’autorisation
api, c’est ainsi que les Contacts sont écrits. - Effectuer des requêtes à tout moment — l’autorisation
refresh_token, pour que la synchronisation continue même lorsque personne n’est connecté.
Cliquez sur Autoriser.
Salesforce vous renvoie vers Anexus. La carte Salesforce passe à l’état vert « Connecté » en affichant l’ID de votre organisation Salesforce. Comparez cet ID avec celui figurant dans Configuration → Informations sur la société de l’organisation que vous vouliez connecter — c’est la confirmation la plus rapide qui soit que vous avez autorisé la bonne.
Lead ou Contact ? Anexus écrit des Contacts
Dans la plupart des CRM, une personne est simplement une personne. Dans Salesforce, une personne correspond à l’un de deux objets distincts, et savoir lequel a son importance :
- Lead (piste) — une personne non qualifiée, encore rattachée à rien. Les Leads restent hors de votre hiérarchie de comptes jusqu’à ce que quelqu’un les convertisse, ce qui crée un Contact, un Compte et généralement une Opportunité, puis marque le Lead comme converti.
- Contact — une personne qui a sa place dans vos données clients, normalement rattachée à un Compte.
Anexus écrit dans Contact. Chaque contact capté par Anexus devient une fiche Contact Salesforce — aucun Lead n’est créé et rien n’est converti. Si votre équipe travaille les Leads avant les Contacts, c’est une décision d’acheminement à prendre du côté de Salesforce, pas quelque chose à configurer dans Anexus.
L’écriture est un upsert basé sur le courriel
Avant d’écrire, nous cherchons dans votre organisation un Contact portant cette adresse courriel :
- Si un Contact avec ce courriel existe déjà dans l’organisation, nous le mettons à jour.
- Sinon, nous en créons un nouveau.
Cet ordre compte particulièrement dans Salesforce, car les organisations Salesforce appliquent presque toujours des règles de duplication sur l’objet Contact. Nous n’insérons jamais à l’aveugle en laissant la règle nous disputer la fiche.
Correspondance des champs : Anexus → Salesforce
En reprenant les noms d’API des champs de Salesforce, voici ce que devient un contact capté :
| Saisie Anexus | Champ Salesforce | Remarques |
|---|---|---|
| Prénom | Contact.FirstName | Champ standard. Salesforce ne l’exige pas ; un Contact s’enregistre donc même sans prénom. |
| Nom de famille | Contact.LastName | Requis par Salesforce sur chaque Contact. Si la saisie ne comporte pas de nom, Anexus envoie « Unknown » pour que la fiche puisse tout de même être enregistrée. |
| Courriel | Contact.Email | La clé de l’upsert — le champ sur lequel nous faisons la correspondance avant de décider de mettre à jour ou de créer. Une saisie sans courriel valide est ignorée, faute de correspondance possible. |
| Téléphone | Contact.Phone | Le champ standard Phone — pas MobilePhone, ni un champ téléphone ajouté par votre organisation. |
| Titre du poste | Contact.Title | Texte libre dans Salesforce, pas une liste de sélection : ce que la personne a saisi arrive tel quel. |
Rattraper les contacts captés avant la connexion
Utilisez Synchroniser les contacts antérieurs sur la carte Salesforce pour envoyer tout ce qui a été capté avant la connexion.
Une mise en garde propre à Salesforce : Salesforce comptabilise les appels d’API par organisation sur une fenêtre glissante de 24 heures, et le quota dépend de votre édition et du nombre de licences. Un rattrapage de quelques centaines de contacts est modeste face au quota d’une organisation typique — mais si celle-ci frôle déjà sa limite à cause d’un chargement de données ou d’une autre intégration qui déraille, c’est le rattrapage qui fera déborder le compteur, et Salesforce se mettra alors à refuser les appels de tout le monde. Effectuez les gros rattrapages en dehors de vos heures de pointe.
Les erreurs Salesforce et ce qu’elles signifient vraiment
Salesforce renvoie des codes d’erreur lisibles par machine, et l’état de synchronisation affiché sur la carte Salesforce transmet le code réel. Voici ceux qu’il vaut la peine de reconnaître.
« invalid_client_id » ou OAUTH_EC_APP_NOT_FOUND à l’écran de consentement
L’Application Connectée Anexus n’est pas présente dans l’organisation où vous venez de vous connecter, ou un administrateur a restreint les Applications Connectées utilisables. À noter : une application installée en Production n’existe pas dans un Sandbox à moins que celui-ci n’ait été rafraîchi après l’installation. Contactez-nous pour obtenir l’URL d’installation et transmettez-la à votre administrateur Salesforce.
Il affiche « Connecté », mais aucun Contact n’apparaît dans Salesforce
Les fiches partent peut-être dans une autre organisation. Comparez l’ID d’organisation affiché sur la carte Salesforce avec celui de Configuration → Informations sur la société dans l’organisation que vous consultez. S’ils diffèrent, cliquez sur Déconnecter dans Anexus puis reconnectez, en vérifiant dans quelle organisation vous vous authentifiez avant d’approuver. Si les ID correspondent, vérifiez la saisie elle-même : un contact sans adresse courriel valide n’est jamais envoyé, donc une entrée de test avec un courriel bidon n’apparaîtra pas.
« API is not enabled for this Organization or Partner »
Soit votre édition Salesforce n’inclut pas l’accès API, soit il manque l’autorisation API Enabled sur le profil de l’utilisateur. Les deux se corrigent uniquement dans Salesforce : un administrateur accorde API Enabled sur le profil ou via un ensemble d’autorisations, tandis qu’une limite d’édition exige que Salesforce vous vende l’option API. Il n’existe aucun contournement du côté d’Anexus.
INSUFFICIENT_ACCESS_OR_READONLY
L’utilisateur qui a autorisé la connexion voit l’organisation mais ne peut pas écrire le Contact : soit il manque Créer et Modifier sur l’objet Contact dans son profil, soit la fiche trouvée par la correspondance est une fiche que le modèle de partage de votre organisation ne lui permet pas de modifier. OAuth hérite des autorisations de la personne qui a cliqué sur Autoriser : se reconnecter avec le même utilisateur n’y changera rien. Faites corriger le profil ou l’ensemble d’autorisations de cet utilisateur par un administrateur, ou connectez-vous avec un compte disposant de Créer et Modifier sur Contact.
FIELD_CUSTOM_VALIDATION_EXCEPTION ou REQUIRED_FIELD_MISSING
Une règle de validation ou un champ personnalisé obligatoire sur Contact refuse la fiche, et le libellé que vous voyez est le texte d’erreur rédigé par votre propre administrateur — d’où son air de politique interne plutôt que de panne technique. Demandez à votre administrateur d’exempter les écritures d’intégration de cette règle, ou de donner une valeur par défaut au champ pour qu’un Contact puisse s’enregistrer sans lui.
DUPLICATES_DETECTED, ou « Use one of these records? »
Il s’agit d’une règle de duplication Salesforce qui signale la fiche. Anexus évite déjà la cause habituelle en faisant un upsert plutôt qu’une insertion — si vous voyez encore cette erreur, les règles de duplication de l’organisation bloquent même une mise à jour correspondante. Demandez à votre administrateur Salesforce de définir la politique de règle de duplication de l’application Anexus Connect sur « Allow Save ».
REQUEST_LIMIT_EXCEEDED
L’organisation a épuisé son quota d’appels d’API sur 24 heures. Ce n’est que rarement nous qui l’avons consommé — c’est généralement un chargement de données ou une autre intégration — et il n’y a rien à corriger d’un côté ni de l’autre. Le compteur repart, les contacts concernés restent en attente, et le prochain Synchroniser les contacts antérieurs les envoie.
La connexion fonctionnait, puis s’est arrêtée sans bruit
Les jetons d’accès Salesforce expirent après environ une heure et sont renouvelés automatiquement à l’aide du jeton de rafraîchissement ; l’expiration seule ne devrait donc jamais vous être visible. Un jeton de rafraîchissement cesse de fonctionner lorsque quelqu’un bloque l’application dans Utilisation OAuth des applications connectées, lorsque la politique de jeton de rafraîchissement de l’Application Connectée l’expire après une période d’inactivité, lorsque le mot de passe de l’utilisateur est réinitialisé selon certaines politiques d’organisation, ou lorsque le sandbox auquel vous étiez connecté a été rafraîchi. Cliquez sur Tester sur la carte Salesforce — en cas d’échec, déconnectez puis reconnectez.
Se déconnecter et révoquer du côté de Salesforce
Cliquez sur Déconnecter dans Anexus et nous cessons immédiatement d’écrire. Pour révoquer également l’autorisation dans Salesforce : Configuration → Utilisation OAuth des applications connectées, repérez Anexus Connect, cliquez sur Bloquer.
Les Contacts déjà écrits restent dans votre organisation. La déconnexion arrête les écritures futures ; elle ne revient pas dans Salesforce pour supprimer quoi que ce soit.
Notes pour les administrateurs Salesforce
Anexus accède à l’organisation avec les autorisations OAuth standard api et refresh_token, et ne touche que l’objet Contact. Aucune donnée ne quitte votre organisation sans le consentement explicite de l’utilisateur qui autorise. Chaque connexion d’API est vérifiable dans Configuration → Historique de connexion, filtré par Application = Anexus Connect.
Les paramètres qui déterminent si vos utilisateurs peuvent se connecter ou non se trouvent dans Configuration → Applications → Applications connectées → Gérer les applications connectées → Anexus Connect → Politiques OAuth. Trois d’entre eux comptent : Utilisateurs autorisés (tous les utilisateurs, ou uniquement ceux approuvés par l’administrateur — la seconde option exige d’affecter d’abord un profil ou un ensemble d’autorisations), Assouplissement des adresses IP (pertinent si vos profils imposent des plages IP de connexion, car les appels d’API proviennent de nos serveurs et non de vos bureaux), et la Politique de jeton de rafraîchissement — réglez-la sur une expiration après inactivité et les connexions s’éteindront d’elles-mêmes passé ce délai.
Une configuration au moindre privilège consiste en un ensemble d’autorisations accordant API Enabled ainsi que Créer et Modifier sur Contact, affecté aux personnes qui portent réellement des cartes Anexus. Rien ici n’a de raison d’impliquer Modify All Data.