Project invoice not generating for time and materials projects

We have a custom workflow set up for project invoice generation on our D365 cloud instance (10.0.39). The workflow runs without errors according to the workflow history, but no invoice is actually created in the system. This only happens with time and materials projects - fixed-price projects invoice normally.

The workflow completes all steps, shows “Completed” status, but when I check Project management > Invoices > Project invoice proposals, nothing appears. The time entries and expense transactions are approved and ready for billing.


Workflow: ProjectInvoiceGeneration_Custom
Status: Completed
Completion time: 2025-02-08 09:30:15
No errors logged

I’ve verified the billing rules are correct for T&M projects, and manual invoice creation works fine. It’s specifically the custom workflow that’s failing silently. Anyone experienced workflow completing but not actually executing the invoice generation action?

Mike’s right about the parameter passing. I reviewed similar implementations and found the issue is usually in the workflow context. Your custom workflow needs to explicitly set the ProjInvoiceProposalType parameter to specify it’s for time and materials. Here’s what’s happening:

Custom Workflow Issue - Root Cause: Your workflow completes successfully but skips invoice creation because it’s not passing the required billing type context for T&M projects. The workflow runs, but the invoice proposal service receives incomplete parameters and returns without creating anything.

Why T&M Projects Fail but Fixed-Price Works: Fixed-price project invoicing uses different validation logic that’s less parameter-dependent. T&M invoicing requires explicit transaction selection criteria that your workflow isn’t providing.

Solution - Three Required Fixes:

  1. Update Workflow Element Parameters: Your ProjInvoiceProposalAutomation handler needs these parameters set:

ProjInvoiceProposalType = TimeAndMaterial
IncludeTransactions = All
GroupBy = Project
  1. Add Transaction Selection Logic: The workflow must query and pass unbilled transactions to the invoice service. Add a pre-processing step that identifies unbilled time and expense entries for the specific project before calling the invoice generation.

  2. Contract Context Validation: Ensure your workflow passes the project contract ID and funding source. T&M invoices require valid funding source linkage that the workflow must explicitly provide.

Implementation Fix: Modify your workflow element configuration to include these parameters in the action handler invocation. If you’re calling the service programmatically, ensure you’re instantiating ProjInvoiceProposalCreate with the full contract context.

Testing: After making these changes, test with a single T&M project first. Enable debug logging to verify the parameters are being passed correctly. The log should show “Invoice proposal created” with a proposal ID instead of the “criteria not met” message.

Why This Worked Before: If this workflow functioned previously in test, check if there were recent updates to the ProjInvoiceProposalAutomation class or changes to D365 platform that modified parameter requirements. Version 10.0.39 introduced stricter validation for automated invoice generation.

The key lesson: custom workflows for project billing must explicitly provide all context that manual invoice creation derives from user selections. The workflow engine won’t automatically infer billing type or transaction selection criteria.


This draft is based on general Microsoft Dynamics 365 knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

Silent workflow completion usually means the workflow element configuration is missing the actual action call. Check your custom workflow element that’s supposed to generate the invoice - it might be set to approve/complete without actually triggering the invoice proposal creation service. Look at the element properties and verify the action handler class is correctly specified.

Tested this on D365 F&O 10.0.32 — explicitly setting ProjInvoiceProposalType in the custom workflow context immediately resolved the missing T&M invoice proposals.

Carlos, I checked the workflow element and it does have an action handler specified: ProjInvoiceProposalAutomation. The class exists in our customization. Is there a way to verify if this handler is actually being invoked during workflow execution?

Enable debug logging for your custom workflow. Go to System administration > Setup > System parameters > Workflow and set logging level to “Debug” temporarily. Then run the workflow again and check the workflow log details. It should show whether ProjInvoiceProposalAutomation is being called and if it’s throwing any exceptions that are being swallowed. Also verify the service account running the workflow has permissions for invoice creation.

Enabled debug logging and found something interesting. The handler IS being called, but it’s returning immediately with no action. The log shows “Invoice proposal creation skipped - criteria not met” but doesn’t specify which criteria. The same workflow worked in our test environment last month.

That “criteria not met” message is key. For T&M projects, the invoice generation logic checks several conditions: unbilled transactions exist, project isn’t on hold, funding source is valid, and contract billing rules allow invoicing. Since you said manual creation works, the issue is likely in how your workflow passes parameters to the invoice creation service. The workflow might not be passing the correct project contract context that T&M projects require.