{Power 2021} Clear and Update Custom queue field on Case based on Queue items related to the case

Pre-requisites:

  • Should have “Customer Service Hub” app installed in your tenant
  • Add out of box “Case” entity in your solution
  • Create a custom lookup field (Lookup to Queue) titled as “Queue” under Case entity and place it on “Case for interactive experience” form

Requirement:

  1. The Queue to which Case is assigned should get displayed under Queue lookup field
  2. If we are closing the Case as “Resolved” or “Cancel” – Queue lookup field should be set to null

Implementation:

Now, we are creating an “Automated Cloud flow” to implement above 2 requirements mentioned above:

  • Open Solution >> Select Cloud flow from left navigation (Make sure you have selected the correct environment)
  • Click on drop-down arrow next to “New” button >> Select “Automation” >> then select “Cloud Flow” >> then select “Automated Cloud flow
  • Now, give name to your Cloud flow and select the trigger action of Microsoft Dataverse i.e., “When a row is added, modified or deleted”. In our scenario, we are triggering our flow if a Case is added to Queue which means whenever a Queue Item has been created under respective Queue. Then, click on Create.
  • Rename the trigger action as “Whenever a Queue Item record is created or modified.
  • Select “Added or Modified or Deleted” under Change type
  • Select “Queue Items” under Table Name
  • Select “Organization” under Scope
  • Enter “statuscode” (which is logical name of Status field of Queue Item table) under Select Columns

Then click on “New Step”

  • Now, select “Get a row by ID” to get Case details and select “Cases” under Table Name and “Object (Value)” under Row ID. Select “New Step”.
  • Now, select “Get a row by ID” to get Queue Item details and select “Queue Item” under Table Name and “Queue Item” (unique identifier) under Row ID. Select “New Step”.
  • Now, select “Get a row by ID” to get Queue details and select “Queue” under Table Name and “Queue (Value)” under Row ID. Select “New Step”.
  • Select the “Condition” and add the condition where if Status (Queue Item) is equal to “0” i.e., Active. If the condition will be true, “Yes” part of the condition will be continued else it will go under “No” part
  • Click on “Add an action” under “Yes” part and select “Update a record” action.
    • Select “Cases” under Table Name
    • Select “Case” (Unique Identifier) under Row ID
    • Add “queue(QueueValue)” under Queue field

Scroll down a little and see the option of Queue.

  • Click on “Add an action” under “No” part and select “Update a record” action.
    • Select “Cases” under Table Name
    • Select “Case” (Unique Identifier) under Row ID
    • Add null expression under Queue field

Scroll down a little and see the option of Queue.

  • You may now save and test the flow.

Testing:

  • Create a case record by clicking on “New Case” button.
  • Add a Case to Queue by clicking on “Add to Queue” button from ribbon. Here I have a “Test” Queue, so I am using that
  • Now, Queue field which is placed under Case form should be auto populated with respective Queue.
  • Now, click on “Resolve” or “Cancel” option from ribbon
  • Now, check record becomes read-only, and the Queue field is automatically be set to null.

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

clip_image009

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to assist, Please fill the following form for your business needs: Click here

clip_image011

{Power 2021} Recover Deleted Environment in Power Platform

Microsoft has given the ability to create various kind of environments in Power Platform. Trial environments are often used for temporary POCs and then deleted. But what if you or your team accidentally deleted an Environment and you want to recover it.

Well, follow the following steps to recover a deleted environment (within 7 days of the deletion). In my example, I have deleted an environment called as “Test”.

· Navigate to Power Platform admin centre and click on Environments (Notice a button for Recover deleted environments):

clip_image002

· Select the environment you wish to recover and Click Recover:

clip_image004

· Confirm the pop-up that appears:

clip_image005

· Recovery will be initiated and it can take upto several hours:

clip_image006

· After recovery, you can see your required Environment back in Power Platform Admin centre:

clip_image008

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

clip_image009

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to assist, Please fill the following form for your business needs: Click here

clip_image011

{Power 2021 – Wave 2} Dataverse search 101: The new way to search in Dataverse

Microsoft has recently introduced a great feature which is the new cool way to search in Dataverse – Its termed as Dataverse search.

How to enable it?

Production environments: Enabled by default

Non-Production environments: Navigate to Power platform Admin centre and you can enable the setting which is highlighted below:

clip_image002

Tip: Scroll down and don’t forget to hit the Save button on the above screen after enabling it. It will take some time first time you enable this feature(Indexes are being created in the background) – so wait for a while for awesomeness

What tables are enabled by default?

21 in total are enabled by default, here is the list:

Without D365 Apps enabled:

Account (8)
Contact (11)
Goal (19)
Goal Metric (3)
Knowledge Article (56)

With D365 Apps enabled:

Campaign (2)
Campaign Activity (4)
Campaign Response (6)
Case (5)
Competitor (1)
Contract (7)
Invoice (4)
Lead (6)
Marketing List (5)
Opportunity (11)
Opportunity Product (8)
Order (4)
Product (5)
Quote (4)
Service (1)
Service Activity (9)

How to enable the Dataverse Search for tables/columns?

Navigate to the intended solution, Click Overview and select Manage Search index:

clip_image004

You can see the tables which are already enabled, and select others as per your requirement:

clip_image006

In our example, am adding Entitlement(notice the way 11 columns are included as a resultant) and click save:

clip_image008

How to use Dataverse Search?

Navigate to your Model driven App and use Search bar on the top, in my case am searching for a Contact:

clip_image010

The resultant of the Search:

clip_image012

Notice, the filters available for Modified on and Created on Date range on the right hand side of the screen.

Let me search something more generic like “Ab”:

clip_image014

Notice, that Owner filter is also available on the right-hand side now.

Lets Locate the Contact and understand Quick Actions available (Ability to Assign, Email a link or Share the record):

clip_image016

For another entity which is activity let us see what Quick Actions are available (Mark Complete, Close, Set Regarding, Assign and Email a link ):

clip_image018

clip_image020

Let us also use Natural language searches, here we are searching for “Open Phone calls”:

clip_image022

Let us also try Boolean operators, here am Searching for D365 Champs(Account name) + 1234567890(Phone number):

clip_image024

Let us do some Wild card searching, *D365*:

clip_image026

Isn’t this going to revolutionize the way we search – off course! Great job Product Team.

What are some important known limitations and considerations?

· Certain fields are counted as multiple fields:

· Lookup: Counted as 3 fields

· Customer: Counted as 3 fields

· Owner: Counted as 3 fields

· Option Set: Counted as 2 fields

· The Find columns in Quick find Views define the fields that are searchable in Dataverse search.

· The View columns in Quick Find View define fields that will be displayed when search is conducted on Dataverse search.

· The Find conditions in Quick Find View are applied on Dataverse search results except for the following clauses:

· Like

· NotLike

· BeginsWith

· DoesNotBeginWith

· EndWith

· DoesNotEndWith

· ChildOf

· Mask

· NotMask

· MaskSelect

· EqualUserLanguage

· Under

· NotUnder

· UnderOrEqual

· Above

· AboveOrEqual

· NotNull

· Null

· Quick Actions can be configured via a new type of rule on Homepage grid commands

· Disabling Dataverse search will remove the index within a period of 12 hours.

· You can configure upto 1000 Searchable fields, out of which 50 are required by Dataverse search system – hence limit is set to 950 fields.

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

clip_image027

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to help, get in touch here: Click here

clip_image028

{Power Integration}Email notification to all Queue Members on assigning a Case to Queue

Business requirement:

Email notification to be sent to all the Queue Members on assigning a Case to Queue.

Solution:

1. Add a step “When a row is added, modified or deleted” then rename it to “Trigger when a Queue item is created” and enter the following details:

Change Type: Added

Table Name: Queue Items

Scope: Organization

clip_image001

2. Add an action “Get a row by ID” and rename it as “GetCaseDetails” – This step is used to get a case record details:

Table Name: Cases

Row ID: Object (Value)

clip_image002

3. Add an action “Initialize Variable” and rename it to “Get all the emails of Queue Members” – This is used to store emails of all the queue members

Name: Queue Members Email

Type: String

clip_image004

4. Add an action “Initialize Variable” and rename it to “Record URL” – This is used to store the URL of Case record

Name: Case Record URL

Type: String

clip_image005

clip_image006

5. Add a condition to ensure when the type of record is case or not.

clip_image007

6. Under “Yes” part of a condition, add an action “List all records” and rename it to “List all members and their emails” – This is used to get all the users (Members) and their emails which we’ll use later. We may first need to fetch XML query.

Table Name: Users

Fetch XML Query:

<fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”true”>

<entity name=”systemuser”>

<attribute name=”fullname” />

<attribute name=”systemuserid” />

<attribute name=”internalemailaddress” />

<order attribute=”fullname” descending=”false” />

<link-entity name=”queuemembership” from=”systemuserid” to=”systemuserid” visible=”false” intersect=”true”>

<link-entity name=”queue” from=”queueid” to=”queueid” alias=”ad”>

<filter type=”and”>

<condition attribute=”queueid” operator=”eq” uiname=”Queue Name” uitype=”queue” value=”{@{triggerOutputs()?[‘body/_queueid_value’]}}” />

</filter>

</link-entity>

</link-entity>

</entity>

</fetch>

clip_image009

7. Add an action “Apply to each” and select the “Value” which we are getting from previous step (List all Records) then add an action “Append to String Variable”

under Apply to each and enter following details:

Name: Select “Queue Member Email” variable

Value: Add following expression

concat(items(‘Apply_to_each’)?[‘internalemailaddress’],’;’)

clip_image011

8. Add an action “Send an email (V2)” and enter the required details:

To: Queue Members Email

clip_image013

9. Save the flow and test it.

clip_image015

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

image

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to help, get in touch here: Click here

clip_image002[4]

{Power Resolution} Solution import failure fix for Sales insights dependencies

Problem statement: In a recent project, we were evaluating Sales insights for the customer in Development environment. When we tried to move solution to QA for Sales development that was going on we faced an error in import:

clip_image002

Resolution steps:

Uninstall Sales insights from Dev environment by deleting the solutions in following order:

· SalesInsightsAddOn

· SalesInsightsMDLConfig

· msdyn_Conversationlntelligence

· msdyn_SalesRouting

· msdyn_segment

· msdyn_acceleratedsalessitemap

· msdyn_acceleratedsales

· msdyn_sequence

· msdynce_RelationshipAssistantAddOn

· msdyn_connectiongraph

· PredictiveLeadScoring

· PredictiveOpportunityScoring

· PredictiveForecast

· msdyn_PredictiveScoringCommon

· RelationshipAnalytics

At certain solutions you will get dependency issues, here is the resolution

For Sales Acceleration solution, we got below error:

clip_image004

Solution: Remove sequence control from Opportunity(form)

For Relationship analytics solution, we got below error:

clip_image006

Solution: Remove Action Cards control from Opportunity(form)

After following these steps, Sales insights components were able to be removed from the Development environment.

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

image

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to help, get in touch here: Click here

clip_image002[4]

{Power Integration} Create Teams meeting based on D365 CE Appointment

Business Requirement: Whenever Appointment is created in D365 CE, send Teams meeting invite to everyone and also update Team meeting URL back to the appointment.

Note: Server side sync is not enabled at the client tenant for Appointments.

Solution:

Step 1: Create an Automated cloud flow and set trigger as follows:

clip_image002

Step 2: Set the trigger condition as follows:

clip_image004

Step 3: Next step is very important; we need to route through all activity pointers to get email addressed of the attendees.

Filter to be used is _activityid_value eq

clip_image006

Step 4: Now we need to initialise variable to Append all List of Attendees:

clip_image008

Step 5: Loop through all returned Activity pointers and keep appending email address of the attendees into the string variable:

clip_image010

Step 6: Create Teams meeting as below. Note the formulas will need to be used to map start and end time.

formatDateTime(triggerOutputs()?[‘body/scheduledstart’],’yyyy-MM-dd HH:mm:ss’)

formatDateTime(triggerOutputs()?[‘body/scheduledend’],’yyyy-MM-dd HH:mm:ss’)

clip_image012

Step 7: update the appointment back with the Team meeting url by Updating the description:

concat(triggerOutputs()?[‘body/description’],’Click here for Team meeting url: ‘,outputs(‘Create_a_Teams_meeting’)?[‘body/onlineMeeting/joinUrl’])

clip_image013

Final Flow should look like this:

clip_image015

Result:

Now let us go and create appointment in D365:

clip_image017

Let us see the Teams calendar now:

clip_image019

Let us see Appointment description below in D365:

clip_image021

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

clip_image001[4]

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to help, get in touch here: Click here

clip_image002[4]

{Power Milestone}Half a million views and a Thank you note!

Thank you note for all the readers of CRM community and Microsoft, I crossed half a million views on my blog and was read in 191 countries in its journey so far.

image

Hope it helps and Power 365ing as usual!

Other ways to learn with me:

clip_image001[4]

Any problem in Power Platform or Dynamics 365 – end user, Microsoft partner or an individual?

Problem Area – Technical, Functional, Training, Development or consulting?

Me and my team are here to help, get in touch here: Click here

clip_image002[4]