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, ...
Suggested Answer

Split PO from Planned PO using group by Delivery Date with Vendor and Item

(2) ShareShare
ReportReport
Posted on by 1,568

Hi Experts,

We have a custom business requirement in D365 Finance & Operations related to Purchase Orders created from Planned Purchase Orders (PPOs) during Firming process.

When PPOs are firmed, system should:

  • Group PPOs by Vendor and Delivery Date
  • Create separate Purchase Orders based on same delivery date
  • Each PO should contain only one line per item
  • If multiple PPO lines exist for same item and same delivery date, they should be distributed into separate POs instead of merging quantities
    • Input – Planned Purchase Orders (Vendor 1):
      • PPO-1: Item001 – Qty 500 – 26-Apr
      • PPO-2: Item001 – Qty 500 – 26-Apr
      • PPO-3: Item001 – Qty 500 – 27-Apr
      • PPO-4: Item002 – Qty 300 – 26-Apr
      • PPO-5: Item002 – Qty 300 – 26-Apr
      • PPO-6: Item002 – Qty 300 – 27-Apr
      • PPO-7: Item003 – Qty 100 – 26-Apr
      • PPO-8: Item003 – Qty 100 – 26-Apr
      • PPO-9: Item003 – Qty 100 – 27-Apr

 

  • Output – Purchase Orders Created:
    • PO-001 (Delivery Date: 26-Apr):
      • Item001 – Qty 500
      • Item002 – Qty 300
      • Item003 – Qty 100
    • PO-002 (Delivery Date: 26-Apr):
      • Item001 – Qty 500
      • Item002 – Qty 300
      • Item003 – Qty 100
    • PO-003 (Delivery Date: 27-Apr):
      • Item001 – Qty 500
      • Item002 – Qty 300
      • Item003 – Qty 100
Questions:
  1. What is the best technical extension point for customizing PPO firming logic in D365 F&O?
  2. Should this be handled by extending standard firming classes or by creating a custom firming process?
  3. Which standard classes are recommended to review for PPO to PO creation?
  4. Best practice for maintaining date-wise custom sequence number (Plane Number)?

Any guidance from experts who handled similar firming customizations would be highly appreciated.

 

Thank you,

Raj D Borad

Categories:
I have the same question (0)
  • Suggested answer
    ANInnoSolutions Profile Picture
    299 on at
    Hi Raj Borad,
     
    to override how planned orders are grouped and converted into purchase orders, find the following answer below:
     
    1. Best Extension Point for PPO Firming
    - The firming process for Planned Purchase Orders is handled through the ReqTrans / ReqPO creation framework
    --> Focus on class extensions (CoC) rather than rewriting everything: ReqPOCreate (Primary class to extend); ReqPOCreate::createPurchLine() (or similar line creation methods)
    ; ReqPOCreate::findOrCreatePurchTable()
    --> These methods control grouping into Purchase Orders; Line creation and merging logic
    --> Your requirement specifically conflicts with standard grouping logic (vendor + date); Standard line merging (same item, sum quantity)
    --> So your customization must intercept before lines are merged
     
    2. Extend Standard vs. Custom Firming Process
    - Do not build a completely custom firming engine unless absolutely necessary because it Retains MRP integration; Keeps coverage, pegging, action messages intact; Less regression risk; Works with Planning Optimization
    --> consider custom process only if you need fully custom planning engine behavior or cannot achieve behavior via CoC
     
    3. Standard Classes to Review
    - Here are the most relevant classes to analyze and extend:
    --> Core firming flow: ReqTransPoMarkFirm; ReqPOCreate (Most important); ReqPOCreateLine; ReqPurchAutoCreate
    --> Supporting grouping logic: ReqPOCreate::groupingKey() (or equivalent logic); ReqPOCreate::findPurchTable()
    --> Line merging logic ReqPOCreate::createPurchLine(); logic that checks existing lines before insert
     
    4. Summary
    --> Group by Vendor and Delivery Date - Keep standard grouping
    --> Each PO = one line per item - enforce per PO item uniqueness
    --> Same item lines must not merge - override merge logic
    --> Multiple PPO lines / multiple POs - custom grouping distribution
     
    5. Examples:
    - Override PO header grouping
    class ReqPOCreate_Extension
    {
        protected PurchTable findOrCreatePurchTable(...)
        {
            // Add custom grouping logic:
            // Instead of grouping all PPOs into one PO per date,
            // create multiple POs per date depending on item distribution count.
        }
    }
     
    - Prevent line merging
    protected void createPurchLine(...)
    {
        // IMPORTANT:
        // Do NOT search existing lines for same item
        // Always insert a new line in a separate PO
        // OR
        // ensure 1 item per PO policy
    }
     
    - Build Distribution Logic

    - Assign each PPO to a PO "bucket"
    Map<date, List<POBucket>> distributionMap;
     
    - Custom Sequence Number (Plane Number) with scope per date (YYYYMMDD-001, YYYYMMDD-002...)
    NumberSeq numberSeq = NumberSeq::newGetNum(MyParameters::numRefPlaneNum());
    planeNumber = strFmt("%1-%2", date2Str(systemDateGet()), numberSeq.num());

    For a more detailed answer, please provide more information.
     

    Rg,

    Alexander

    *Due to the complex and different possibilities of deploying Dynamics 365 I highly recommend not to setup the application without some expert/partner or support. (For more information contact me under anassl@inno-solutions.info or visit www.inno-solutions.de)

    *The Information comes directly from the manufacturer or provider and are validated (not guaranteed) up to date of creation of the posting.

    References:

    1. Microsoft Licensing Guide
    2. Microsoft Doc`s/Learn

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!

Meet the Microsoft Dynamics 365 Contact Center Champions

We are thrilled to have these Champions in our Community!

Congratulations to the April Top 10 Community Leaders

These are the community rock stars!

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

#1
André Arnaud de Calavon Profile Picture

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

#2
Giorgio Bonacorsi Profile Picture

Giorgio Bonacorsi 543

#3
CP04-islander Profile Picture

CP04-islander 430

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans