Dynamique

Portail de service à la clientèle Dynamics 365 : Défis et solutions - Partie 1

Diogo GouveiaProducts and Solutions, Technical Leave a Comment

Service clientèle Microsoft Dynamics 365 fournit une série d'outils qui permettent aux organisations d'optimiser la gestion de leur service à la clientèle. Outre l'amélioration de l'expérience client, cette plateforme peut également contribuer au suivi des processus de communication et d'assistance interne, ce qui profite aussi bien aux entreprises qu'à leurs clients.

Cependant, si un portail de service à la clientèle Microsoft Dynamics 365 peut être utile, sa configuration pour répondre à un ensemble unique d'exigences peut s'avérer une tâche difficile.

Au niveau de Connecting Software, nous avons utilisé Service clientèle Microsoft Dynamics 365 pour construire notre Portail d'assistance. Comme nous avions une vision spécifique de ce que nous voulions réaliser avec notre portail d'assistance, nous allons détailler dans cet article le processus de construction de ce portail à travers la mise en œuvre du service client Dynamics 365, tout en présentant les obstacles que nous avons rencontrés en cours de route et les solutions que nous avons trouvées pour y remédier au mieux.

Caractéristiques du portail de service à la clientèle Dynamics 365

Le portail de service à la clientèle Dynamics 365 permet la création d'une base de données centralisée. Base de connaissancesqui est l'une des principales caractéristiques de notre portail d'assistance. Il contient des informations fiables sur les cas d'utilisation courants de nos produits, facilement accessibles aux clients.
Base de connaissances

Dans les cas où nos clients ne parviennent pas à trouver la réponse qu'ils recherchent dans la base de connaissances, le portail de service à la clientèle du Dynamics 365 leur permet de créer des cas d'assistance. Du point de vue du client, ce sont là les deux principales caractéristiques de notre portail d'assistance.

Pour nous, cependant, le principal avantage est de pouvoir générer des informations concernant l'utilisation du portail d'assistance et de nos solutions logicielles. Par exemple, si nous remarquons que plusieurs cas concernant un problème spécifique sur un produit spécifique sont soumis, nous pouvons réorienter nos ressources pour résoudre rapidement le problème. S'il s'agit simplement d'une FAQ, nous pouvons l'ajouter à la base de connaissances de notre portail d'assistance afin de mettre les informations à la disposition de tout client partageant le même problème.

En tant que tel, le portail de service à la clientèle Dynamics 365 sert d'outil centralisé pour évaluer la qualité de nos produits, améliorer la satisfaction des clients, suivre les interactions avec les clients, garantir l'accès aux informations qui nous permettent de continuer à nous améliorer, adapter la planification de nos ressources et même générer des rapports internes précieux, par exemple le coût de l'assistance par produit.

Examinons maintenant les obstacles que nous avons rencontrés lors de la mise en œuvre de notre portail d'assistance.

Occurrence #1 - Base de clientèle existante

Le fait de disposer d'une base de clients existante lorsque nous avons commencé à travailler sur le portail d'assistance s'est avéré problématique.

Lorsqu'un client s'inscrit pour la première fois sur notre portail, un double contact est créé dans Microsoft Dynamics 365 (CRM), c'est-à-dire dans notre base de données clients. Microsoft Dynamics 365 pour le service clientèle ne relie pas nativement le contact dupliqué au contact réel du client dans notre base de données clients, de sorte que les informations ne sont pas centralisées dans un seul enregistrement. Cela signifie que nos cas d'assistance ne sont pas non plus liés au contact associé au compte avec lequel nous avons une relation établie. Au lieu de cela, ils étaient liés aux contacts dupliqués vides créés à la suite de l'enregistrement sur le portail d'assistance.

Ce problème aurait pu être résolu par l'envoi automatique d'une invitation qui aurait permis de relier les contacts dupliqués aux vrais contacts clients dans notre CRM, mais il aurait fallu le faire dès le début de la création de la base de clients. En outre, même si cette solution fonctionne en théorie, elle n'est pas réaliste en raison des faibles taux d'ouverture des courriels. Pour mettre les choses en perspective, selon Mailchimp, le taux d'ouverture moyen des courriels, toutes industries confondues, n'était que de 21.33% en 2021.

Vous pensez peut-être aussi qu'une fusion par défaut des dossiers aurait suffi, mais ce n'est pas le cas, car la fusion des informations des dossiers en un seul contact entraînerait la perte de l'accès à notre portail d'assistance.

Solution - Un plugin Dynamics 365

L'autre façon de résoudre ce problème serait de créer un plugin Microsoft Dynamics 365 personnalisé (appelé Solution dans le monde des Power Apps), et c'est ce que nous avons fait. Le plugin que nous avons créé vérifie si l'utilisateur existe déjà dans notre CRM lors de l'enregistrement sur le portail d'assistance.

Il y a deux résultats possibles : si l'utilisateur existe dans notre base de données, le plugin reconnaît cette correspondance et fusionne les informations des deux enregistrements en un seul contact sans que l'utilisateur ne perde l'accès au portail de service à la clientèle du Dynamics 365, c'est-à-dire à notre portail d'assistance. Le second contact, qui ne contient aucune information à ce stade, est automatiquement supprimé par le plugin que nous avons créé, qui exécute chaque semaine une tâche distincte de suppression en bloc pour purger les enregistrements.

Dans le cas où l'utilisateur qui s'inscrit au portail n'existe pas dans notre CRM, le plugin fait quelque chose de différent. En tant qu'entreprise B2B, les courriels des clients de notre base de données ont un domaine spécifique aux organisations pour lesquelles ils travaillent. Ainsi, si un utilisateur qui n'est pas dans notre CRM souhaite s'inscrire sur notre portail, le plugin recherche dans notre CRM le domaine de l'e-mail de ce nouvel utilisateur. En cas de correspondance, un nouveau contact est automatiquement créé dans le CRM car cet utilisateur appartient à une entreprise que nous connaissons déjà. En revanche, s'il n'y a pas de correspondance dans notre base de données avec le domaine électronique du client qui s'inscrit au portail d'assistance, nous sommes informés en interne de la tentative d'enregistrement et nous prenons contact avec lui pour obtenir de plus amples informations, le cas échéant.

Vous pouvez trouver une partie du code de notre plugin Microsoft Dynamics 365 à l'adresse suivante ce lien. N'hésitez pas à tendre la main si vous souhaitez obtenir la version complète !

      public void Execute(IServiceProvider serviceProvider)
    {
        var tracingService = (ITracingService) serviceProvider.GetService(typeof(ITracingService)) ;
        var context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext)) ;
        var serviceFactory = (IOrganizationServiceFactory) serviceProvider.GetService(typeof(IOrganizationServiceFactory)) ;
        var service = serviceFactory.CreateOrganizationService(context.UserId) ;
        if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity))
        {
            retour ;
        }

        var entity = (Entity) context.InputParameters["Target"] ;
        var isLoginEnabled = HasLoginEnabled(entity) ;
        
        if (isLoginEnabled == false)
        {
            return ;
        }

        try
        {
            var emailAddress = (string) entity["emailaddress1"] ;
            var contactsWithSameEmailAddress = GetContactsByEmailAddress(service, entity.Id, emailAddress) ;
            if (contactsWithSameEmailAddress.Entities.Count > 0)
            {
                var hasLoginEnabled = HasLoginEnabled(contactsWithSameEmailAddress.Entities[0]) ;
                if (hasLoginEnabled)
                {
                    throw new InvalidPluginExecutionException(OperationStatus.Failed,
                        "L'utilisateur existe déjà. Essayez une autre adresse électronique pour vous inscrire ou connectez-vous à votre compte existant") ;
                }

                var mergeRequest = new MergeRequest
                {
                    SubordinateId = entity.Id,
                    Target = new EntityReference("contact", contactsWithSameEmailAddress.Entities[0].Id),
                    UpdateContent = GetUpdateContent(entity)
                } ;
                var _ = (MergeResponse) service.Execute(mergeRequest) ;
                entity[CustomAttributeName] = true ;
                service.Update(entity) ;
            }
            else
            {
                var domain = emailAddress.Split('@')[1] ;
                if (_publicDomains.Contains(domain))
                {
                    SendEmailAndDeactivateContact(service, tracingService, entity) ;
                }
                else
                {
                    var contactsWithSameDomain = GetContactsByDomain(service, entity.Id, domain) ;
                    if (contactsWithSameDomain.Entities.Count > 0)
                    {
                        entity["parentcustomerid"] = contactsWithSameDomain.Entities[0]["parentcustomerid"] ;
                        service.Update(entity) ;
                    }
                    else
                    {
                        SendEmailAndDeactivateContact(service, tracingService, entity) ;
                    }
                }
            }
        }
        catch (FaultException ex)
        {
            throw new InvalidPluginExecutionException("An error occurred in ContactPostOperationPlugin.", ex) ;
        }
    }
Fermer le code

Notre boutique en ligne

Nous avons également dû créer une autre intégration pour notre Boutique en ligneEn effet, nous n'autorisons l'accès d'un utilisateur à notre portail de service à la clientèle Microsoft Dynamics 365 que lorsque nous pouvons, d'une manière ou d'une autre, le faire correspondre à un enregistrement dans notre système de gestion des relations avec la clientèle, ou lorsque nous avons clarifié son identité.
Image
Toutes les personnes qui passent une commande sur la boutique en ligne ne sont pas des contacts dans notre CRM, mais si elles achètent une solution chez nous, il se peut qu'elles aient besoin d'une assistance. L'intégration que nous avons développée prend les données de l'utilisateur qui achète sur la boutique en ligne et crée une piste dans notre base de données clients. Cette piste est ensuite marquée comme "qualifiée", ce qui crée automatiquement un contact et un compte dans le CRM et lui donne accès à notre portail.

Occurrence #2 - Message d'erreur sur le service client D365

Les utilisateurs qui n'étaient pas encore enregistrés sur notre portail de service à la clientèle Dynamics 365 recevaient un message d'erreur trompeur lorsqu'ils tentaient de se connecter. Ce message indiquait que leur mot de passe était incorrect, au lieu de les informer que leur adresse électronique n'était pas enregistrée sur le portail d'assistance.
Pour en revenir à notre cas précédent, chaque fois qu'un utilisateur s'inscrit au portail d'assistance, un enregistrement dupliqué est créé dans notre système de gestion de la relation client. Les clients qui ne sont pas enregistrés sur le portail n'ont pas ce double enregistrement, et le système ne peut donc pas lire d'enregistrement contenant des informations sur leur connexion. Le système met à jour le champ "entrée du nom d'utilisateur" dans le CRM, qui ne contient aucune information. Le service clientèle de Microsoft Dynamics 365 suppose alors que l'utilisateur dispose déjà d'un identifiant et affiche le message l'informant que son mot de passe est incorrect.

Solution - Le plugin Dynamics 365

Tout comme la solution au problème que nous avons rencontré avec une base de données clients existante, la meilleure approche pour lutter contre ce message d'erreur était d'utiliser un plugin/solution Microsoft Dynamics 365.

En fait, nous avons utilisé le même plugin Dynamics 365 que nous avions déjà, mais avec une légère modification. Notre équipe de développement a enregistré une étape supplémentaire du plugin, qui est essentiellement une commande qui identifie et arrête l'erreur que le système commet en mettant à jour le champ "username input" lorsqu'il ne contient aucune information. L'étape du plugin corrige ensuite le message d'erreur qui est affiché à l'utilisateur qui tente d'accéder au portail, en indiquant qu'il n'a pas de login pour le portail de support au lieu de dire que son mot de passe est incorrect.

Nous espérons que vous avez apprécié la lecture de cet article jusqu'à présent. Partie 2 sera bientôt publié, alors gardez un œil sur notre site web. Page du blog pour être le premier à savoir quand il sortira !


A propos de l'auteur

Diogo Gouveia

Par Diogo Gouveia

"Après avoir terminé mes études au Royaume-Uni, j'ai rejoint l'équipe marketing de Connecting Software pour créer du contenu sur l'intégration des logiciels et divers autres sujets liés aux technologies de l'information. Si vous avez des observations ou des suggestions, n'hésitez pas à me contacter."

Laisser un commentaire

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

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

I agree to these terms.