web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Answered

Best practice for making firmed planned POs “Draft” while keeping MRP behavior standard?

(3) ShareShare
ReportReport
Posted on by 317
Hi all,
I’m working with D365 Finance & Operations 10.0.41 (on-prem) and have a requirement around POs that are created by firming planned purchase orders.
Business requirement
When a PO is created by firming a planned order, the business wants the PO to be in Draft status so that users can review it and submit it to workflow manually.
At the same time, we want to keep standard MRP behavior:
PO should still create InventTrans “On order”
Master planning should behave like standard (e.g. if SO = 450 and PO = 440, the next plan should suggest a new planned order for the missing 10).
 
I’ve read this blog and used it as a starting point:
> Set purchase order workflow status as Draft when it's created from planned orders
https://d365fandotech.blogspot.com/2024/07/set-purchase-order-workflow-status-as.html
 
The blog uses a CoC on ReqTransPoMarkFirm.shouldSkipWorkflowSubmissionAndApproval() and returns true under certain conditions so that the PO is created as Draft and the workflow is not auto-submitted/approved.
Concern
As Ali Danish and others have mentioned, if firmed POs stay in Draft, MRP might create duplicate planned orders, because there is no “On order” inventTrans yet while the PO is Draft.
Because of that, I’m considering a different pattern:
1. Let standard run first when firming the planned PO
PO is created as Approved
InventTrans “On order” and pegging are created as in standard
 
2. In a CoC on ReqTransPoMarkFirm.purchTablePostProcessing()
Collect the PurchIds that were just created from firmed planned orders
After the next call, simply set PurchTable.DocumentState from Approved back to Draft (no change to InventTrans, PurchStatus, PurchTableVersion, or ChangeRequestRequired).
 

So effectively, the PO has already been Approved once (so MRP can see the supply), but the document state is reverted to Draft for workflow/user review.
Questions
1. Is this “approve first, then revert DocumentState to Draft” pattern considered safe / acceptable in your experience?
Any known side effects with change management, history, or future upgrades (Planning Optimization, etc.)?
 
2. Has anyone implemented the approach from the blog (using shouldSkipWorkflowSubmissionAndApproval() to create Draft POs directly) in production?
How did you deal with the risk of duplicate planned orders when POs stay in Draft?
 
3. From an MRP and functional point of view, which approach would you recommend?
A) Create the PO as Draft directly (skip workflow submission/approval)
B) Let it be Approved to create InventTrans, then revert DocumentState to Draft (my current idea)
 

Any insight or experience (especially from projects where this is running in production) would be really appreciated.
Thanks!
Categories:
I have the same question (1)
  • Verified answer
    Statics 365 Profile Picture
    317 on at
    Quick update on this issue and how we finally solved it:
    Environment: D365FO 10.0.42 on-prem, PO created by firming planned purchase orders with change management enabled.
    Root cause:
    Initially, we tried to force the PO back to Draft by directly setting PurchTable.DocumentState = Draft in a CoC after firming. This caused master planning to keep using the original approved quantity (e.g. still 500) and not respect later changes (e.g. 350), so no new planned orders were suggested.
    Final solution:
    We stopped changing DocumentState directly and instead used the standard change management APIs, the same logic as the "Request change" button.
    In ReqTransPoMarkFirm extension:
    - Let standard firm and auto-approve the PO
    - Collect the created PO(s) in updatePurchTable()
    - In purchTablePostProcessing(), call:
        VersioningPurchaseOrder versioningPO = VersioningPurchaseOrder::newPurchaseOrder(purchTable);
        if (versioningPO.canChangeBeRequested())
        {
            versioningPO.createChangeRequest();
        }
    This way:
    - Master planning still sees the supply based on the last approved version (InventTrans / ReqTrans are correct)
    - The PO comes back into Draft/change request state for users to review and submit to workflow
    - When users change quantity and approve again, master planning correctly proposes new planned orders for the remaining quantity.
    After this change, scenarios like:
    On-hand 0, SO 500, firmed PO 500, change PO to 350, approve & confirm, rerun plan → master planning correctly suggests the missing 150.
    Thanks again to everyone who replied earlier – just wanted to close the loop with the final working design.
     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Stars!

Congratulations to our 2025 Community Spotlights

Thanks to all of our 2025 Community Spotlight stars!

Leaderboard > Finance | Project Operations, Human Resources, AX, GP, SL

#1
Giorgio Bonacorsi Profile Picture

Giorgio Bonacorsi 617

#2
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 461 Super User 2026 Season 1

#3
Syed Haris Shah Profile Picture

Syed Haris Shah 298 Super User 2026 Season 1

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans