Update Price feature in D365 PSA v3

Typically, your costs for your clients go up by a certain percentage (%). It’s a standard practice to update the entire Price List consistently as and when there’s an increase.

This is a great feature to update the entire Price List by a defined % and then reflect this in the Estimates in your Project in PSA. Let’s take a look –

Scenario

Let’s say your original SalesPrice for a Developer role is $50
scenario1.png

And the same is reflected in the Estimates in a Project as well. Based on $50 for Developer i.e. resource Priyesh Wagh will spend 12 hours. So 12 * $50 for that week of 1st Dec is $600
originalSalesApplied.png

 

Updating Prices in Sales PriceList

Now, there’s an increase you want to apply. With just a simple change, you’ll be able to do so.

Assuming the PriceList in question here is SalesPriceListUS and you want to add a 10% increment to the same. Simply click on Update Prices button as shown below.
originalPrice.png
And specify the % of increment to be applied. Use Negative number to Decrease.
apply10
And there we go, a 10% to $50 is applied to all items as indicated.
scenario2

Update Price on Project’s Estimates

Similarly, to bring the change to the desired Project, look at the Estimates tab on the Project and click on Update Price button to effect the Prices on the table as well.
applyNew.png

And you’ll see the updated prices in Sales time-phase in the Project Estimates
updatedSalesApplied.png

Hope this helps!!

D365 General Tip: Keeping Currency and PriceList in check

In a hurry, you perhaps selected a similar looking Price List on your Quote and you want to change it.

Example: By mistake, I have selected “SalesPriceListINR” and want to select “SalesPriceListUS
salesINR

But when you try to do this, you can’t see the PriceList you want to set. Why is that?

visiblePLs

Currency

That’s because the Currency selected on the record is Rupee (₹) and your PriceList has the currency US Dollar ($)

rupeeSelected

Change it to US Dollar and you’ll see your PriceLists show up.
USDSelected.png
USDSet.png

And try searching your Price Lists again
correctPriceList

Error while changing PriceList

In a typical scenario, if you have child records dependent on the record you are changing, you’ll see this error.
typicalError.png

But as simple as the wordings are, you’ll need to do the needful and make sure there are no Currency dependent records associated.

 

Hope this 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! 🙂

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!

 

 

Modified By (Delegate) & Created By (Delegate) in D365

These fields which are everywhere but you don’t really pay attention to really mean something worth.

So if you feel you want to get hold of someone for modifying a record. Maybe also take a look at Modified By (Delegate) just in case so that the actual user might be someone else who wanted to do another thing on that record. 🙂

Impersonation is one of the basic aspects of a plugin step that you need to carefully design to let another user (usually Admins for most implementations) make the plugin run under their context instead of giving more security roles/privileges to every other new user.

Well, same goes for Created By & Created By (Delegate) also!

Modified By

Usually, when you update something on a record, the Modified By is updated as expected. But notice that Modified By (Delegate) is not updated.
noDelegate.png

That’s because you are the rightful owner of the record and there’s no other person involved.

But what is someone else is modifying the record (who don’t have access to that record)?

In that case, Modified On (Delegate) field is populated with the name of that user. In such scenarios, Modified By (Delegate) user is the one who caused changes to the record.

delegatedUser

Why Modified By (Delegate) was populated

The reason this was populated was because the record was updated through a plugin by a user who doesn’t have Write access to the record.

But because the user invoked a plugin which was Impersonating as a User who has rights to the records, the record was successfully updated. And this, the actual user who called the plugin is the one who will be populated in the Modified By (Delegate) field.

impersonatingOtherUser

Hope this quick tip helps!

Using Keys to restrict duplicates in D365 CE

A superb way of restricting duplicate record creation is using Keys in Dynamics 365CE. This is definitely one of the most useful and easy to use features in Dynamics CRM.

In this example, I will create a Key for Email (emailaddress1) field to ensure there are only unique record values for this fields in my environment.

Create Key

It’s pretty straight-forward like creating any other Dynamics CRM component. Navigate to Keys under and entity like shown below –
createKey

And add a new Key and select attributes you want to use for that key
createdKey

Finally, save and publish your changes.

How it Works

Let’s say you already have an existing record ABC 1 with email address abc@abc.com
abc1.png

And if you try to create/update a record with the same attribute’s same value, you’ll get and error as below –
abc2

And the error will be
errorThrown

Hope this quick tip helps!