Dynamics 365 PSA setup and user guide

This is for all you guys who want to learn MS D365 PSA. I faced lots of trouble while referring to documentation available from MS. It is good but not exhaustive enough. So i thought of writing an e-Book on my own (Step by Step guide); a place where i can myself go and figure out how to do certain things in case i forget something of the product. You guys can also download the e-Book from here, PSA User Guide

How to change the Quote status to Draft after the Quote is won in PSA V3.X using MS Flow

Problem Definition:

The sales cycle in my company demands me to create an opportunity every time a CR is requested or there is an additional estimates via proposal that we ask on the current project from the customer.

This needs me to go through the cycle from Opportunity to Quote to Contract. But, in this cycle I do not want to create another Quote or contract, but update the existing one to add another Quote Line Detail.

This is not possible once the Quote is marked a won in PSA.



Following is what can be done to enable the Quote to move it to Draft mode an make it editable.


Step 1:

Go to the Quote and click on the Flow button in the Ribbon control and click on Create New Flow as shown in the screenshot below.


Step 2:

Use the Common Data Service Template and click on Continue.


In case you see this page and you are not signed in with your account, please sign in and continue.

Step 3:

On the next screen select the details as shown in the below screenshot.


Step 4:

Select the Update Record Option from below as shown.


Step 5:

Click on Add Dynamic Content link and select Quote field from there as shown below.


Step 6:

Change the field “Status Value” to Draft and Save the Flow.



Step 7:

Navigate to the flow and name is as shown below.


Step 8:

Its time now to test the Flow developed. Navigate to your Quotes and filter out the Won Quotes.Open one Quote and Click on Flow button from the Ribbon control and select the Flow that we wrote as shown below


Step 9: Refresh the page and check that the Flow has done its job and the Quote is now in the Draft mode, ready to edit.


This blog reflects my personal findings and based solely on my experience of using PSA for last 3+ years. For those who are looking for a platform that can track and manage the entire procedures of sales and project managements, I would highly recommend them to try Microsoft dynamics 365 for project service automation.


Expenses in PSA for Fixed Bid and T&M contracts

Problem Definition:

One of my clients decided to use Expense module in PSA and to his surprise he could see the amount value to be 0 in the Actuals. But, at the same time the Cost line had values in it. Upon researching and digging into all the configurations I was tiered and couldn’t conclude. Finally, one configuration that made it work was to add the Transaction Category in the Sales Price List and make it Chargeable at Cost.

Below is how to do it:

Navigate to the project contract.


Open the Pricelist associated with the Contract. It can be either the default pricelist or can be the custom price list for that particular contract. In the case shown in the screen shot, it is the Custom Price List.

How do we Identify whether it is a Custom Price List is that, with the name of the Pricelist i.e. Sales Price List USD, there is the name of the opportunity and the Timestamp appended to it. You will see it in the screenshot below.

Once you open that Custom Price List and Navigate to Category Prices, Click on “+ Add New Transaction Category”

You will see a Quick Create Form opening up to add the Transaction Category. Fill in the details as shown in the below screenshot.


The click on Save and Close and you will see your transaction Category added in the Grid.


Your configuration is now ready. The next step is:

  1. To raise an expense as shown below.c4
    1. Configure/Create a Expense Category and relate it to the Transaction Category as per below.
      1. Navigate to Settings Area and Click on Expense Categories and then click on New.c5
      2. Fill in the details as shown below.c6

If you observe in the above image, there is a Transaction Category associated with the expense category and that is the one that should be present in the PriceList that we discussed initially in the above part of this blog.

  1. Once the expense is raised, Submit it. Submission sends it for the project Manager for approval.
  2. Project Manager approves it and as soon as the Project Manager approves it, it gets converted to Actuals as shown below.c7
  3. Last step is to Create Invoice and see if the Expense gets shown up in the Invoice. For the same traverse to Project Contract and Open the specific project contract.c8

It will automatically take you to Invoice Entity where the Invoice will be generated as shown below.c9

Tips to remember:

For Fixed Bid Project contract, you will need to create one more project contract line header which is of T&M type. This will be associated with another project on which you can raise the expenses.

For T&M, we can still continue to raise the expense on the same project and there is no need of creating one more project contract line header.

This blog reflects my personal findings and based solely on my experience of using PSA for last 3+ years. For those who are looking for a platform that can track and manage the entire procedures of sales and project managements, I would highly recommend them to try Microsoft dynamics 365 for project service automation.

PSA Quick Tip: How to give Team Members access to only do time entries and expense entries and not expose other entities in PSA v3.X

Problem Definition:

We sometimes have a few team members who only need to do the time entries and expense entries. They do not need any exposure to other entities. How do we make it possible via the OOB (Out of the box) security roles in PSA V3.X.


  1. From the security–>Users–> select the user–>Manage Role and Only keep “Project Resource” Role.SR1
  2. Go to Security–>Security Roles–>Open the security Role “Project Resource” –> change the following 2 parameters read/write access as shown below in the image.sr2sr3
  3. Log off and log in again and you are set 🙂





First canvas Power app: Learn few easy and important commands

As my thoughts build to initiate writing this blog, similar was the feeling when I first thought about exploring Power Apps. The expression was, “What exactly is Power Apps?”. When the world is talking about it, it brings me more curiosity to understand what is so powerful about it.

Let’s first commence with understanding what exactly is Power Apps:

  • PowerApps is an initiative by Microsoft that allows developers and nontechnical users to build mobile applications from selectable templates.
  • The objective of PowerApps is to enable business users to build new capabilities via apps, without requiring that they have code expertise.


Types of Power Apps:

  • Model driven apps: These types of apps directly publish the entity on the mobile/ tablet. These apps can be used from Microsoft Dynamics 365 App from mobile. They are very easy to make and can be ready within 15mins of time.
  • Canvas apps: These apps are blank canvas given to the developers with a free hand to design the app in the way they want.

In this blog we shall focus more on how to make a Canvas app. Follow the steps below to make a PowerApps.

Step 1:

Login to www.portal.office.com

Step 2:

Click on PowerApps icon as shown in the image below:ca0

This will open a new browser tab where we need to select what kind of app do we need to make.


Step 3:

Click on Canvas app from blank, which opens a pop up. Please name your app and select whether the app is for Phone or for Tablet as shown below and click on Create button.ca2

This opens the Canvas app editor as shown below:


To take this blog forward, I will use an app that is created by me and explain a few commands used by me and how was the design done in that app.

The app captures the Grievances of people in office.

There are 5 screens created by me and they are:

  1. list_Grievances Screen: This list all the grievances in the system.ca4
  2. frm_GrievanceRecord Screen: This opens a grievance record.ca5
  3. Frm_NewGrievance Screen: This screen is used to capture a new grievance.


  1. Frm_CameraScreen : This is used to capture the image of the grievance using camera control.ca7
  2. SuccessScrn: This is used to display the success on the screen.ca8

Technical dive

Let’s take a dive in each screen and get into understanding of functionalities developed on each screen:

  1. List_grievances
  • New Grievance button: This button will navigate to a frm_NewGrievance Record to capture new grievance from the employee. The code written behind that is:





  • To display the list of Grievance I have inserted a List Screen as shown in the image below:



  • To display the list of Grievance, we need to add a Data Source. How to add a data source is shown below:



There are approximately more than 250 Data sources to which Power apps can connect. Select the data source you wish to connect. In my case, I will connect to Dynamics 365 Data Source.


It will ask you to choose your entity and then you can click on connect.


Your Data Source “Grievances” will start appearing in Items drop down of Property Window.

Post that we can align the attributes that we need to see on the list view:

To Display Employee Full Name, below is the code that i wrote:

ThisItem.’Employee Full Name’


To get the department value, which is a lookup to another entity below is the code that was written

LookUp(Departments,new_departmentid=ThisItem.Department, new_name)


To display the image from the SharePoint Library, below is the code:

LookUp(GrievanceLibrary, Title = TitleGrievance.Text, Image)


Where GrievanceLibrary is the Sharepoint Datasource added in Powerapp and Title and image are the fields created in SharePoint.


To open the Grievance record on frm_Grievance Record, write the below code:



  1. frm_NewGrievanceRecord:

To store the new grievance record, we used the Form Screen.


On the update button, write the below code:





        new_employeefullname: DataCardValue3.Text,

        new_description: DataCardValue15.Text,

        _new_departmentl_value: DataCardValue10.Selected.new_departmentid,

        _new_grievancetypel_value: DataCardValue6.Selected.new_grievancetypeid,

        new_signature: PenInput4.Image







        Title: DataCardValue3.Text,

        Image: First(Collection1).Url



UpdateContext({resettext: !resettext});

UpdateContext({resetcombobox: !resetcombobox});


  1. frm_CameraScreen

Insert a Camera Media Control on the form as shown in the below screen shot.ca18

Insert an image control on the form below the Camera Media control.

Capture button code:

ClearCollect(Collection1, Camera1.Photo)

Collection 1 s described above is the SharePoint collection object which needs to be cleared and then referred with the new Photo from the Camera Control, which in our case is Camera1.

Confirm button code:

Confirm Button will only Navigate it to New Grievance form and the code is ass per below:


 To summarize:

  1. We learned how to create a Canvas Power app.
  2. Different controls that can be used.
  3. How to store image on SharePoint in a Power app.
    • Again I am sharing the code for storing the image on SharePoint herewith:





        Title: DataCardValue3.Text,

        Image: First(Collection1).Url



  • To explain the above code, GrievanceLibrary is the SharePoint site of which Data Source is added.
  • Title: This is a field in the Sharepoint library that will store the name of the Grievance. The data type in Sharepoint for Title is Single line Text
  • Image: This will store the image in Sharepoint library in Base64 format. The data type of this field will be Multi lines of Text , but, we need to ensure that the rich text format is set to No. Please refer to the below screen shot.ca19


This blog reflects my personal findings and based solely on my experience of using Power Apps.



Resolution to bulk import Time Entry issue of importing Cancelled Time Entries in PSA V3.X

Problem Definition:

Post upgrading to V3 I faced issues while importing the time entries from my Resource bookings. This was not the case with V2. In V2 when I went to Import Time Entries from Resource Bookings, it used to pick up all the time entries that were in Active State.



The resolution to this was simple, but, little tricky. Below are the steps to be followed to get the issue resolved.

Step 1:

Go to the D365 – Custom App as shown in the below image.


This will take you to the classic interface of D365 CRM as shown below.


Step 2:

Navigate to Settings –> Customizations


Step 3:

Click on Customize the System.


This will open a screen as shown below.


Step 4:

Navigate to Entities –> Bookable Resource Booking –> Views and open the view named Resource Bookings for Time Entries Import


Step 5:

Click on Edit Filter Criteria and add a condition

Status –> Equals –> Active

This conditions ensures that only the Active bookings is to be selected.

Then click on OK and Save and Close.


Finally click on Publish All Customizations.


Now when you try to import the time entries from Resource booking it will import only the Active time entries and leave behind the cancelled time entries. The issue is resolved.

This blog reflects my personal findings and based solely on my experience of using PSA for last 3+ years. For those who are looking for a platform that can track and manage the entire procedures of sales and project managements, I would highly recommend them to try Microsoft dynamics 365 for project service automation.





Time Entry Adjustment in Journal with PSA V3.7

Problem definition:

With the previous releases, PSA could allow adjustment of Time Entry hours via mere plain Journal entries. That means, if we need to adjust a couple of hours or adjust a time entry worth 4 hours, we needed to make a 4 hours journal entry, which could not be tracked against a Time entry.

Problem Solution:

With PSA V3.7 there is a Journal correction for Time Entries which can be done against a Time Entry done. How do we do it is shown in the below steps:

  1. Suppose we a do a Time entry of 1 hours for a Project and Submit it for approval as shown in the below screen shot.


  1. Approve the same via Time Entries for approval.TE2
  2. As soon as the time entries are approved, they get converted to Actuals. This can be validated by going to Project Contract–>Select the appropriate Contract –>

You will see there are 2 records that get created:

  1. Cost
  2. Unbilled Sales.TE3
  3. In order to get the same adjusted via Journals, go to Journal Entries, Sales –> Journals and click on +NewTE4


  1. Write the Description and select the Journal Type Equals “Time Correction” and Save the record.TE7


  1. Click on Browsers back button, Open the Record from Active Journal view and click on Time Entry Corrections Tab.


  1. Fill in the fields:
    1. Project
    2. Project Task
    3. Time Entry Date
    4. Bookable Resource
    5. Resource Role
  2. From the below grid select the Time Entry for which the correction is needed, by clicking on the Add Existing Time Entry and then select the time entry from the quick create form that opens and click on Add.
  3. Post Step 7 and Step 8 is done, click on Preview Button from the Ribbon control as highlighted in the screen shot below.TE9
  4. It will highlight the Journal Lines Tab and show you the Journal Entries with negative values of the value of the time entry and there will be 4 records that can be seen. 2 with positive value of the time entry and 2 with negative that is the Adjustment value.TE10

This is how we can do the adjustment of the time entry which indirectly creates a Journal entry against the time entry done.

This blog reflects my personal findings and based solely on my experience of using PSA for last 3+ years. For those who are looking for a platform that can track and manage the entire procedures of sales and project managements, I would highly recommend them to try Microsoft dynamics 365 for project service automation.




What if the Resource Requirement Still appears post the task is deleted from Schedule (WBS) in PSA V3?

Problem Definition:

I have observed a fact in PSA that when the task in PSA Schedule (WBS) is deleted, the corresponding Resource Requirement doesn’t get deleted. Hence, it keeps on appearing in the Schedule Board to allocate.

Resource Managers face difficulties in order to understand whether to allocate them or not. Hence, it is a job of Project Manager to ensure they are not appearing on the Schedule Board to allocate.


Following are the steps with which the Resource Managers can ensure they do their job end-to-end post the task is deleted from the Schedule (WBS).

Step 1: Check in the Schedule Board in the Project Tab whether the task appears to schedule. If not, then the job is done.


Else, do an advanced find on the Resource Requirement with the below mentioned criteria shown in the screen shot.


See the results of the Advanced Find shown below.


Open the task from Advanced Find by Double Clicking on it and check the status of the task.


Change the Status of the Task to Canceled and Save the form.


The task will now not appear in the Resource Requirement. You are done with the solution.

This blog reflects my personal findings and based solely on my experience of using PSA for last 3+ years. For those who are looking for a platform that can track and manage the entire procedures of sales and project managements, I would highly recommend them to try Microsoft dynamics 365 for project service automation.