Post and Print Project Invoices in D365FO

The User defined project invoice report (technical name: PSAManageInvoice.Report) is a standard report available in the Project management and accounting module of D365FO.

It is similar to Project invoice without billing rules (technical name: PSAProjInvoice.Report) in terms of preparing the data for the invoice before posting it. But there is one important difference between them:

  • PSAProjInvoice.Report displays the project transactions in a predefined way, grouped by project, transaction type and activity.
  • PSAManageInvoice.Report allows the user (typically: Project manager) to specify how the project transactions will be grouped and how the transaction data will be presented (with details or as summary information).

This article includes the following steps:

  • Prepare the data for both Project invoice reports (steps 1 – 9 below for both PSA Project Invoice and PSA Manage Invoice; the rest of the steps are applicable to PSA Manage Invoice only),
  • Configure the format for the PSAManageInvoice report,
  • Post and print the report.

Important entities involved in the process

Top-level entity is Project contract. It contains the information about the contract conditions made with one customer, under which one or more projects for that customer will be executed. Project invoice can be issued for one or more Projects which are under the same Project contract, that’s why we can start this process from the Project contract form (if Project invoice will be for multiple projects), or we can start from the Project form, if Project invoice will be only for that one project.


  1. If working on a Contoso database, set the legal entity to USSI.

    Note: this is a good choice, because USSI is a services company and has a good setup for the Project management module.
  2. Access the Project contracts form by selecting Modules > Project management and accounting > Projects > Project contracts.
  3. Optional step, to review the projects linked to this Project contract: Select a project contract, open the Related information part on the right side of the form and under Related projects select one of the linked projects and click More to view additional information.

  4. Optional step, if you don't want to use already existing projects: Create a new project or multiple projects linked to the selected Project contract. In the example below, they are named Project_1 and Project_2 with funding type set to the Customer account used for the Project contract. In the example below, I used US_SI_0122.

  5. Set the Project stage field of Project_1 to Released.

  6. Record the transactions for the project. Transactions can be recorded under 4 different types of journals:
    • Hour journal: to record the hours worked by employees or contractors on a project.
    • Item journal: to record the purchase of items or materials that are used on a project.
    • Expense journal: to record expenses that are incurred as part of a project.
    • Fee journal: to record fees that are associated with a project.

  7. To add hours to Project_1, click the Hour button to open a list of the Hour journal records, then click New to add a new Hour journal record. To add transactions to this journal, activate the Lines section and click New for each new transaction to be recorded. Enter details for the hours we want to charge to the project. Save and post the journal.

  8. Repeat the same process for the Items, Expenses, and Fees journals and transactions if you want to have a sample project with different transaction types.
    • Items journal and transactions: to record the hours worked by employees or contractors on a project.

    • Expense journal and transactions: to record the purchase of items or materials that are used on a project.

    • Fee journal and transactions: to record expenses that are incurred as part of a project.

  9. Once all the transactions are added to the project, navigate back to the Project contracts form and choose the project contract with Contract ID = 00000002. Under the Maintain tab, click New > Invoice proposal. A dialog opens where all posted transactions (not yet linked to any Project invoice) from all linked projects are listed. We select all transactions or some of them, and upon confirmation, a Project invoice proposal will be created.

    In sales process, we start from a Sales order (the source document) and by posting it, we get the Sales invoice (a journal - a CustInvoiceJour table record). In the process of project invoicing, we start from the Project invoice proposal (the source document), and by posting it, we get the Project invoice (a journal - a ProjInvoiceJour table record).


  10. Up to this step, everything is the same for PSAProjInvoice.Report and PSAManageInvoice.Report. After creating the Project invoice proposal, we can immediately print it, in which case the PSAProjInvoice.Report will be used. If we want to trigger the execution of PSAManageInvoice.Report, we need now to specify the Format invoice proposal. For that we click the Print > Format invoice proposal menu item:

  11. The Format invoice proposal form is open, where we specify how we want to organize the transactions on the printed document. Transactions will be organized in groups, so we first add one or more transaction groups by clicking the New button – in my example I have added five groups - Hours (Detail and Summary), Fee, Expense, and Item. For each group, specify whether the transactions in it will be presented in detail or summarized. In the Available transactions fast tab select the transactions and click the Include transactions button to add them to the Selected transactions of the currently active group.

  12. After creating the groups and adding the transactions to them, preview the document by clicking the Print preview button. Because the Format exists, you will notice that the PSAManageInvoice.Report is now used:

  13. Once satisfied with the final look, go back to the Project invoice proposal form and click the Post button to create the Project invoice.

    If you delete the Format (all groups in the Format) before posting the Proposal, you will notice that PSAProjInvoice.Report is used for preview and will be also used later for printing the posted Project invoice.

  14. Print the posted Project invoice and you will notice that the PSAManageInvoice.Report is used. From the moment you post the Proposal there is no way to revert to printing via PSAProjInvoice.Report (unless the Format-related records are deleted in the database).

You can also use Docentric AX to improve the design, adding additional data to the report data sources, document generation and distribution options of project invoices and all other business documents in your D365FO projects. Check it out!


2 thoughts on “Post and Print Project Invoices in D365FO

  1. Hello! How can you have the preview/print of the Invoice Proposal use the number sequence instead of the P_10888 for ease of reference? In your example, the Invoice Proposal is PJIP_00000162: 00000002 which is what would show on your Invoice Proposal grid, but the document preview uses P_10888 which is not easily referenced back. Thank you!

    1. Hi Margie,

      This is how the standards work, and this information hasn’t been added by Microsoft to the report datasource. You could extend (1) the logic for preparing the report datasource (RDP table and DP class) in order to add this field, and (2) SSRS format, to present this newly added field on the design.

      Alternatively, there is a simpler way if you are using Docentric; you can only extend (1) the report-specific DSP class to add this field to the report datasource, and then modify your Docentric template accordingly.

Leave a Reply

Your email address will not be published. Required fields are marked *


Docentric respects your privacy. Learn how your comment data is processed >>

Docentric respects your privacy. Learn how your comment data is processed >>