Etendre Microsoft Dynamics CRM 3.0 avec .NET
Par Christine DUBOIS et Bernard FEDOTOFF,
Microsoft Regional Directors, consultants, Agilcom
Mots clés
CRM 3.0, Workflow, Callout, Microsoft CRM SDK, .NET
Résumé : Cet article s’adresse à tous
ceux qui souhaitent avoir une vue d’ensemble des possibilités en matière de
développement avec la plate-forme .NET autour du produit Microsoft Dynamics CRM
3.0. En effet, la toute dernière version de Microsoft Dynamics CRM a été conçue
pour favoriser de nombreux scénarios de personnalisation, d’extension ou
d’intégration du produit avec le reste du système d’information des
entreprises. Aussi les opportunités de projets de développement .NET sur le
sujet sont nombreuses et enthousiasmantes !
Qu’est ce que Microsoft Dynamics CRM 3.0 ?
- Une CRM (Customer Relationship
Management) évidemment…mais encore ? En fait, une solution incontournable
aujourd’hui pour les entreprises qui ont besoin d’un système pour centraliser
la connaissance de leurs clients ; un système sur lequel elles peuvent
s’appuyer pour mieux maîtriser la relation qu’elles entretiennent avec ceux-ci.
- C’est aussi une application
écrite par Microsoft en .NET…ah tiens ? Plus exactement il s’agit d’une
application web dont l’interface propose des vues de l’information sous forme
de listes d’éléments (Figure 1), chaque élément pouvant être édité sous la
forme d’un formulaire (Figure 2). Toutes les entités de CRM (contacts, comptes,
devis, commandes, campagnes etc…) sont des éléments d’une base de données
relationnelle gérée sous Microsoft SQL Server.
- En tant qu’application web
ASP.NET, elle est donc accessible de deux façons, soit simplement d’Internet
Explorer, soit (et/ou) depuis la même interface, mais intégrée à Microsoft
Outlook.
Figure 1 - Liste des comptes dans Microsoft Dynamics
CRM
.jpg)
Figure 2 - Enregistrement de type Compte dans
Microsoft Dynamics CRM
Quels sont les pré-requis pour étendre
Microsoft Dynamics CRM avec .NET ?
Si vous avez des connaissances en matière
de développement avec la plate-forme .NET, quelque soit votre langage de
prédilection (C# ou Visual Basic.NET), vous pouvez d’ors et déjà mettre votre
compétence au service de projets CRM !
Le seul investissement à prévoir est de
vous imprégner de l’application et de son fonctionnement. Mais c’est à peu près
le même investissement lorsque vous implémentez une nouvelle bibliothèque de
composants ou apprenez à exploiter un nouveau service web, quels qu’ils soient…
Et si vous êtes atteint de javaïsme aigü
(plus sérieusement que vous développez avec javascript), sachez que vous avez
aussi une carte à jouer !
Quelles sont les méthodes d’extension de Microsoft
Dynamics CRM avec .NET ?
L’un des aspects les plus appréciables
lorsqu’on développe autour de ce produit, c’est qu’il y a plusieurs points
d’extension possibles, chacun faisant intervenir un aspect technologique
différent…
La figure 3 présente l’architecture de
l’application. Organisée en couches et très modulaire, elle offre de nombreuses
techniques de personnalisation du produit.
.jpg)
Figure 3 - Architecture de Microsoft Dynamics CRM 3.0
On pourrait par exemple classer ces
différentes méthodes de la façon suivante :
Catégorie 1 : Abonnement aux
évènements de CRM (callout)
Le mécanisme :
La plate-forme de Microsoft Dynamics CRM est
capable de générer des évènements lors de certaines actions élémentaires sur
les entités de la base de données, typiquement lors de la création d’un nouvel
enregistrement, de sa suppression ou de sa mise-à-jour etc…Une action s’accompagne
en réalité de deux évènements :
- l’un déclenché juste avant l’exécution de l’action. On parle de pre-callout.
- et l’autre généré après l’exécution de l’action. Ce sont les
post-callout.
.gif)
Figure 4 - Mécanisme des callouts
Exemple d’application fonctionnelle :
Imaginez qu’à la confirmation d’une
commande dans Microsoft Dynamics CRM, vous devez déclencher le processus de
livraison de la dite commande. Microsoft Dynamics CRM sait créer et enregistrer la commande mais le
processus de livraison sort de son scope fonctionnel. A vous de développer
l’appel à un système tiers existant ou de créer et de modéliser le processus de
livraison de toute pièce avec .NET. Dans ce cas, vous développeriez un post-callout.
Supposez maintenant que vous devez vérifier
l’encourt d’un client dans l’ERP de l’entreprise avant d’accepter la
confirmation d’une nouvelle commande dans la base CRM. Dans ce scénario,
vous développeriez un pre-callout pour traiter la validation de la commande et
ainsi annuler celle-ci en cas d’encourt trop important.
Principe de développement :
Cette première approche de développement
autour de Microsoft Dynamics CRM revient à écrire un assembly .NET contenant
une classe dans laquelle sont définies les procédures d’évènement (handlers)
qui répondent aux évènements CRM sur lesquels porte l’abonnement.
La procédure d’évènement est appelée de
manière synchrone lors de l’exécution de l’action dans CRM. Cette procédure
reçoit évidemment en paramètres des informations sur l’enregistrement au cœur
de l’action en cours, et peut, en retour, retransmettre ces éléments à CRM.
Vous pouvez bien sûr stopper l’exécution de l’action si besoin ou renvoyer un
message d’erreur.
Le déploiement de vos callouts consiste à
décrire les abonnements correspondants aux évènements et aux entités concernés
dans un fichier au format XML, et à déployer l’assembly sur le serveur CRM.
Catégorie 2 : Développement de
script client dans les pages web
Le mécanisme :
Une autre approche consiste à améliorer le
dynamisme des formulaires de saisie des enregistrements en intervenant
directement en Javascript dans la page HTML côté client. Vous pouvez écrire du
script en réponse à trois évènements :
- lors du chargement du formulaire de saisie de l’enregistrement
(OnLoad)
- lors de la sauvegarde de celui-ci dans le système (OnSave) et au
besoin empêcher celle-ci.
- ou enfin lorsqu’un champ du formulaire perd le focus et que sa
valeur a changé (OnChange).
Exemple d’application fonctionnelle
Le développement de script client est idéal
par exemple pour créer des champs calculés dans les formulaires CRM ou pour
lier deux listes déroulantes. Vous pouvez ainsi peupler une liste de
sous-catégories dynamiquement en fonction de la catégorie sélectionnée dans le
champ contenant la liste des catégories.
Les évènements de
chargement et de sauvegarde du formulaire sont utiles pour respectivement
initialiser et valider la saisie du formulaire.
Principe de développement :
En plus des fonctionnalités usuelles du DHTML qui permettent de
manipuler l’ensemble de la page html, Microsoft Dynamics CRM fournit un modèle d’objet spécifique qui
décrit le formulaire et donne des informations propres à son fonctionnement
dans CRM. Par exemple, ce modèle vous permet d’identifier un formulaire dans un
contexte déconnecté sur le client CRM pour Outlook en mode hors connexion, de
façon à effectuer un développement adapté.
Le code de script client se déploie dans
CRM par un simple copier/coller dans l’éditeur fourni dans l’interface de
personnalisation des formulaires.
Catégorie 3 : Extension
de la navigation dans l’interface
Le mécanisme :
Il est facile d’étendre l’interface de
Microsoft Dynamics CRM en ajoutant des options aux menus standards de Microsoft
Dynamics CRM ou dans les barres de navigation et les barres d’outils. Une
nouvelle option de menu ou de navigation consiste en :
- une icône qui caractérise l’action associée,
- un intitulé qui définie l’action associée,
- et enfin une adresse url ou un code de script client qui effectue
l’action associée.
Exemple d’application fonctionnelle :
Les domaines d’application de cette
fonctionnalité sont nombreux. Vous pourriez par exemple ajouter à Microsoft
Dynamics CRM des fonctionnalités d’audit client pour enregistrer des enquêtes
de satisfaction directement en relation avec les enregistrements clients gérés
par CRM ; ou encore rajouter des fonctionnalités de gestion de
configuration des produits du catalogue de CRM ; ou tout simplement
ajouter un raccourci dans la navigation vers le site intranet de l’entreprise,
ou n’importe quel site d’équipe géré par Windows Sharepoint Services.
.jpg)
Figure 5
- Exemple d’intégration dans la carte de site de l’application avec un
site intranet
Principe de développement :
Une option de menu ou de navigation
personnalisée faisant référence à une simple url ou à un code de script client,
il n’y a pour ainsi dire aucun mécanisme particulier pour étendre Microsoft
Dynamics CRM de cette manière. Une url permet par exemple de pointer vers n’importe
quelle application web ou page de n’importe quel système. A vous d’imaginer les
développements pour vous interconnecter avec Microsoft Dynamics CRM !
La configuration des options de menu et des
barres d’outils se fait au travers de folders de configuration XML.
Catégorie 4 : Extension des écrans
de l’interface
Le mécanisme :
Microsoft Dynamics CRM propose un champ de
formulaire spécifique de type iFrame pour étendre les formulaires standards
avec une fenêtre imbriquée référençant une simple url.
Il suffit de vous appuyer sur les feuilles
de style de Dynamics CRM pour étendre l’interface de manière complètement
transparente pour l’utilisateur avec de nouvelles fonctionnalités
personnalisées.
.jpg)
Figure 6 - Exemple d’une iFrame enrichissant le
formulaire Produit
Exemple d’application fonctionnelle :
Là encore, les domaines d’application de
cette fonctionnalité sont nombreux. On retrouve d’ailleurs les mêmes exemples
que pour la catégorie 3 précédente.
Principe de développement :
Une iFrame est une frame encapsulée dans la
fenêtre constituée par le formulaire CRM et fait simplement référence à une
adresse url, statique ou dynamiquement renseignée via un code de script client.
L’url peut transporter l’id et le type de l’objet en cours de sortes qu’il est
facile pour l’application cible d’afficher un contenu dynamique en fonction du
contexte en cours. De la même façon, l’iFrame peut très facilement mettre à
jour le formulaire CRM parent en navigant dans la page HTML à l’aide du DOM.
Catégorie 5 : Intégration
Le mécanisme :
L’architecture de Microsoft Dynamics
CRM a été conçue de telle façon que
l’ensemble des fonctionnalités de l’application sont disponibles au travers
d’un modèle de services web.
.gif)
.gif)
Figure 7 -
Microsoft CRM Services Web
Exemple d’application fonctionnelle :
Le modèle des services web de Dynamics CRM
ouvre les portes à toute forme d’interaction avec le reste du système
d’information. Vous pourriez par exemple interconnecter Dynamics CRM au système
de facturation de l’entreprise ou l’encapsuler dans une application tierce.
Vous pourriez même réécrire l’interface cliente de manière complètement
personnalisée.
Principe de développement :
Pour utiliser les méthodes du service
CrmService de Microsoft Dynamics CRM et manipuler ainsi toutes les données de
la base, il suffit d’ajouter une référence web sur le serveur CRM comme c’est
le cas classiquement pour n’importe quel service web. Toutes les entités, les
types de données CRM etc… sont modélisés sous forme de classes .NET.
Mais Dynamics CRM va plus loin puisque vous
pouvez également utiliser un second service, MetadataService, pour travailler
les métadonnées de l’application, par exemple pour récupérer une description de
n’importe quelle entité, relation ou attribut du système, incluant les
personnalisations que vous pouvez aménager au niveau du dessin des formulaires
dans CRM.
Liens vers d’autres ressources :
- Le blog de l’équipe de Corp,
incontournable et génial avec tes tas d’informations de premières mains,
typiquement des mises à jour disponibles en téléchargement (Rollup) ou des
examples de code concrets : Microsoft
Dynamics CRM Team Blog
- Le blog de Microsoft France (en
français J) dans lequel écrivent les consultants de MCS et les ingénieurs
avant-vente de Microsoft Business Solutions France : Microsoft Dynamics CRM France
- La page de download dédiée à
Microsoft Dynamics CRM sur le site de
Microsoft dans laquelle vous retrouverez toutes les ressources intéressantes telles
que le SDK, les Update Rollup, une
version d’évaluation de CRM à 90 jours etc… : Site
de download de Microsoft Dynamics CRM
- Lien vers le site de formation de
Microsoft France avec le cursus officiel de Microsoft Dynamics CRM : Formations
officielles de Microsoft CRM 3.0 et la formation qui vous concerne tout particulièrement pour
apprendre à développer des solutions avec Microsoft Dynamics CRM (disponible en
anglais seulement) : Extending
Microsoft CRM 3.0.