Bulk delete allocations in CRM
There have been instances where we feel the need of deleting some records in bulk. I was looking at options of doing advanced search and saw that there were 500+ records showing up. Also, at a time Advanced Find allows to delete 50 records in one go. We definitely needed a better option and Data Management provided that option to delete records in bulk. Use Case: I created a Project Task in a project. This was the only task in the project on which I booked all the resources in my company for 8 hours per day until dec-2022 from June-2018. There were around more then 500+ allocations done for all the Resources. Somewhere, I figured out that this was not the task I wanted to allocate and then I tried many ways deleting the allocations. Below is what all I tried. Option 1: I tried to open the schedule board and delete the allocations from there from month view. But. Deleting it from schedule board takes lot of time to delete the allocations even for one month and imagine we have so many months allocation to delete. Hence, this was not a feasible option. Option 2: I tried deleting the allocations from Advanced find by selecting the criteria as shown below in the screen shot. But, it allowed me to delete only 50 records in a go which was again an issue. After trying above 2 methods and doing some research we came across Bulk Delete option in Data Management Module. Below is the solution to the issue. Solution: Step 1: login on CRM and navigate to Settings module and Data Management in there as shown below. Step 2: Click on Bulk Record Deletion option. Step 3: Bulk deletion wizard opens. Step 4: Define your search criteria that selects the records to be deleted. It is similar to the Advanced Find tool. Step 5: Name the Bulk deletion job and schedule the same. You can also tick the check box to notify via email when the job is completed successfully. Step 6: This is the job which shows the status of the task, no of records deleted. You are done with the process and it will take some time for the process to delete the records. 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. According to my opinion, implementation of Microsoft dynamics 365 for project service automation is one of the best things that we did in CloudFronts Technologies. We have gained a lot with this implementation because we save time and money due to easy access resources and ability to manage them.
PSA V3 Web Series: Part 3 (Time and Expense Entries)
Please see my Vlog on PSA V3 Web Series: Part 3 (Time and Expense Entries) https://m.youtube.com/watch?v=BzXIrcODD54&index=4&list=PL-6ilGLcKEdicim8xnec77miPSU7rb8e6
Part 2 of my Webseries/Vlog that demonstrates Project Creation and Scheduling.
Please refer to my blog that demonstrated project creation and scheduling.
FetchXML to get the Bookable Resource vs there Sales Price
You can use the below code to get the bookable resource and its sales price. FetchXML Code <fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”true”> <entity name=”bookableresourcebooking”> <attribute name=”starttime” /> <attribute name=”resource” /> <attribute name=”endtime” /> <attribute name=”duration” /> <attribute name=”msdyn_projectid” /> <attribute name=”bookingtype” /> <attribute name=”bookingstatus” /> <attribute name=”bookableresourcebookingid” /> <order attribute=”starttime” descending=”true” /> <filter type=”and”> <condition attribute=”bookingstatus” operator=”ne” uiname=”Canceled” uitype=”bookingstatus” value=”{0ADBF4E6-86CC-4DB0-9DBB-51B7D1ED4020}” /> <condition attribute=”duration” operator=”ne” value=”0″ /> <condition attribute=”msdyn_projectid” operator=”not-null” /> <condition attribute=”starttime” value=”@sd” operator=”on-or-after”/> <condition attribute=”endtime” value=”@ed” operator=”on-or-before”/> </filter> <link-entity name=”msdyn_project” from=”msdyn_projectid” to=”msdyn_projectid” link-type=”inner” alias=”cy”> <link-entity name=”msdyn_resourcerequirement” from=”msdyn_projectid” to=”msdyn_projectid” link-type=”inner” alias=”cz”> <attribute name=”cf_role” /> <filter type=”and”> <condition attribute=”cf_role” operator=”ne” uiname=”Non-Billable” uitype=”bookableresourcecategory” value=”{93807AC5-176A-E811-A963-000D3A81E302}” /> </filter> <link-entity name=”bookableresourcecategory” from=”bookableresourcecategoryid” to=”cf_role” link-type=”inner” alias=”da”> <link-entity name=”msdyn_resourcecategorypricelevel” from=”msdyn_resourcecategory” to=”bookableresourcecategoryid” link-type=”inner” alias=”r_price”> <attribute name=”msdyn_priceinprimaryunit_base”/> <attribute name=”msdyn_priceinprimaryunit”/> <attribute name=”msdyn_price”/> <attribute name=”transactioncurrencyid”/> <filter type=”and”> <condition attribute=”msdyn_organizationalunit” operator=”eq” uiname=”CloudFronts” uitype=”msdyn_organizationalunit” value=”{95E73D37-0A6A-E811-A964-000D3A81EAE4}” /> </filter> <link-entity name=”pricelevel” from=”pricelevelid” to=”msdyn_pricelist” link-type=”inner” alias=”ep”> <attribute name=”name”/> <attribute name=”createdon”/> <order attribute=”createdon” descending=”true” /> <link-entity name=”msdyn_orderpricelist” from=”msdyn_pricelist” to=”pricelevelid” link-type=”inner” alias=”price_list” > <attribute name=”msdyn_pricelist” /> </link-entity> </link-entity> </link-entity> </link-entity> </link-entity> <link-entity name=”salesorderdetail” from=”msdyn_project” to=”msdyn_projectid” link-type=”inner” alias=”dc”> <attribute name=”msdyn_billingmethod”/> <filter type=”and”> <condition attribute=”msdyn_billingmethod” operator=”eq” value=”192350000″ /> </filter> <link-entity name=”salesorder” from=”salesorderid” to=”salesorderid” link-type=”inner” alias=”fr” > <attribute name=”name”/> </link-entity> </link-entity> </link-entity> </entity> </fetch> Also: if you want to see it in the advanced find, attached is the screenshot how it will look.
Delegate work around in PSA V3
As we explore the time entry functionality, the option of Delegates functionality is no longer available OOB in PSA V3. Though we can enable Delegate entity from the site map. But, even then there are some customizations that might be needed on Time Entry entity. Like: adding a look up for the bookable resource. Writing a plugin/Workflow to update the bookable resource field from the lookup field added on the time entry screen. Adding validity period that validates until when the delegate function should be available for a resource. Plugin to check whether the validity is still prevailing or not and in case not, removing the name of the resource from the bookable resource field added on the time entry entity. But if we try to compromise on the functionality of checking the validity in Pt. 3 above which V2 version of PSA offers, we can achieve the same by exposing the Bookable Resource field on the Quick Create Time Entry Form. Follow the steps to expose the same: Step 1: Go to D365 Custom app: This will take you to the old classic interface. Step 2: Go To SettingsàSolutions and open an un-managed solution of yours. Step 3: Browse to Time Entry Entity and open the Quick Create Form from the Forms section as shown below. Step 4: Drag the Bookable resource field from the Field Explorer on to the quick create form as per below: Step 5: Publish the customization and then check the time entry screen to see if the field is visible. Step 6: Open the Time Entry Quick create form to do a new time entry. Fill the time entry. Now if you want to do a time entry on behalf of other resource, select that resource in the Bookable Resource lookup. If you do not select the Bookable Resource and leave it blank the Bookable Resource is by default the logged in user. Save and Close the time entry. In order to validate, ask the user for whom the time entry is done and it should be visible in the time entry screen of his. This way we achieve the Delegate functionality in PSA V3 by compromising the delegate validation functionality. 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 Tip: Deactivate the project rather than marking it complete
I often check my projects that I manage in a day. There is this enormous no of active project that I see in the list that concerns me. This takes me to the thought to manage them. One thought was to create a field that could be priority look up and based on the values create views. Well but, I am always of the opinion to not do customizations and use as many OOB (OUT OF THE BOX) stuff provided. There are some projects for which we wait for months and the client seem to still keep on discussing the requirements within themselves. Then there are a few MSA support T&M based projects that are active, but, the client has very minimal work for us, etc. For all such projects we have an option called DEACTIVATE that can be utilised in PSA. The beauty is that they first go out of the view. The next is they can be reactivated again whenever needed. By marking complete, there is no option to bring back the project to life (Active Stage) and we tend to lose all the contract information, billing rates team and all the important required information from the project. How to Deactivate and Activate the project. Step 1: Open the Project as show below. Step 2: Click on the DEACTIVATE button as highlighted in Step 1. A Pop-up comes up as shown below asking for Confirm Deactivation: There are 2 options in the drop down as shown. Inactive – Sets project to read only: This option will only temporarily deactivate the project and do not delete any allocations done on the project. Closed-Sets project to read only and cancels future bookings: This option will mark the project closed permanently with no chances of revival. This will also remove all the future allocations from the system for that project for all the team members. Now, for us we shall select the first option and click on Deactivate button in the pop-up. This marks the project as Inactive with the following changes that are shown in the screen shot below: There is an ACTIVATE button that comes up on the screen. All the Phases in the business process flow are locked. The project becomes Read-only and the status of the project changes to Inactive. This blog reflects my personal findings and based solely on my experience of using PSA for last 5 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. This helps in keeping all the ONLY ACTIVE projects in the view and the ones that needs our action and attention. According to my opinion, implementation of Microsoft dynamics 365 for project service automation is one of the best things that we did in CloudFronts Technologies. We have gained a lot with this implementation because we save time and money due to easy access resources and ability to manage them.