Territories enabled for OOB Hierarchical relationship in Sales Hub

With the 2019’s Wave 2 Update releasing, the out-of-the-box Sales Territory entity has been enabled with Hierarchy settings.

Define Hierarchy

Let’s say you are in Sales Hub and in App Settings, look for Sales Territories on the left-hand menu.

menuNavi

settingMenu

It’ll show up all Territories, open the same and add a Parent territory
Let’s say, I opened Japan, I’ll add Asia-Pacific as the parent of the territory
addedParent

Once I do so, I can see the saved changes using the View Hierarchy button on the ribbon on either the Main Form on the public View.

Note: It won’t immediately appear once you enter a Parent and save, please reload the page.
viewHier.png

actualView.png

 

Please note that this is only for Unified Interface and not available for the classic UI. Also, this is only for the Sales Enterprise license.

Although the feature says it’s only available for Unified, I was able to catch it in classic UI as well. But this is discouraged since we are moving towards Unified UI and classic UI will soon be gone.

Hope this quick tip helps! 🙂

Set Lookups in Xrm.WebApi D365 v9 correctly. Solving ‘Undeclared Property’ error

Using Xrm.WebApi needs you to be careful with the field names and what to use when. Especially, when you are dealing with Lookups.

One of the most common errors you’ll come across is the one like below – “An undeclared property (fieldname you entered) which only has property annotations in the payload but no property value was found in the payload.

error

This is confusing as to what needs to be put in while setting the lookup.

If you have done the below, entered the name of the field which is all in small caps  –

object[“msdyn_resourcerequirement@odata.bind”] = “/msdyn_resourcerequirements(<Guid>)”;

This will result in the above error!!!

 

You’ll need to put the Schema name of the lookup field instead and this should solve your problem –

correctName.png

and the code should look like this –

object[“msdyn_ResourceRequirement@odata.bind”] = “/msdyn_resourcerequirements(<Guid>)”;

And this should totally work for you!!

Hope this helps! 🙂

Create your own Insight Cards with Power Automate in Sales Insights

Sales Insight’s cards are not just restricted by what is provided by Sales Insights for your Org, you can make your own using Power Automate too. Here’s how –

Requirements

These features aren’t free under Free Features of Sales Insights. Sales Insights license is for $50/user/month. More info on licensing here – Sales Insights Licensing

For free features, only pre-defined Insight Cards show up. You don’t get to create your Cards. To try this feature, you can create a 30-day Sales Insight trial.

Scenario

Let’s say you have a custom field on the Account called as Renewal Date which holds a Date of renewal for an account. And you want to create an Insights card to show up whenever this date is within 5 days –
fieldOnForm

Create a new Insights Card using Power Automate

Let’s say you have Sales Insights already setup in your Org and you have moderate knowledge of Power Automate (formerly known as Flows)

  1. Navigate to Sales Insights settings in Sales Hub > Global Settings > under Assistant Studio, look for Home and you’ll see a button to Create a new Insight card.
    navigateToCards.png
  2. Since our requirement is a pretty common one and Power Automate has a template for it already, you can select one or even start from scratch.
    template
  3. Make sure all the permissions are correct and you’re set to modify a Power Automate Template (or create from scratch)
    permissions.png
  4. Let’s say you are making this run on a daily business during your non-business hours.

Little Tweak to store a Reminder Date in D365

I wanted to have a custom reference of the Reminder Date in my own way in D365 instead of making the Power Automate query more complex.
I’ve created a Calculated Date field for RenewalReminder to store date of 5 days before the Renewal Date and this will be maintained for all records.
renewalDateField
So that the field stores 5 days prior to the Renewal Date
fieldValue.png
(I’ve hidden it away in actual implementation later on)

In the past, I’ve implemented a similar scenario to store current date used for views in D365, reference Blog: Store ‘Today’s Date’ in a field to use in workflow conditions in D365 CE

Design Power Automate

Since we’ve chosen a template to get a reference from, feel free to remove/modify whatever you need to –

  1. Now, I want to Flow to be triggered every day at UTC midnight
    flowPart1
    Details: Every midnight, fetch me Accounts where I RenewalDate has passed so that selective Accounts will be queried, and then I want to create cards for those accounts in the next step.
    And I’m only comparing the RenewalReminder field value to the current date since it will run everyday
    dateConfig.png
  2. In the final step, for Each account, I’ll create a Card with the Account’s details which the user needs to see.
    createCard.png
    I’ve set some properties which are quite self-explanatory. I’ve made the Open button on the card to open the record itself.
    And I’ve also made the card to show up only until the Renewal Date. (Maybe setup a separate process for Accounts past renewal date)

    And that’s that! Your Power Automate is ready to create Insight Cards which remind you of an upcoming renewal

Seeing it Run

Now, every day when the Power Automate runs, it will create Insight cards for you and they’ll appear as you’ve configured them. In this case, For Alpine Ski House account, the Renewal Date is 20th Nov, so the card has started showing up since 5 days before the Renewal Date (Date stored in RenewalReminder for referencing, you can choose your own way to do so in Flows)
cardShowUp

Even in your Dashboards, since you’re the owner of the record and it’s set to show only to the owner, you’ll see it and clicking on the Open button will open the Account record itself
clickOpen.png

Hope this helps!!

Import multiple Users in Office 365

One of the common asks to import multiple users in Office 365 is to be able to create multiple users in most efficient way possible.

Here’s a quick guide to do so using Import multiple users feature in Office 365 Admin Center.

Download Template for Importing Users

  1. Let’s say you are in the Admin Center using portal.office.com. Under Users, You’ll find a button to Add Multiple Users
    addMultipleButton
  2. And the feature let’s you download a template with some sample data in case you’re unsure of what to enter.
    downloadTemplate.png
  3. Once downloaded, you’ll get the Excel in your system
    downloaded
  4. Now, you’ll see some sample data which you can simply delete to add your actual data.
    sampleData.png

    deleteSampleData.png

  5. And let’s say, your data looks like this. I’ve added Kuldeep Gupta and Subhash Mahato, 2 users with some info.
    sampleData

Import Back into O365

Now, we are set to import this in O365.

  1. On the same feature, look for Browser button to import.
    browserExcel
  2. Click Verify to validate the info entered for any errors. Once verified, you can click Next.
    verify
    clickNext.png
  3. On the next step, I’ll assign licenses and proceed by clicking Next.
    assignLicenses
  4. Once the processing is done, users will be added
    importCompleted
  5. And you’ll see 2 new users in O365 with the selected licenses
    2newUsers.png

Hope this was easy! 🙂

 

Viewing Emails as conversations on the Activity Timeline in D365 CE

When you have Timeline and you actually use it to check related Activities, won’t it be really cool to see which emails are in a chain? Like which ones are a part of the conversation?

Well, that’s exactly what this little but extremely beneficial feature let’s you do.

Now, can you tell, by just looking at the below Activities that have come in and arranged sequentially (traditionally)?

distinctEmailViews

In the pic above, they are all a part of the same email chain but have come at different times so appear distinct and you can’t easily make out that they actually are a part of the same email conversation.

So now, you can now view Email activities as conversations on the Activity Timeline!

Personal Settings

  1. Open your Personal Settings in D365 CE and go to Email tab as shown below. Look for ‘Show emails as conversation on Timeline‘ feature and turn it on.
    setting

Viewing Emails as Conversations

Now, it’s pretty easy to look at activities that are a part of the same email conversation. And they are denoted by a visual cue that indicates they are chained together –

inConversationEmails.png

Note: This feature is available only on the Unified Interface and won’t be available on the Timeline on the classic UI.

 

Hope this quick tip helped!

A manager is required for non-project time entries, absence, and vacation error in D365 PSA v3

In PSA v3, there occurs a scenario where Resources (Users) have to enter about their absenteeism and they’re not able to submit the request successfully on the Time Entry grid.

Error while Submitting Absence/Vacation & Non-Project Time Entries

  1. Typically, when a Resource has to make an entry for Absence but doing the below
    absenceTypeEntry
  2. And then clicking on Submit.
    submittingTE.png
  3. But, doing so gives an error!
    errorMessage.png

Let’s look at what was missing in readying the system for using PSA for the Resources –

Adding Manager for a Resource

Evidently from the error message itself, a Manager is required to approve the non-project time entries. Here’s how you can set it up!

  1. In PSA, it is required that ‘Manager’ is set for a Bookable Resource to be able to submit an absence/vacation/non-project time entry. Quite logical.
    So, In User record (associated with the Bookable Resource record of the actual user), the Manager should be assigned.
    missingManager.png
  2. Like below, if there’s a manager present, the Resource should have no trouble submitted non-project/absence Time Entries.
    managerAdded
  3. And once this is set, the entries should be submitted without an issue like below –
    entrySubmitted.png

What can the Manager do?

  1. Once this type of Time Entry has been submitted, the Manager can see it under Approval entity in their PSA under Absences/Vacations for Approval
    approvalArrived

Hope this was helpful!

 

 

Use Plugin Tracing to identify Plugin time-out issues

In Dynamics plugin implementations, you might have lengthy complex plugins that makes calls to Dynamics several times. I agree that calls to Dynamics should be as less as possible and use Link Entity as much as possible and the plugin should be well designed to handle such lengthy executions.

However, there are instances where these plugins are probably updating some fields that in-turn trigger some other sync processes and the execution begins to take longer than it should.

At times, such lengthy executions result in the plugin timing out. In case of Dynamics 365 Online, the timeout is 2 minutes and you can’t change it. (In on-premise, you can)

actualError

And now, you need to know what’s taking so long! So I want to propose a method which proved effective for me to identify this.

First, in case you are looking to work with Tracing for plugins, here’s a great blog on the same – Debugging Your Plug-ins with the Plug-in Trace Log

Add DateTime to Trace Logs

One of the best approaches to identify what portion of the plugin execution is actually taking time to process is to keep adding Trace logs and that too, with a timestamp!
timestampInCode

This will give you an idea of what part of your plugin is taking long to execute and will give you a fair idea if anything needs to be redesigned.

Set these traces at the very beginning of your plugin and at all necessary places as well as the very end to cover execution cycle well.

And your logs will actually record the time when that operation was hit.

timingsRecorded.png

So now, you have an idea of how the 2 mins are spent and maybe start troubleshooting in that direction.

Hope this quick tip helps!