Dynamics 365 version 9.0.2, web client
While writing Part II of my article on Actuals, I started thinking about the Transaction Class of Fee in Dynamics 365 Project Service Automation. As Fee turns out as a Transaction Class of Milestone for Fixed Price Order Lines, I started thinking of ways of getting the Transaction Class of Fee on Actuals. I dropped a message to some people who know PSA and Charles Halford got back to me right away. He suggested I add a Fee directly on an Invoice as a new Invoice Lined Detail or as a new Journal Line. Journal Lines aren’t really an option I want to recommend to a normal user but using ILDs is fairly straightforward and a very basic task in invoicing. Let’s cover that in more detail.
Adding a new ILD on an Invoice has some prerequisites. To be able to add an ILD, the Billing Method of the Invoice Line must be Time and Material. When using Fixed Price as an option, the +NEW button on the ribbon of the Invoice Line doesn’t provide us with any actions. This is despite the Order Line on the Project Contract having Include Time, Include Expense and Include Fee set to Yes.
Now that we’ve established that the Billing Method has to be Time and Material, we need to keep in mind that the combination of Include Time, Include Expense and Include Fee can only be used once per associated Project on our Project Contract. If we have an Order Line of Time and Material and an Order Line of Fixed Price associated with “Project X”, the combination of Include Time, Include Expense and Include Fee must be unique on both lines. In other words if you want to use all these three options on a Time and Material Order Line, you can’t use Fixed Price Order Lines for “Project X” at all. For more information, please see my video blog covering the Project Contract.
Adding Invoice Line Details on an Invoice
Now that the prerequisites are covered, we can build our Project Contract and create a new invoice from its context. For the sake of example I’ve also included the Include Material option on my Time and Material Order Line. Remember that this Transaction Category is related to a code defect that will cause a Business Process Error when adding multiple Order Lines in certain scenarios. There is a fix to that here by DEV PSA and the awesome Victoria Vazharova.
Clicking on “Create Invoice” creates a new invoice for us. As I don’t have any approved Time or Expense entries for this Project Contract, the invoice will be generated at a Total Amount of 0 (the FP Order Line has already been invoiced on a separate invoice). Opening the Time and Material Invoice Line and clicking on +NEW on the ribbon now reveals the options of Time, Expense and Fee. As you can see, Material is not provided as an option. It’s worth noting that NOT selecting a Role when adding an Expense seems to default the Role to Project Manager (default Project Manager Role under Parameters for this instance of D365 CE) when a new Expense ILD is saved and created. This does not seem to occur for Time. On Expenses the known issue of Unit defaulting to Primary Unit is still present in version 188.8.131.52 of Dynamics 365 Customer Engagement.
After all new ILDs have been entered, our Invoice Line has an updated amount.
As the invoice is confirmed, Billed Sales Actuals are created. Next let’s look how this invoice affects the Project Contract.
As we can see, there are no Cost Actuals associated with this Project Contract. We can conclude that adding Invoice Line Details directly from an invoice allows us to bill more however our cost calculations for our Project Contract will be off. To create Cost Actuals we would now have to create new Journal Lines and publish them. This way we could incur cost on our Project Contract. As this is a fairly exhausting task to take for each on demand ILD, a good option could be to write a plug-in that automatically creates Cost Actuals for each manually created ILD when the invoice is confirmed.
I hope this blog post gives you more options around invoices in Dynamics 365 Project Service Automation. Personally I’m not a huge fan of on demand ILDs due to the fact that no Cost Actuals are created. I do recommend you keep this in mind when using this functionality.
All my blog posts reflect my personal opinions and findings unless otherwise stated.