Uses for Omnichannel in times of crisis

I originally had a different article planned for today, but with the current situation that’s happening over the world, I decided to change what I was going to talk about.

The world has gone crazy, in so many ways. There’s plenty of information out there around what’s happening, and with best advice to people as to how to deal with things, cope, etc. I’m not going to cover that (besides, it’s likely that things will change over time, which means that anything I write could be out of date soon).

Instead, I’m going to address one of the specific issues that I’m seeing again and again. This is the bottleneck that people are facing when trying to contact companies, whether the company is their bank, their utility provider, their health provider, or even travel companies.

Image result for bottleneck

Regardless of whether people are trying to cancel an existing holiday & get a refund, speak to their bank to get a mortgage holiday, or get medical advice, they’re facing the same major issue – they’re not the only ones trying to get through. Phone lines are jammed (assuming that they’ve not been stopped due to agents being sick), static forms where you fill in information aren’t liked (as you don’t know what the actual status of things are), and online chat takes an absolute age. I had an online chat session with Amazon two days ago, and it took over an hour for one of their associates to join my session to help me.

Go to any major company website, and you’ll probably see something like the following (this is from British Airways):

I’d like to be clear – companies couldn’t really have forecast all of this happening, if you’d go back several months.

But what companies can, and should have in place, are clear communication protocols that actually enable them to handle a massive scale-up of customers contacting them. It’s not going to be perfect, but can help mitigate the bottleneck to certain degrees.

Having an efficient system can allow a single agent to handle multiple communication streams at the same time. Indeed, it’s not just about handling multiple web-chat sessions concurrently – it’s also about handling communication across different mediums. So agents can handle webchat, Facebook messages, Twitter DM’s, etc.

This is, I believe, where products such as Omnichannel for Dynamics 365 can really come into their own, and shine through. Using it, companies can ensure that their workforce (which is likely to be impacted as well by the situation) can be as best empowered as possible, and assist customers as speedily as they are able to.

Hopefully the current situation will resolve itself as soon as possible, and coming out from it, we should look to carry out any efficiencies that we are able to. This will allow companies to better serve their customers moving forward, and streamline communication channels.

I hope & pray that everyone stays safe & healthy through this crisis, and that we help each other out (to the best of our abilities) to get through it.

Wave 1 2020 – Search Behaviour Changes

Having applied the Wave 1 2020 release to several of my test environments, I was browsing around to see the new functionality within it, which is pretty good. However, there was something that I wasn’t expecting, which was a little startling to see! This is around the way that the search behaviour is now working within the system.

What am I talking about? Well, for years, users have asked me if they could search within a specific view. Ie if we had a view set up for ‘My accounts’, where the user is set as the account manager, it would show only the accounts where that condition applies. However when using the search functionality, the system would search & return ALL results that match the search criteria (eg if searching for ‘Apple’, it would return all accounts with the word ‘apple’ in them, regardless if the user was set up as the account manager or not).

Explaining this to users was probably the most complicated thing, in my experience (well, that, and having to then trawl through hundreds, if not thousands of records, where it’s a common word). But for the most part, they accepted it. OK – we all moved on.

Let’s see an example of this. The screenshot below shows an account that exists within one of my Sandbox environments (which has the Wave 1 2020 update applied to it):

I’m now going to search for it within the entity itself (more about Global Search at the end of this post):

Hold on – it’s not showing up! What is happening here – is the system OK???

Let me explain what’s happening. Previously (before the Wave 1 2020 update was applied) it would indeed show up in the search results.

But this has now changed! The system is now performing searches ONLY within the view that the user is using. The reason why it’s not showing up here? Well, it’s because I’m not set as the owner of the account – a different user is (and I’m using the ‘My Accounts’ view, as seen in the previous screenshot):

If I now change my view to ‘All Accounts’ and repeat the search again, the record now shows up:

I hadn’t come across this in my perusal of the release notes. On going back to it and digging deep, I found the mention here – https://docs.microsoft.com/en-us/power-platform-release-plan/2020wave1/microsoft-powerapps/improvements-quick-find-search-experience-grid.

Amusingly there’s actually even a little hint within the system for this. If you look at the entity search box, this is now the text that’s being displayed within it:

There’s also an additional feature as part of this – if you’ve prefiltered a view using column value, searching within the entity will RESPECT the pre-filtering!. OK – now this is indeed incredible:

My thoughts on this is that it’s going to be a double-edged sword. For years, we’ve been educating customers about how searching works, and now this has the potential to change things up.

Thankfully it’s actually possible to turn this off, and revert back to the way that searching has always worked – this is likely to be needed to be done quite a bit. To do this, go to Settings, Administration, System Settings, and change the value for Categorised Search to ‘Yes’ (it’s about 1/3 of the way down the page):

It would have been nice if Microsoft had made people more aware of this, in my opinion.

Please note that this only applies to searching within an entity itself. Global Search (for the moment) still uses the Quick Find view, and returns all results (regardless of filters).

Malin Martnes on The Oops Factor

Exploring how Malin got into micro-brewing, her fondness for the product formerly known as ‘Talent’, and the family love for beer. Also finding out how she switched into consulting in the first place (spoiler: she didn’t start out in consulting!)

If you’d like to come appear on the show, please sign up at http://bit.ly/2NqP5PV – I’d love to have you on it!

Click here to take a look at the other videos that are available to watch.

Handling Company Hours

Companies want to be able to support their customers, and provide a valuable customer experience. That’s a given, of course! On the other hand (especially if the company isn’t a multi-national), they’ll have hours of operation that they’re open for. When the company isn’t open, they’ll want to ensure that customers will know this, and not be routed to customer support when it’s not available.

There are several different ways of handling this, depending on how exactly the system/s have been implemented. Let’s take a look at some of these

Omnichannel Native Web Chat

One of the channels available through Omnichannel is the webchat. I’ve covered some of the ways that this can be done at https://thecrm.ninja/proactive-chat-in-omnichannel-for-dynamics-365/.

When setting up a chat channel directly from within Omnichannel, we can leverage the inbuilt settings for Operating Hours:

By using this, we’re able to set up different day & time combinations, along with the timezone that’s it’s applicable for (I’d suggest to use appropriate names and/or descriptions to easily identify them, of course!):

It’s not even a blanket setting (ie that you set up one record for this, that governs all communication channels). You’re able to set up multiple Operating Hour records, and can then point each chat instance to a specific one. To do this, go to (or create) the Chat record, open the Design tab within the record, and select the Operating Hour record you’re wanting to associate to the chat:

Now, when this has been applied, the chat widget button will only be displayed on the webpage/s where it’s deployed to during the specified Operating Hours. Great!

Power Virtual Agent

There will be scenarios where you’ll be implementing a Power Virtual Agent in the first instance, rather than using the Omnichannel chat itself. Reasons for this include the ability to have automated responses to issues, allow users to self-service their enquires, and other.

Having taken a look, the configuration for escalating a PVA conversation into an Omnichannel queue is actually quite simple and basic. Unfortunately, there doesn’t (at the time of writing) seem to be any way of picking up the Omnichannel Operating Hours that are set up within the system, nor any method to specify these in any other way for the PVA itself. Hopefully this will change at some point!

Azure Chat Bot

I’ve also taken a look at Azure Chatbots, as these are another way in which companies will enable customers. Once again, there’s no way to have an Azure Chatbot respect/pick-up Omnichannel Operating Hours. I would hope that this will be functionality that comes in the future.

However (unlike Power Virtual Agents), it should be possible to write code within the chatbot (using the Microsoft Bot Framework) to indeed take these into account.

Other channels

There are of course other channels such as Facebook, SMS, and the Wave 1 2020 items (Twitter etc). With all of these, there are likely to be different methods in getting the Operating Hours set up, along with things like auto-responses (eg ‘The office is now closed, please contact us again between 09:00 & 17:30 Monday through Friday to speak with an agent’) to give the best experience.

Neil Benson on The Oops Factor

Discussing how LEGO is of vital importance in teaching & business applications, and what happens when Scrum isn’t performed properly on a client project. Neil also runs a Scrum for Business Applications course – https://customery.academy/courses/foundations

If you’d like to come appear on the show, please sign up at http://bit.ly/2NqP5PV – I’d love to have you on it!

Click here to take a look at the other videos that are available to watch.

Omnichannel & Sentiment Analysis

In general, it’s usually quite useful to be able to see how customers are engaging with your company, and how they’re feeling about things. If customers are disgruntled, annoyed, or complaining, it’s important to be able to understand the root cause/s of their issue/s, and resolve them as soon as possible.

One of the tools available in Omnichannel is Sentiment Analysis. What is this?

Being able to identify how customers see/interact with your brand, accurately, is vitally important. Using people to manually trawl through your data to attempt to identify this has many drawbacks:

  • Lack of consistent approach
  • Large amounts of time needed
  • Many manual touchpoints

As a natural follow-on from this, being able to identify & categorise the sentiment in customer communications through using machine learning can unlock many business use cases that can then result in immense value for your company.

Microsoft provide the ability for this through Azure Cognitive Services. It’s really quite interesting in how this actually works. You can go to https://azure.microsoft.com/en-gb/services/cognitive-services/text-analytics/, put in a sentence, and see what results come back. It can be quite amusing to see what different colours come out as!

As part of the analytics around chat (and by chat, I’m not referring to just a chat bot – anything within Omnichannel can be referred to as ‘chat’, from an agent perspective), sentiment analysis can be used.

This is quite easy to set up. To do so, open the Omnichannel Administration Hub, go to the Settings area in the left-hand menu, open ‘Sentiment Analysis’, and click to enable it. Remember to save it to apply it!

This will then result in the agent interface showing the following:

Now, this isn’t static. The sentiment will update in real time as the conversation continues, and will change based on what the customer is saying.

Now, obviously we’d expect agents to be able to judge the tone of the conversation based on what’s being said (at least I’d personally expect it). So for this, the sentiment that shows within the chat isn’t that helpful.

However, it does come into its own in a slightly different place. This is the Omnichannel Sentiments Analysis Dashboard, which is served through PowerBI.

Through this, supervisors can understand how their company is measuring up to their KPIs & necessary trends. They can also understand the overall support experience that omnichannel is having, along with tracking the sentiment of customer interactions. As a result of having this to hand, better understanding of customers can take place, resulting in improvement of the overall customer experience.

Once the dashboards have been configured within PowerBI (I’m going to do a separate post on this), it’s then possible to surface these within the Omnichannel Customer Service Hub (which users with the Supervisor role will be able to see). This means that supervisors won’t need to open a separate place to see these; it’s all available through the same interface.

There’s also a more detailed view into what’s actually happening, through the ‘Omnichannel Insights – Sentiment Analysis Report’. This displays a lot more information, drilling down & splitting the data up into agents, queues, channels & trends. Here’s an example of this:

With all of this information as the fingertips, it’s now really possible to drill down into the details. Through this, we’re able to carry out full & proper analysis on what’s actually causing customer interactions. From looking into what’s occurring, it’s then possible to review the current state of things, and see what can be improved. This will then result in more positive sentiments shown by customers, and drive their loyalty to the company!

Mario Trueba on The Oops Factor

Chatting about the importance of stickers, swag, and the amazing Microsoft community that we’re part of. Covering a major project that was going to use Unified Service Desk (USD), and what happened when trying to deploy the configuration data between environments!

If you’d like to come appear on the show, please sign up at http://bit.ly/2NqP5PV – I’d love to have you on it!

Click here to take a look at the other videos that are available to watch.

Omnichannel & Agent Scripts

Earlier this week I started to share information around the Productivity Tools that Microsoft provides (as a separate solution, admittedly) for Omnichannel – https://thecrm.ninja/omnichannel-productivity-tools/. With it, I also covered Macros, and some of the benefits that using macros can bring to a company

Now, we all know that the absolute key point in ensuring a consistent & holistic approach is to have a method for getting something done. A ‘script’, in other words. With this, we can set out the steps that we want to be carried out, in the order that they should be performed, with appropriate information against each item. This results in agents (hopefully!) following this, giving the customer the same (and great) experience each and every time they need to interact.

Scripts isn’t just about instructions to be carried out though. It also allows macros to be included, that agents can run as they go through the script.

Here’s an example of something that I’ve been playing around with in my test environments (ninja’s are just SO cool, that I’ve had to rein in my imagination!):

So that’s an example of what you can do. Let’s now see how we set these up. There are several steps to it

In the Omnichannel Administration Hub, you should see the Scripts entry in the left hand bar:

Open it, and click on ‘New’ in the main menu bar. You’ll get the following form appearing:

Type in a name for the script, and a description (personally I find it annoying that I can’t see all of the text in the Description field – perhaps Microsoft may change this at some point). Save the form, and the grid to the right becomes active!

Clicking the ellipse (3 dots) in the Agent Script Steps grid gives several options:

One of the very helpful options here is to add an existing script step. What’s a script step, I hear you ask. Well, each specific item in a script is referred to as a ‘script step’. You set these up as you go through your scrip, as shown below. You don’t need to create a new script step for each script if they’re the same thing – you can just create one, & add it as needed to multiple scripts (just be careful, because if you need to change it at some point, the changed/updated version will display in all scripts that it’s associated with!.

As with any record, you’ll put in a name, and a description. What you’ll also do is give it an order number (this is manual, not auto-generated). The order number is how the system orders the different steps. There’s also the option (which is a required selection) as to whether this is text, macro, or a script:

  • Text. This will be free text that you enter into the script step, which will then be displayed on the screen for the omnichannel agent to see
  • Macro. This will give you the option to point to a macro that you’ve already set up. When the agent will click on it during the session, the macro will run
  • Script. This allows you to reference existing scripts – you can have smaller scripts that you can then use as ‘building blocks’ to create more complex scripts

Once you’ve gotten the script set up, we then need to configure the chat sessions to actually use it. This allows us to set up multiple scripts in our system, and use them as appropriate (eg by using pre-survey questions, it’s possible to direct a customer to a specific queue, and then have the agents use a specific script for this).

To do this, we go to Sessions, and open the session entry that we’re wanting to set the script up for:

Once it’s open, switch to the Agent Script tab. This has a grid that shows all of the script/s that are set up for it. To add script/s, use the drop-down menu on the top of the grid:

The last thing that needs to be done is to enable the Productivity Pane, as otherwise agents won’t be able to see all of this in the first place! Thankfully this is a single setting, and is done as follows:

  • Go to the Productivity Pane option in the left-hand menu. Click on it
  • Set the Productivity pane option to ‘Enabled’
  • Set the Mode option based on your requirements (this is how it appears in the agent interface). By default it’s set to ‘Collapsed’
Enable the productivity pane

And VOILA! It’s now all set up and ready to go:

Omnichannel & Productivity Tools

One of the really great things about Dynamics 365 (and other Microsoft products such as Office 365, PowerBI, etc) is that providers can publish solutions that companies can then look to install into their environment. In fact, not only do 3rd parties do this, Microsoft itself does this too!

These are all published to AppSource (http://appsource.microsoft.com) where you can quickly and easily search for solutions. It’s possible to filter based on category, industry, product, pricing level, and several other options. There are thousands of solutions on it – it’s really quite amazing!

So, what does this have to do with what I’m writing about? Well, there’s a package, created by Microsoft itself, called ‘Productivity Tools for Dynamics 365 apps‘ (hyperlink is correct at the time of writing this article).

According to the description against the solution:

…it provides capabilities that help users to perform day-to-day operations in a faster, efficient, and process compliant manner and deliver value to customers…

OK – sounds good. And it’s free – yes, that’s right. Additional FREE functionality that’s being provided by Microsoft (why they don’t roll it into the general solution, I have NO idea). But where does it come into play, and apply, to the customer centre universe?

Well, that’s actually really simple. See, it’s only able to be installed in an environment that has Omnichannel installed to! It can’t be installed if that’s not present – so it doesn’t work with the ‘regular’ customer service first-party applications.

Now, any contact/customer service centre is expected to handle a large number of customer interactions, along with resolving them as fast as possible. I’ve already previously touched on some of the benefits of Omnichannel for Dynamics 365 helping streamline any company team, in that it’s no longer necessary to have a team handling calls, another team handling web enquires, and a third team handling social media, etc. Instead, it’s now possible to have a single team handling all customer interactions and/or communications holistically across all possible channels.

With this, however, comes various challenges:

  • There can be many actions to perform manually (I’ve previously covered using slugs in customer conversations to cut down on manually typing things – https://thecrm.ninja/quick-responses-in-omnichannel/, but there can be lots of other actions as well)
  • Repetitive and/or monotonous tasks – there are scripts that the customer service agents will need to follow for each interaction
  • Not having real-time insight into the customer, and any other relevant needs based on the context of the interaction.

So, what does the Productivity Tools solution actually contain? At the time of writing, it has 3 components that are part of it:

  • Macros
  • Agent Assist
  • Smart Assist

I’m going to cover these functionalities over a couple of posts, to show how they work and bring benefits to an organisation. I’m not going to go into how to install the solution – it’s pretty straightforward, and the instructions are shown on the AppSource page for it.

One thing to quickly mention though is that there are 2 new security roles that are relevant for Productivity Tools, that should be applied to users as applicable to them:

Macros

Macros should be well known to most people, as they’ve been around for a LONG time! It’s possible to have macros in Word, Excel, even Windows itself (I remember back in high school that we used macros within Word to launch Explorer, as it was locked down – we could then open games and play during lunchtime…)! It’s therefore a natural evolution to have them available within Dynamics 365 as well.

Using macros, customer service agents can carry out repetitive tasks that can span multiple entities. Eg opening forms (model-driven apps), pre-populating data into the form, etc. Through this, not only are there less manual tasks/steps to carry out, there’s now the ability to carry out the same tasks, without worrying about a step being missed, or the wrong data copied in, etc.

As with all other configuration in Omnichannel, you’ll need to go to the Omnichannel Administration Hub to access the Macros section:

Click ‘New’ on the menu bar, and hey voila – you can create a new macro!

Now, I had no idea what to expect – and the interface for this was possibly the last thing that I was thinking would be there! It looks EXACTLY like the process for creating a Power Automate Flow, though just for macros. In fact I’d be quite surprised if underneath it all it was actually using something different to do this – after all, if you can build a ‘process builder’ once, in a really great way, why not use it everywhere that you can!

So, once I’ve set up some steps, my screen now looks like this (the syntax does take a little bit of getting used to FYI):

Now, it’s not just a single step that you can perform. As with Power Automate Flows, you can daisy-chain MULTIPLE steps together to achieve the desired result/s:

This is really great, in my opinion. There’s obviously quite a scope of activities and actions which agents would usually carry out manually, which macros now now address & handle.

Macros themselves are used by agents within the Agent Assist and Smart Assist functionality. I’ll be introducing these in the next post, along with how to use macros within it.

Tomasz Poszytek on The Oops Factor

Talking about Tomasz’s love of photography, which camera brand he actually uses, windsurfing, & how projects shouldn’t be pushed by IT into the business, but rather be project led/project driven. Also briefly touching on why gamification & swag can be so useful with user adoption!

If you’d like to come appear on the show, please sign up at http://bit.ly/2NqP5PV – I’d love to have you on it!

Click here to take a look at the other videos that are available to watch.