Développer en NET avec CRM

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.

Liste de comptes

Figure 1  - Liste des comptes dans Microsoft Dynamics CRM

Enregistrement Compte

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.

MCRM_30_ENUS_CUS_01_005

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.

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.

MCRM30_FRFR_CUS_01_007

*        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.

 

MCRM30_FRFR_CUS_06_011

*       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.

 

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.