‘Swarming’ for Customer Service

You might be wondering as to what I mean by ‘swarming’ in the title for this post. Don’t worry – it’ll become clear pretty soon! But first of all, let’s understand the story behind this new functionality.

Where to begin? Well, let’s take a look within an organisation. It doesn’t really matter what sort of organisation it is, as most organisations will have something similar scenarios overall. So, what are we actually talking about?

Customer Service is, of course, a very important functionality of any organisations. Customers who have purchased products may need support, or perhaps are having issues, and need them to be resolved. Customer service agents are there to handle the customer queries, and look to resolve them as soon as possible.

However, it’s possible that the customer service agents don’t actually know how to resolve the customer query/issue themselves. They can, of course, use the Knowledge Base, but that requires knowledge articles to be created & maintained.

Now within the organisation, there will be SME’s (Subject Matter Experts). These are the people who know the matter in precise detail, often being the people who have created the product and/or process to begin with. But these people aren’t usually carrying out the customer service function.

So what this means is that the customer service agents need to try to work out who might actually know the answer/s, be able to help resolve the customer issue, etc. This can take time, be laborious, and perhaps not even be able to be carried out (depending on the organisation).

Hmm. So, what if the system might be able to actually SUGGEST the right people for a problem or issue? Even better, what if the system could support them being involved directly with the record/s, regardless of whether they’re a user within Dynamics 365 or not?

Enter the swarming capability onto the Dynamics 365 scene….

The aim of swarming is to bring together the necessary experts within Dynamics 365. Now, having said that, not all users will actually be interacting directly within Dynamics 365. What happens is that a specific Teams chat is created, so that users outside of the system can see the necessary information, and give input on the situation.

This builds on the existing functionality of being able to use Teams chats directly within Dynamics 365, but takes it to a whole new level, by having the system automatically suggest relevant people within the organisation, and bring them into the swarm chat!

There are some necessary steps to configure to enable this to happen.

Firstly, Teams needs to be enabled within Dynamics 365:

Once we start to turn things on, we can then see the following. This allows us to be able to specify the types of records that we can use swarming on. This is great, as we may be building out custom functionality using other tables, and can enable swarming on these as well

Once Teams chat has been enabled, we can then start setting up the swarming capabilities:

As part of the setup, we have:

  • The ability to set the general message that users will see when they create a swarm
  • Activating the case form that’s used for swarming (as this will include the functionality for swarming on the case form)
  • A Power Automate flow that will be used for sending notifications & invites within Teams for suggested (internal) users
  • Creating swarm condition rules, which allows us to bring in specific conditions around skills etc

So, how does this work in practise, once the system has been initially configured?

Users can go to the relevant record, such as a case record. They’re able to select the ‘Create swarm’ from the menu bar:

This then allows the user to provide a summary of what the swarm is for, the scenario, as well as selecting the skills needed for the swarm. Dynamics 365 can also suggest skills that it thinks would be helpful as well:

Users from across the organisation are matched, according to the skills identified:

Notifications are sent to them within Teams, requesting their help with the matter:

When they accept the invitation, they’re then brought into the swarm:

In fact, the members of the swarm aren’t actually accessing the swarm information within Dynamics 365. Instead, they’re seeing & interacting with the swarm within Teams itself!

Once the swarm is active, information can be shared, and a solution found. The swarm can then be successfully closed down:

This is truly amazing. Obviously collaboration on issues is important, especially when considering that we’re trying to resolve customer issues as quickly as possible! I’m also really excited about this, as I was part of the initial group that Microsoft reached out to initially for feedback on the capabilities of it.

To now be able to collaborate with users who sit outside of Dynamics 365, but have them access the necessary information to help resolve things, is just mind-blowing. So many scenarios that come to mind as to how this can really empower organisations!

Can you think of a way in which this could change things in your own organisation, or at a client? Drop a comment below – I’d love to hear more!

MB-260: Microsoft Customer Data Platform Specialist

It’s been a while since I’ve taken an exam. Admittedly, this is for two reason. Firstly, the renewal process for exams now (as updated last year) is not to take it again, but rather to re-qualify through Microsoft Learn. The second reason is that I’ve been waiting for some new exams to come out (OK – there’s the DA-100, which is still on my list of things to do…).

Well, there’s a new exam on the block. In fact, it’s a different type of exam – this is a ‘Speciality’ exam, rather than focusing on a specific type of application. It’s the first of its kind, though there are likely to be more to follow in the future.

It’s the MB-260, which is all around Customer Data. That’s right – it’s not about how to do sales, or customer service, or something else. It’s about taking the (holistic) approach to ALL of the data that we can hold on customers, and do something with it.

The official page for it is at https://docs.microsoft.com/en-us/learn/certifications/exams/mb-260https://docs.microsoft.com/en-us/learn/certifications/exams/mb-260. The specification for it is:

Candidates for this exam implement solutions that provide insights into customer profiles and that track engagement activities to help improve customer experiences and increase customer retention.

Candidates should have firsthand experience with Dynamics 365 Customer Insights and one or more additional Dynamics 365 apps, Power Query, Microsoft Dataverse, Common Data Model, and Microsoft Power Platform. They should also have direct experience with practices related to privacy, compliance, consent, security, responsible AI, and data retention policy.

Candidates need experience with processes related to KPIs, data retention, validation, visualization, preparation, matching, fragmentation, segmentation, and enhancement. They should have a general understanding of Azure Machine Learning, Azure Synapse Analytics, and Azure Data Factory.

Note that there’s quite a bit of Azure in there – it’s not just about Power Platform, Dataverse, or Dynamics 365. People who handle reporting on customer data should have various Azure skills as well.

There’s also a new type of badge that will be available:

At the time of writing, there are no official Microsoft Learning paths available to use to study. I do expect this to change in the near future, and will update this article when they’re out. However the objectives/sub-objectives are available to view from the main exam page, and I’d highly recommend going ahead & taking a good look at these.

As in my previous exam posts, I’m going to stress that it’s not permitted to share any of the exam questions. This is in the rules/acceptance for taking the exam. I’ve therefore put an overview of the sorts of questions that came up during my exam. (Note: exams are composed from question banks, so there could be many things that weren’t included in my exam, but could be included for someone else! ). I’ve tried to group things together as best as possible for the different subject areas.

Overall, I had 51 questions, which was towards the higher number of questions that I’ve experienced in my exams over the last year or so. There was only a single case study though.

Some of the naming conventions weren’t updated to the latest methods, which I would have expected. I still had a few references to ‘entities’ and ‘fields’ come up, though for the most part ‘tables’ and ‘columns’ were used. I guess it’s a matter of time to get everything up to speed with it.

  • Differences between Audience Insights and Engagement Insights
    • What are the benefits of each
    • When would you use each one
    • What types of users will benefit from each type
    • How to create customer insights
  • Environments
    • Types of environments
    • How to create a new environment
    • What options are available when creating an environment
    • What is possible to copy from an existing environment
  • Relationships
    • Different types of relationships
    • What is each one used for
    • Limitations of different relationship types
  • Business level measures vs customer level measures
    • What each one is, and what they’re used for
  • Power Query
    • How to use
    • How to configure
    • How to load data
  • Data mapping
    • Different types available to use
    • Scenarios each type should be used for
    • Limitations of each type
    • How to set it up
  • Segments
    • What are segments, how are they set up, how are they used
      What are quick segments, how are they set up, how are they used
      What are segment overlaps, how are they set up, how are they used
      What are segment differentiators, how are they set up, how are they used
  • Measures
    • What are measures, how are they set up, how are they used
  • Data refresh
    • Automated vs manual options
    • Limitations of each type
    • Availability of each type
    • How to set up each type
    • How to apply each type
  • Data Unification
    • What is this
    • How it can be used
    • How to set it up
    • Limitations of it
    • Process validation
    • Changing existing models
  • AI for Audience Insights
    • What is this
    • What can it be used for
    • How to use it
    • Factors that can affect outcomes
  • Security
    • Using Azure Key Vault
    • Capabilities of this
    • How to set it up
    • How to use it
  • Dynamics 365
    • Capabilities for interacting with Dynamics 365
    • How to set it up
    • How to display data, and where it can be displayed
    • What actions users are able to carry out within Dynamics 365

Wow. It’s a lot of stuff. It’s definitely an exam that if you’re not already currently hands-on with the skills needed, I’d highly recommend you get a decent amount of experience with it before taking the exam!

I can’t tell you if I’ve passed it or not…YET!. Results aren’t going to be out for several months, and to be honest, I’m not quite sure how well I’ve actually done.

So, if you’re aiming to take it – I wish you the very best of luck, and let me know your experience!

Solution deployments: Automated vs Manual

Over the holiday period, I’ve been playing around with solution deployments. OK – don’t judge me too much…I also took the necessary time off to relax & get time off work!

But with some spare time in the evenings, I decided to look a bit deeper into the world of DevOps (more specifically, Azure DevOps), and how it works. I’ll admit that I did have some ulterior motives around it (for a project that I’m working on), but it was good to be able to get some time to do this.

So why am I writing this post? Well, there’s a variety of great material out there already around DevOps, such as https://benediktbergmann.eu/ by Benedikt (check out his Twitter here), who’s really great at this. I chat to him from time to time around DevOps, to be able to understand it better.

However, I ran into some quite interesting behaviour (which I STILL have no idea why it’s the case, but more on this later), and thought that I would document it.

Right – let’s start off with manual deployments. As we know, manual deployments are done through the user interface. A user (with necessary permissions) would do the following:

  1. Go into the DEV environment, and export the solution (regardless of whether this is managed or unmanaged)
  2. Go into the target environment, and import the solution

Pretty simple, right?

Now, from an DevOps point of view, the process is similar, though not quite the same. Let’s see how it works:

  1. Run a Build pipeline, which will export the solution from the DEV environment, and put it into the repository
  2. Run a Release pipeline, which will get the solution from the repository, and deploy it to the necessary environment/s

All of that runs (usually) quite smoothly, which is great.

Now, let’s talk for a minute about managed solutions. I’m not going to get into the (heated) discussion around managed vs unmanaged solutions. There’s enough that’s been written, said, and debated on around the topic to date, and I’m sure it will continue. Obviously we all know that the Microsoft Best Practise approach is to use managed solutions in all non-DEV environments..

Anyway – why am I bringing this up? Well, there’s one key different in behaviour when deploying a managed solution vs an unmanaged solution (for a newer solution version), and this is to do with removing functionality from the solution in the DEV environment:

  • When deploying an unmanaged solution, it’s possible to remove items from the solution in the DEV environment, but when deploying to other environments, those items will still remain, even though they’re not present in the solution. Unmanaged solution deployments are additive only, and will not not remove any components
  • When deploying a managed solution, any items removed from the solution in the DEV environment, and then deploying the solution to other environments will cause those items to be removed from there as well. Managed deployments are both additive & subtractive (ie if a component isn’t present in the solution, it will remove it when the solution is deployed)

Now most of us know this already, which is great. It’s a very useful way to handle matters, and can assist with handling a variety of scenarios.

So, let’s go back to my first question – why am I writing this post? Well..it’s because of the different behaviour in manual vs automated deployment, which I discovered. Let’s look at this.

When deploying manually, we get the following options:

The default behaviour (outlined above) is to UPGRADE the solution. This will apply the solution with both additive & detractive behaviour. This is what we’re generally used to, and essentially the behaviour that we’d expect with a managed solution.

Now, when running a release pipeline from Azure DevOps, we’d expect this to work in the same way. After all, systems should be build to all work in the same way, right?

Well, no, that’s not actually what happens. See, when an Azure DevOps release pipeline runs, the default behaviour is NOT to import the solution (we’re talking managed solutions here) as an upgrade. Instead (by default), it imports it as an UPDATE!!!

This is what was really confusing me. I had removed functionality in DEV, ran the build pipeline, then ran the release pipeline. However the functionality (which I had removed from DEV) was still present in UAT! It took me a while to find out what was actually happening underneath…

So how can we handle this? Well, apart from suggesting to Microsoft that they should (perhaps) make everything work in the SAME way, there’s a way to handle it within the release pipeline. For this, it’s necessary to do two things:

Firstly, on the ‘Import Solution’ task, we need to set it to import as a holding solution.

Secondly, we then need to use the ‘Apply Solution Upgrade’ task in the release pipeline

What this will do is then upgrade the existing solution in the target environment with the holding solution that’s just been deployed.

Note: You will need to change the solution version to a higher solution number, in order for this to work properly. I’m going to write more about this another time, but it is important to know!

So in my view, this is a bit annoying, and perhaps Microsoft will change the default behaviour within DevOps at some point. But for the moment, it’s necessary to do.

Has this (or something similar) tripped you up in the past? How did you figure it out? Drop a comment below – I’d love to hear!

Omnichannel – Wave 2 2021

So last week the Wave 2 2021 information dropped. It’s taken me a few days to get round to it (family stuff happening), but I’m finally able to do a quick recap of it. As most people know, Microsoft releases features in two waves – one in the spring (Wave 1), and one in the autumn (Wave 2). As usual, I’ve included the links for the full release notes across both Dynamics 365 & Power Platform below, though will be focusing on the product features for Omnichannel

The links are here:

As I’ve done before, I’m going to include the dates that are applicable (at this point in time) for each time.

Enhancements to existing capabilities

Agent workspace inbox view

GA – Oct 2021

10 Google Workspace tips to optimize your inbox - Google Workspace Learning  Center

As more and more organisations move in the direction of omnichannel system capabilities, there is a growing need for the actual agent experience to be better optimised. The inbox view that this functionality will deliver is aimed to address the needs to quickly triage requests, and allow agents to focus on customers & their issues. It will be integrated into the Customer Service workspace as well as the Omnichannel Engagement Hub, and will allow agents to effectively navigate their emails & conversions whilst handling customer interactions.

Usability improvements for agent workspaces

Early Access – Aug 2021. GA – Oct 2021

Web Usability Definition | Web Wise Wording

The Customer Service workspace and Omnichannel Engagement Hub are multi-session applications that allow users to be able to multi-task with customers to provide support on multiple cases simultaneously. This release provides usability improvements to help agents be more productive, including simplified navigation as well as the migration of productivity tools to the new extensible App side pane.

Increase agent productivity with contextual collaboration using embedded Microsoft Teams

GA – Nov 2021

How to Embed and Share Videos on Microsoft Teams | ClickView

Agents who use Dynamics 365 Customer Service can easily collaborate with anyone within their organization, such as agents from other departments, supervisors, customer service peers, or support experts, over Microsoft Teams to resolve customer issues, without leaving
the case or conversation. Chats over Teams will be linked directly to Customer Service records, enabling a contextual experience

Some of the key features coming in this release are:

  • Ability to chat with contacts from within Dynamics 365
  • Access to key Customer Service contacts, such as supervisors, queue members, and support experts.
  • Access to AI-driven suggestions of agents who resolved similar cases.
  • Access to recent Microsoft Teams chat lists.
  • Ability to link and unlink chats to case records.
  • Access to linked Microsoft Teams chats.
  • Message avatar and presence, where users can easily see profile pictures of a chat participant and their availability (presence)

Omnichannel Voice Channel

At Ignite in September 2020, Microsoft announced the new Voice channel for Dynamics 365 Customer Service. The aim of the solution is to provide simpler administration & management experiences within the platform itself, rather then needing traditional cloud component integration complexities.

With the release of this, voice, SMS, and digital messaging channels, and a PVA-powered intelligent interactive voice response (IVR), real-time voice intelligence, and insights across all channels, speech-based self-service, and intelligent skills-based routing are all brought together in a single package.

Voice channel powered by Azure Communication Services

GA – Nov 2021

NEW Voice Channel Capabilities Announced for Dynamics 365 Customer Service  | Preact

As mentioned in the Wave 1 2021 post, there’s a new voice channel that’s coming in. This new solution for Customer Service enables an all-in-one customer service solution without fragmentation or requirement of manual data integration. It will provide a single view of the customer that empowers agents to provide personalised service across all channels, and true omnichannel analytics and insights for agents and supervisors alike. Providing organizations with a choice of telephony delivered directly by Microsoft enables quick and easy deployment of a voice channel for their business.

  • This feature enables organizations to adopt Azure Communication Services as a voice provider natively in Omnichannel for Customer Service, and facilitates the following features:
  • Phone number procurement and management
  • Ability to handle and distribute incoming calls
  • Ability to make outbound calls
  • Ability to manage SMS (inbound and outbound)
  • Deep integration of voice into core Omnichannel for Customer Service functionality
  • Real-time sentiment analysis
  • Real-time transcription
  • Real-time translation
  • Real-time smart assist suggestions
  • Operations management through supervisor dashboards
  • Ability to record and manage phone call

Now there has been a slight delay in rolling this out. As a result, the GA dates for the below have been pushed back to Nov 2021:

  • Call intelligence
  • Call recording
  • Call transcription and real-time sentiment analysis
  • Consult and transfer
  • Direct outbound calling
  • Embedded analytics for voice channel
  • Intelligent voice bot via Power Virtual Agents and Microsoft Bot Framework
  • Modern administration experience for Omnichannel voice (number management)
  • Modern administration for Omnichannel SMS via Communication Services (number management)
  • Supervisor monitoring and barge
  • Topic clustering for voice

Unified routing

Traditionally, organizations use “queue-based routing,” where incoming service requests are routed to a relevant queue, and agents work on those service requests by picking them from the queue. Organizations can miss service-level agreements if agents pick the easier service requests and leave the higher-priority requests in the queue. To address this scenario, organizations either create custom workflows to periodically distribute service requests among their agents or have dedicated personnel to distribute the service requests equitably among agents while adhering to organizational and customer preferences. Both methods are inefficient and error prone and necessitate continuous queue supervision.
The intelligent routing service in Customer Service uses a combination of AI models and rules to assign incoming service requests from all channels (cases, entities, chat, digital messages, and voice) to the best-suited agents. The assignment rules take into account customer-specified criteria, such as priority and auto-skills matching. The new routing service uses AI to classify, route, and assign work items with full automation, eliminating the need for constant queue supervision and manual work distribution to offer operational efficiencies for organizations

Improved historical analytics for unified routing scenarios

GA – Oct 2021

historical analysis on real-time data with ActivePivot

Administrators use unified routing and routing rules across the classification and assignment stages to help ensure the work item is assigned to the best suited agent. Embedded historical analytics provides an overview of routing performance of each channel to help optimize the routing strategy and improve the routing and workforce efficiency. Providing organizations a view of the effectiveness of configurations allows them to improve routing configurations to help increase their customer satisfaction and agent satisfaction scores.

Routing diagnostics for supervisors

GA – Oct 2021

Computer diagnostics icon (PSD) psd free file | Download now!

Routing diagnostics helps an organization to better understand the path a work item takes after it comes into the routing system, through all the classification and assignment rules, to ultimately land in a queue or be assigned to an agent. Current routing diagnostics are available for administrators and are more focused on the workstream and queue routing. In this release, routing diagnostics are being introduced to supervisor experiences, and the quality of the diagnostics is being improved.

I’m really quite excited to see how the new Voice channel will be received, as I think it’s a great feature addition to the overall tools available. It will be interesting to see how clients may choose to use it over their existing voice channel setup.

I’ll be looking deeper into the different functionalities, and will share them here. If there’s anything you think would be helpful to focus on, drop a comment & let me know!

Environments & ‘Admin Mode’

With some recent events happening (both professional & personal), I’ve taken a slight step back from putting out posts on here. Thankfully things seem to be settling down, so I’m getting (back) into the swing of things!

I thought that it would be good to talk about a subject that I fell ‘foul’ of recently. This is around environments, and more specifically, the ‘admin mode’ that it’s possible to use on them.

So what exactly is this ‘admin mode’? Well, the aim of it to restrict access to certain users, namely System Administrators & System Customisers. Why would we want to do this? There are several scenarios that come into mind:

  • Performing a system upgrade (such as enabling new features)
  • Changing environment type (eg Production to Sandbox, or vice-versa)
  • Restoring an environment

Essentially, any time we have operation-type work that we’re wanting to carry out. This way whatever we’re doing won’t affect users, and anything that the users are doing won’t affect things either (symbiotic relationship there!).

So as an example, if we’re doing a major release, which changes functionality within a system, we wouldn’t want users in the system carrying out their usual work, as this could have data issue if saving during the actual release. We of course SHOULD be communicating to users that a release is going to take place, and that they shouldn’t be in the system at the time, but ‘admin mode’ is how we can truly enforce it.

Something to bear in mind as well is that if you’re going ahead & restoring an environment to a previous state (whether that’s an automatic save point, or a manual one), it will automatically put the environment into ‘admin mode’ once the restore has been completed. This is very important to keep in mind!

There are three settings around administration mode:

  1. ‘Administration Mode’. This sets whether admin mode is on or off!
  2. ‘Background Operations’. This sets whether background processes, such as workflows, power automate flows, and Exchange synchronisation are enabled (allowed to happen) or disabled (stopped from happening
  3. ‘Custom Message’. This allows you to set a custom message that users (who are not system administrator/system customiser) will see when they attempt to access the environment

So this is the scenario that tripped me up a few weeks back:

  • I was needing to restore an environment to an earlier save point (to be clear, this was NOT a production environment)
  • I went ahead with the restore, and it completed successfully
  • Given that I was doing this at night, one of my children woke up, and I had to deal with them
  • I came back to things, saw that it completed, and then went ahead with the release that I was needing to do

All seemed to go well. However, when users were testing (which admittedly was a few days later), they reported that some functionality wasn’t working. This was strange, as it had been working before the release (& the release that I did hadn’t actually touched it!).

It turned out to be Power Automate flows that just didn’t seem to be running. OK – I started to look into them, but couldn’t figure out why they hadn’t run.

Creating a test Power Automate flow didn’t seem to work either – despite running it to test it, the trigger never activated! I was quite puzzled by this, and couldn’t (initially) work out the reason.

Then I thought to check environment settings! Lo & behold, the environment was STILL in administration mode, and the Background Process option was disabled! Aha – I’ve found the source!

Flipping this out of administration mode thankfully then allowed all Power Automate flows to work/run, and users confirmed that functionality was indeed running as expected. As you can imagine, I was quite relieved!

man in white shirt and black pants standing on black concrete bench near white building during

Something that I hadn’t realised previously is that if you manually put an environment into administration mode, it doesn’t automatically disable background processes. However, if you restore an environment, it DOES disable background processes by default. So if you’re wanting to try out automation items within a restored environment that’s still in administration mode, you’re going to need to ensure that you toggle the Background Processes toggle to allow it to work!

One further thing to learn as well (which I’ve been asked already by some people, so thought that I would mention it here). I’ve mentioned above that users were in the system, but reporting that things weren’t working. Now given that the environment was in administration mode, people have asked how users could be in it! The answer is that these users actually had the system customiser role applied to them, which is why they could get in! If they hadn’t had the role, then perhaps I might have realised things a little sooner (ie that the environment was in administration mode).

So a (good) little lesson learned, and I’ll definitely take it forwards. Has this, or anything else like it, ever tripped you up? Drop a comment below – I’d love to hear!

PL-600: Microsoft Power Platform Solution Architect

Well, it’s FINALLY here. And by finally, I guess I’m saying that I’ve been waiting for this for a while? The PL-600 exam is the new ‘Holy Grail’ for Dynamics 365/Power Platform people, being the Solution Architect (3 star) exam. Ten minutes after it went live, I booked to take it, and four hours after it went live I sat it! (I would have taken it sooner, but had to have supper first, get the kids to bed, etc…)

The first solution architect exam that Microsoft has done in this space has been the MB-600 (see my exam experience write-up on it at MB-600 Solution Architect Exam). However with the somewhat recent shift moving towards certifications for the wider Power Platform, it was inevitable that this exam would change as well.

Interestingly enough, the MB-600 now counts towards some of the Microsoft Partner qualifications. I’d expect that when it retires (currently planned for June 2021), the PL-600 will take the place of it in the required certifications to have.

So, how to discuss it? Well, the obvious first start is to link to the official Microsoft page for it, which is at https://docs.microsoft.com/en-us/learn/certifications/power-platform-solution-architect-expert/. According to the specification for it:

Microsoft Power Platform solution architects lead successful implementations and focus on how solutions address the broader business and technical needs of organizations.
A solution architect has functional and technical knowledge of the Power Platform, Dynamics 365 customer engagement apps, related Microsoft cloud solutions, and other third-party technologies. A solution architect applies knowledge and experience throughout an engagement. The solution architect performs proactive and preventative work to increase the value of the customer’s investment and promote organizational health. This role requires the ability to identify opportunities to solve business problems.
Solution architects have experience across functional and technical disciplines of the Power Platform. Solution architects should be able to facilitate design decisions across development, configuration, integration, infrastructure, security, availability, storage, and change management. This role balances a project’s business needs while meeting functional and non-functional requirements.

So not really changed that much from the MB-600, though obviously there’s now an expectation for solutions to bring in other parts of the Power Platform, as well as dip into Azure offerings as well. Pretty much par for the course, in my experience, with how recent projects that I’ve been on have been implemented.

At the time of writing, there are no official Microsoft Learning paths available to use to study. I do expect this to change in the near future, and will update this article when they’re out. However the objectives/sub-objectives are available to view from the main exam page, and I’d highly recommend going ahead & taking a good look at these.

Passing the exam (along with having either the PL-200 Microsoft Power Platform Functional Consultant or PL-400: Microsoft Power Platform Developer Exam qualifications as well) will result in a lovely (new) shiny badge. Oh, we do so love those three stars on it!

As in my previous exam posts, I’m going to stress that it’s not permitted to share any of the exam questions. This is in the rules/acceptance for taking the exam. I’ve therefore put an overview of the sorts of questions that came up during my exam. (Note: exams are composed from question banks, so there could be many things that weren’t included in my exam, but could be included for someone else! ). I’ve tried to group things together as best as possible for the different subject areas.

Overall, I had 47 questions, which is around the usual amount that I’ve experienced in my exams over the last year or so. What was slightly unusual was that instead of two case studies, I got three of them! (note that your own experience may likely vary from mine).

Some of the naming conventions weren’t updated to the latest methods, which I would have expected. I still had a few references to ‘entities’ and ‘fields’ come up, though for the most part ‘tables’ and ‘columns’ were used. I guess it’s a matter of time to get everything up to speed with it.

  • Environments
    • Region locations, handling scenarios with multiple countries
    • Analytics
    • Data migrations
  • Requirement Gathering
    • Functional
    • Non-functional
  • Data structure
    • Tables
      • Types of tables
        • Standard vs custom functionality
        • Virtual tables. What these are, when they would be used, limitations to them
        • Activity types
      • Table relationships & behaviours
      • Types of columns, what each one is suited for
      • Business rules. What they are, how they can be used
      • Business process flows. What they are, how they can be used
  • App types (differences between them, scenarios each one is best suited for
    • Model
    • Canvas
    • Portal
  • Model-driven apps
    • Form controls (standard vs custom)
    • Form layout (standard functionality vs custom functionality)
    • Formatting inputs
    • Restricting inputs
  • Automation
    • Power Automate flows. What they are, how they can be used, restrictions with them
    • Azure Logic Apps. What they are, how they can be used, restrictions with them
    • Power Virtual Agents
  • Communication channels
    • Self service abilities through Power Virtual Agent chatbots. How this works, when you’d use them, limitations that exist
    • Live agent abilities through Omnichannel. How this is implemented, how customers can connect to a live agent (directly, as well as through chatbots)
    • Teams. When this can be used, how other platform abilities can be used through it
  • Integration
    • Integration tools
    • Power Platform systems
    • Azure systems
    • Third party systems
    • Reporting across data held in different systems
    • Dynamics 365 API
  • Reporting
    • Power BI. What it is, how it’s used, how it’s configured, limitations with it, how to share information with other users
    • Interactive Dashboards. What these are, how these are set up and used, limitations to them
  • Troubleshooting
    • Canvas app issues
    • Model driven app issues
    • Data migration
  • Security
    • Data Protection. What is it, where it’s set up, how it’s used across different requirements in the platform
    • Types of users (interactive/non-interactive)
    • Azure Active Directory, and the role/s it can play, different types of AAD authentication
    • Power Platform security roles
    • Power Platform security teams, types
    • Portal security
    • Restricting who can view forms
    • Field level security
    • Hierarchy abilities
    • Auditing abilities and controls
    • Portal security

Wow. It’s a lot of stuff. Not that I’m surprised by that, as essentially it’s the sort of thing that I was expecting (being familiar with the MB-600). I think that on a ‘day to day’ basis, I cover most of these items already, so didn’t have to do a massive amount of revision for items that I wasn’t familiar with.

From my experience in taking it, I’d say that around 30% of the questions seemed to be focused on Dynamics 365, with 70% being focused on Power Platform capabilities. It’s about what I thought it would be when the exam was first announced. Obviously some people are more Dynamics 365 focused, and others are more Power Platform focused, but the aim of the exam (& qualification) is to really understand the breadth of the offerings available.

I can’t tell you if I’ve passed it or not…YET!. Results aren’t going to be out for several months, based on previous experience with Beta exams, but I’ve got a good feeling about this.

So, if you’re aiming to take it – I wish you the very best of luck, and let me know your experience!

Omnichannel – Wave 1 2021

Today is a day that I’ve been looking forward to over the last few days. Leaving aside anything else that may be happening, it’s the day when the 2021 Wave 1 Release Notes come out! These cover the new functionality & features that will be released during the first half of 20201 for both Dynamics 365 & Power Platform.

The links are here:

There’s an amazing amount of functionality, but what I want to focus on specifically are the capabilities coming down the line around Omnichannel for Customer Service

As I’ve done before, I’m going to include the dates that are applicable (at this point in time) for each time.

Enhancements to existing capabilities

Embedded analytics for Chat and Digital Messaging

GA – April 2021

10 Great Google Analytics Alternatives

Traditional dashboards have limited interactive capabilities and provide a narrow view into the overall organization. Omnichannel’ s Embedded analytics for chat and digital messaging allows service managers to identify problem areas and opportunities to improve from historical data, along with rich slice and dice capabilities powered by Power BI.

With this release, the embedded analytics for chat and digital messaging allows service managers to understand how agents and queues are performing. The analytics provide trends based on problem areas and opportunities allowing the service managers to analyze the corrective measures they can take, provide appropriate guidance to agents, and improve the customer support experience. Key Insights cards provide a glimpse into the notable trends on core metrics and topics that are important for a supervisor to further investigate the analytics.

Enhanced supervisor experiences for operational monitoring of Chat and Digital Messaging

GA – April 2021

How Can I Use Microsoft SCOM for End-to-End Performance Monitoring – eG  Innovations

Supervisors need key metrics and channel-specific performance measures to take operational decisions to meet and exceed service-level goals

  • As contact centres deploy multiple channels to provide an omnichannel experience in customer service, supervisor can view and track relevant metrics for operational efficiency in the following ways:
  • Equip team leads to monitor channel-specific performance metrics to handle agents who are dedicated to a single channel
  • Enable senior team leads and service delivery managers to monitor All-up metrics across all channels
  • Capability to quickly switch between the views

Historical topic clustering for all channels

GA – April 2021

Topics | National Museum of African American History and Culture

Topics are automatically generated using AI to organize similar issues into groups. By aggregating metrics from issues grouped into the same topic, organizations get a full view of KPIs and metric impact for each topic. For example, organisations can view the average handling time, sentiment, and CSAT for a specific topic, and whether the topic is a key driver for any of those metrics.

Modern Administration Experience for Omnichannel Chat and Digital Messaging

GA – April 2021

Modern - Responsive Admin Dashboard Template by stacks | ThemeForest

With the modern administration experience, administrators can easily start the first chat conversation with only a few clicks and see the immediate value of chat conversation powered by Omnichannel for Customer Service. The modern administration experience is intuitive to follow and allows administrators to quickly understand and perform the configuration steps.

Introducing the first run experience to help administrators automatically set up the chat channel and start the first chat conversation. Also, introducing the modern administration experience to guide administrators to set up the end-to-end configurations in Omnichannel for Customer Service.
The key highlights of this feature include:

  • First run experience of chat channel
  • Streamlined and simplified administration user experience of work stream, queue, and global setting configurations for digital messaging channels

Omnichannel Voice Channel

At Ignite in September 2020, Microsoft announced the new Voice channel for Dynamics 365 Customer Service. The aim of the solution is to provide simpler administration & management experiences within the platform itself, rather then needing traditional cloud component integration complexities.

With the release of this, voice, SMS, and digital messaging channels, and a PVA-powered intelligent interactive voice response (IVR), real-time voice intelligence, and insights across all channels, speech-based self-service, and intelligent skills-based routing are all brought together in a single package.

This feature is currently in invite-only private preview, with general availability planned as part of the April 2021 wave

Call intelligence

GA – August 2021

What is call intelligence, and why should you care?

The transcript of a call and an in-depth analysis of a particular call recording can help an organization better understand how the engagement with the customer progressed and present opportunities for agent training.

Through historical analytics, supervisors will be able to drill into a particular call to view more details. Each call will include voice-specific metrics such as talk-to-listen ratio, talking speed and more. Supervisors can also see the detailed sentiment throughout the call, shown alongside the transcript for further analysis. This view helps supervisors better understand how the call went and identify the areas to improve.

  • This capability leverages the call transcription and sentiment analysis to produce the following metrics:
  • Talking speed
  • Switches per hour
  • Pause before speaking
  • Longest customer monologue

Call Recording

GA – August 2021

Call Recording | MightyCall

Customer service agents typically need to review phone calls with customers. Call recording allows agents to record phone calls between agents and customers. This helps the organization to revisit the interaction to better understand the customer’s issues in his or her own words and increase the possibility of resolving the customer’s problems or questions. Call recordings are also helpful for training scenarios where an organization can share examples of great customer interactions among the team.

Call Transcription and Realtime Sentiment Analysis

GA – August 2021

Jog.ai | Supercharge Your Call Notes | Automated Call Recording and  Transcription

Customer service agents often need to take notes while helping customers during a phone call. Call transcription converts a phone conversation into written words reducing the amount of notes an agent will need to take and helping with accessibility. Furthermore, sentiment analysis examines the conversation and identifies the general sentiment or “mood” of the customer like if they are slightly angry or very disappointed. Call transcription and sentiment analysis are both used by the system to proactively analyse cases and provide agents with suggestions to resolve the issue.

Call transcription converts a phone conversation into written words and stores them as plain text in real time as the call is in progress. Sentiment analysis, built on award winning AI, tags a sentiment on the top of a conversation, and is constantly updated as the conversation evolves.
Both call transcription and sentiment analysis are included out-of-the-box with no additional setup or configuration.

Consult and transfer

GA – August 2021

Voip Call Transfer - Voip Service - Voip Business | VoIP Business

Omnichannel for Customer Service offers customer service agents the ability to easily consult with and transfer calls to other customer service representatives and helps agents have a greater chance to resolve customer issues.

While on a call with a customer, an agent can put the customer on hold and consult with another agent or manager on an issue that requires specific expertise. issue perhaps one with specific expertise or a manager. Agents can also transfer the call to a specific customer service agent, which is also referred to as a warm transfer. In other scenarios, the agent can transfer the call to a queue from where it is routed to the best available agent based on rules configured by your business.

Direct outbound calling

GA – August 2021

Outbound Calling Strategy- the Best Way to Boost Communication

The ability of agents to contact customers via voice calling remains one of the most important customer interaction methods in Customer Service. Direct outbound calling enables agents to contact customers using our native fully integrated voice channel based on Azure Communication Services, where voice is just another channel for agents and supervisors.

Agents can contact customers using voice calling. Direct outbound calls can be initiated via click-to-call directly from phone number fields in the following:

  • Cases
  • Customer profiles
  • Call back activities
  • Ongoing chat conversations
  • Via a phone dialler

Outbound calls are displayed as conversations in conversation history contextually per case/customer and timelines. Supervisors can monitor outbound calls just like any other customer interaction.

This feature includes the following key highlights:

  • Fully integrated outbound voice channel without third party voice integration
  • Sample outbound voice channel configured automatically on voice channel provisioning.
  • Easy channel administration within the Omnichannel admin experience.
  • Outbound voice conversations are just another conversation type in Omnichannel.
  • Supervisors can monitor outbound calls from within the ongoing conversations dashboard like any other agent/customer interaction.

Embedded analytics for voice channel

GA – August 2021

How to Utilize Google Analytics to Improve Your Restaurant's Website

Traditional dashboards have limited interactive capabilities and provide a narrow view into the overall organization. With historical data, embedded analytics for voice channel empowers service managers to identify problem areas and opportunities to improve and provides rich slice and dice capabilities powered by Power BI.

Customer service managers or supervisors are responsible for managing the agents who work to resolve customer queries every day through phone channel. With this release, the embedded analytics provide trends over a period to understand how agents and queues are performing, so that service managers can take corrective measures, provide appropriate guidance to agents, and improve the customer support experience. Key Insights cards provide an “at a glance” view into notable trends on core metrics and topics that are important for a supervisor to investigate further in the comprehensive reports. Agent-focused views display core metrics to better understand the primary areas an agent worked in and identify opportunities for coaching.

  • With these views, supervisors can:
  • Monitor operational metrics, such as inbound calls, calls handled, abandon rate, average talk time, and average speed to answer calls, across channels, queues, agents, and topics
  • Monitor support quality through sentiment analysis across channels, queues, agents, and topics.

Intelligent voice via PVA and Azure Bot Framework

GA – August 2021

How Intelligent Voice Agents Can Replace Costly Contact Centers

With speech-enabled Power Virtual Agents, businesses can empower business users to build and update intelligent voice bots that use built-in natural language processing capabilities to engage conversationally with customers and provide personalized self-service always. Bots can be built once and deployed across messaging and voice channels for maximum efficiency and consistency. For more advanced scenarios, businesses can integrate bots built with the Microsoft Bot Framework to work on the voice channel.

With this feature, businesses have a familiar bot authoring experience for all customer service bots, across messaging and voice. Customers will enjoy with flexible, free-form service experiences, instead of inflexible menu trees. Bots can easily hand off the call to humans agents, with the conversation history and context gathered by the bot. This allows Omnichannel for Customer Service to route the customer from the bot to the best available live agent to provide a seamless, contextual hand off.
The key highlights of this feature include:

  • Enable Power Virtual Agents and Azure Bot Framework bots to provide intelligent voice bots on the voice channel
  • Support for built in dual tone multi-frequency (DTMF) as a secondary means to interact with the bot
  • Transfer calls to human agents with full transcript and context
  • Use bots for post-call surveys

Modern Administration Experience for Omnichannel Voice (Number Management)

GA – August 2021

Typically, customer service organizations must manually integrate standalone telephony and customer relationship management (CRM) solutions, which results in fragmented experiences and error-prone data integration. Administrators need to manage resources and phone numbers in the telephony provider’s app and manually bring over this information to the CRM solution. Very often, this setup process requires collaboration between business and IT administrators, adding delay to an already lengthy process. With the availability of Azure Communication Services, Omnichannel for Customer Service now offers native voice channel. This all-in-one solution empowers business administrators to independently deploy a telephony resource and acquire phone numbers in a few steps, offering a fast and consistent experience.

Until now, administrators created resources and managed phone numbers in a separate telephony application and then manually deployed the numbers in the CRM solution. The long-fragmented process is inconsistent and requires continuous maintenance to keep both applications in sync.
With the native voice channel, business administrators can deploy the telephony resource and acquire phone numbers without leaving the Omnichannel Administration app.

The key highlights of this feature include:

  • Telephony resource deployment using connection string or sign into Azure account.
  • Acquiring phone numbers of various types and plans.
  • Releasing phone numbers.

Modern Administration for Omnichannel SMS via ACS (Number Management)

GA – August 2021

Typically, customer service organizations must manually integrate standalone telephony and CRM solutions, resulting in fragmented experiences and error-prone manual data integration. Administrators need to manage resources and phone numbers in the telephony provider’s app and manually bring over this information to the CRM solution. Very often, this setup process requires collaboration between business and IT administrators, adding more delay to an already long process. With the availability of Azure Communication Services, Omnichannel for Customer Service now offers native new voice channel. This all-in-one solution empowers business administrators to independently deploy a telephony resource and acquire phone numbers in a few steps, offering a fast and consistent experience.

Until now, administrators created resources and managed phone numbers in a separate telephony application and then manually deployed the numbers in the CRM solution. The long-fragmented process is inconsistent and requires continuous maintenance to keep both applications in sync.
With the native voice channel, business administrators can deploy the telephony resource and acquire phone numbers without leaving the Omnichannel Administration app.

The key highlights of this feature include:

  • Telephony resource deployment using connection string or sign into Azure account.
  • Acquiring phone numbers of various types and plans.
  • Releasing phone numbers.

Supervisor monitoring and barge

GA – August 2021

Call Monitoring – Understanding this Tool in the Call Centre

Service managers are responsible for the overall quality of customer service and often need to observe customer service representatives while they are on the phone with customers. Omnichannel for Customer Service allows supervisors to listen in on phone conversations and join a conversation, if needed. This helps supervisors increase the likelihood of resolving customer issues, enforce proper business practices, and identify training opportunities.

When supervisors log into the application, they are provided a list of phone calls that are in progress. From the list, they can choose to join a call with the option to join anonymously as a hidden participant. If they want to intervene, they can join the call, referred to as “barging”, which then becomes a group call.

Topic Clustering for Voice

GA – August 2021

Topics are automatically generated using AI to organize similar issues into groups. By aggregating metrics from issues grouped into the same topic, organizations get a full view of KPIs and metric impact for each topic. For example, organizations can view the average handling time, sentiment, and CSAT for a specific topic, and whether the topic is a key driver for any of those metrics.

Topics, which represent semantically similar support issues, help organizations better identify and respond to issues their customers are facing. Correlating these topics along with core historical analytics makes it quick and easy for a supervisor to see common issues by volume, CSAT impact and new cases, helping to identify where they should invest their time.
In this release, the same capability will now be applied to voice channel, generating topics off of the transcript. This will help organizations better understand issues that customers face and their impact on core business metrics across the spectrum of engagement.

I’m really quite excited to see how the new Voice channel will be received, as I think it’s a great feature addition to the overall tools available. It will be interesting to see how clients may choose to use it over their existing voice channel setup.

I’ll be looking deeper into the different functionalities, and will share them here. If there’s anything you think would be helpful to focus on, drop a comment & let me know!

Personalised Sound Notifications for Omnichannel

One of the themes running through the Wave 2 2020 update for Omnichannel is the personalisation aspect. Though systems work just fine on their own, it’s always nice to add a ‘personal touch’ to the parts that we can. Last week I shared how quick replies are now able to be personalised (Personalised Quick Replies). This week I’m going to go into how the sound notifications can be personalised as well!

These seem to be just small little features, but in my view they do bring things to the next level. Examples of this are the following:

  • If a customer session starts, wanting to know which channel it’s come in through, without needing to open the conversation
  • Many agents in a contact centre – if everyone is using the same sound, no-one knows if it’s their computer or not!
  • The different between a new conversation starting, and a new message being received on an existing conversation
  • Wanting to ensure that sound volumes aren’t too high, else they’ll disturb other people.

All of these are extremely valid scenarios, along with other ones (such as disabling sound entirely, for example!). Though this seems simple to implement, and isn’t very difficult to set it, there’s a lot of flexibility involved. I’m therefore really happy that this is now available to be used.

So, let’s see how to go about setting it up. There are two parts to this – the Omnichannel Administrator side, and what the Agent can then do

Omnichannel Administrator

In the Omnichannel Administrator Hub, the administrator should open the Notifications section, and go to the Sound Notification Settings tab:

There’s a single setting there, to toggle sound notifications on or off. Setting it to ‘Yes’ will then show the following section on the screen:

Once it’s enabled, there are then a number of system default options that are automatically loaded. Here the administrator can do the following tasks:

  • Choose to allow sounds to be played at a per channel level
  • Change the system default sound notification (more on loading in custom sounds below)
  • Allow the sound notification to be repeated until the call is answered
  • Set the maximum volume allowed for the sound (this is a lovely slider control!)

There are of course sound files that come included in the system by default. But what if we’re wanting to upload custom sound files to be used? Well, that’s not a problem. Simply by clicking in the lookup field to select a sound file, we are given the option to upload a new audio file:

Clicking this brings up the Audio File record, which we use to upload. We need to give it a name & save it, and then we’re given the ability to upload the file itself:

Note: There are specific file types that need to be used, with a maximum file size of 1MB. It does say that for best experience to use the OGG file format. There are plenty of free resources out there to download OGG files, or to convert MP3 files to the OGG file format if you need

Once we’ve uploaded the file, we get presented with a mini player to hear how it sounds. This is really cool!

All of the audio files in the system (both default & custom) are then available for agents to personalise their own experience

Note: If a company wants to upload many different custom audio files, it may be easier to add the Audio Files entity to the sitemap, and then perform this function from there

Note: To prevent agents from uploading their own audio files directly, the Omnichannel Agent security role only allows Read access, not Create/Edit access:

Omnichannel Agent

With the initial system setup performed by the Omnichannel Administrator, agents are then free to go ahead & personalise their own experience. This is done directly within the Omnichannel for Customer Service app, by selecting ‘Personalisation’ from the available menu:

Once this is selected, the agent is presented with a very similar interface to the Omnichannel Administrator:

Here the agent can change the system default for themselves (this does not affect any other Omnichannel users), change the various settings, modify the volume levels, etc.

Once saved, it’s then live & active, and will work as desired.

Incoming message alerts for active sessions

At the bottom of the sound notification settings screen, there is one further setting. This is around the behaviour of sounds for existing conversations:

This can be helpful (either from an overall system perspective, or an individual agent perspective) to either allow or turn off sounds from conversations that are already happening. Some people might find it very annoying that every time a customer sends a new message through, the system plays a sound. This is especially true when dealing with multiple conversations (which, after all, is what Omnichannel is all about!)

In summary, it’s a really good feature to have now at our convenience to use. Obviously I’d suggest not to load rock music into it, for example, unless of course your company specialises in rock music! How do you think this would be beneficial to your users? Drop a comment below – I’d love to hear!

Data Export Service Connection Issues

This is a slightly different post from the usually stuff that I talk about. It’s much more ‘techy/developer’ focused, but I thought it would be quite useful still for people to keep in mind.

The background to this comes from a project that I’ve been working on with some colleagues. Part of the project involves setting up an Azure SQL database, and replicating CDS data to it. Why, I hear you ask? Well, there are some downstream systems that may be heavy users of the data, and as we well know, CDS isn’t specifically build to handle a large number of queries against it. In fact, if you start hammering the CDS layer, Microsoft is likely to reach out to ask what exactly you’re trying to do!

Therefore (as most people would do), we’re putting in database layer/s within Azure to handle the volume of data requests that we’re expecting to occur.

Azure SQL Database | Microsoft Azure

So with setting up things like databases, we need to create the name for them, along with access credentials. All regular ‘run of the mill’ stuff – no surprises there. In order for adequate security, we usually use one of a handful of password generators that we keep to hand. These have many advantages to them, such as ensuring that it’s not something we (as humans) are dreaming up, that might be easier to be guessed at. I’ve used password generators over the years for many different professional & personal projects, and they really are quite good overall.

Sordum Random Password Generator Creates Random Passwords with Ease -  MajorGeeks
Example of a password generation tool

Once we had the credentials & everything set up, we then logged in (using SQL Server Management Studio), and all was good. Everything that we needed was in place, and it was looking superb (from the front end, at least).

OK – on to getting the data actually loaded in. To do this, we’re using the Data Export Service (see https://docs.microsoft.com/en-us/power-platform/admin/replicate-data-microsoft-azure-sql-database for further information around this). The reason for using this is that the Data Export Service intelligently synchronises the entire database initially, and thereafter synchronises on a continuous basis as changes occur (delta changes) in the system. This is really good, and means we don’t need to build anything custom to handle it. Wonderful!

Setting up the Data Export Service takes a little bit of time. I’m not going to go into the details of how to set it up – instead there’s a wonderful walkthrough by the AMAZING Scott Durow at http://develop1.net/public/post/2016/12/09/Dynamic365-Data-Export-Service. Go take a look at it if you’re needing to find out how to do it.

So we were going through the process. Part of this is needing to copy the Azure connection string into into a script that you run. When you do this, you need to re-insert the password (as Azure doesn’t include it in the string). For our purposes (as we had generated this), we copied/pasted the password, and ran things.

However all we were getting was a red star, and the error message ‘Unable to validate profile’.

As you’d expect, this was HIGHLY frustrating. We started to dig down to see what actual error log/s were available (with hopefully more information on them), but didn’t make much progress there. We logged in through the front end again – yes, no problems there, all was working fine. Back to the Export Service & scripts, but again the error. As you can imagine, we weren’t very positive about this, and were really trying to find out what could possibly be causing this. Was it a system error? Was there something that we had forgotten to do, somewhere, during the initial setup process?

It’s at these sorts of times that self-doubt can start to creep in. Did we miss something small & minor, but that was actually really important? We went over the deployment steps again & again. Each time, we couldn’t find anything that we had missed out. It was getting absolutely exasperating!

Finally, after much trial & error, we narrowed the issue down to one source. It’s something we hadn’t really expected, but had indeed caused all of this to happen!

What happened was that the password that we had auto-generated had a semi-colon (‘;’) in it. In & of itself, that’s not an issue (usually). As we had seen, we were able to log into SSMS (the ‘front-end’) successfully, with no issues at all.

However when put into code, Azure treats the semi-colon as a special character (a command separator). It was therefore not recognising the entire password, which was causing the entire thing to fail! To resolve this was simple – we regenerated the password to ensure that it didn’t include a semi-colon character within it!

Now, this is indeed something that’s quite simple, and should be at the core of programming knowledge. Most password generators will have an option to avoid this happening, but not all password generators have this. Unfortunately we had fallen subject to this, but thankfully all was resolved in the end.

The setup then carried on successfully, and we were able (after all of the effort above) to achieve what we had set out to do initially.

Have you ever had a similar issue? Either with passwords, or where something worked through a front-end system, but not in code? Drop a comment below – I’d love to hear!

AI Translation for Omnichannel

How to start off this post? I’ve been trying to work out how exactly I can express my excitement around this new feature for Omnichannel. Included in the Wave 2 2020 release, it’s just AMAZING. That, however, doesn’t give it true justice. So let’s see how I can describe it properly to give it due respect.

Previously I’ve mentioned the ability to use skills within Omnichannel (see https://thecrm.ninja/omnichannel-for-dynamics-365-queues-users-skills/). This can be used to indicate, for example, agents who can communicate in a certain language. That’s useful of course, but what happens when you don’t have anyone who can speak the language that the customer wants to use? It’s a problem, and one that’s really not easily solved. At least, not until now.

So, what exactly does this new translation feature do? Simple – it translates from one language to another. OK, it’s actually a little more awesome than just that. Having delved into it quite a bit over the last week or so, there are (in my view) three main benefits (with a bonus one as well!):

  1. It translates incoming text from the customer (through chat) from the language that they’re using to the language that the agent is using
  2. It translates outgoing text from the agent (through chat) from the language that the agent is using to the language that the customer is using
  3. It translates text between agents from one language to the other & vice versa (eg on an internal consult)

Now for the bonus. It doesn’t just translate text from one language to another. It follows the languages being used! So if the customer switches in mid-conversation to a different language, the system picks it up. Not only is the new incoming language translated into the agents language, but the replies from the agent are shown in the (new) language being used by the customer. It’ll automatically show text in the ‘last used’ language, which is really quite incredible (at least in my opinion).

There’s no fiddling around of needing agents to select the language that they need, or anything else. It’s a simple click to turn it on, and then another click to turn it off. I’m going to go through the setup of it below, as there are a few fiddly bits that did confuse me for a bit.

It’s also possible to use different translation tools. At the time of writing this post, it’s possible to use Bing, Google or Azure translation models. I’m sure that there will be other options available in the future as well to use, which really opens up possibilities for clients with differing digital estates.

Translation happens in real time, so there’s no waiting around for it to actually get on with it. It’s displayed immediately on the screen for the agent to see.

Setup for translation

I found the general guides to be alright, but weren’t too clear on a few items. I’m therefore sharing below how I went about it, in order to get things working properly. Please be aware that this isn’t in the order specified in the documentation, but in retrospect means less switching between screens:

  1. Ensure that you have the latest updates to your Omnichannel environment (this is always a good idea, regardless of anything else!)
  1. Go to https://github.com/microsoft/Dynamics365-Apps-Samples/tree/master/customer-service/omnichannel/real-time-translation & download the ‘webResourceV2.js’ file there (if you’re unfamiliar with how to do this, click to open the file, click the ‘Raw’ button, and then save the page (ensure it’s got the ‘.js’ extension when you save it!).
  1. Ensure you have an API key to enter into the web resource file! This is what tripped me up at first. You can use any text editor (I use Notepad++) to open it up. How you get the API key will depend on the provider. For example, to set up a free account in Azure, take a look at https://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-how-to-signup. There are also some additional things that you can configure in the web resource file, but I’m not going to go into that here
  1. Go to your solutions (this can either be through the Classic interface, or through http://make.powerapps.com). You can either create a new solution to hold the web resource file, or alternatively if you have existing solutions that you’d deploy, you can add the web resource file to that. Either:
    1. In the classic interface, navigate to Web Resources, click to create a new web resource, and upload the file (ensure you select the type to be ‘Script (JScript)’, or
    2. In the modern interface, click the ‘New’ button, select ‘Web Resource’ from the ‘Other’ section, and then follow the steps above

Once it’s saved, it’ll give you a URL. Copy that, and publish the solution.

  1. Go to the Omnichannel Administration Hub, find ‘Real Time Translation’ under Settings, and set this to Yes. You can also select a default input language from the selection. Also enter the URL that you copied above. Save it
  1. You’re all done!

Agent Experience

Depending on how you’ve configured your web resource, auto translation will either by on by default, or be off. If it’s not on by default, the agent can simply click within their chat window to select it to be active:

Once active, it’ll then start to translate everything, in both directions. Below are side by side screens of the customer & agent experiences. You’ll note that the customer is seeing the initial agent response in English, as the agent was the first in the conversation

From the agent side of things, both the original language, as well as the translated language, are shown. The customer is only shown the language that they’re actually using

If the agent isn’t sure what language the customer is using (as it’s being auto-translated for them), they can hover over the text, and it’ll show the details for it:

If the agent will consult, or transfer the session to another agent, the second agent will see the conversation in the language that they are themselves using (with the original text as well). This allows for the possibility to pass a customer to a specialist to assist them, even if they don’t speak the same language! It’s really cool to see this in action.

Even more wonderfully, this is even stored down to the transcript level:

This is really opening up major new concepts that Omnichannel can be used for, which will be supported entirely by this feature. As I said at the beginning of this post, I’m absolutely excited for it, and we’re already envisioning how this will be able to empower our clients even more.

Do you have any questions around this? Can you think of any scenarios that this could solve for you? Drop a comment below – I’d love to hear!