Customer Service Workspace for Microsoft’s Dynamics 365 gives us the ability to open sessions and tabs in customer service scenarios. This can be very useful when an agent is juggling resolving multiple cases simultaneously. When they open a case it will be common to open the customer record, in this post I will show how we can always open the customer record and therefore save a few clicks. And in doing so, I will introduce several concepts including the app profile manager, session templates and application tabs.
App Profile Manager
Firstly I would like to mention the App profile manager. As I am going to use this for my example ….
The App profile manager allows me to create profiles which in turn I can assign to users. This gives us an approach to customize the interface for specific users. Some of my users may require particular behaviour when a session starts, maybe some want the productivity pane to be open by default, maybe some need access to specific communication channels etc etc.
You may already be using Customer Service Workspace or the Omnichannel for Customer Service apps without using the app profile manager! This is probably working fine as any user not assigned to a specific app profile will be using the default app profile. If you apply any customizations to the behaviour of the Customer Service Workspace app I advise you to consider using the App profile concept. You can of course start off with just one profile but by using the App profile manager adding suer specific customizations later will become an easy process.
Something else that is really cool about app profiles is that they are solution aware. Meaning you can migrate them from environment to environment.
Below you can see I’ve opened make.powerapps.com. I have used the app option to find my “Customer Service Workspace” app. It is from here that I can open the “App profile manager”.
Initially when you load the App profile manager you will be presented with a screen something like the one below. If this is your first time loading the App profile manager you will probably want to use the “create an app profile” option to start creating your first profile. Or you can use the “See you app profiles” option to open a list of your existing app profiles.
If you are creating a new app profile, you will need to give your app a name. Then specify a unique name.
Tip: The app unique name needs a “publisher” style prefix, say “neil_”!
Now your app is available and you can start to customize it.
Example Session Template
Whenever I consider a new feature like this I like to work with an example. Hopefully showing how an example session template will work I can help give you ideas for your own sessions.
Note: In my example I am going to focus on session templates but you should be aware that within my app profile I can control the behaviour of the productively pane. I can also define which omnichannel or third party channels I might want to include in this profile. Say some of your users need access to web chat and others don’t then you can use this feature to support that requirement.
In my example, whenever a user opens a case I want that case to open in a new session. I also want to make the title of the session the case number.
But I would also like to go further, as whenever the case opens in a session I would like a second tab which will include the customer associated with the case. Not forgetting that sometimes that will mean opening a contact and sometimes an account.
If I have an existing session template I can search for that and include it in this profile. Or I can use the “+Add entity session templates” option to create a new one. (As shown below.)
Below you can see that when I click the “…” option on an existing session template I can open it in the Unified Interface or remove it from this profile. Opening in the Unified Interface will open a fresh browser tab containing the session template and access to all of the other Customer Service Workspace options.
Below you can see that I have created a customer session template. I will give more detail of each field below!
Field | Details |
Name | “Custom Case Session” This can be anything you like, it describes the session template. |
Unique Name | “neil_CustomCaseSession” The format is important here! You need to add a prefix which will normally be your publisher. So in my example “neil_”. |
Type | “Entity” Two types of session exist. In my example I have used “entity” as when a user opens a case entity (or phrased another way a case table row!) then we want a session to start. The other type of session is a “Generic” session. We use that with Omnichannel for Customer Service when the session start will happen as conversations begin. |
Entity | “Case”
Assuming your session type is “Entity” then you will need to specify which table triggers the start of these sessions. |
Title | “{anchor.ticketnumber}”
We can optionally add details of how to name the sessions as they open. If you leave this field blank then the primary field from the entity selected would be used. Typically this would be a name field or in my case example the title of the case. But in my example I didn’t want to use the title as the shorted ticket number seemed like a better field. I have surrounded the “slug” in brackets. And also added the keyword “anchor.” before the name of the field. This is because we can reference fields from the tab used to open the session by adding this “anchor.” prefix. |
Communication panel mode | “Hidden” In my example the communication panel is hidden. Other options include “Docked”. We’d probably want to see a communication panel on a generic session that has been started as a result of an incoming omnichannel conversation. But in my example I don’t need the communication panel, hence the setting of hidden. |
Having saved my session template I can add additional details. These may included which agent scripts to load at the start of the session. Or like in my example, any additional tabs you’d like to open. As each time my session opens I wanted to also open a tab contain the customer from the case.
Therefore I created an Application tab and added this as an additional tab on my session. I have shown my Application tab below. And again I will give you some additional detail below!
Field | Details |
Name | “Customer – Customer Application Tab” This is simply a descriptive name for my tab. |
Unique Name | “neil_customcustomer_applicationtab”
Like the session template the format is significant here! You need to create a unique name that is prefixed with your publisher. So in my example “neil_”. Note: This idea of creating a unique name that includes the publisher prefix should start to make more sense when we add our app profile into a solution. As then the names for our templates will be following the same naming convention as other assets in our solutions. |
Title | “Blank!”
In my session template I completed the title field. As an example in my application tab I left the title blank. This is because I was happy to name the tab as the customer being opened. |
Page Type | “Entity Record” In my example I want to open an application tab containing a Dataverse table. (aka entity). But I could have selected one of several different page types. Including an entity view, web resource, dashboard and more. |
Description | “Blank!”
I didn’t enter a description. I was being lazy! In a production instance it might be useful to enter details of how and when this tab will be used. As that might aid future maintenance. |
Can close | “No”
When my customer tab opens I want it to remain open until the session is close. By entering “Can Close” as “No” I prevent the users from closing this tab. |
Parameters | Depending on the page type different parameters may exist. Having saved my application tab as I had select “Entity Record” I have a set of standard parameters. These included “createFromEntity”, “data”, “entityID” and “entityName”.
In my example I want to open an existing customer record into the tab. The customer many by a contact or account. So I need to supply two fields, one being the GUID of the record to open and the other being the type of table (entity) I want to load. Both of these fields can be “grabbed” from my anchor tab. Which will be the case I am opening. Set the “entityID” to “{anchor._customerid_value}”. This will be the GUID of the customer I want to open. Set the “entityName” to “{anchor._customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname}”. This will be the entity type I am trying to open. So “account” or “contact”. |
Assign Users
Having completed the definition of my app profile, I can now add users. These will be the users that will use this profile in preference to the default App profile.
Below you can see that I have opened my App Profile and selected the users option.
A screen similar to the one shown below will open and you can add users into this profile.
Testing
Once I had completed the above changes I opened my “Customer Service Workspace” app. You can see below that by default I have my customer service agent dashboard open.
Opening a case into a new session from this dashboard or any home page will start a session.
Tip:
Out of the box use “shift and click” to open your case into a new session. Or configure the simplified interface option that will open all records opened from a home tab into a session.
As my case opens in the session several things happen!
Firstly notice that the session name is not the title of the case. As above I set the session title to be the case number instead.
Also notice that a second tab opens that contains my customer record.
And when I click on my customer tab notice that I don’t have the ability to close the tab. Meaning the user is forced to keep this tab open until they have finished with the case and close the session.
Solution Aware!
I mentioned earlier that app profiles are solution aware.
As a test I created a solution. You can see that I then used the “Add existing” option. Here you will find an option called “App profile”. So I used that to add my custom app profile into my solution.
Next I used the add required components option on the app profile I just added into my solution.
You can see below how my application tab and session template that had been included into my App Profile are now added into my session for me. I could (of course) have added these components manually but I found using the “+ Add required components” option made my life really easy!
I can now export my solution and import it into other environments as required.
Hopefully by showing this example I have introduced you to the Customer Service Workspace and shown how I can use the App Profile Manager to customize my agent experience. I hope this example has proved useful and that you can adapt this idea for many other purposes. Enjoy.