Management,  Projet Décisionnel

Conception : Analyse des indicateurs

Cette publication est la partie 6 de 8 dans la série MISE EN ŒUVRE D’UN PORTAIL SPECIFIQUE DE RESTITUTION DE DONNEES

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’

Figure 4: Extrait du résultat d'une requête SQL permettant d'obtenir la liste des modes de contact

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.

Navigation dans la série<< Conception : Analyse des besoinsConception : L’importance de la qualité des données >>

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *