Maintenant que nous avons compris à quoi correspond la couche des métadonnées, nous pouvons commencer nos customisations par l’ajout d’un attribut sur un formulaire (nous verrons ensuite comment la « metabase » se met à jour automatiquement avec le nouvel attribut).
Pour commencer, nous allons modifier l’entité, ou l’objet, « contact » de Microsoft CRM et lui ajouter quelques attributs (voir le tableau ci-dessous) ; pour ce faire, il faut se connecter au CRM avec un utilisateur qui a les droits de customisation.
Une fois connecté au CRM :
a) Il faut cliquer sur le lien « Paramètres »
b) Choisir l’option « Personnalisation » dans le menu de gauche de Microsoft CRM pour accéder à la section de personnalisation de l’outil.
c) Une fois dans cette section, il faut sélectionner l’option « Personnaliser les entités » pour accéder à l’écran de personnalisation des entités.
Figure 3 : Personnaliser les entités
L’écran de personnalisation des entités donne une liste de toutes les entités pouvant être customisées ; pour ajouter un attribut à l’entité « contact », il suffit de double-cliquer sur la ligne « contact » dans la liste (voir figure 4).
Figure 4 : Liste des entités customisables
Un nouvel écran apparaît après avoir double-cliqué sur la ligne « contact » ci-dessus (voir figure 5) :
Figure 5 : Entité contact
Sur le côté gauche de ce nouvel écran, on peut apercevoir une série de menus :
· Informations : donne des renseignements sur l’entité, tels que le nom de l’entité, son appartenance (utilisateur ou organisation), le nom de l’entité dans le schéma (le nom de la table SQL), etc. ; c’est via ce menu également que l’on peut modifier le nom de l’entité (par exemple : compte peut devenir société, etc.)
· Formulaires et vues : permet de modifier ou de créer des vues (des requêtes) ou de modifier les formulaires existants
· Attributs : permet de modifier ou de créer des attributs (des champs)
· Relations : permet de voir ou de créer des relations entre les entités (existantes ou nouvelles)
· Messages : permet de modifier l’aide et tous les messages du système (à utiliser impérativement lorsqu’on renomme une entité, pour éviter d’avoir une désynchronisation entre le nom de l’entité affichée et l’aide aux utilisateurs)
Figure 6 : Liste des attributs de l'entité
Il va de soi que pour la création d’un nouvel attribut, nous devons passer par le menu « attributs » de l’entité ; une fois que l’on a cliqué sur le lien, on se retrouve devant la liste de tous les attributs existants pour l’entité « contact ».
Que retrouve-t-on sur cet écran ? Nous voyons plusieurs colonnes dont les plus importantes sont les 3 premières, à savoir le nom du schéma, le nom complet et le type.
Quelle est la signification de ces 3 colonnes ?
· Nom du schéma : c’est littéralement le nom du champ dans la table « contact »
· Nom complet : c’est le libellé de l’attribut qui apparaît à l’écran (celui-ci est toujours modifiable par après)
· Type : c’est le type de l’attribut (identique au type lors de la création d’un champ en SQL)
Voici les différents types possibles d’un attribut dans Microsoft CRM 3.0 :
| Type Microsoft CRM | Type SQL Server |
| primarykey | uniqueidentifier |
| lookup | uniqueidentifier |
| nvarchar | nvarchar |
| ntext | ntext |
| int | int |
| float | float |
| money | money |
| datetime | datetime |
| bit | bit |
| picklist (boîte de sélection) | int |
Tableau 1 : Types d'attribut
Il existe d’autres types tels que « owner », « customer », etc. qui sont créés automatiquement par le système lors de la création de relations entre entités mais nous n’allons pas nous en occuper dans ce document.
Figure 7 : Création d'un nouvel attribut
Pour ce premier exemple, nous allons créer une série de nouveaux attributs que nous utiliserons tout au long de ce document ; pour créer un attribut, il suffit de cliquer sur le bouton « nouveau » et, au nouvel écran, de remplir les différents champs nécessaires à la création de l’attribut :
Figure 8 : Enregistrement d'un nouvel attribut
Une fois chaque champ défini, il suffit de cliquer sur un des boutons de sauvegarde situés sur la barre de menu de l’écran :
Voici les paramètres à utiliser pour notre exemple :
| Attribut n° | Nom complet | Nom du schéma (automatique) | Niveau requis | Type | Valeurs possibles | Valeur par défaut |
| 1 | Adresse du compte | New_adresseducompte | Aucune contrainte | Bit | Non/Oui | Oui |
| 2 | A jour | New_ajour | Aucune contrainte | Bit | Non/Oui | Non |
Tableau 2 : Attributs de l'exemple 1
A quoi vont-nous servir ces nouveaux attributs ? Voici une petite explication.
Tout le monde sait, après avoir utilisé Microsoft CRM, que lorsqu’on crée un contact à partir d’un compte client, l’adresse principale du contact est héritée du compte, et ceci grâce à la relation système qui existe entre ces 2 entités (ce point n’est pas abordé dans ce document) ; mais que se passe-t-il si on crée un contact et puis qu’on le relie à compte client existant ? L’adresse principale n’est tout simplement pas reprise automatiquement. De plus, si on modifie l’adresse du compte, aucune des adresses des contacts liés n’est mise à jour !
Les attributs que nous venons de rajouter vont dès lors nous permettre de pallier à ces 2 problèmes (beaucoup de clients me demandent ces customisations, qui sont, pour eux, une aide précieuse à l’encodage), et ils seront utilisés dans un « callout » et dans une règle de « workflow » (le déploiement de celui-ci sera expliqué pas à pas).
Revenons à notre base de données « metabase » et voyons les modifications qui y ont été apportée : pour ce faire, il suffit de faire tourner la requête suivante sur la base de données XX_METABASE :
select a.*, 'typename' = at.Description, 'isquoted' = at.Quoted
from Entity e
join Attribute a on (e.EntityId = a.EntityId)
join AttributeTypes at on (a.AttributeTypeId = at.AttributeTypeId)
where e.Name = 'contact
and a.VisibleToPlatform = 1
order by a.ColumnNumber
Voici, en partie, le résultat de cette requête (certaines colonnes et lignes ont été retirées pour plus de lisibilité) :
|
AttributeID |
Name |
PhysicalName |
IsCustomField |
typename |
|
1B888D39-C537-47DC-80DB-55A6D3281863 |
contactid |
ContactId |
0 |
primarykey |
|
[…] |
[…] |
[…] |
[…] |
[…] |
|
AC6D7AAE-F250-4523-B83D-078530259EA1 |
new_adresseducompte |
New_Adresseducompte |
1 |
bit |
|
C58E0DC4-C41D-4026-ACB2-4ECD6EE9CF02 |
new_adresseducomptename |
new_adresseducompteName |
1 |
virtual |
|
0364F190-6641-4D5D-8B47-772B916CAAEE |
new_ajour |
New_AJour |
1 |
bit |
|
272DEB2F-3379-4127-A7CA-D8693CA7555E |
new_ajourname |
new_ajourName |
1 |
virtual |
Tableau 3 : Résultat de la requête sur la metabase
On constate d’après le résultat ci-dessus que la « metabase » n’a pas changé, elle reflète simplement le changement qui a été effectué dans la couche de données (donc dans la base de données XX_MSCRM). Ainsi, quelque soit le nombre d’attributs ajoutés et/ou supprimés, la « metabase » assure la synchronisation (et par la même la stabilité complète) entre la couche présentation et la couche de données : la plateforme Microsoft CRM sera ainsi toujours à jour !
Figure 9 : Accès aux formulaires et vues
Maintenant que nos attributs ont été créés, il nous reste à les ajouter sur le formulaire ; ceci se fait via le menu « Formulaires et vues » de l’entité (voir figure 9).
Dans la partie de droite de la figure 9, on peut apercevoir toutes les vues créées par le système (dont la vue par défaut) ainsi que tous les formulaires existants (par défaut, il n’y a qu’un seul formulaire pour chaque entité).
Pour modifier le formulaire de l’entité « contact », il suffit de double-cliquer sur la ligne « Formulaire » dans l’écran de droite pour accéder au formulaire en mode « design » (comme dans Access).
Une fois dans le mode « design » du formulaire, on a la possibilité de créer ou de supprimer des champs via le menu de droite (voir figure 10) :
Figure 10 : Formulaire en mode design
Figure 11 : Liste des attributs pour l'entité contact
Pour ajouter un champ existant, il suffit de cliquer sur le lien « Ajouter des champs » dans le menu de droite, pour voir apparaître la liste de tous les attributs du système (dont ceux que nous avons créés, voir figure 11).
On voit qu’un de nos 2 attributs (« A jour ») est disponible dans la liste de tous les attributs de l’entité ; ainsi, pour l’ajouter au formulaire, il suffit de le sélectionner (le cocher, plusieurs attributs pouvant être cochés), de lui spécifier l’onglet sur lequel il doit apparaître (l’onglet « Général » étant le premier onglet du formulaire, voir figure 10) et la section à laquelle le champ choisi appartiendra (choisir la section « Adresse » pour nos 2 attributs). Une fois les attributs sélectionnés et attribués au bon onglet et à la bonne section, il suffit de cliquer sur le bouton OK pour revenir à l’écran précédent.
Voici à quoi ressemble notre formulaire suite à l’ajout des 2 attributs « A jour » et « Adresse du compte » et après la suppression de quelques attributs non désirés :
Figure 12 : Ajout des 2 attributs au formulaire contact
L’écran est OK, il suffit de cliquer sur un des boutons d’enregistrement situés dans la barre de menu du haut pour enregistrer les changements (voir figure 10) ; ensuite, à l’écran des vues disponibles, cliquer également sur le bouton d’enregistrement pour fermer la fenêtre de modification de l’entité « contact » et revenir à la liste des entités modifiables (voir figure 4).
Maintenant que notre formulaire a été modifié, il faut encore « publier » les changements pour que la couche présentation soit synchronisée avec la metabase ; pour ce faire, il suffit de sélectionner l’entité « contact » dans la liste des entités (voir figure 4) et de cliquer sur le bouton « publier » situé dans la barre de menu, juste au-dessus de la liste des entités :
Figure 13 : Bouton de publication
Lorsque l’utilisateur clique sur ce bouton, le processus de synchronisation se met en marche et le site Web est coupé pendant quelques secondes (équivalent à la commande « iisreset »).
Figure 14 : Publications des customisations en cours
Une fois la publication terminée, on peut apercevoir le résultat directement en ouvrant un contact existant, ou en créant un nouveau contact :
Figure 15 : Formulaire contact après publication des customisations
Et voilà !
Olivier