How to change the Quote status to Draft after the Quote is won in PSA V3.X using MS Flow
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: To raise an expense as shown below. Configure/Create a Expense Category and relate it to the Transaction Category as per below. Navigate to Settings Area and Click on Expense Categories and then click on New. Fill in the details as shown below. 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. Once the expense is raised, Submit it. Submission sends it for the project Manager for approval. Project Manager approves it and as soon as the Project Manager approves it, it gets converted to Actuals as shown below. 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. It will automatically take you to Invoice Entity where the Invoice will be generated as shown below. 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. Solution: From the security–>Users–> select the user–>Manage Role and Only keep “Project Resource” Role. 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. 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: 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. 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: list_Grievances Screen: This list all the grievances in the system. frm_GrievanceRecord Screen: This opens a grievance record. Frm_NewGrievance Screen: This screen is used to capture a new grievance. Frm_CameraScreen : This is used to capture the image of the grievance using camera control. SuccessScrn: This is used to display the success on the screen. Technical dive Let’s take a dive in each screen and get into understanding of functionalities developed on each screen: 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: Navigate( frm_NewGrievance, ScreenTransition.Fade ); 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: Navigate(frm_GrievanceRecord,ScreenTransition.Fade,glryGrievances.Selected) frm_NewGrievanceRecord: To store the new grievance record, we used the Form Screen. On the update button, write the below code: Patch( Grievances, Defaults(Grievances), { 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 } ); Patch( GrievanceLibrary, Defaults(GrievanceLibrary), { Title: DataCardValue3.Text, Image: First(Collection1).Url } ); UpdateContext({resettext: !resettext}); UpdateContext({resetcombobox: !resetcombobox}); Navigate(SuccessScrn,ScreenTransition.Fade); frm_CameraScreen Insert a Camera Media Control on the form as shown in the below screen shot. 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: Navigate(frm_NewGrievance) To summarize: We learned how to create a Canvas Power app. Different controls that can be used. How to store image on SharePoint in a Power app. Again I am sharing the code for storing the image on SharePoint herewith: Patch( GrievanceLibrary, Defaults(GrievanceLibrary), { 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. 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. Resolution: 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: 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. Approve the same via Time Entries for approval. 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: Cost Unbilled Sales. In order to get the same adjusted via Journals, go to Journal Entries, Sales –> Journals and click on +New Write the Description and select the Journal Type Equals “Time Correction” and Save the record. Click on Browsers back button, Open the Record from Active Journal view and click on Time Entry Corrections Tab. Fill in the fields: Project Project Task Time Entry Date Bookable Resource Resource Role 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. Post Step 7 and Step 8 is done, click on Preview Button from the Ribbon control as highlighted in the screen shot below. 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. 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.