Microsoft has addressed this bottleneck in Dynamics 365 Project Operations by introducing multithreaded batch task processing for posting project invoice proposals. Tracked under AI at Work roadmap ID 576860 (and earlier administrative notifications under MC1390348), the capability reached general availability in June 2026 for Worldwide Standard Multi-Tenant cloud environments and is documented in Microsoft Learn as part of the version 10.0.48 release wave for Dynamics 365 Finance and Project Operations.
Here is a complete breakdown of how the parallel posting architecture works, how it pairs with runtime "late selection" queries, and what ERP administrators and project accountants need to configure to take advantage of it.
Breaking the Sequential Bottleneck: How Parallel Posting Works
Historically, batch invoice posting could become a choke point because the system processed the workload sequentially on a single thread. Microsoft’s updated posting logic replaces that single-file line with a primary-and-subtask batch architecture.
According to Microsoft Learn's project invoicing documentation, when a batch posting job executes with this capability enabled, the workload is handled through three strict operational rules:
- Primary Task Dispatch: A primary batch task evaluates the workload at runtime, distributes the eligible invoice proposals across worker subtasks, and exits quickly rather than holding up the queue.
- Parallel Subtasks: The spawned subtasks process the invoice postings simultaneously across multiple threads.
- Whole-Invoice Integrity: The batch splitter always distributes work at the complete invoice proposal level. Individual invoice lines from a single proposal are never split across separate tasks.
That third point is a critical architectural distinction for ERP administrators to understand. While Microsoft’s release notes observe that individual invoice proposals in complex projects can contain thousands of lines and that thousands of customers may need to be billed in a cycle, the multithreading engine achieves its concurrency by processing multiple proposals in parallel rather than slicing a single massive invoice proposal across multiple threads. If your bottleneck is 3,000 separate customer invoice proposals waiting to post at midnight on Friday, parallel subtasks will divide and conquer that pile. If you are posting a single, monolithic invoice proposal by itself, its lines remain together as a single unit of work.
Section Summary: The multithreaded architecture uses a fast-exiting primary task to distribute whole invoice proposals across parallel subtasks, preventing multi-proposal billing runs from stalling in a single sequential thread.
The Secret Weapon for Recurring Runs: Late Selection in Version 10.0.48
In Microsoft Learn’s operational documentation for Dynamics 365 Finance version 10.0.48 (paired with Project Operations on Dataverse version 4.169.3495.2 in the July 2026 release documentation), this capability is delivered through the feature titled Enable multithreaded posting with late selection.
Why does "late selection" matter just as much as multithreading? In traditional batch scheduling, if a batch job evaluates its query criteria at the moment the job is submitted, the list of records to process is effectively frozen in time. With late selection, the batch job waits until runtime to evaluate its query criteria.
For finance teams running continuous or high-volume billing operations, combining late selection with multithreaded posting solves three persistent scheduling headaches identified by Microsoft Learn:
- Advance Job Scheduling: Administrators can schedule recurring posting jobs well in advance while project managers and billing clerks continue generating and confirming proposals throughout the day.
- Hands-Off Weekly and Month-End Closes: Recurring jobs automatically sweep up newly created eligible proposals at execution time without someone having to manually rebuild or resubmit the batch query.
- Continuous Integration Feeds: In high-volume environments where multiple users or automated integrations continuously generate invoice proposals, the recurring batch job dynamically captures the latest eligible pool and fans the posting workload out across parallel threads.
Section Summary: Starting in version 10.0.48, "late selection" ensures recurring batch jobs evaluate their query criteria when the job actually runs rather than when it was scheduled, automatically picking up newly created proposals and posting them in parallel.
Admin Configuration: Finding the Right Parameter
One minor quirk between Microsoft’s high-level roadmap summary and its technical documentation is how the thread-count setting is described. While the AI at Work roadmap summary refers to a "new project parameter where you configure the number of parallel threads", Microsoft Learn’s Manage project invoice proposals guide clarifies that the feature actually piggybacks on an existing parameter that previously governed batch proposal creation.
To configure and schedule multithreaded batch posting in Project Operations Integrated with ERP (or within the Project management and accounting module in Dynamics 365 Finance), administrators and finance leads should note the following setup details:
| Configuration Area | Navigation / Setting Name | Operational Behavior |
|---|---|---|
| Feature Requirement | Enable multithreaded posting with late selection (available starting in version 10.0.48) | Activates parallel subtask distribution and runtime query evaluation for late-selection batch jobs. |
| Subtask Parameter | Under the Invoice tab in parameters: Number of subtasks for invoice proposal creation and posting in batch | Controls the exact number of parallel subtasks spawned—not the number of proposals per task. (According to Microsoft Learn's performance documentation for the underlying parameter, the default value is set to 4 for legal entities when enabled.) |
| Periodic Batch Job | Project management and accounting > Periodic > Project invoices > Post invoice proposals | Select Batch, set Batch processing to Yes, and configure Recurrence to automate the posting schedule. |
When tuning the Number of subtasks for invoice proposal creation and posting in batch setting, remember that it defines how many parallel worker tasks the primary job will create. Microsoft does not publish a universal benchmark speedup percentage or a one-size-fits-all subtask ceiling in its feature documentation, as optimal concurrency depends on your environment's available batch server threads and typical proposal volume.
Section Summary: Administrators do not need to hunt for a separate posting thread box; the existing Number of subtasks for invoice proposal creation and posting in batch parameter under the Invoice tab controls parallel subtasks for both creating and posting invoice proposals.
Where This Fits in the End-to-End ERP Billing Workflow
As welcome as faster invoice posting is, ERP veterans know that speeding up the final step will not save a billing cycle if upstream transactions are stuck in staging. In Project Operations Integrated with ERP deployments, multithreaded batch posting operates strictly at the final Dynamics 365 Finance posting stage.
Before the periodic Post invoice proposals batch job can touch a proposal, Microsoft Learn notes that three upstream prerequisites must still be satisfied:
- Dataverse Confirmation: The project manager must confirm the proforma invoice in Microsoft Dataverse, which generates the corresponding Project invoice proposal header in Dynamics 365 Finance.
- Integration Journal Posting: All relevant time-and-material unbilled sales transactions included on that proforma invoice must be posted through the Dynamics 365 Project Operations Integration journal.
- Staging Table Import: The Import from staging table periodic process (
Project management and accounting > Periodic > Project Operations integration > Import from staging table—or the preview Project Operations selective import from staging feature introduced in 10.0.47) must complete for both unbilled and billed sales lines so the proposal lines actually populate in Finance.
Once the proposal is populated, reviewed, and posted by the multithreaded batch job, Dynamics 365 Finance automatically handles the general ledger heavy lifting: reversing the Work in Progress (WIP) sales value and accrued revenue entries while booking the invoiced revenue and customer accounts receivable balance. Furthermore, if you have enabled the Enhanced proforma invoice feature flag and its corresponding dual-write map (msdyn_customerinvoices version 1.0.0.0), key posted details—including the customer invoice number, invoice date, invoice-level tax amount, and the new Posted status—synchronize right back to Dataverse so project managers can answer client billing questions without pinging the accounting desk.
For organizations running high-volume project billing on Dynamics 365, enabling Enable multithreaded posting with late selection in version 10.0.48 is a straightforward operational win. By letting recurring batch jobs evaluate their queues at runtime and fan the resulting proposals out across parallel subtasks, finance teams can spend less time babysitting month-end batch queues and get final customer invoices out the door on schedule.
References
- Dynamics 365 Project Operations: Optimize Project Operations - Post project invoice proposals using multithreaded batch tasks Microsoft 365 Roadmap · 2026-10-16T19:09:53.744742Z
- Post project invoice proposals using multithreaded batch tasks | Microsoft Learn learn.microsoft.com
- Manage project invoice proposals | Microsoft Learn learn.microsoft.com