Lesson Learned from PSA Deployment

Currently I’m in a project where our team is going to roll out Dynamics 365 Project Service Automation for one of our customers. Throughout the project, we’ve learned a lot about this new cool kid on the block 🙂

PSA_Screenshot.png

Some gotchas/lesson learned when we are rolling out this to the customer:

  1. Choose Project Template carefully. Once created, the user can’t change the project template and need do it again from the scratch (not a big hassle, but definitely I mentioned this when during the training).

  2. This is for Admin/Customizer, PSA-related controls limitation. Time Entry & Expense, WBS, schedule board, etc. They are pretty much static (hard coded), it is not honoring relabel, adding more options and even can’t add any new field. Seems like we need to treat PSA in a similar manner to other ISV solution, such as Click Dimensions, (compared to Sales/Service/Marketing that have more mature customization and configuration flexibility).

  3. Do not mess with the OOTB processes or scripts. There are lots of processes coded in javascripts and plugins where the processes behind it are not really documented. So, my lesson on it, keep it out of the box, if a customization needed, I would recommend to not touching any of the OOTB fields and create custom processes or fields instead.

  4. Pay attention to “metadata” records (Resource Role, Resource Skill, Price List, Expense Categories, etc) during deployment. Similar to Adx/portal scenario, where records are stored as configuration. To have ALM for PSA correctly, will need to pay attention to those records as part of the deployment process.

  5. One of the biggest catch that I’ve got: can’t undo approval. Approvers need to be really really careful with their approval.

For this instance, I submitted an idea entry: https://crmideas.dynamics.com/ideas/dynamics-crm/ID0000986. From the feedback from the 2 customers that we have worked with, they need this feature to make an amendment to the entries, at least before it is processed for invoice (at least a flag or something to cater this scenario).

  1. Data migration is a bit tricky, for some scenarios, we’ve got to deactivate some of the validation plugins to let the data in (need to have thorough testing on this, as I consider this as touching the OOTB process that is not well documented).

Hope this helps!

7 thoughts on “Lesson Learned from PSA Deployment

  1. Hi Andre,

    Thanks for the blog was looking for this sort of information. We are implementing PSA for a customer and facing a lot of issues, thought you can shed some light on me. Please can you let me know the below understanding is correct and anything that should be taken care of.

    1. The sales price of the resources will be calculated from the price list that is tagged to the project customer. For multiple price lists related it will take the first one. Hope Estimate Lines entity is saving this info

    2. Duplicate project tasks (same task name) will be created when a role is mapped.

    3. Create a project contract and contract line mapping the project. Make sure the project price list for the contract has the roles with start/end date mentioned only then actual revenue will be generated. PSA pulls the price lists from the customer and creates a copy under project price lists.

    4. If the price list tagged to the customer is updated this does not reflect it in the project price lists under the Audit contract. We have to manually update it

    5. Since the approved timesheets cannot be backed off, we are using journal lines instead of actuals so that it can be revoked, considering the fact that graphs and charts should be updated based on custom fields using journal lines.

    6. Can the creation of audit contract and contract lines be automated, will it reflect the same way as creating from the UI as not sure about the PSA framework which touches more tables.

    Thanks,
    Boopesh D

    • hi Boopesh,

      I’ll try to get based on what I understand from your questions:
      1. The sales price of the resources will be calculated from the price list that is tagged to the project customer. For multiple price lists related it will take the first one. Hope Estimate Lines entity is saving this info
      -> Sales price is calculated from the price list (with the context of Sales – a good explanation about sales price list: https://neilparkhurst.com/2017/01/21/psa-sales-price-lists/) that is tagged against the opportunity.

      2. Duplicate project tasks (same task name) will be created when a role is mapped.
      -> I’ve never seen any duplicate project tasks being created. Did you do some customization here?

      3. Create a project contract and contract line mapping the project. Make sure the project price list for the contract has the roles with start/end date mentioned only then actual revenue will be generated. PSA pulls the price lists from the customer and creates a copy under project price lists.
      -> based on my understanding, the price list is derived from the opportunity -> quote -> contract. Then the revenue will be calculated from there.

      4. If the price list tagged to the customer is updated this does not reflect it in the project price lists under the Audit contract. We have to manually update it
      -> I’m not sure what is the Audit contract that you mentioned here. Is this your own custom entity?

      5. Since the approved timesheets cannot be backed off, we are using journal lines instead of actuals so that it can be revoked, considering the fact that graphs and charts should be updated based on custom fields using journal lines.
      -> I’ve never used the journal lines for reporting and not sure about this. So, I can’t comment.

      6. Can the creation of audit contract and contract lines be automated, will it reflect the same way as creating from the UI as not sure about the PSA framework which touches more tables.
      -> same here on the Audit Contract, not sure what is the entity that you are referring. Contract lines creation will inherit if you follow the flow: Opportunity -> quote -> contract

      On top of that, are you using the Dynamics 365 (Customer Engagement/CRM) or the ERP (AX)? Seems like your questions are not relevant to the Customer Engagement/CRM normal behaviour.

      • Hi Andre,

        Thanks a lot for your response. And just to give you a quick overview: We have been asked to setup PSA as just a reporting tool without leveraging the features, and the bitter part being time sheets flowing in from a different system without using PSA. So the integration will create timesheets and PSA will reflect the project values accordingly. So no project management , resource management and its just to show the project status

        1. -> Sales price is calculated from the price list (with the context of Sales – a good explanation about sales price list: https://neilparkhurst.com/2017/01/21/psa-sales-price-lists/) that is tagged against the opportunity.
        – Yes was following the same but thought to understand how does it work for multiple price lists for the same project in a financial year. The user is looking to have the bi annual price lists let me play with it

        2. I’ve never seen any duplicate project tasks being created. Did you do some customization here?
        – It doesn’t show in the UI but in the back end hope there are duplicate project tasks created when roles/resources are mapped as an OOB behavior. Came to know during import

        3. based on my understanding, the price list is derived from the opportunity -> quote -> contract. Then the revenue will be calculated from there.
        – Yes you’re right but the user is looking at PSA as just a reporting tool and doesn’t want to create a opportunity,quote instead straight away create a project contract (order) and project contract lines (order line) just to calculate the actual revenue.

        4. I’m not sure what is the Audit contract that you mentioned here. Is this your own custom entity?
        – Sorry for being over excited and missing to mention the proper names. This is the Project Contract (Order)

        5. I’ve never used the journal lines for reporting and not sure about this. So, I can’t comment.
        – Understand but I had to use. The time sheets that are submitted but not yet approved are stored as Journal lines

        6. same here on the Audit Contract, not sure what is the entity that you are referring. Contract lines creation will inherit if you follow the flow: Opportunity -> quote -> contract
        – Yes this is the problem. Breaking the flow and trying to jump in between 😦

  2. Hi Boopesh,

    Thanks for providing more details of your situation.

    Given the situation that you have, it means that you are intercepting the normal flow. Treat PSA as an Add-On XRM solution. So, you can customize it to meet the requirements, there are a few things that you will need to consider when customizing PSA:
    1. Make sure you have a good documentation of the changes, as any future release of the product might change some stuff that you customised.
    2. To address some of the automation requirements, you might need to create plugins/custom workflow to accommodate the creation of records, such as the project contract and the contract line. – Again make sure you also test the process to make sure there is no conflict with the OOTB PSA plugins and WFs

    I found it quite challenging to customise PSA at this moment, due to the number of documentation that is still minimum. Particularly around their OOTB Plugins and WF where some of them are not giving a meaningful name. Pretty sure in the future, it will be well documented. But for now, my approach is through observation + trial & error.

    • Hi Andre,

      Yes that’s right we have written a plugin for automation and checking for any conflicts. The changes are being documented but I am afraid that once MS adds the capability to revert the approved time sheets we should be in a position to bring back the PSA to its original state.

      Thanks for your efforts and guidance. Appreciate it and will keep following for more updates.

Leave a comment