Dynamics 365 Project Operations: Nonstocked materials

Tested on:
Project Operations solution version 4.12.0.152 (July 2021 update), F&O 10.0.20.

Nonstocked materials were introduced in the 2021 release wave 1 for Dynamics 365 Project Operations. The feature is two-fold as it provides a way to record material usage on projects and projects tasks (lite and integrated deployments) and purchase nonstocked materials using pending vendor invoices (integrated deployment). Recording material usage on projects and project tasks could be better suited for scenarios where a 3rd party ERP is used with ProjOps lite deployment as this capability doesn’t have OOTB support for purchase orders or vendor invoices, and the consumption of nonstocked materials is based on the product catalog in Dataverse. For integrated deployments the capability of purchasing nonstocked materials uses vendor invoices and nonstocked materials are set up in F&O.

This blog post is runs you thought the nonstocked materials feature for lite and integrated deployments but doesn’t dive deep into how things are configured in F&O. You can check out docs here for instructions on how to configure the nonstocked materials and pending vendor invoices capability.

Using materials usage logs to record material usage on projects and project tasks in lite deployment

Material usage logs are created and processed in Dataverse. They follow a process similar to time entries and basic expenses: a log is created, submitted, and approved. Unbilled Sales Actuals get created and the billing backlog is groomed before materials are invoiced. What’s important to understand is that nonstocked materials are not the same as products sold on a project contract’s product-based lines.

Material usage logs can be used in an integrated deployment in addition to vendor invoices. Unless there’s a clear business case for using both material usage logs and vendor invoices in an integrated deployment, consider whether or not the use of material usage logs should be blocked or not. If material usage shouldn’t be logged by using material usage logs, the feature can be blocked with security roles.

Prerequisites for using material usage logs

Before using material usage logs, products need to be created in the product catalog in Dataverse. Those products also need to be on cost and sales price lists under Price List Items.

1. Product catalog and price lists for nonstocked materials.

Recording material usage

Let’s look at how a project and a project contract are set up so that material usage can be recorded on a project task. As the first step, a project contract and a T&M order line have been created. The Include Material flag has been set to Yes and a new project is associated with the order line. Notice that a not-to-exceed limit has been set. The associated project has a task and a material estimate, which is associated with the project task.

2. Time and Material order line with the Include Materials flag set to Yes.
3. A project with a material estimate.

As a project with a material estimate is associated with the T&M order line, it’s possible to import the estimate to Project Contract Line Details. Using the Active Contarct Line Details view in the subgrid, both the sales and the cost prices of the imported estimate can be seen. As the prices are correct on the PCLDs, it’s safe to say that consuming the materials will also result in Actuals with correct prices and amounts.

4. Import to PCLDs and the resulting PCLDs.

When consuming materials, a material usage log is created and submitted for approval. The project’s project approver can now approve or reject the material usage log. Notice that NTE limits are validated at approval and as the limit has been set to 7500 €, the validation against the limits has passed.

5. Adding a new material usage log.
6. Approval of material usage log.

After the material usage log has been approved, Actuals can be reviewed to verify that a Cost and an Unbilled Sales Actual have been created with the correct prices and amounts. The Transaction Class of the Actuals will be Material. Finally, the billing backlog can be groomed to mark the Unbilled Sales Actual’s Billing status as Ready to Invoice, and to invoice the nonstocked materials.

7. Actuals for materials.

Recalling material usage logs and canceling approvals

Material usage logs support recalls and approval cancellations. The recall and cancellation process works exactly like it does for time entries and basic expenses. If materials are on a proforma invoice as Invoice Line Details, recalls or cancellations aren’t possible.

Using vendor invoices to purchase nonstocked materials in integrated deployment

Purchasing nonstocked materials with vendor invoices is the other capability introduced in the 2021 release wave 1 for Dynamics 365 Project Operations. In this approach, products are defined in F&O and instead of using material usage logs, procurement for nonstocked materials is done in F&O by using vendor invoices.

Prerequisites for using vendor invoices

The configuration required for nonstocked materials with vendor invoices is considerably heavier than when using material usage logs. Despite F&O 10.0.18 having some initial configurations in the Contoso DB, some basic setup still needs to be done. Docs has an article about all the required configurations here but let’s nevertheless look at a couple of prerequisites for vendors and released products.

After vendor master integration has been enabled as part of prerequisites configurations in Dataverse, a new vendor can be created in the Accounts table. After that, nonstocked materials can be created as released products in F&O. When a released product is created in F&O a cost and a sales price can be defined for the product. The defined cost price will be picked up on a new pending vendor invoice as the cost price for the product. This price is then reflected as a Cost Actual in Dataverse, when the pending vendor invoice is posted. What’s important to note here is that the sales price defined for a released product doesn’t carry over to Dataverse when a pending vendor invoice is posted. The released product must be added on a sales price list in Dataverse the same way it’s added when using material usage logs covered in the previous chapters.

8. New vendor in Accounts table.
9. Nonstocked materials as released products in F&O.

Creating a pending vendor invoice for a project

Before a pending vendor invoice is created, a project and a project contract need to exist in Dataverse. This way nonstocked materials procured via a vendor invoice can be invoiced from a customer. In this sense the scenario isn’t different from material usage logs. When a customer needs to be invoiced for T&M, a project contract and a project are needed.

Pending vendor invoices are created in F&O under Accounts Payable -> Invoices -> Pending vendor invoices. Create a new pending vendor invoice according to your scenario and post the pending invoice. Remember to choose a project and a task as an activity if applicable. Additional information about the posting process can be found on Docs. Also remember that the product you add to an invoice line must be on a sales price list in Dataverse so that the posted vendor invoice results in an Unbilled Sales Actual with the desired sales price on it. As seen in image 12, I initially forgot to do exactly that and the result was an Unbilled Sales Actual without a sales price.

10. Pending vendor invoices.
11. New pending vendor invoice.
12. Actuals after a vendor invoice has been posted.

The final steps are to groom the billing backlog by marking the Actuals as Ready to Invoice, create and confirm a proforma invoice, post the integration journal, and post the resulting project invoice proposal.

13. Confirmed proforma invoice in Dataverse.
14. Posted integration journal.
15. Project invoice. Mistakes were made. 10 pcs slipped without a sales price.
Disclaimer:
All my blog posts reflect my personal opinions and findings unless otherwise stated.

1 thought on “Dynamics 365 Project Operations: Nonstocked materials”

Leave a Reply

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