Conception : Analyse des indicateurs
- Introduction
- Cadre général du projet décisionnel
- Conception : Étude Préalable
- Conception : Collecte des besoins (spécifications très peu détaillées)
- Conception : Analyse des besoins
- Conception : Analyse des indicateurs
- Conception : L’importance de la qualité des données
- Conception : Spécifications des restitutions (ce que j’envisage de vous proposer)
Cette première analyse globale qui permet d’obtenir une vue d’ensemble, et qui a été esquissée ci-dessus, doit ensuite être complétée par une analyse détaillée du besoin. Cette analyse détaillée reposera sur une revue des différents indicateurs et des axes d’analyse présents dans les différents rapports demandés. Cette partie présente un aperçu de ce travail. Dans les faits, c’est une longue et minutieuse phase d’exploration de la base de données.
Axes d’analyse ou dimensions ? : A ce stade nous n’évoquerons pas la notion de dimensions car aucune modélisation dimensionnelle n’intervient pour l’heure. Aucun entrepôt de données n’est envisagé dans l’immédiat et rien ne nous garantit d’ailleurs que celui-ci répondrait aux exigences de l’analyse dimensionnelle. |
1.1.1.1 Indicateurs du Rapport 1 – Suivi des contacts par origine et par agence
Nombre de contacts : De toute évidence nous allons nous intéresser au nombre de contacts sur la période analysée. Nous retrouvons cette information dans tous les rapports. L’analyse montre que nous allons devoir comptabiliser pour cela les enregistrements de la vue VCOMPANY.
Nombre de réservations : A première vue nous pourrions penser qu’un simple comptage des enregistrements de la table réservation conviendrait ici. La réalité est plus complexe car par nombre de réservations les salariés entendent nombre de lots principaux réservés. Or la table RESERVATIONS contient ce que nous pourrions appeler « l’entête de la réservation ou le dossier de réservation ». Une réservation pouvant correspondre à plusieurs lots (un client peut réserver plusieurs appartements en même temps) il s’agira donc de comptabiliser les lots qui correspondent à des réservations.
Taux de transformation : Il s’agit du ratio nombre de réservations / nombre contacts
Agence (Axe d’analyse en colonne sur ce rapport) : La promotion obéit à deux sectorisations géographiques qui se confondent. L’agence du programme immobilier ainsi que l’agence commerciale qui regroupe un certain nombre de vendeurs ou animateurs (stockés dans la table USERS). L’agence dont il est question ici correspond à l’agence commerciale soit la « Business Unit ». Cette information est stockée dans la table CHANNEL du CRM. Avec une cardinalité (1,N) où chaque agence (CHANNEL) peut avoir plusieurs vendeurs (USERS).
Origine (Axe d’analyse en ligne sur ce rapport) : L’origine correspond au canal marketing par lequel le contact a été « fourni ». Le code de cette information est directement présent sur la fiche du prospect dans le CRM. Nous la retrouvons donc dans la table COMPANY du CRM. Afin d’obtenir le libellé de l’origine il est nécessaire d’établir un lien avec la vue VCUSTOM_CAPTIONS. Notons enfin que l’origine est décomposée en 2 niveaux. A titre d’exemple le premier niveau « Portails Internet » dispose d’un deuxième niveau qui précise de quel portail il s’agit précisément (Se loger®, Immo Neuf®, etc.), nous nous intéressons ici, à ce stade, uniquement du premier niveau.
Contacts Générés et Fournis : Il s’agit d’un regroupement statistique de plusieurs origines (voir Tableau 2). Ce regroupement lui-même n’est pas paramétré dans l’application aussi je vais devoir réaliser celui-ci au moment de l’extraction – transformation des données extraites. Comme nous pouvons les constater dans la requête permettant d’obtenir ce tableau, ces regroupements se font en listant les codes des origines à regrouper directement dans le code source des rapports, ceci n’est pas sans conséquences sur la maintenance applicative.
Tableau 2: Origines des contacts obtenues via requête SQL[1] avec mise en évidence des contacts « générés » et « fournis »
Capt_Family | Capt_Code | Capt_FR | Famille Origine |
comp_immo_orcont | 01 | B.V passage | Fourni |
comp_immo_orcont | 02 | Panneau | Fourni |
comp_immo_orcont | 03 | Salon | Fourni |
comp_immo_orcont | 04 | X- Prescription Animateur | Généré |
comp_immo_orcont | 05 | X- Reco | Généré |
1.1.1.2 Indicateurs du Rapport 2 : Suivi de l’origine des contacts par programme
Les informations attendues sont très similaires à celles du Rapport 1 à l’exception de l’axe d’analyse en colonne. L’agence est ici remplacée par le programme.
Programme : Il convient là aussi d’être précis sur l’attendu car la notion de programme peut être ambiguë dans notre cas. En effet l’objectif de ce tableau est de donner le nombre de contacts, le nombre de réservations ainsi que le taux associé, ceci par origine et par programme. Nous pourrions penser qu’il s’agit ici d’une analyse dont le point de départ est le lot (l’appartement) car chaque lot correspond à un programme : nous pourrions ainsi obtenir le nombre de réservations sur chaque programme et retrouver l’origine de chaque contact-réservataire afin d’obtenir le découpage par origine. Il n’en est rien ! Le point de départ dans cette analyse reste le contact (le prospect), en revanche dans ce contexte le programme est le « Programme demandé » par le prospect au moment de son arrivée dans notre base de données. Autrement dit, le programme immobilier par lequel le contact est le plus intéressé. Il s’agit donc là aussi d’une information saisie sur la fiche prospect. Et là aussi nous sommes donc dans une relation de (1,N) entre la table COMPANY et la vue VCUSTOM_CAPTIONS qui contient les libellés des programmes demandés (voir Tableau 3). En effet un même programme peut être « demandé » par plusieurs clients potentiels.
Tableau 3: Résultat d’une requête SQL[2] permettant d’obtenir la liste des demandes de programmes
Capt_Family | Capt_Code | Capt_FR |
comp_Pyth_demprog | 10305 | Hameau – 34 |
comp_Pyth_demprog | 10401 | Europe – 34 |
comp_Pyth_demprog | 10402 | Europe 2 – 34 |
comp_Pyth_demprog | 10302 | Centre – 34 |
comp_Pyth_demprog | 10404 | Clos – 34 |
1.1.1.3 Indicateurs du Rapport 3 : Suivi de l’origine des contacts par programme
Dans ce rapport nous allons retrouver les mêmes indicateurs (nombre de contacts, nombre de réservations, ratios). Les 2 axes d’analyse étant l’origine, que nous avons déjà abordée, ainsi que le mode de contact. Le mode de contact correspond à la façon dont le contact est arrivé dans notre système d’information (appel entrant, mail…). L’idée de ce tableau de bord est de déterminer la charge du service « contacts » (Call-center).
Mode de contact : Le mode de contact, au même titre que l’origine de celui-ci, est renseigné directement sur la fiche prospect du CRM. La donnée est stockée, ici aussi, dans la table COMPANY et le libellé de celle-ci s’obtient en faisant là aussi le lien avec la vue VCUSTOM_CAPTIONS (voir Figure 4).
[1] select top 5 Capt_Family, Capt_Code, Capt_FR, case when CAST(capt_code AS varchar(2)) in (’25’,’05’,’20’,’04’,’26’,’35’) then ‘Généré when CAST(capt_code AS varchar(2)) not in (’25’,’05’,’20’,’04’,’26’,’35’) then ‘Fourni’ end as Famille_Origine from vCustom_Captions where Capt_Family = ‘comp_immo_orcont’
[2] select top 5 Capt_Family, Capt_Code, Capt_FR from vCustom_Captions where Capt_Family = ‘comp_Ucara_demprog’
1.1.1.1 Indicateurs du Rapport 4 : Tableau de bord par agence
Il s’agit ici d’analyser le parcours complet du prospect de son arrivée dans le système d’information jusqu’à la signature éventuelle du contrat de réservation. Ce tableau devra permettre une analyse précise des rendez-vous. Combien de rendez-vous positionnés par le « service contacts » ? combien de rendez-vous positionnés par le vendeur ? quels sont les taux de transformation ? quel est le pourcentage de rendez-vous réellement faits ? combien de réservations signées ? etc… Tout ceci regroupé par agence, avec une distinction entre les appels entrants et les appels sortants et un détail par origine.
Il ne semble pas pertinent de revenir ici sur les notions de nombre de contacts, de nombre de réservations, de mode de contact, d’origine ou bien d’agence, elles ont été présentées ci-dessus. En revanche il est indispensable d’approfondir la notion de rendez-vous car cet indicateur produira des effets de bord sur l’ensemble du SI.
En effet, afin de suivre et d’analyser les rendez-vous il faut que ceux-là soient saisis dans le CRM. Nous voilà face à une situation où le besoin en termes de restitution entraînera des conséquences lourdes sur la saisie des données. En effet les rendez-vous ne sont que très exceptionnellement saisis dans le CRM au moment où la mise en œuvre de ces indicateurs voit le jour. Comment faire ?
Demander aux différents services concernés de les renseigner dans l’application semble être la réponse évidente. D’autant plus que le CRM prévoit un module (Communications) rendant cela possible. Mais les salariés ne souhaitent pas saisir de manière régulière ces informations. Le module « communication » du CRM est jugé par les salariés concernés beaucoup trop « compliqué », trop « lourd ». Les accès VPN au CRM sont dits trop lents, ce qui rend les saisies en situation de déplacement « fastidieuses ». Face à cette situation il est décidé de modifier le CRM en ajoutant de nouveaux champs directement sur la fiche prospect. Tous les champs préfixés par « mig » correspondront ainsi aux ajouts internes.
comp_mig_R1 : Il s’agit de la date du premier rendez vous
comp_mig_r1_crea : Il s’agit du créateur du premier rendez-vous (identifiant de l’utilisateur qui crée l’enregistrement).
comp_mig_r1_etat : Ce champ nous permettra de savoir si le rendez-vous a été effectivement fait.
comp_mig_R2 : Il s’agit de la date du deuxième rendez-vous.
La première résistance a ainsi pu être levée mais nous verrons plus tard qu’il sera nécessaire d’aller bien plus loin pour faire définitivement accepter la saisie régulière de ces informations dans le SI et disposer ainsi de données « rendez-vous » exhaustives. Informations indispensables pour bâtir un rapport faible qui analyse les taux de transformation des rendez-vous.
1.1.1.2 Indicateurs du Rapport 5 : Tableau de bord par vendeur
Nous retrouvons ici une structure identique au Rapport 4 mais le découpage de celui-ci ne se fait plus par agence mais par vendeur. Le vendeur est renseigné directement sur la fiche prospect du CRM et stocké dans la table COMPANY. Un relation de type (1,N) fait le lien entre la table COMPANY et la table USERS qui liste l’ensemble des utilisateurs du CRM. (Un même resposable du compte peut avoir plusieurs milliers de contacts.)
Vendeur : Responsable du compte. Soit l’utilisateur du CRM auquel a été affecté le contact au moment de son arrivée dans le CRM
Nous venons de voir à travers ces quelques exemples le travail de « fouille » nécessaire dans la base de données pour comprendre l’architecture globale des données. Sans rentrer dans tous les détails de cette phase disons simplement que certaines données sont très facilement exploitables, c’est le cas, par exemple, de la donnée « vendeur » qui est directement liée à la fiche prospect, d’autres nécessitent un travail supplémentaire car le modèle relationnel n’est, par exemple, pas pleinement satisfait, c’est le cas de l’origine, du mode de contact ou de la demande de programmes. En effet pour ces 3 dernières informations le lien se fait toujours avec la table Custom_Captions (ou la vue Vcustom_Captions) et ce lien ne respecte pas le modèle relationnel, c’est le champ Capt_Family de la table Custom_Captions qui permet de savoir à quel type d’information correspond l’enregistrement dans la table Custom_Caption. Ainsi un même Capt_Code peut correspondre à 2 informations différentes et dans le CRM c’est le « Capt_Code » (soit le code du libellé de l’information stockée) qui est enregistré sur la « fiche Prospect » et non l’identifiant du libellé (ce qui me semble-t-il serait plus cohérent). Ceci impose, à chaque fois que qu’un lien entre la table Company et la table Custom_Captions est établmi, de préciser quelle est la « famille » de la donnée à laquelle nous nous intéressons (ex : where Capt_Family = ‘comp_Ucara_demprog’)
Idée d’amélioration relationnelle : Il serait intéressant ici d’avoir dans le CRM une table « Famille Libellé » qui permettrait de préciser la catégorie de chaque libellé. C’est un procédé classique dans la modélisation relationnelle des outils de gestion que nous retrouvons par exemple souvent sur les dimensions « produit » ou « client » avec des tables spécifiques pour chaque catégorie de produit ou de client. |
L’ensemble de ce travail préparatoire d’analyse des indicateurs et des données, présenté très succinctement dans les précédents paragraphes, permet de produire un tableau des champs nécessaires à la production des rapports que nous pourrions assimiler à un dictionnaire de données (voir Tableau 4). Il convient de préciser que ce document évolue tout au long du projet et à plus forte raison tout au long d’un projet conduit dans un état d’esprit « Agile ».
Tableau 4: Liste des champs nécessaires à la construction des rapports
Champ restitué |
Table |
Champ |
Remarque |
Nombre de contacts |
company |
comp_CompanyId |
Période analysée, fiches non « supprimées »… Bien définir les fiches à comptabiliser |
Nombre de réservation |
??? |
Comptabiliser le nombre de lots réservés |
Sujet complexe qui nécessite une analyse plus fine |
Taux |
NA |
NA |
Sera traité sur la base des deux champs précédents |
Agence |
channel |
Chan_Description |
Le lien avec la vue vcompany se fera par le responsable du compte. Soit par la vue vusers. |
Origine |
Company |
comp_immo_orcont |
Le lien se fera par le champ capt_code de la vue vcuctom_captions pour récupérer le libellé de l’origine. Il conviendra de filtrer sur capt_family = comp_immo_orcont |
Mode de contact |
Company |
comp_mode_contact |
Le lien se fera par le champ capt_code de la vue vcuctom_captions pour récupérer le libellé de l’origine. Il conviendra de filtrer sur capt_family = comp_mode_contact |
Programme |
Company |
comp_Ucara_demprog |
Le lien se fera par le champ capt_code de la vue vcuctom_captions pour récupérer le libellé de l’origine. Il conviendra de filtrer sur capt_family = comp_Ucara_demprog |
Contacts générés |
Company |
|
Faire des regroupements de codes du champ comp_immo_orcont |
Contacts fournis |
Company |
|
Faire des regroupements de codes du champ comp_immo_orcont |
R1 |
company |
comp_mig_R1 |
Effectuer une somme du nombre de contacts (company) pour lesquels un R1 est saisi |
R2 |
company |
comp_mig_R2 |
Effectuer une somme du nombre de contacts (company) pour lesquels un R2 est saisi |
Créateur R1 |
company |
comp_mig_r1_crea |
L’identifiant du salarié créateur du premier rendez-vous. Il conviendra de faire le lien avec la table user pour récupérer le nom du salarié |
Etat R1 |
company |
comp_mig_r1_etat |
Le code permettant de savoir si le R1 a été effectué. |
Responsable de compte |
company |
comp_PrimaryUserId |
Le code du salarié à qui a été affecté le contact. Il conviendra de faire le lien avec la table users pour obtenir le nom du salarié. |
Nous pouvons constater que l’essentiel des données nécessaires à la création des rapports figurent dans la table company (ou la vue vcompany). Par ailleurs nous n’observons pas, à ce stade, de difficultés particulières pour obtenir le nombre de contacts, ceci quel que soit l’axe d’analyse.
Le sujet du nombre de réservations semble, en revanche, plus complexe. La complexité est avant tout fonctionnelle. En effet, en regardant la structure de la base de données nous pourrions être tentés de considérer que la comptabilisation d’enregistrement dans la table « réservations » suffirait pour obtenir l’indicateur voulu. Comme je l’ai déjà évoqué il n’en est rien. En effet l’entité « RESERVATIONS » représente les « dossiers de réservation » or ce que les salariés appellent, par abus de langage, nombre de réservations correspond en réalité au « nombre de lots principaux réservés ». Pour obtenir cet indicateur il ne suffira donc pas d’un simple comptage, il conviendra de cibler et filtrer les données qu’il sera nécessaire d’extraire.
Comme nous le verrons plus loin ces filtres vont beaucoup évoluer tout au long de cette phase d’analyse et même lors des différents sprints de la phase de développement.
Néanmoins à ce stade du projet nous savons que les données sont bien présentes dans le système. Il convient désormais de vérifier pour chacune d’elles leur « qualité », une phase incontournable pour des rapports fiables.