Social Icons

vendredi 15 mars 2013

Comment déployer Chatter Answers dans un portail client ?


Qu'est ce que Chatter Answers (ou Réponses Chatter) ?
Chatter Answers permet de créer et d'animer une communauté en favorisant les échanges entre vos clients, vos prospects et vous.

Concrètement, Chatter Answers permet à votre communauté de chercher parmi les questions des membre et les articles que vous avez publiés et de poser des questions auxquelles les membre de la communauté et le Support apportent des réponses. Cette fonctionnalité permet d'avoir un point d'entrée unique entre les articles Knowledge, les questions de la communauté et les réponses de la communauté et du support.

Pour en savoir plus, la vidéo de Salesforce sur le sujet :



Nous allons voir ici comment déployer Chatter Answers sur le portail client, donc uniquement pour des clients déjà connectés via le portail.

1ère étape : Activer Chatter Answers (ou Réponses Chatter mais je préfère pour ma part le terme anglais)

Dans Personnaliser | Réponses Chatter | Paramètres :
Cocher : Activer Réponses Chatter et Activer Réponses Chatter dans les portails

2 ème étape : Configurer le portail client pour Chatter Answers
Dans Personnaliser | Portail client, activer un portail ou modifier un portail existant (cliquer sur le nom du portail) puis cliquer sur Personnaliser les onglets du portail, ajouter Réponses Chatter aux onglets du portail :

3 ème étape : Personnaliser les profils de votre portail pour qu'ils accèdent à Chatter Anwers :
- Ajouter l'onglet  Réponses Chatter
- Vérifier que les permissions sur l'objet Questions sont bien Lecture / Ecriture :

4ème étape : Définir tous les utilisateurs comme Utilisateur Chatter Answers
Cocher pour tous les utilisateurs l'option Utilisateur de Réponses Chatter :

Pour finir, tester :

mercredi 13 mars 2013

Comment vérifier le format d'un SIREN dans Salesforce ?

Le SIREN est un identifiant permettant d'identifier les entreprises françaises. Il est basé sur l'algorithme de Luhn, comme décrit ici.

Sur Salesforce, on peut vérifier l'algorithme de Luhn avec une règle de validation :


La source de cette formule peut être récupérée ici.

vendredi 20 avril 2012

10 astuces pour être plus efficace dans la configuration de Salesforce

Salesforce heroAvec trois versions majeures par an (Winter, Spring et Summer), le nombre d'évolutions sur Salesforce est considérable. Comment être efficace dans le menu de configuration ?

Voici quelques astuces pour naviguer rapidement dans le menu d'administration de Salesforce :




1. Utiliser le Menu d'accès rapide




Depuis la Winter 12, sur (presque) chaque objet un menu contextuel sur la droite permet d'accéder rapidement à la configuration. Il peut être activé sur la fiche utilisateur en cochant la case Menu d'accès rapide Force.com


2. Avec le lien Modifier la présentation en haut des pages

Ce lien permet d'accéder en un clic à la modification de la présentation de page courante (très pratique, surtout si vous avez plusieurs présentations de page sur l'objet).



3. Utiliser la recherche dans le menu de configuration


Menu d'accès rapide à la configuration de Salesforce
Ce menu me sauve la vie, surtout lorsque je fais des démos !

4. Utiliser les vues dans le menu d'administration
Les vues sont disonibles sur les Workflows, les Workflows d'approbation, les actions de Workflow, les étiquettes personnalisées, les pages et les classes, etc. Elles permettent de filtrer par objet, par nom et deviennent très pratiques pour les organisations ayant beaucoup d'objet et de customisation.
vue sur les workflows dans Salesforce

vue sur les workflows dans Salesforce - résultat

5. Utiliser les vues avancées sur les profils pour afficher les permissions et les modifier en masse
Par exemple, quels sont les permissions sur les Requêtes de mes profils ?
Sur la vue de profil, il est possible de sélectionner l'ensemble des permissions :

Personnaliser les vues de profils dans Salesforce
Vues de profils avancés dans Salesforce

A partir de la vue de profil avancé, il est possible de modifier en masse les permission.

Pour activer les vues de profil avancées, aller dans Personnaliser | Interface utilisateur, dans la section Configuration cocher la case Activer les vues de liste de profil avancées.

6. Utiliser la recherche générale pour rechercher les utilisateurs
Pour les utilisateurs, il est possible d'utiliser aussi les vues, mais pour rechercher un utilisateur en particulier, je trouve qu'il est beaucoup plus simple de faire d'utiliser la recherche classique.

Si vous utilisez Chatter, la recherche générale se situe dans le menu supérieur même lorsque vous êtes dans la partie Administration :
Sinon, retourner dans la partie application en cliquant sur n'importe quel onglet puis effectuer la recherche depuis le menu latéral.

7. Utiliser la recherche de type de rapport
Lors de la création de rapports, utiliser la recherche pour trouver plus rapidement le type souhaité :
Utiliser la recherche de type de rapport dans Salesforce

8. Créer des favoris pour les menus les plus utilisés : taper Ctrl+D et pour ajouter une page en raccourci dans le navigateur.

9. Créer des liens vers les menus fréquemment utilisés sous forme d'une page Visualforce contenant des liens

10 Utiliser des plugins Greasemonkey installés dans le navigateur pour transformer le menu d'administration
Notamment celui ci qui permet d'ajouter un menu pour les objets personnalisés :
Menu objet personnalisé avec Greasemonkey

jeudi 19 avril 2012

Comment utiliser Cloud Deploy pour déployer les évolutions ?

La bonne pratique est de développer les nouvelles fonctionnalités sur un environnement de test appelé Sandbox.
Salesforce impose (pour sécuriser les applications) de réaliser les développements Apex sur la Sandbox.
Il est vivement recommandé de réaliser toutes les évolutions sur la sandbox (paramétrages et développements), de les tester, de vérifier qu'elles correspondent au besoin puis de les migrer sur la Production.


Il existe plusieurs outils pour faire migrer la configuration : les packages Appexchanges "privés" (ancêtres du cloud deploy), Eclipse, Ant et les packages "Cloud Deploy". C'est cette méthode qui est selon moi la meilleure et de loin, c'est celle que je présente donc dans cet article au travers d'un exemple : l'ajout de champ sur compte.

Toutes les manipulations sont effectuées depuis le menu : Configuration | Déployer

1. Autoriser les modifications entrantes
Depuis la production, aller dans Connexions de déploiement cliquer sur le Modifier à gauche de la Sandbox test et cliquer sur "Autoriser les modifications entrantes" (la seule case non grisée en fait) et enregistrer.


2. Créer le package
Depuis la Sandbox, aller dans le sous-menu Ensemble de modification sortant et cliquer sur Nouveau pour créer le package  :



Dans les Composants de l'ensemble de modification, cliquer sur Ajouter puis sélectionner le type de composant : Champ personnalisé, naviguer dans la liste des champs grâce aux lettres puis sélectionner le champ à migrer et cliquer sur Ajouter à l'ensemble de modifications.


Répéter la même opération pour ajouter la ou les présentation(s) de page de compte sur laquelle apparaît le champ. (Si on n'ajoute pas la présentation de page le champ n'apparaît pas et il faut le rajouter manuellement.)

Cliquer ensuite sur Ajouter des profils dans la liste associée Paramètres de profil pour des composants inclus et sélectionner tous les profils :
L'ajout de profils permet de migrer les permissions associées aux composants du package et ces permissions là uniquement et de les ajouter aux profils existants sans modifier les autres éléments. Le matching se fait sur le nom du profil. Dans cette exemple, nous ajoutons les droits au niveau du champs aux profils existants (les Field Level Security). Sans cette étape, le champ est créé non visible pour tous les profils.


3. Charger le package
Cliquer sur Charger et sélectionner l'environnement Production.


3. Déployer le package
En production, aller dans Ensemble de modifications entrant et cliquer sur le package (il peut mettre plusieurs minutes à être disponible). Cliquer sur Déployer. Une fenêtre "Déploiement en cours" s'affiche, puis le résultat du déploiement :



Le déploiement peut être assez long surtout si vous avez du code Apex sur votre environnement, car tous les tests unitaires sont exécutés lors du déploiement.


Quels peuvent-être les causes d'échecs de déploiement ?

  • Echec des tests unitaires
  • Référence à un composant absent (par exemple un champ de la présentation de page n'est ni dans l'instance cible ni dans le package)
Il est possible de Valider le package pour s'assurer qu'il est correct avant le déploiement proprement dit.

En cas d'échec, le package d'origine doit être cloné c'est pourquoi il est utile d'ajouter un versionning dans le nom du package.

Que peut-on migrer avec les packages Cloud-Deploy ?

Pratiquement tout, Cloud deploy gère l'ajout et la modification de (liste non exhaustive) :
- Champs, présentation de page, règles de validation
- Règles et actions de workflow
- Documents
- la traduction (appliquée uniquement aux éléments du package)
- les rapports, types de rapports et les tableaux de bords
- les développements (Visualforce, Apex)
- les vues
- les composants et présentations de page d'accueil

Quelles sont les limitations des packages Cloud Deploy ?

Pour la version Spring 12, cela est je pense amené à évoluer car depuis la sortie de Cloud Deploy (en version Beta en Summer 10 si je me souviens bien), la liste des éléments packageables s'est considérablement aggrandie :

- les suppressions (de champs, de règles de validation, de Workflows, de classes, etc etc) : le cloud deploy fonctionne en ajout/modification uniquement
-> Pour les suppressions, je vous recommande de désactiver (ou cacher) via le Cloud Deploy puis de faire une opération de suppression post-déploiement une fois que l'on est sûr que le déploiement est un succès. Cette technique permet de faciliter un éventuel retour arrière.

- les permissions de profil : concernant les profils, seuls les éléments liés aux composants du package sont migrés.
- les valeurs de liste de sélection de champs standards puisque l'on ne peut migrer que les champs personnalisés
- les renommages de champs ou onglets standards
- les workflows d'approbation (hélas !)
- les suppressions de valeurs dans les champs de type picklist
- les filtrages des valeurs de picklist par type d'enregistrement (même lorsque l'on ajoute le type d'enregistrement dans le package). Sur les objets ayant des types d'enregistrement il sera nécessaire d'aller associer manuellement les valeurs par type d'enregistrement


Peut-on désinstaller un package installé par Cloud Deploy ?
La réponse est Non, c'est pourquoi en cas de déploiement impactant il est conseillé de lister précisément tous les composants du déploiement pour être capable de revenir en arrière manuellement.
Avant de déployer, lancer une copie de l'environnement sur une autre sandbox si vous en avez une pour garder une trace de la configuration avant déploiement ou a défaut faire une sauvegarde des Meta-données sur Eclipse par exemple.
Il peut être utile d'avoir une procédure écrite de retour arrière.
Il est aussi recommandé d'écrire une procédure de déploiement contenant l'ordre des actions (déploiement, actions manuelles à la marge, chargements de données) 

mardi 17 avril 2012

Comment mettre à jour sa Sandbox ?


Quelles sont les types de Sandbox ?

Sur Salesforce (versions Enterprise, et Unlimited), il existe trois types d'environnements de tests appelés Sandbox (bac à sable) :
  • Intégrale (ou full copy) : contient les données + la config
  • Config uniquement : contient la configuration uniquement (y compris tous les utilisateurs de votre production)
  • Developer  : contient la configuration uniquement (à ne pas confondre avec la version Developer Edition qui elle n'a aucun lien avec votre environnement de production et qui est un environnement de test personnel)
Dans la version Enterprise Edition, une sandbox Developer est incluse et dans la version Unlimted Edition, une sandbox intégrale est incluse. Il est possible d'acheter des sandbox supplémentaires.

Comment avoir une Sandbox à jour et prête pour les développements ?

1. Rafraîchir
Pour mettre à niveau la sandbox à partir de la production, rien de plus simple, il suffit de la Rafraîchir (attention, cela écrase les développements en cours ET les données).

Dans la configuration, aller dans Configuration de l'administration | Gestion des données | Sandbox puis cliquer sur Actualiser ou Nouvelle version Sandbox


Remarques : 
  • Le rafraîchissement est possible uniquement de la production vers la sandbox.
  • Une Sandbox Intégrale peut être rafraîchie tous les 29 jours, pour une Developer ou une Config c'est tous les jours
  • Le rafraîchissement d'une sandbox Intégrale est en général assez long (plusieurs heures)
La Sandbox est à l'image de votre production au moment du rafraîchissement, par la suite ce sont deux environnements qui vivent de manière totalement indépendantes. Les modifications faites sur l'un n'affecte pas l'autre.

L'objectif est de faire les modifications sur la sandbox puis de les reporter sur la production afin de garder les environnements au même niveau.

2. Se connecter à la Sandbox
Pour se connecter à la Sandbox utiliser l'URL http://test.salesforce.com.

Le nom d'utilisateur est le même qu'en production suffixé du nom de votre sandbox.
Par exemple : comment-faire@sur-salesforce.com.test

Le mot de passe est le même que sur la production.

3. Mettre à jour les données
Si vous utilisez une Config ou une Developer, il faudra ajouter des données pour pouvoir tester vos évolutions. Pour aller plus vite, il est recommandé de se constituer un jeu de données qui peut être importée avec le Dataloader manuellement ou via un script.

Une sandbox de type Config peut contenir jusqu'à 500 Mo de données, pour une config Developer c'est 10 Mo.

Si vous utilisez une sandbox Intégrale, vos données sont recopiées de la production à l'identique, il est recommandé de remplacer les adresses emails de vos contacts pour éviter d'envoyer accidentellement des mails de tests à vos clients. Utiliser le dataloader pour mettre les emails à jour en masse.

Note : les emails des utilisateurs sont par contre suffixés, il n'y a pas de risque de leur envoyer d'email. 

4. Mettre à jour la configuration (optionnel)

- Vérifier dans les Worklfows de type email qu'il n'y a pas d'email renseigné en dur et les remplacer si besoin par des adresses de test

- A déterminer en fonction de votre configuration, il peut y avoir certains paramètres à adapter pour les développements spécifiques (en général via les Labels ou étiquettes), pour les end-points de Web services ou pour configurer certains Appexchange. (Vous n'êtes peut-être pas concernés par ce point)

- Idéalement, remplacer le logo de votre application par un logo avec l'inscription TEST par dessus afin d'éviter les erreurs d'environnement .
Pour cela, aller dans l'onglet document, localiser le logo afficher en haut de la page (Note : vous pouvez utiliser votre propre logo uniquement sur les applications personnalisées)
Télécharger le logo, ajouter une inscription par dessus (utiliser Picasa, Photophiltre ou si vous connaissez Photoshop ou Gimp)
Puis cliquer sur Remplacer le document.

L'article suivant explique comment migrer les évolutions de la Sandbox vers la Production en utilisant les packages Cloud deploy.

samedi 14 avril 2012

Comment générer des pistes sur Salesforce depuis sa page Facebook ?

Suite à l'événement Cloudforce Paris 2012 le 10 avril dernier, où "l'Entreprise Sociale" était au cœur des présentations, voici un tutoriel sur la mise en place d'un formulaire de contact sur Facebook générant des pistes dans Salesforce. 

Pour les entreprises, avoir une page Facebook comme vitrine de leur image de marque est devenu incontournable. Grâce à Heroku, il est possible de créer un formulaire de contacts sur sa page Facebook et de le lier aux pistes dans Salesforce.

En suivant l'exemple montré au Developer Garage (événement ayant fait suite à Cloudforce), voici le pas-à-pas permettant de créer une application de contact sur Facebook en utilisant le formulaire standard de Salesforce Web-Vers-Piste (ou Wev2Lead).


La page facebook avec le formulaire de contact est accessible ici.

Etape 1 : créer une application Facebook depuis http://developers.facebook.com/
Cliquer sur Application dans le bandeau haut de l'application puis sur Créer une application

Etape 2 : Facebook vous demande de renseigner votre numéro de téléphone et vous envoie un code de vérification. Lorsque votre compte est vérifié, renseigner le nom de l'application, et cocher la case Heroku Hosting puis sélectionner le langage de votre choix (pour ma part PHP)


Etape 3 : Automatiquement, un compte Heroku est créé et un Email vous est envoyé avec le lien vers la Heroku Toolbelt qui permet d'appeler les utilitaires Heroku en ligne de commande. (git en l'occurence).

Télécharger la Toolbelt qui permet d'utiliser les différents utilitaires en ligne de commande nécessaires à l'utilisation de Heroku.

Dans Facebook, une application par défaut est créée :

L'application est disponible à l'URL indiquée dans le champ URL du site et ça donne ça :
.

Etape 4 : Récupérer en local le projet créé automatiquement sur Heroku

Etape 5 : Aller dans Salesforce et générer un formulaire Web-vers-piste (Web to Lead)
Un prochain article suivra sur la génration de formulaire Web-vers-piste depuis Salesforce, la configuration de la réponse automatique et éventuellement les règles d'assignation en fonction de critères.

Etape 6 : Modifier l'application par défaut :
  • Dans index.php:
    • Intégrer le formulaire obtenu depuis Salesforce,
    • Faire le nettoyage de tous les éléments par défaut
    • Récupérer les informations du profil utilisateur pour pré-remplir le formulaire :
try {
$user_infos = $facebook->api('/me');
$user_first_name = $user_infos['first_name'];
$user_last_name = $user_infos['last_name'];
$user_company = $user_infos['work'][0]['employer']['name'];
$user_gender = $user_infos['gender'];
}catch (FacebookApiException $e) {
error_log($e);
}

Remarque : les informations auxquelles on accède ici sont des infos ne nécesitant pas d'access token comme spécifié dans la Graph API de Facebook.
    • Ajouter les valeurs par défaut dans le formulaire Web 2 Lead
    • Ajouter une redirection vers la page de dialogue Facebook demandant à l'utilisateur d'accepter l'application (OAuth Dialog), cf documentation officielle ici. Pour cette partie, j'ai eu pas mal de soucis (c'est l'opération la plus touchy de cette procédure) car l'application est exécutée dans un onglet. La subtilité est de recharger toute la page (et pas que l'iframe) puis de rediriger l'utilisateur vers l'application au sein de la page. Il faut utiliser le paramètre redirect_uri du type https://www.facebook.com/PAGE_USERNAME/app_YOUR_APP_ID. Je me suis inspirée de la procédure d'authentification décrite ici.
Voici ce la fenêtre OAuth dialog affichée à l'utilisateur :
Cette étape est indispensable pour pré-remplir le formulaire avec les informations l'utilisateur.

  • Ajouter le SDK Facebook qui permet d'accéder aux API Facebook, le télécharger ici :  https://github.com/facebook/php-sdk (dossier src) et copier les fichers dans le dossier SDK - je ne comprends pas pourquoi ces fichiers ne sont pas dans l'application par défaut
  • Nettoyer le projet (dossier image à supprimer notamment)
    • Ajouter les informations 
  • Ajouter une page sur laquelle seront redirigés les utilisateurs après la validation du formulaire

Normalement, la bonne pratique est de tester en local son application avant de la commiter sur Heroku mais ici j'ai fait mes tests directement sur Heroku puisqu'il s'agit d'une application de test.

Etape 7 : Comitter les modifications faites en local sur Heroku


Etape 8 : Déployer les modifications :



Quelques autres commandes utiles
- git add : pour ajouter de nouveaux dossiers/fichiers au projet
- heroku logs : pour afficher les logs

Etape 9 : Ajouter le formulaire à la page de votre entreprise en copiant l'URL suivante depuis la page  :

https://www.facebook.com/dialog/pagetab?app_id=APP_ID&next=URL
où APP_ID et URL sont dans les paramètres de l'application Facebook.

Etape 10 : Tester le formulaire : http://www.facebook.com/pages/Comment-faire-sur-Salesforce-/151619264965226

Cliquer sur valider, une piste est créée dans Salesforce (Attention, il faut impérativement saisir la société pour que la piste soit créée dans Salesforce mais cela n'est pas contrôlé au niveau du formulaire).

Et voilà le résutat dans Salesforce :

Dans la liste associée Historique des activités on voit l'email de confirmation.

En conclusion

Voilà un exemple d'une application Facebook liée à Salesforce permettant de tirer partie des réseaux sociaux en générant des pistes directement dans Salesforce et adapter ses processus de vente à cette nouvelle donne en connaissant au mieux ses suspects, c'est à cibler leurs centres d'intérêts et ensuite faire un suivi commercial approprié.

On pourrait développer cet exemple et envoyer des informations supplémentaires présentes sur le profil Facebook de l'utilisateur pour enrichir la piste avec ses centres d'intérêts, sa liste d'amis, pourquoi pas les marques concurrentes qu'il aurait "liké" etc etc.
On peut aisément imaginer l'intérêt pour une entreprise de collecter ce type d'informations pour communiquer de façon ciblée auprès de ses prospects et pour adapter au mieux ses actions commerciales.


Références
Sur le blog de Salesforce :
http://blogs.developerforce.com/developer-relations/2012/02/facebook-heroku-force-com-social-web-to-lead.html
http://blogs.developerforce.com/developer-relations/2012/03/behind-the-scenes-of-social-web-to-lead.html
Pas à pas pour créer une application Favebook sur  Heroku :
https://devcenter.heroku.com/articles/facebook
Comment ajouter un onglet à une page Facebook ?
https://developers.facebook.com/docs/appsonfacebook/pagetabs/

mercredi 11 avril 2012

Comment faire sur Salesforce pour empêcher les doublons ?


En utilisant la propriété "Unique" des champs personnalisés :

  1. Définir le critère d’unité
  2. Par exemple : le champ email sur piste

  3. Créer un champ texte Tech Unicité sur piste, caché pour les utilisateurs :

  4. Depuis le menu de configuration, dans Configuration de l'application | Personnaliser | Pistes | Champs cliquer sur Nouveau  Sélectionner un champ de type texte :

    Dans l'étape suivante définir : 




    • le nom du champ :Tech unicité
    • la longueur  : 255
    • Cocher la case unique (dans ce cas il n'est pas nécessaire de cocher Respect de la casse car Salesforce transforme à l'enregistrement les emails en lettre minuscule)
    A l'étape suivante, cacher le champ pour tous les profils sauf l'Administrateur :


    A l'écran suivant, vous pouvez optionnellement afficher le champ sur la présentation de page pour vos tests, le champ étant de toutes façons caché dans le profil des utilisateurs.

    Cliquer sur Enregistrer.

  5. Créer un workflow pour remplir le champ avec la valeur du champ Email :

  6. Depuis le menu de configuration, dans Configuration de l'application | Créer | Workflow et approbations | Règles de Worklfow, cliquer sur Nouvelle règle :
    Dans les critères de la règle, nous indiquons que le workflow doit se déclencher lorsque l'enregistrement est créer avec la fonction ISNEW ou (||) lorsque le champ Email est modifié ISCHANGED(Email).

    Puis ajouter une action de workflow de type mise à jour de champ :

    Le champ Tech unicité sera remplie avec la valeur du champ Email.
    Attention : ne pas oublier de cliquer sur Activer sur le workflow.

  7. Mettre à jour le champ Tech Unicité sur les enregistrements existants
  8. Le workflow ne se déclechera que pour les modifications ayant lieu après sa mise en place. Il faut donc faire une reprise de données sur les enregistrements existants pour renseigner le champ Tech Unicité avec la valeur contenue dans le champ Email.
    La mise à jour en masse peut être effectuée avec le dataloader.

  9. Tester la fonctionnalité.

  10. L'utilisateur est bloqué, il ne peut pas enregistrer. Le message d'erreur indique l'enregistrement en doublon, celui-ci est accessible via un un lien (sous réserve que l'utilisateur ait les droits de le voir).

Remarques :
  • La propriété unique existe uniquement pour les champs personnalisés. Cependant, il n'est pas recommandé d'utiliser un champ personnalisé Email car le champ standard est utilisé pour les envois d'emails, est recopié dans les événements et est utilisé pour la synchro Outlook.
    Et d'une manière générale, la bonne pratique est d'utiliser les champs standards lorsque c'est possible.

  • Il est possible d'imaginer des critères d'unicité reposant sur plusieurs champs par exemple sur Contact nom+prénom+société. 
    Dans ce cas, le champ Tech Unicité est renseigné avec Nom+Prénom+Id de la société