Dynamics 365 Klantenserviceportaal header deel 2

Dynamics 365 Portaal voor klantenservice: Uitdagingen en oplossingen - Deel 2

Diogo GouveiaProducts and Solutions, Technical Leave a Comment

Welkom bij deel 2 van het artikel! Hier gaan we verder met het uitleggen van onze ervaring met het ontwikkelen van onze Microsoft Dynamics 365 Klanten Service Portal. Als u de Deel 1 neem dan zeker een kijkje (we hebben een plugin op maat gemaakt voor D365 Customer Service)!

Voorval #3 - Een nieuwe zaak openen

Tijdens het bouwen van onze Support Portal liepen we tegen een situatie aan die te maken had met het formulier dat onze klanten invullen wanneer ze een nieuwe case aanmaken. Het standaardontwerp van deze pagina op Microsoft Dynamics 365 Customer Service bevat een algemeen tekstvak, waarin klanten details moeten geven over de bijzonderheden van hun cases.

Hoewel deze indeling sommige bedrijven goed genoeg van dienst kan zijn, voldeed het niet voor het automatiseringsniveau dat we zochten. In wezen waren we op zoek naar een manier om elke nieuwe case die op het portaal werd aangemaakt direct naar de juiste wachtrij te leiden, met in elke wachtrij een team van personen die het meest geschikt zijn om elke case te beantwoorden. Naast het feit dat dit veel efficiënter is, is het ook minder tijdrovend dan elke case afzonderlijk te moeten analyseren om deze vervolgens naar de juiste experts te kunnen doorsturen.

Oplossing - Herontwerp van het D365-klantenserviceformulier

Om de oplossing van de cases die we ontvangen op het Support Portal te optimaliseren, moest ons team de pagina "Open een nieuwe case" opnieuw ontwerpen. In plaats van het algemene zoekvak dat we net hebben genoemd, hebben we een formulier gemaakt dat wordt uitgebreid als klanten de informatie over hun casus invullen.

Wanneer een gebruiker is ingelogd, is dit wat hij ziet:

dynamics 365 klantenserviceportaal nieuw dossier openen
Na het invullen van de velden "Titel" en "Onderwerp" blijft het formulier uitklappen. Voor demonstratiedoeleinden simuleren we het scenario van een klant die een aanmeldingsfout ondervindt wanneer hij probeert toegang te krijgen tot zijn SaaS-account voor CB Dynamics 365 to SharePoint Permissions Replicator.
Dynamics 365 klantenserviceportaal praktijkvoorbeeld

Zodra het formulier is ingevuld, zie je dat de informatie is verdeeld over verschillende velden in plaats van in één groot tekstvak. Het systeem kan nu deze verschillende velden lezen en de zaak correct naar de juiste wachtrij leiden via vooraf gedefinieerde procesworkflows.

Elke keer dat een zaak wordt doorgestuurd, wordt het ontvangende team gewaarschuwd met een automatische e-mail om hen te informeren dat ze een nieuwe zaak hebben ontvangen op de Support Portal. Vervolgens moet dat team naar de CRM gaan om de case te controleren en ofwel een Portal opmerking achter te laten, wat een eenvoudige opmerking is op de Dynamics 365 Customer Service Portal bij de vraag die werd geplaatst, of om een agenda afspraak te sturen, ook via de CRM, om een gesprek te regelen indien nodig. De klant wordt vervolgens via e-mail op de hoogte gebracht van deze gebeurtenissen, en hetzelfde gebeurt voor de teamleden die zijn toegewezen aan de wachtrijen telkens wanneer er een update is van een supportcase (bijvoorbeeld een antwoord van de gebruiker op een portaalcommentaar).

Het oplossen van cases uitsluitend met behulp van het Microsoft Dynamics 365 CRM is iets waar ons team aan moest wennen (wat verderop aan bod zal komen), maar het is enorm nuttig omdat alle communicatie en processen nu worden bijgehouden. Dit geeft ons de mogelijkheid om gegevens te genereren waarop we kunnen vertrouwen, deze te analyseren en daaruit initiatieven af te leiden om de klanttevredenheid te verhogen en onze productlijn te blijven verbeteren.

Connecting Software SaaS-portaal

Onze SaaS-portaal, de bron die onze klanten gebruiken om de oplossingen te beheren die via onze Microsoft Azure SaaS-servers worden ingezet, heeft ook enkele aanpassingen ondergaan. In de voettekst van de pagina staat een link "Contact opnemen", die klanten doorverwees naar een speciale plaats waar ze ondersteuningstickets voor hun vragen konden aanmaken.
dynamics 365 klantenserviceportaal contact met ons opnemen

Met onze nieuwe Dynamics 365 Customer Service Portal, werd dit een redundantie. Aangezien een van de belangrijkste doelen van de Support Portal is om support verzoeken te centraliseren, was het niet logisch om verzoeken die afkomstig waren van onze SaaS Portal via een ander kanaal te laten gaan. Daarom heeft ons ontwikkelingsteam dit veld "Contact opnemen" zo geconfigureerd dat het klanten rechtstreeks naar ons Ondersteuningsportaal.

Maar er is een bonus! Zodra een klant deze pagina bereikt, worden sommige velden van het herontworpen formulier dat we hebben gemaakt automatisch ingevuld op basis van de pagina waar de klant vandaan komt. Op deze manier kunnen we de efficiëntie verhogen, in lijn met de doelen die ons ertoe hebben aangezet om deze Dynamics 365 Customer Service Portal te ontwikkelen.

Voorval #4 - Totale omvang bijlage

Zoals je waarschijnlijk wel weet, zijn bijlagen erg handig bij het maken van een supportcase, omdat ze de uitwisseling van informatie tussen de gebruiker en de hulpverlener vergemakkelijken. Afhankelijk van de complexiteit van de betreffende case kan de totale grootte van de bijlagen echter variëren, en hier zijn meestal beperkingen aan verbonden.

De Dynamics 365 Customer Service Portal heeft een limiet van 5MB voor de totale grootte van bijlagen die klanten kunnen meesturen met hun cases. Voor klanten die een eenvoudige schermafbeelding meesturen is dit meer dan genoeg, maar voor cases die bijvoorbeeld een schermafbeelding of een groter aantal afbeeldingen nodig hebben, wordt dit een probleem.

      openbare opdracht Uitvoeren(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);
        Als (!context.InputParameters.Contains("Doel") || !(context.InputParameters["Doel"] is Entiteit))
        {
            return;
        }

        var entiteit = (Entiteit) context.InputParameters["Doel"];
        var isLoginEnabled = HasLoginEnabled(entity);
        
        als (isLoginEnabled == false)
        {
            return;
        }

        probeer  {
        {
            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)
                {
                    gooi dan de nieuwe InvalidPluginExecutionException(OperationStatus.Failed,
                        "Gebruiker bestaat al. Probeer een ander e-mailadres om te registreren of log in op uw bestaande account.");
                }

                var mergeRequest = nieuwe MergeRequest
                {
                    SubordinateId = entity.Id,
                    Doel = nieuwe EntityReference("contact", contactsWithSameEmailAddress.Entities[0].Id),
                    UpdateContent = GetUpdateContent(entity)
                };
                var _ = (MergeResponse) service.Execute(mergeRequest);
                entiteit[CustomAttributeName] = true;
                service.Update(entiteit);
            }
            anders  {
            {
                var domein = emailAdres.Split('@')[1];
                if (_publicDomains.Contains(domein))
                {
                    SendEmailAndDeactivateContact(service, tracingService, entiteit);
                }
                anders
                {
                    var contactsWithSameDomain = GetContactsByDomain(service, entity.Id, domein);
                    Als (contactsWithSameDomain.Entities.Count > 0)
                    {
                        entity["parentcustomerid"] = contactsWithSameDomain.Entities[0]["parentcustomerid"];
                        service.Update(entity);
                    }
                    anders
                    {
                        SendEmailAndDeactivateContact(service, tracingService, entiteit);
                    }
                }
            }
        }
        catch (FoutExceptie ex)
        {
            throw new InvalidPluginExecutionException("Er is een fout opgetreden in ContactPostOperationPlugin.", ex);
        }
    }
Code sluiten

Oplossing - Een omweg

Hoewel ons ontwikkelingsteam briljant is, kunnen we niet veel doen aan deze bijlagebeperking. De beste oplossing voor dit probleem is om de gebruiker een alternatieve opslagplaats te bieden voor het uploaden van bestanden, die worden geanalyseerd door het team dat de zaak behandelt. Hiervoor gebruiken we het platform ownCloud.

Andere voorvallen

Naast de vorige vier waren er nog andere situaties die aantoonden dat we bereid en in staat waren om de initiële uitrol van het project aan te passen als dat nodig zou zijn. Als voorbeeld:

  • De Microsoft Dynamics 365 Views en de doorzoekbaarheid van de Portal commentaarbeschrijvingen aangepast
  • Verbeterde leesbaarheid van de portaalopmerkingen voor het klant- en ondersteuningsteam door de HTML-code te verwijderen en Rich Text op te nemen.
  • Een extra kolom toegevoegd om een externe URL van de kennisbank samen te stellen
  • Een proces opzetten voor het automatisch oplossen van zaken die onbeantwoord blijven
  • Geleerd over de manieren waarop Microsoft Dynamics 365 HTML rendert om ervoor te zorgen dat onze informatiemails naar de klanten worden weergegeven zoals gewenst (Tip: De HTML moet in een enkele regel code staan in plaats van in een standaard formaat).

Als onderdeel van Microsofts reis om het Power Pages-platform veiliger te maken, hebben ze bovendien een Dataverse Toepassing Gebruikersconcept. Kortom, alle acties die worden uitgevoerd binnen webapplicaties hebben een type gebruiker achter zich, en elk type gebruiker heeft verschillende privileges.

De SYSTEM-gebruiker was degene die werd gebruikt door de D365-oplossing die we bouwden, zoals vermeld in deel 1 van dit artikel. Door de nieuwe introductie veranderde deze SYSTEM-gebruiker in een applicatiegebruiker, die niet dezelfde rechten heeft als de vorige SYSTEM-gebruiker. Hierdoor werd de oplossing die we hadden gebouwd beperkt en werkte deze niet goed.

Het enige dat gedaan moest worden, was het toewijzen van de systeembeheerdersrechten (van de vorige SYSTEM-gebruiker) aan de nieuwe applicatiegebruiker die Microsoft had geïmplementeerd. Zodra dit proces was voltooid, hervatte onze plugin de 100% effectiviteit!

Dynamics 365 CRM-training

Nu we de technische hindernissen hebben besproken die we tegenkwamen bij het bouwen van onze Support Portal, willen we kort ingaan op de managementaspecten van het implementeren van de Dynamics 365 Customer Service Portal, namelijk de Dynamics 365 CRM training die ons team moest volgen. Zoals elke projectmanager je zal vertellen, kan de betrokkenheid van het team om zich aan te passen aan de nieuwe manier van werken een van de grootste uitdagingen zijn bij het uitrollen van een verbetering.

Je weet misschien dat ons team voorheen klantenondersteuning gaf via e-mail. Nu moeten teamleden uitsluitend via ons CRM opmerkingen achterlaten of uitnodigingen voor vergaderingen versturen. Om de overgang naar een nieuw proces als dit soepel te laten verlopen, was het belangrijk om het team te informeren over de redenen hiervoor, zodat ze de voordelen konden zien, of het nu gaat om de tijd die ze kunnen besparen, de rapportagebehoeften van het bedrijf om initiatieven voor voortdurende verbetering af te leiden of het stroomlijnen van de ervaring met klantenondersteuning. Zelfs voor onze klanten verwachten we dat ze zich hebben moeten aanpassen aan het gebruik van de Support Portal voor hun vragen, in plaats van een e-mail te sturen naar de teamleden waarmee ze al vertrouwd waren.

Tot slot was ook het onderhoud van onze Knowledge Base een kans voor verandering. Nu onze Microsoft Dynamics 365 Customer Service Portal ons een veel duidelijker beeld geeft van de vragen die onze klanten hebben gesteld, moet het team naast het bieden van ondersteuning ook de terugkerende gevallen blijven toevoegen aan de Knowledge Base om ervoor te zorgen dat deze informatie direct beschikbaar is voor alle gebruikers van de Support Portal.

De afhaalmaaltijd

We kijken positief terug op deze gebeurtenissen omdat ze ons in staat stelden om onze Support Portal in de best mogelijke vorm te krijgen voor onze klanten. Hoewel het een lang project was dat de inspanningen en volledige toewijding van onze teamleden vergde, heeft het ongetwijfeld zijn vruchten afgeworpen. De mogelijkheid om meer gemak te bieden aan onze klanten en een sterke bron van informatie voor ons betekent dat we een hefboom hebben gekregen om onze doelen te blijven bereiken, en we kijken ernaar uit om te zien hoe we onze processen kunnen blijven optimaliseren met behulp van de Microsoft Dynamics 365 Customer Service Portal.

We hopen dat je het leuk vond om meer te weten te komen over onze ervaring met het maken van onze Ondersteuningsportaal. In Deel 1 van dit artikel hebben we een deel van een plugin opgenomen die we speciaal voor Microsoft Dynamics 365 Klantenservice. Dit was zeer nuttig voor ons, dus voel je vrij om een kijkje te nemen en de volledige versie aan te vragen!


Over de auteur

Diogo Gouveia

Door Diogo Gouveia

"Na het afronden van mijn studie in het Verenigd Koninkrijk ben ik bij het Marketing team van Connecting Software gaan werken om content te creëren over software integratie en diverse andere IT onderwerpen. Als je opmerkingen of suggesties hebt, neem dan contact op."

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

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