Salesforce Administrateur Certifié logoDeveloppeur Salesforce certifié

Adrien Bayles Expert Webmarketing & CRM

Salesforce

Salesforce distribution leads

Il y a quelque temps, j'avais développé une application Salesforce qui permettait de distribuer les pistes équitablement entre des groupes d'utilisateurs. Je suis allé la déterrer pour la publier sur l'Appexchange et que le plus grand nombre en profite.

Le package Salesforce Leads and Cases Distributors

Le package est disponible sur l'Appexchange de Salesforce à cette adresse : Leads and Cases Distributors.

Concrètement, avec cette appli, vous pouvez distribuer les pistes et requêtes qui arrivent dans Salesforce de façon équitable ou pondérée au sein d'un groupe d'utilisateurs.

Plus besoin donc de passer par une attribution aléatoire (cette méthode ne garantit pas que la répartition des pistes ou requêtes sera 100% équitable entre les utilisateurs). Avec ce package, vous êtes en mesure de garantir la façon dont seront réparties les pistes et/ou requêtes, à un enregistrement près.

L'appli est compatible avec les versions Enterprise, Unlimited, Force.com, Developer et Performance de Salesforce et est Unmanaged ; c'est-à-dire que vous pourrez accéder au code et aux composants librement, et si besoin, vous pouvez les modifier.

Les règles d'attribution Salesforce manquent de souplesse

Les règles d'attribution de Salesforce, qui permettent d'attribuer automatiquement une piste à un utilisateur au moment de la création d'une nouvelle piste, peuvent parfois manquer de flexibilité, notamment quand il s'agit de répartir ces attributions parmi les membres d'une même équipe.

Les Files d'attente (les "Queues") ne corrigent que partiellement ce problème : en associant plusieurs utilisateurs à une queue d'une part, et en attribuant une piste à une file d'attente d'autre part, les utilisateurs membres de cette file d'attente auront la possibilité de récupérer les pistes associées à cette file, et de se les attribuer. Seulement cette méthode, si elle peut se révéler efficace dans un processus de support client, peut se révéler contre-productif dans un contexte de prospection commerciale : rien ne garantit que les utilisateurs d'une même file d'attente auront accès à un nombre équitable de pistes comme rien n'empêche l'un des membres de cette même file de s'en attribuer toutes les pistes. C'est la loi du premier arrivé, premier servi.

On le sait, Salesforce peut être très restrictif à certains moments. Leurs règles de gouvernance font que parfois, on se retrouve bloqué dans l'utilisation d'une ressource de l'application, comme ça peut être le cas pour la création d'onglet personnalisés. Si le nombre d'onglets dans votre appli commence à se rapprocher de la limite autorisée par votre édition de Salesforce, voici une petite astuce qui vous permettra de passer outre la restriction.

Création d'un objet personnalisé

Lorsque vous créez un nouvel objet personnalisé, Salesforce vous propose de créer un onglet pour celui-ci. Ne cochez pas la case ; on ne va pas en avoir besoin. Cliquez sur le bouton enregistrer pour créer votre objet.

Salesforce ne pas créer d'onglet

Retrouver le préfixe d'objet

Une fois l'objet personnalisé créé, Salesforce lui attribue automatiquement un "préfixe" de 3 caractères. Ce préfixe, on le retrouvera dans l'identifiant de tous les enregistrements de l'objet en question. Par exemple, si j'ai créé un objet Factures, les trois premiers caractères de l'identifiant de toutes mes factures seront identiques. L'identifiant d'un enregistrement est facile à retrouver, puisqu'il figure dans l'URL, à chaque fois qu'on consulte un enregistrement Salesforce.

Salesforce intègre par défaut un certain nombre de formules bien pratiques pour manipuler des dates.

Ainsi les formules telles que YEAR(), MONTH() et DAY() vous permetttront d'extraire respectivement l'année, le mois et le jour d'un champ date. Seulement, dès qu'on veut extraire le numéro de semaine d'une date donnée, les choses deviennent tout de suite plus compliquées. voici donc une formule qui vous permettra de le faire, en donnant le numéro de semaine pour la date du jour:

MOD(
FLOOR( ( TODAY() -DATEVALUE("2007-01-01" ))/7)
,52)

Cette formule suppose que la semaine démarre le lundi. Si on souhaite qu'elle démarre le dimanche, ce sera alors:

MOD(
FLOOR( ( TODAY() -DATEVALUE("2012-01-01" ))/7)
,52)

Dans l'exemple, la date donnée est la date du jour, mais ça fonctionnera également si en remplaçant "TODAY()" par n'importe quel champ Date ou Datetime.

La formule Salesforce suivante vous permettra d'extraire la valeur du paramètre souhaité depuis l'URL que vous aurez enregistrée dans un champ personnalisé (ici, "champUrl__c", créé au préalable), vers le champ de votre choix.

Prenons comme exemple, que votre URL contient le paramètre utm_source, et que vous souhaitez extraire sa valeur dans un autre champ personnalisé, utmSource__c  :

IF(CONTAINS( champURL__c,"utm_source" ),
	BLANKVALUE(
		LEFT(
			RIGHT(
				champURL__c,LEN(champURL__c) - (FIND("utm_source=",champURL__c)+10)
			) ,
			FIND(
				"&",RIGHT(champURL__c,LEN(champURL__c) - (FIND("utm_source=",champURL__c)+10))
			)
			-1
		),
		RIGHT(
			champURL__c,LEN(champURL__c) - (FIND("utm_source=",champURL__c)+10)
		)
	)
,"")

La formule fonctionnera, que votre paramètre soit en bout de chaîne ou non. Copiez cette formule dans une mise à jour de champ (sur le champ utmSource__c ici), que vous associerez à une règle de workflow.

Pages