I’ve been contacted by several people over the last few days who have been experiencing an error when trying to get Omnichannel configured. It looks something like:
The actual text of the error is: AADSTS65001: The user or administrator has not consented to use the application with ID ’18cc9627-776c-4142-b8f5-9cd83517e3bb’ named ‘Omnichannel for Customer Service’. Send an interactive authorization request for this user and resource. Trace ID: 36dd2358-2d41-463c-a2f6-013038636400 Correlation ID: 9ac093cd-e525-4bb4-b277-3ac8e7478b6b Timestamp: 2020-01-07 12:14:15Z
No matter what people tried, they still got it. I went through the process of setting up a completely new environment – lo and behold, I got the same issue! (the screenshot above is actually from my system). Incidentally this is why it’s so important to be able to replicate an issue, so that you can confirm what’s actually causing it to happen.
Reaching out to some very helpful people at Microsoft, I (thankfully) got a quick response from them
Essentially, there are some issues with Azure Active Directory (AAD) consent flows for applications at the moment (it’s not specific to Omnichannel). There’s a fix that’s being worked on, but no idea when it will be finished and rolled out.
They were nice enough to share with me how to address it, which is what I’m now sharing here! To fix this issue, carry out the following steps to manually grant permissions to the application:
Click it to open, and you’ll see a list of the enterprise applications that use AAD.
2. You’ll then want to search for the application that has the issue (in this case, Omnichannel)
You’ll want to double-check that the ‘Application ID’ is the SAME as the Application ID that you’re getting in the error message, especially if there are multiple results coming up in the search list!
Once you’re sure that it’s the correct application, click it to open it.
3. You’ll see a section in the left bar called ‘Security’, and under this should be an entry for ‘Permissions’. When this opens, you’ll see a button in the main window called ‘Grant admin consent for User‘.
4. Click this – it’ll cause a window to pop up, where you’ll grant permissions for the application. Once granted, the window will automatically close.
You can then go back to the place where you were experiencing the error, and it should work!
We’ve all been there. We’re on a website page, trying to understand it, and not really getting anywhere. Whether it’s about how to fill in a form, or technical instructions and information, our mind has gone blank. The words are on the page, but they’re just not making sense – and we don’t know what to do!
What would we say if suddenly a prompt came up, asking if we needed some help with understanding things, and offering to connect us with a live agent if we wanted some assistance? Well, quite a lot of people would be grateful for that, I’d think.
There are quite a few websites out there that have this functionality – I know that I’ve seen it on various sites I’ve been on, though it’s not always been implemented in the best of ways.
Well, now Microsoft have decided to bring in their own form of it, and it sits right within Omnichannel for Dynamics 365! It’s able to allow customers to interact either with a bot or with a live agent, depending on how you’ve configured it to work.
Currently it’s in Preview, but I’m expecting it to move to General Availability soon.
Even better, Microsoft have even released a short video around it!
There are two parts to configuring it:
Firstly, you need to enable Proactive Chat. Go to your Chat channels under Omnichannel Administration, open up the Chat record you’re wanting to have Proactive chat enabled for, and change the ‘Enable Proactive Chat’ option to Yes (obviously if you don’t have any chat channels set up, you’d need to create a new one)
Secondly, there’s some code that needs to be embedded on the actual web-page that the chat is active on. Now I know what some of you are thinking – ‘how the heck do I code’? (OK – so the developers aren’t thinking that – they’re thinking ‘oh goodie!!’. Well, I’m not from a development background myself, but I managed to get it to work quite easily. Take a look at https://docs.microsoft.com/en-us/dynamics365/omnichannel/developer/how-to/start-proactive-chat , where several different scenarios are shown (along with sample code), and you can tweak these as required.
The result then looks like:
This is really helpful. I can then click the ‘Chat Now’ button to start the chat. What I’m also really liking about the experience is that the chat option/window floats on the bottom right side of the screen, so no matter where I am in the page, it’s available (and easily able to be seen)
There are many different ways in which this can be configured. Some of the immediate ones that come to mind (but by no means all of them) are:
Someone staying on a webpage for a long period of time
Someone who keeps coming back to the same page (perhaps they’re lost, and not able to find what they’re looking for)
Someone on a support portal looking at a support case, and wanting to see more information on it
Someone coming from a specific webpage to another page
Someone accessing the webpage from a specific location (eg country) in the world
Special offers being available during a specific time-frame, and only website visitors during that time get the option for the special offers
It’s a really helpful addition to the current Omnichannel capabilities, and I’m sure that there will be many more to come!
Talking about how running can help with things, interesting sights seen during some of the runs, managing expectations for system migrations with new fields, and the importance of involving the key business unit users as early as possible during the project process!
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.
Well, somewhat of a mouthful of a title for this article, but I couldn’t think of a better way to put it!
You know the scenario – we’ve all been there. There’s a custom form (for a system entity, or even a custom entity). Multiple sections, tabs, and multiple fields that are required. Users are going through data entry, but SOMEHOW have forgotten to fill one (or more???) in, and they’re just not able to save the form!
Well, Microsoft has now upped the quality of the user experience, and OH BOY was I SO excited to see this!
Previously when you clicked the Save button, it just wouldn’t allow you to save. It told you that it was missing required information, and you had to go search to see WHICH field(s) you had missed out on.
But search no longer. For now the notification bar has a whole new behaviour:
Firstly, it tells you that there are notifications, and to select to view (Note: If you’ve only missed out one field, just skip to step 2!)
Then when you click on it, it tells you which (required) fields have data missing from them!
Even better, if you click on the notification for a specific missing field, it even takes you to that field – no longer do you have to try to find where it is!
This is truly amazing, and will help enable users (and relieve their frustration) so much!
Over the last few days, my social media streams have gotten quite busy with people posting their thoughts on the last year – what they did, what they were aiming to achieve and did actually achieve, etc. I thought it would be good, as part of progressing myself (and my writing skills) to do the same, and what better time than New Years Eve!
Please note that this isn’t going to be the shortest blog post…
Additionally, technology has come so far. Looking back 10 years, ‘cloud’ was a word that was unfamiliar to most. The first SaaS offerings for Microsoft products was starting to come about – I remember UK hosted solutions for Dynamics 2011 launching, as Microsoft wasn’t doing anything directly yet. Office 365 first went live in 2011, and slowly started being adopted. Over the last year, the Power Platform has scaled immeasurably, and really become a standard/common part of client solutions.
On a personal level, much has happened, both for myself and my family:
We bought a house, and moved in! (and yes, we’re fully unpacked)
My dad passed away. He hadn’t been well for a few years. It wasn’t so easy to deal with – I still sometimes think that I’ll call him about organising something, or want to show him a picture of a DIY project that I’m doing.
I started a new job at the beginning of the year, with a twist to my previous roles – this one was in Consulting (which I had never done before). I did this to challenge myself, and move out of my comfort zone
I started learning about bids, pricing, and all of those sorts of things that consultants take for granted
Although having been somewhat involved in the technical community since early 2018, I decided to step it up a notch. I aimed to interact more, and applied to speak at 3 User Group gatherings in the UK (I only got accepted for one, admittedly, and was really nervous!)
I started a personal brand – The CRM Ninja!
I set up a Twitter account in June. At this time of writing, I have over 1600 direct tweets, and 328 followers!
I started a blog at the same time – this blog! I also learned how to migrate it, when it turned out that the original host didn’t offer all of the functionality that I needed
On the subject of my blog, I’ve done 62 blog posts (not including this one). Looking back I can’t believe how many I’ve done, and the sheer number that I’ve got lined up for next year
I also started an interview series (The Oops Factor), which went live at the beginning of November. The aim for this was two-fold. Firstly to get myself out there and start being known, and secondly to find out lessons that people have learned along the way of their careers that we can share with the community to help better us all. I’m amazed at how well it’s been going, and have already got a list of people who want to appear on the show in 2020
I pushed myself out of my comfort zone, and started approaching people to ask them to come on my show, or to share information with me. I also started tweeting to (major) people in the technical scene, and have been amazed to actually receive replies (when Charles Lamanna replied to one that I did, it was 3am in the UK – I happened to wake up, check my phone, and got SO excited that I couldn’t fall back to sleep
I asked someone to be my mentor (Chris – I wouldn’t have let you said no!). I then asked someone else, and they’ve now become my coach
I took 6 certification exams, having not taken any in a while – got my MCSA and MCSE. It would have been 7, but I had an issue with one, so rescheduled the 7th one to 2020 (I’ll actually be taking it this weekend)
My grandmother passed away – the last of my grandparents. She had Alzheimer’s and dementia, so it was a relief to be honest, but still sad.
Left my job – it wasn’t turning out to be the right fit for me
My sister got engaged
Looking forward to 2020, I’ve been drawing up a list of goals and things that I want to achieve in it. So here goes (there will obviously be more that happens during the year…):
Find a new job that’s the right fit for me. I now have a better idea of what I’m looking for, and already have some great leads (thanks Alison!)
Speak at more community events
Become (more) known for Omnichannel for Dynamics, which is what I’m mostly blogging about. Really own that space
Find shows (podcasts etc) that I can get invited on
Lose weight & getting in shape. I’m an early backer and beta tester for BionicGym (check it out if you’re interested). I received my first unit in Dec 2018, and the progress was going well. Due to various things happening in 2019, I slacked off with it. My aim for 2020 will be to use it (I’ll be receiving my production unit as well soon) and really get in shape!
Host a global online webinar, sharing information and knowledge with others
Continue with all of the Dynamics exams, and pass them all (well, most of them – not so sure about the developer ones…)
Continue being mentored. I may ask someone else to be my third mentor
Look to mentor someone myself!
Continue to build my social media presence. Aiming to have 1000 Twitter followers by the end of 2020, and at least 100 YouTube channel subscribers
Read at least two self-improvement books a month (these can also be how to work better in business etc). I’ve got 7 sitting on my shelf at the moment to start with!
Continue to build my technical domain knowledge, and branch out a bit. Azure – this is looking at you….
Spend more quality time with my children
Complete building my new garden shed (today I finished getting the base area ready – now need to put down rubble, mesh, and then get the concrete poured)
Make better use of my time, both with work things as well as personal stuff
Get a new personal computer system. I’ll miss my Alienware 18, but it’s getting really old (and having issues)
Continue interacting with random technical people, and learn from them
Go out on my motorbike more
Try my BEST to get Satya Nadella and Charles Lamanna on my interview series
So, here’s to wishing you all an amazing and wonderful year ahead, and getting to know more of you!
What we’re now going to do is understand how we go about attaching skills (which we’ve already learned how to set up) to conversations. The premise behind this is that when a customer will access Chat on a website interface, they’ll be presented with one (or more) pre-chat survey questions. The answer/s that are given are then used as skills, and the chat session will be automatically routed to the user who is best placed to help the customer. This is done based on the skill-attachment rules, which we’re now looking at.
There are two types of options available for skill matching:
Exact skill matching. The skill attachment logic looks for the exact skill/s and proficiency level that an agent should have to work on the conversation (and uses this as the minimum criteria). Then it searches for an available agent with these, to route the conversation to. If the minimum criteria aren’t met, then it searches for a higher proficient level. If no agent with a higher proficient level is found, then the conversation remains in the queue
Closest skill matching. This initially works the same as the exact skill matching. The system will identify the skill/s and minimum proficiency levels, and see if there’s an agent available. If not, it’ll search for a higher proficiency level. All the same so far. But if there are no agents matching (or having a higher) proficiency level, it will look for any agents that are available with a lower proficiency level, and route the conversation to them
To create a new skill attachment rule, you’ll need to create (or modify an existing) workstream (we’re going to look at workstreams in another post)
Go to Skill Attachment Rules, select the type of matching logic that you’re wanting, and create a new rule (assuming you’re not modifying an existing one)
In the new rule window that opens, fill in the necessary information on the left hand side. You can then start to set up your rule conditions (and oh boy can these be complicated!) in the Condition box on the right.
Once done, hit the Save button, and the Skills section box will become active. Clicking the ‘New Attach Skill’ button in this box will allow you to select the skill/s and proficiency levels that you’re wanting to use.
Click the ‘Save and Close’ button, and it’ll appear in the Skills box. If you’re wanting to add more than one skill at a time, click the arrow on the Save & Close button, and click the ‘Save and New’ option.
If you then go back to the Workstream record, you’ll need see this appearing in the Skills Attachment Rules section.
Jason Almeida comes on The Oops Factor, and talks about a somewhat different hobby, along with how he’s been using the PowerPlatform to help with it! We then discuss the importance of communication, and the benefits that it brings.
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.
In this post, we’re going to see how we enable Skill-Based routing within Omnichannel, as in order to use skills, we need to enable it! (seems obvious, right?).
To do this, we need to be signed into the Omnichannel Administration app, and we then go to ‘Skill Based Routing’, which is under the Settings area in the left-hand side navigation bar:
Clicking here brings up the skill-based routing settings. At the time of writing, this feature is still in preview, and shows an information window declaring this (this will disappear once it goes GA)
Clicking on the toggle slider will change the value to ‘Yes’, and will enable it. It’s also shown nicely in green, which is something that I’m really liking!
Select a Rating Model to use, from the right hand grid. As touched upon in the previous article, rating models are used to set how proficient a user is with a specific skill. You can have multiple rating models saved, and use them for specific scenarios.
Rating Models are made up of two parts:
Rating Model (being the name of the rating model, and the minimum/maximum rating values allowed)
Rating Values (the actual values being used – the number of rating values should be the same as the range for the Rating Model minimum/maximum that you’ve set)
Enabling/configuring the ability for chats to utilise skill-based routing
Yup – it’s somewhat more complex than just saying ‘I want skills!’
So this post is going to cover how to actually set up the skill record entries, which thankfully isn’t too difficult (especially if you’ve been bearing with me, and following the other setup instructions that we’ve been through so far).
To create skills, it’s necessary to have a skill type. Think of it as a hierarchy – if you’re wanting to provide customer services in multiple languages for technical issues, you’re going to want a Language skill type, and Technical skill type. Under each skill type, you’re going to have the applicable entries. So for Language, you’ll have English, Spanish, Chinese, etc.
At the time of writing, creating Skill Types are done from the Systems Customisation (this will likely move to the new Admin Centre at some point, but hasn’t yet). So make sure that you’re logged in as a Dynamics system Administrator, and open Advanced Settings:
Note: The process below is taking place in the default solution. It’s of course possible to deploy this as part of a custom solution – if you’re wanting to do this, then open the custom solution from the Power Platform admin centre, and continue with the steps shown below.
Hover over ‘Settings’ in the ribbon menu bar, and choose Customisations
Now select ‘Customise the System’
Select ‘Option Sets’ in the left hand navigation, then scroll down to ‘Bookable Resource Characteristic Type’ in the main window
Open up, and you’ll see the following window
Using our scenario, I’ve added Language and Technical Area as skill types. Now very importantly, ensure that you SAVE the record, and then PUBLISH it. If you don’t, the skill types won’t show to be used!
Right, now that we’ve done all of that prep work, we can get on with actually entering the skills that we want to use…
So, go back to the Omnichannel Administration section, scroll down in the left hand menu to Skills, and click it to open it. It’ll show all of the skills that we’ve entered (well, it won’t show any entries here yet, as none have been put in yet!). Click ‘New’ on the menu ribbon to create a new entry
You’ll be presented with the following screen, which after all of the above is thankfully quite simple.
The fields are as follows:
Name. What it says on the field – nothing complicated. It does need to be unique though, so have a careful think about your needs. You can always use multiple skills together to create a blend that you need across skills
Type. This is the Skill type (which we’ve just set up beforehand). If you don’t see the values that you’ve set up in here, make sure that you saved and published the customisations!
Description. Put something user-friendly in here to describe what the skill is (if you think it’s necessary…)
Then click ‘Save’ on the menu bar. Once the entry saves, the form will update, and now show a User (Agent) section:
You can now add users (agents, as they’re referred to) to the skill. Click the ellipse on the right hand side of the Users (Agents) grid, and then select the ‘New Bookable Resource Characteristic’ option (the names of these things just keep on getting longer and longer, don’t they!)
A nice simple window will open on the right of the screen, where you can enter the details:
This is done as follows:
Skill Value – this is the skill that you’re wanting to assign a user to
User (Agent) – this is the actual user. You can type to search through the available users. Very important to note that if you didn’t follow the steps to set up the user as a Bookable Resource, you won’t see them in this list (see https://thecrm.ninja/omnichannel-for-dynamics-365-users/ for instructions on how to do this)
Rating Value – this is used to rate the proficiency of the user at the skill. We’ll cover setting this up in a later post, but essentially think of using a 5 star scale. 1 would mean the user has basic ability at the skill, 3 would mean they’re alright with the skill, and 5 means that they’re at the top of their game with it
You can then click the ‘Save and Close’ button at the bottom of the window, and it’ll add them.
However if you have multiple users that you’re wanting to add, I’d HIGHLY recommend clicking the arrow next to this button, and selecting the ‘Save and Create New’ option. It’s not just to create with the same skill – you can change the Skill Value as well, and it’ll save you more clicks!
Hopefully you’re still following along, and managing to get the setup done correctly – well done!