Rory Neary on The Oops Factor

Discussing how he’s constructing a mountain bike course next to his house, accessibility in apps, and PowerApps4Kids. Also diving into what happened when a client asked him to build an app that a competitor of his came up with!

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.

Carl Cookson on The Oops Factor

Hanging out & talking to Carl about various interests such as how Power Platform helps with the Charity sector, his local Diving Club (don’t push him in!), and the importance of a career pivot at the right moment. Also including just how amazing the community is!

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 & Knowledge Articles

One of the most useful features that Dynamics 365 has to offer (in my opinion) is the ‘Knowledge Base’ feature. The purpose that this serves is multi-faceted. It can act as a repository for internal information, serve as a FAQ store, or even be used to publish information externally.

The amount of knowledge held within any organisation can be quite staggering at times. Think back to when you’ve been trying to get an answer to an obscure question, and only Bob in Repairs knows about it. Trying to track down that answer can be quite time-intensive at times (you need to find out who to ask, where they are, etc). In the modern digitally-connected world, we have better forms of communications available. However even with those, we’re still challenged at times.

Enter the Knowledge Base. Here people can enter information that can then be searched on. It could be a simple one-line explanation, or an in-depth instruction as to how to do something very technical.

It’s also a really useful place to hold business processes in. This can come in really helpful when rare situations occur, so that customer service agents can refer to them to find out exactly what to do.

There’s already a massive amount of information (if you’ll pardon the pun!) out there around the Knowledge Base, so I’m not going to go into deep detail here around it.

However, what I DO want to talk about is the ability to use Knowledge Base within Omnichannel!

See, customer service agents are the ‘first line’ of support that customers will deal with. Admittedly they’re also the 2nd, 3rd etc (until it may get to a very technical/specific question). The types of queries that they may need to handle can be astonishing at time! Being able to refer to information ‘at their fingertips’ is therefore vital, & key in driving efficiency. This then in turn leads to higher customer satisfaction, with queries being resolved quickly & easily.

So with all of that said, let’s take a look to see how this is used within Omnichannel. Essentially, there’s a Knowledge Base tab that can be opened for the customer service agent to access:

This opens automatically when a new customer sessions starts, and is then available for the customer service agent to click into.

Note: The behaviour to open it automatically is driven from the Session Template that’s set up for the communication stream. If it’s not set up in here, it won’t automatically launch. See the screenshot below for how this is set up, and refer to Omnichannel & Application Tabs for more information around this:

Alternatively, the agent can launch this directly from the chat itself, by clicking the ellipse icon, and then selecting it from the menu:

This will then put the agent directly within the Knowledge Article search tab. When this opens, it’s blank! Don’t worry about this however – it’s only blank, as there haven’t been any searches carried out yet! When the user starts to search, it’ll then return results into the pane:

If the user wants to open the article in a new window, all they need to do is click the little ‘pop open’ icon on the article summary, which will then launch a new window with it in it. This can be helpful if the agent is needing to have several different articles open at once:

If your company has configured an external portal for sharing Knowledge Articles with the public, it’s also possible to send a link for a specific article to the customer. To do this, either click the arrow button on the article, to click the Send URL button on the menu bar:

Now, the general layout used for Knowledge Articles will be familiar to anyone who has used the same ability within Cases in Dynamics 365. However for people who are used to working directly within Knowledge Articles, it will look slightly different. There’s no ability to add a new article or edit an existing one, publish, etc.

The reason for this is that within Omnichannel itself, the functionality interface is being surfaced as a web resource. There’s no need to worry though, as users can open the familiar Knowledge Article interface as well directly from within Omnichannel. To do this, the customer service agent should click the ‘+’ button on the tab bar, and then select ‘Knowledge Articles’:

Voila! A new tab will open, and the traditional Knowledge Article experience will load. All of the expected functionality is present, and users are able to do anything that they may need to inside of here.

So in summary, this is a continuation of the empowerment of customer service agents. With the knowledge ‘at their fingertips’, they’re able to provide the best possible experience for customers. Not only that, but queries can get answered and/or resolved in less time. Customer satisfaction will (hopefully!) increase as a result of this, with everyone feeling empowered & efficient!

So here’s my question – are you currently using Knowledge Articles (it doesn’t have to be within Omnichannel)? If you are, what benefits do you see that it brings to your company? If you’re not, what could help you to adopt them? I’d love to hear – drop a comment below!

PL-100: Microsoft Power Platform App Maker Exam

As many people are aware, Microsoft is changing the certification landscape somewhat. With the emergence of the Power Platform, there’s a need to test skills other than the traditional Dynamics 365 ones.

To this end, a new series (the PL-XXX) has been created. The first (main) one of these exams is the PL-100, which is the entry level exam.

You can take a look at the exam requirements & learning paths by going to https://docs.microsoft.com/en-us/learn/certifications/exams/pl-100.

Now, when I say ‘entry level’, I’m not referring to basics. This isn’t a Fundamentals exam – for that, you’ll be wanting to take a look at the PL-900 exam (which came out a while ago). To put it into perspective, the PL-200 (which is aimed to launch in September 2020) will replace the MB-200 exam!

So, the exam went live (in Beta) just over a week ago (July 17th). I’ve been waiting for this for a while, as I’ve really been wanting to see how the new exams are structured. Taking it in Beta means I’m going to have to wait (a little while) for my results to come through, but it gives me the opportunity to see the new landscape upfront.

I booked it as soon as it was available, for Wednesday July 22nd. Nicely (as mentioned above), there were already learning paths in place, so I eagerly went through them (again) in preparation. I was feeling pretty much quite prepared, but then….

See, I had signed up to attend the Power Platform Virtual Happy Hour (PPPVHH) on the same day as I had booked the exam for. Incidentally, if you haven’t come across this before, take a look. It’s hosted every month, and has some AMAZING speakers. Clarissa Gillingham presented on the ‘Infinity Form’, and it was a joy to behold. But I’m digressing.

After the event had finished, some of us remained chatting in the virtual room. Amongst them was none other than Chris Huntingford, who we all love and adore!. I mentioned that I had to sign off soon to get ready for the exam. No sooner had I mentioned this than Chris said to me something along the lines of ‘BRO….WATCH OUT!! It’s REALLY HARD!!’.

I might mention here that I have a slight (friendly) rivalry with Chris, in seeing who can take newly released exams first. I had figured that he’d be so busy with everything going on that I’d get this one before he did. Little did I know that he had ALREADY taken it.

Here I was, about to go sit down for the exam, and he got me TOTALLY freaked out. I’m not sure how much of it he did on purpose, but I’m sure that when I get him into a corner, I’ll find out…one day!

Anyhow – I sat the exam, took most of the time available (pretty sure I hit the 2 hour mark), and found it quite good overall. One or two things that seemed to be totally random/in the wrong place, but otherwise it was fine. Definitely much better that the MB-600 (MB-600 Solution Architect Exam), and I felt much more comfortable than I did with the MB-400 (MB-400 Power Apps & Dynamics 365 Developer Exam).

It really is very cleared aimed at app developers (both model & canvas), as well as other Power Platform skills. According to the exam description:

The app maker builds solutions to simplify, automate, and transform tasks and processes for themselves and their team where they have deep expertise in the solution domain. They are skilled in key technical business analyst tasks such as data modeling, basic UX design, requirements analysis, process analysis, etc.

The app maker creates and enforces business processes, structures digital collection of information, improves efficiency of repeatable tasks, and automates business processes.

The app maker uses the maker tools of Power Platform to solve business problems. They may have experience with Visual Basic for Applications, Excel pivot tables, Teams, and other tools. They should have a basic understanding of data models, user interface, and processes. The app maker is aware of the capabilities and limitations of available tools and understands how to apply them.

The app maker is self-directed, and solution focused. They may not have formal IT training but are comfortable using technology to solve business problems with a personal growth mindset. They understand the operational need and have a vision of the desired outcome. They approach problems with phased and iterative strategies.

So, as before, 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!).

  • Canvas App Test Studio. What it does, how to carry out tests in it, how to set up Test Suites, etc
  • Developing Power Automate Flows. Different types of connectors, different types of steps/actions. How to deploy properly between environments using solutions
  • Field Level Security. What it is, what it does, what it can/can’t be used for
  • Canvas Apps:
    • Publishing rights
    • Access rights
    • Versioning
    • Editing vs using
    • Sharing & security
    • Saving changes, & deploying them to users
    • Collections. What they are, what they do, how they work
    • Galleries. What they are, what they can do, how to configure them in different way
    • Navigation around screens. How to set this up, how to pass information from one screen to the next
    • New vs Display vs Edit forms. What each one is, how each one is used
    • Charts. Which ones are available, how they’re configured
    • Using AI features, such as text/data recognition. What’s able to be used, how are they configured, what the benefits of each are
    • Versioning. How to handle this, what the benefits are
    • Accessibility for less-abled users. What options are available to facilitate this, how are they configured
  • Data Security. Different types of security available (roles/teams/access teams/business units) etc. Configuring security roles with different levels of permissions
  • Power BI Security. Showing/hiding information for specific users/teams, and how to configure this
  • Solution publishers. How these are set up, what you can modify after they’ve been set, considerations between default & other solutions
  • Business Logic. Differences between Business Process Flows, Business Rules & Power Automate. What each one can/can’t do, and is best suited for
  • Creating environments. Where to do this, how to do this, what steps are needed
  • Connecting to data sources. Different types of data connections, what each one is suited for
  • Model Apps:
    • Forms & Views. What these are, how to set up & configure them
    • Navigation, Sitemap etc.
  • Business Rules. How they work, what the different levels of scope are, how they affect functionality
  • Automation. Workflows vs Power Automate Flows. The different types (eg On Demand, Instant, Scheduled)
  • Arrays. What they are, what they do, how they work
  • DLP (Data Loss Prevention). How this works, how to set it up, different options available
  • Data field types. What each one is, how each one is used & able to be configured
  • Calculated/Rollup vs Autonumber. What each is, when to use each one

That’s quite a lot of stuff, with an emphasis on canvas app functionality & solutions. It definitely is important to ensure that you’re really on top of these. Thankfully not too much mention of Power BI (at least not in my exam), and for that I’m quite grateful!

I do have to say that in one respect, I found something quite amusing. See, on the same day as I took the exam, Microsoft Ignite was taking place. One of the major announcements was the ‘rename/rebrand’ of CDS to Dateflex (Pro). I therefore kept laughing when questions would refer to CDS again & again! Obviously I’m expecting this to change in the exam (at some point?).

In summary, I think that this is a good start for the new range of exams, and look forward to the other ones in the series coming out!

Have you taken this? What was your experience like? Drop a comment below – I’d love to hear!

Strange behaviour with views

Normally when I write a blog post, it’s about sharing some cool features, new functionality, etc. However this post is going to be a little different, because I don’t actually have an answer (yet!) to what is going on here.

Let me explain the situation.

I’m needing to show some very specific data for reference purposes. For the purposes of this, let’s say that I’m looking at Contacts, and needing to report on Phone Calls. The reason is to identify Contacts who are frequent callers. My criteria are as follows:

  • At least one phone call (that has the Contact as the Regarding value) need to have a specific field set
  • At least one phone call (that has the Contact as the Regarding value) needs to have its Activity Status as Open

These two conditions are separate. So the contact essentially needs to have at least 2 phone calls against them, with each one meeting one of the conditions. There can be more than 1 phone call record with the same condition – that’s not an issue here.

Back in the (good old) day, I’d have written some cool SQL to return this data. Two Left Outer Joins, and we’d be done. However I can’t do that now (I’ve recently started dipping into FetchXML, which is an entirely other story to cover at some point). So I’m having to use the Advanced Find to check that I’m getting the right data.

This isn’t the easiest of things to do. I’m needing to start from Contact, go to Phone Call, go back up to Contact, & go back down to Phone Call. But hey, this is what it looks like:

So with this set up, I run the query, and get some results (in this specific scenario/time, there are 3 results). I go through the data to check that the results are actually satisfying my requirements, which they are:

Wonderful – let’s move forward then!

My next step is to look to set this up as a system view. To do this, I go to the Power Apps Maker (http://make.powerapps.com/), open my solution & find the Contact entity. Opening it, I switch to the Views tab:

I create a new view, add the columns I need, and then open up the Filter Criteria to start setting this up. I’m using the Advanced Find as a reference guide for the conditions I’m needing to use. Going through it, I replicate the values across:

That looks about the same as the Advanced Find, right? It’s laid out slightly differently, but that’s just the designer. OK – let’s go ahead to save/publish it, and see it it in the app:

Hold on. There’s only 1 record showing up there. Admittedly it’s in the list that came from Advanced Find, but what’s happened to the other 2 records?

So I go to check the data. I had already done this before, but I thought that perhaps I overlooked something, so I checked again. Nope – all of the data is fine/correct. There should indeed be 3 records showing up in the system view, but 2 are missing…

Note: As an aside, I do know that this isn’t permissions related. I’m doing all of this as a systems administrator with full privileges to everything. So it’s not that

OK – next steps:

  • Clear browser cache, reload and see if they’re showing up (useful tip – Control+F5 does this!). Nope, they’re not showing
  • Use Incognito mode, log in and see if they’re showing there. No, they’re still hiding away
  • Use a different browser, with a different system administrator login. Unbelievably they’re still being very shy, and refusing to appear!

Even more confusing about all of this is something truly perplexing. I can open up Advanced Find, select the system view (without doing ANYTHING else) & click ‘Results’. When doing this, all of the records appear! So in the entity view they’re not, but when I use that same system view through Advanced Find, they are!

I’m scratching my head at this. It just doesn’t make sense. I have no idea why this is happening. Reaching out to others, they also don’t seem to have any idea either.

My next step (I’m feeling SO proud of this, and so dev!) was to check the FetchXML. Perhaps there was something underlying in it that’s causing this? Using the FetchXML Builder in XrmToolBox, I loaded both views up, and compared them. It’s crazy – they seem to be exactly the same! (well, some cosmetic differences with where aliases appeared on the line, but this wouldn’t affect it):

At this point, I’m thinking that there are some magic elves under the hood, squirrelling away the data. It has to be the only logical reason for this, right?

The only thing I could find in the FetchXML that might make a difference is that there’s a ‘Distinct’ clause at the top of it in the one that’s working:

Why this would cause the issue, I have NO idea. Views return distinct results in them anyhow, so I’m not sure what this is actually doing here.

Regardless, using FetchXML Builder I updated the code, and WOW – it worked! I’m now returning 3 records in my system view! Absolutely strange, but hey – if it’s working now, who am I to question it…

I’m going to try to raise this through official Microsoft Channels, and see what I might be able to find out from them. However if you’ve come across this (or similar), or have some ideas about how to work around it, I’d LOVE to hear from you!

Agent Notes in Omnichannel

Anyone familiar with Dynamics 365 will of course be aware of ‘Notes’. These are the very useful ability to for system users to add notes into records. For customers, these show up within the Activity timeline. Every time a note is added, it’s added to the activity timeline to be able to be viewed. It’s also possible to add attachments to notes, which can be very handy too.

Each note is stored with it’s own date/time logged, so it’s possible to see when each one was created. Of course it’s also possible to click into a note to edit it, if it’s necessary to add additional information.

Now, what about within Omnichannel? The interface is different, as we know. So if agents need to capture notes, are they still able to?

Well, let’s take a look at the interface. As shown below, we do indeed have a Timeline section that agents can see. Here they can view the activities that have been previously carried out with this specific contact:

Not only can the agent see notes in this section, they can also see the other items in the activity history. So they’re able to then bring up previous conversations etc.

There are two ways in which agents can log notes within Omnichannel itself. The first way is the ‘usual’ way that we’re used to. Within the Activity Timeline, they can click to enter a note, and then save it:

This will then create a note against the record, in the normal way that we’re all used to. However, there’s a MUCH nicer way to do this!

See, it’s possible for the agent to create the note from the chat itself!:

Clicking this causes a HUGE notes window to appear next to the actual chat:

This is quite nice. It gives the agent a lot more screen space to capture information for the note. They could also quickly copy/paste from the customer conversation into here.

They’re not able to add attachments though through this large pane. Instead, the agent would need to save the note, which would then cause it to appear in the Activity Timeline view. Once there, the agent could click into it, and add any attachment/s that they may need to.

OK – so we’ve found out how agents can use Notes within Omnichannel. But there’s actually a really cool function from doing it directly from the chat.

When we add Notes in the ‘traditional’ style, and save them, it creates a record for each one. As mentioned above, it’s obviously possible to open up a note, edit it, and then save it again. But this can be a slight hassle at times.

Having to wade through a load of ‘ad-hoc’ notes when reviewing a record can be difficult & take a lot of time. It also doesn’t really look very neat, and can cause challengers when trying to get a good overall picture of what’s been happening. Additionally, it’s REALLY hard to search on properly, and a we all know how important (good) searches can be in our daily lives!

There will be situations where an agent captures a note, saves/closes it, then needs to come back to it. Perhaps they may need to come back to it multiple times. For example, closing notes at the end of a customer conversation.

Omnichannel facilitates this in a most marvellous way. When the agent creates the note from the chat & saves it, it saves the Note record. If the agent clicks the Note button again from the chat, they’re presented with the ‘clean’ interface again: the previous note/s don’t appear there.

However, ALL of the notes entered are saved to the SAME notes record. It doesn’t matter how many times the agent creates/saves a new note from the conversation – they all appear in the same record. This is really great in my opinion, as it means that we can have the entire view of ALL of the notes in one place.

Interestingly enough, it doesn’t put them on different lines – I’m going to look into this further, to see if this is actually what is meant to happen or not…

This in turn then facilities clean records, clean notes, and can save us a great deal of time. Aren’t clean data structures amazing.

So my question to you is – do you use Notes currently? What challenges have they presented you with, and have you come up with any workarounds? Please share – I’d love to hear!