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!

Advertisements

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!

Contract Invoice Schedule Status and Invoice actions in D365 PSA

Stages of Invoice Schedules are changed behind the scenes as you perform actions on the Invoice of the Contract. Let’s see what we have got here –

Let’s say I have a Fixed Price Contract Line for which I’ve generated the Invoice Schedule for spanning across a few weeks.

So, when an Invoice Schedule is Ready for Invoicing, it will be considered in the Invoice you’ll end up creating.

readyForInvoicing

Now, if you create the Invoice for that Contract (shown below)

createInvoice

The Invoice Status now changes to ‘Customer invoice created

customerInvoiceCreated

And, when you mark the Invoice as Confirm, as shown below,

confirmInvoice

The Invoice schedule record’s Invoice Status will be changed to ‘Customer invoice posted

customerInvoicePosted

Finally, even if you mark the Invoice as ‘Mark Invoice as Paid’, shown below, the Invoice Status still remain in ‘Customer invoice posted’ status –

markInvoiceAsPaid

As simple as that! 🙂

Why we see Cross Day in Work Hours on Bookable Resources/User?

Ever wondered what is Cross Day on Work Hours for a Bookable Resources in Dynamics 365 PSA or Field Service? Or even User record for that matter? And why not the actual Work Hours a resource is set to?

You expect to see this –

actualWH

But see this?

crossDay

Reasoning

So, The Bookable Resource’s time zone is GMT

bookableResource

And so is the same time zone of the logged in user i.e. GMT

gmtIsSet

In that case, you’ll see the actual time set for the user i.e. 8am to 5pm.

But, let’s say, you are in a different time zone – Sydney, for example.

sydneyTimeIsSet

And you are viewing Work Hours for a Bookable Resource who was set in some other time zone, their time conversion to your time will result in “crossing the day over” and hence, you see “Cross Day”.

crossDay

Hope this is helpful! 🙂