How to add Rating Values to Rating Models in D365 Field Service and PSA

Rating Models and Rating Values are attributed to Bookable Resources in Dynamics 365 PSA and Field Service. Out-of-the-box, there are 3 Rating Values – Familiar, Good & Proficient. But obviously, you want to customize to have your own.

This is a tricky change and this post will exactly describe before you end up doing something wrong.

If you think all you need to do is add a Rating Value to the Rating Model and save, it won’t work

addRating

Because when you do this, the Value field is locked and you can’t enter anything and just saving the record with the name of the Rating Value will result in the error as shown below

errorWhenDirect

Update Max Rating on Rating Model

So, the right way to do it is to update the Max Rating Value on the Rating Model record.

updateMaxRating

As soon as I save the record, see the an additional Rating Value appears. And in fact, these are the new records that were created when you updated the Max Rating Value and not that the old ones were renamed to ‘Enter rating label here…’

newLabelsToEnter

Note: You can simply enter the record and update all the Ratings inside to the corresponding values.

What happens to existing Ratings used for Resources?

They are all there but have been deactivated, if you query all the Rating Values as is, you’ll see the ones created due to the change we did above and the ones that already existed were suffixed with “[Inactive]” label. See below –

newlyCreated

Well, since these are all the new records created, the old ones are ‘Deactivated‘. What remains with the existing Bookable Resource Characteristics records are the Inactive ones.

inactiveAssigned

To update these, you can do a simple Advanced Find by querying one of the inactive Rating Values and updating them using Bulk Edit to set the new one.

  1. Query the inactive ones
    queryInactive
  2. And simply Bulk Edit to update the Inactive ones
    bulkEditInactive

By the way, if you want to Bulk Clear and start fresh, you can check my blog on Bulk Clearing fields using Advanced Find here – D365 Quick Tip: Bulk Clear field values

Hope this helps you!

 

Advertisements

D365 PSA: Restrict Project access only to their Project Managers

Out-of-the-box PSA’s Project Manager security role provides complete access to even other Project Managers. But then, what if you want to bring down the access of the Project Managers to their own Projects only?

Remember, access in D365 PSA is provided for Owner (ownerid) field and not Project Manager (msdyn_projectmanager) field.

PSARoleRestrict

Scenario

Now, I don’t want a Project Manager to have access to others Projects and looks like this can’t be controlled from the Security Level perspective, given the Project Manager is a separate field than Owner of the Project.

So, I’ll limit the access to only the User level (the one who created the record would have the access, obviously)

PSARoleRestrict2

But this remove the access from even the Project Managers since they don’t own the Projects. To overcome this, I’ve written a simple plugin to provide access to the Project Manager whenever they are updated by Sharing and giving PMs the access.

For this, I’ve written a plugin code that will grant all permissions to the Project Manager of that Project and I would like to share this with you all to consume it.

GitHub Project

Here’s the GitHub repository I’ve created which has the plugin code and the Unmanaged Solution that contains only the plugin assembly and the registered step –

Link: D365PSA-PMAccessRights

gitProj

The D365 Unmanaged Solution resides here –

unmanagedSoln

This will work in the following scenarios –

  1. When a Project Manager is changed from Person A to Person B, the access rights of Person A will be removed and granted to Person B.
  2. You can even create a trigger field and use an on-demand workflow to set the trigger. This trigger should be included in the filtering attributes of the plugin step to update the existing records.

This will provide access to the Project Manager of the Project automatically apart from the Owner so that they see/access only Projects that concern them
accessGiven

Make sure no other security role is overriding your restricted access.

Hope this helps! 🙂

Bringing back Maintain Bookings Availability View from D365 PSA 1.2.x into 2.4.x

Disclaimer: This is an experimental implementation and is not recommended out-of-the-box. My assumption is Microsoft would not provide support for anything that gets goes wrong while implementing this, with the original MS scripts or anything that intervenes with out-of-the-box functionality. Kindly implement at your own risk, do not change the existing out-of-the-box files and back up entities/files before any customization.

Maintain Bookings Schedule Board view in PSA 2.4.x?

Recently, I upgraded PSA from v1.2.x to v2.4.x. And I missed the classic Availability view of the Maintain Bookings of the older version. 2.4.x has the new Schedule Board approach.

Schedule Board based Maintain Bookings view as below
scheduleBoardView

Instead of the old Availability View from the v1.2.x version which looked like this –
availabilityView

Also, even other projects bookings were seen which wasn’t desired and editing the hours was added effort. Se let’s see what we can do her –

Pre-Requisites

  1. Knowledge of Ribbon Workbench in the XRMToolBox.
  2. Make sure you have any D365 environment having PSA in version 1.2.x. You’ll need the older ProjectTeamActions.js file from that version of D365 PSA 1.2.x.
    originalFile

Customization

  1. I prepared a new JS Web Resource (named it MyCustomProjectTeamActions) in the target PSA 2.4.x environment and added the code from the PSA 1.2.x’s PSA file ProjectTeamActions.js file referred in the Pre-Requisites section above
    customWebResource
  2. In the XRMToolBox, connect to the 1.2.x’s Specify Pattern button on the Team Member Sub-grid view, you can use that as a reference.
    longViewSpecifyPattern
    closeViewSpecifyPattern
  3. In your updated PSA 2.4.x’s Org, assuming you have copied the ProjectTeamActions.js from the older org to your custom Web Resource file in Step 1 above, you can prepare a new custom button next to the existing one and use your custom file instead on your button. I just called it ‘New Maintain Bookings’
    customMaintainBookingButton
    customWRInButton
  4. And Publish your changes. Then go to the Project’s Project Team Member view and see your new button work.

Seeing it Work

  1. Now your new button appears besides the current version’s Maintain Bookings.
    teamMemberView
  2. And that will bring up the Availability View for the Maintain Bookings on how it was in PSA 1.2.x
    availabilityView

Hope this helps you out too!

D365 PSA Quick Tip: Sync Resource Bookings with Outlook

You as a resource in an Organization are booked on projects. But are also needed to be in some meetings. But what if, someone who wants to invite you to a meeting needs to know if you’re booked on a Project/Task in D365?

In that case, Syncing your Bookings to Outlook Calendar comes handy.

Let’s say, most commonly in a Technical Services Industry where users are supposed to work on projects and they should appear as booked so that others don’t drag them to other meetings. 😊

Remember, Server Side Synchronization should be turned on for the user on their mailbox to be able to use this feature.

 

Enable Sync Resource with Outlook Feature

  1. In System Settings, navigate to Synchronization tab and enable Synchronize resource bookings with Outlook as shown below.
    enableSystemSettingLevel
  2. Personal Settings – The same needs to be done for an individual user on their Personal Settings in D365.
    personalSettingEnable

Bookings in PSA now appear in Outlook

Now, example, Priyesh is booked on Home Link Piping project on Monday, 3rd December and this is how the schedule board looks like this
scheduleBoard

As the sync happens, the Bookings will now show up in the user’s Outlook Calendar.
syncedToCalendar

Please note that Server Side Sync can take up to 15 mins to sync through as per the minimum sync cycle duration.

Hope this helps!

D365 PSA: Delegated Resource gets error on making time entries for another Resource

Have you been added as a Delegate for a fellow colleague but not able to Read, Create or Submit Time Entries on their behalf?

Let’s see what you are missing.

Before that, if you want to learn about Delegations in D365 PSA, check this Delegating Time Entries in PSA

Scenario

William Contoso wants to make Veronica Quek as his Delegate and let her enter time on his behalf. So William created a Delegate record for Veronica.
delegateAdded

Error for the Delegate Resource

Now, Veronica is attempting to do time entries for William by going to Time Entry Calendar view and switching the user to William.

  1. And when Veronica wants to enter time as William, she’d switch to the User on the Time Entries Calendar View like this –
    switchUser
  2. But, see this error and she don’t know what the issue might be. Even though she’s the Delegate!
    error

Missing Security Role

Yes, this is the first thing you should check

  1. Veronica Quek is missing a Delegate Security Role in PSA to be able to make time entries on behalf of other users.
    Assign Delegate security role to the user to make them enter time on behalf of others.
    securityDelegate

Hoping this is quick fix for you. 🙂

 

Customize Time Entry form on Calendar View for D365 PSA

Many times, users come back requesting that they need to be able to add types of time entries of their own. Sure, you can modify the Time Entry Type OptionSet that comes with D365 PSA by default. But that will only reflect on D365 Form Level and not where users go to Calendar View to enter time.

Microsoft has provided to be able to customize the Time Entry form on Calendar View too. This feature was released in the PSA release v1.2.1.51
msRelease

Check here – https://blogs.msdn.microsoft.com/crm/2017/07/14/dynamics-365-for-field-service-and-project-services-automation-update-3/

Customization

I’ve added an option called as Comp-Off for the available types of Time Entries OptionSet.
timeEntryOS

But, this is only reflected on the Form level of Time Entry entity and not on the Calendar View. On the Calendar View, it continues to show as below –

defaultTypes

Hence, you’ll need to make changes to the TimeEntryType.js file provided by Microsoft out-of-the-box.

Here’s the script that comes out-of-the-box which Microsoft says you can change to customize –

  1. To make changes, look for this file – “msdyn_/Common/Models/OptionSets/TimeEntryType.js
    jsInSolution
    jsWebRes
  2. Modify this file. By default, it will have this script as shown below –
    defaultScript
  3. So, I added just this one line and mapped it to the OptionSet I created. The value should match the OptionSet value entered in the Time Entry Type OptionSet.
    lineAdded
  4. Save and Publish changes. Check if your new option appears as shown below –
    modifiedCalendarView

Remember: The Calendar View to enter time entries has been deprecated in v3 of PSA. So this customization will not be needed in versions 3.x onward.

I hope this was helpful.

Also,

D365 PSA v3 – Resource Assignment and Booking

Now, since PSA v3 is a major shift from it’s previous version, ways to do certain things have changed. Let’s quickly look at one of the many ways to book a resource by Assigning them and then Booking them in PSA v3.

Project

I have a sample Project called Grand Chocolatiers Inc. whose Schedule looks like this (the WBS is now Schedule in PSA v3) –
project

I will now Assign and Book a Resource to show you how this is done in PSA v3.

Assigning Resources

1. Now, you don’t have any resources Assigned to the Project you just created, so let’s go to the Schedule in the Project and add a new Resource, say, Alicia Baker
addAlicia

aliciaAdded

I’ve added Alicia Baker without booking her.

2. Coming to the Team and refreshing the grid, I’ll see Alicia being Assigned the 12 Hours.

aliciaAssigned

 

Booking Resource

  1. Now, I’ll come to the Resource Reconciliation section and see how I can book Alicia on the task. I’ll select the Previous Difference in order for me to see the distribution I want to book Alicia on.
    aliciaInRecon
  2. After I double click on the Hours denoted (1), I’ll see and expanded view (2)
    expandExtension
    expandedExtension
  3. Now, if I only select the below highlighted days, I’ll be booking Alicia for those hours on the 3 selected days only
    select3Days
  4. Then, I’ll click on Extend Booking
    extendBooking
  5. Once I confirm the 3 days that I see, the resource will be booked for that time
    confirmExtension
  6. And I’ll see the updated Reconciliation View after I book the resource
    extensionCleared
  7. Now, if you check the Team or the Schedule Board, you’ll be able to see that Alicia is now Booked for the selected duration
    aliciaIsBookd

Hope that was helpful!

To read more about Reconciliation View in D365 PSA v3, refer Kuldeep Gupta‘s blog post on Reconciliation View & Scheduling a Resource in PSA v3

Cheers!