D365F&O – Auto-report as finished in a Retail scenario

For many years I have had the opportunity to work on Dynamics 365 topics involving Kitting, Value Added Services(VAS) and Bill-of-Materials(BOM). Today I would like to write about the released product parameter “Auto-report as finished” in a retail scenario, and you can read more about report as finished at the Microsoft docs. To explain the business scenario, let’s take hot-dogs. A hot-dog is normally assembled as the customer wants, but in this scenario, we have a standardized hot-dog with 4 ingrediencies.

As a retailer, I would like to sell the finished product, but keep track of the raw materials. To do this you need to create a BOM, and when the hot-dog is sold, Dynamics 365 will automatically report a hot-dog as finished, and draw the ingrediencies from the store warehouse. It is possible to use a production order, but for retailers this is overkill. Something much easier is needed. Instead of exact BOM’s, then average BOM’s can also be used, since knowing exactly how much onion or mustard the customer will apply is not an exact science.

Dynamics 365 have a nice feature for this; Auto-report as finished.

What this parameter does, is then when the product is physically deduced (or Sold) a BOM journal will be created and posted. This will create issue-transaction (sold) from your inventory.

Here I have created a BOM for my hot-dog:

When creating a sales order and posting a packing slip you will see that a Bom journal is automatically created and posted.

The posted BOM Journal looks like this, and here we see that a hot-dog is added to the warehouse, while the ingrediencies are subtracted from the warehouse.

For retailers, this means that we can sell goods in the POS, and when the statement posting process is creating and posting sales orders, the auto-report as finished functionality will be posted. So, no need of any production order, or manually posting Report as Finished journals. So, Dynamics 365 have an alternative to retail kit’s, if a more standardized BOM’s are used. The BOM can then also be used for cost calculations on food and retail produced items. Comparing the counting and the actual transactions will also help to know how accurate the BOM are for describing the cost picture of the products. Master planning will also catch this, and you can get replenishment to work on ingrediencies.

BUT!!! There are some issues.
As a workaround and to make this work you will have to specify default warehouse per site per item in the default order settings.(I know this is an impossible task if you have 500 products and 500 stores, as this would mean you have to create 250.000 default order settings). I have a support request going with Microsoft to change this, so that this is not needed, and that the warehouse can be inherited from the parent transaction. So, if you get error like this, then you have done nothing wrong, and hopefully it will be fixed on future releases.

STOPP HERE, unless you like X++

Here is something for the “technical” guys; The code that automatically triggers this auto-report as finished is actually the class InventUpd_Physical.updatePhysicalIssue(). For those of us, that have worked quite some time with Dynamics, we understand that this class is very central, because all physical inventory transactions are posted through this class. The behavior of auto-posting BOM’s will therefore influence all places where a physical transaction is posted.

Microsoft have created a method on the movement classes named ” canBeAutoRepAsFinished()”, that let’s them refuse this behavior on certain transaction types.

If you don’t want to wait until Microsoft fixes the feature where the warehouse dimension is inherited from parent BOM, then you do have an option to extend the class BOMReportFinish.initInventDimFromBOMRoute(), and here set the InventLocationId from the parent. Her is at least my suggestion to fix the issue in the standard code(without extension):

Here is the code for validating that warehouse storage dimension is used on the BOM-line, and sending this back to the report as finished class.

Take care and I’ve got to get back to work. When I stop rowing, the mothership just goes in circles.

10 thoughts on “D365F&O – Auto-report as finished in a Retail scenario

  1. Hi Kurt, I wanted to use “Auto Report as Finished” on transfer journals and transfer orders, but this functionality is working on sales order only. I remember we used to use this functionality throughout the system for all “Issue” type transactions. Is this functionality depreciated or having some parameters to activate the same on Inventory Journals? Appreciate if you share your valuable input on this.


  2. Hi Kurt, any thoughts on what we can do if we’d like to use the Auto-report-as-finished function but keep an ATP / CTP or Explosion capabilities active? (Available to promise/Capable to promise)
    Use Case: we sell a kit to our customers, but still need to valdiate that we have all the components required on-hand or build them when necessary before confirming the order.


  3. Hi Kurt,

    I’m using preview 10.0.10 (10.0.420.13).
    I’ve the same requirement for a retail business.
    I’ve setup as following
    1. Item master – Released product : Has set auto report as finished as yes.
    Eg : Hot-Dog
    2. Released product variants (Two variants : size : 6Inch and FootLong)
    Eg : HotDog + 6 inch / HotDog + Foot long
    3. Created BOM lines based on the variant
    Eg: For HotDog + 6 inch; added BOM lines.
    4. When I’m trying to do a cash and carry transaction at CPOS, only the stock of main product i.e., HotDog is getting consumed.
    5. When I’m trying to create a sales order via D365, stock of the all the components is getting consumed.

    Any idea what I might be doing wrong.
    Note: I’m using all 4 variants.
    Storage dimension as SWL
    (Some of the warehouses are advances warehouse enabled and some are not, not sure if this impacts the retail side)

    Could you please let me know what possibly I might be missing here.

    Thanks in Advance!


  4. Dear Kurt,
    we have same requirement to use “auto report as finished” with nearly the same snacks. we have also the requirement using warehouse management. Should it work without any extensions? Any more experiences in the meantime?


    • Hi Andreas. I created a CDE (Community Driven Engineering) that got accepted by Microsoft. So the code is already in place in D365 now, andy you should be ready to rock-and-roll 🙂


  5. You mentioned that “Master planning will also catch this”, however when I turn auto-report as finished on MRP no longer generates planned production orders for the parent item. How then, is demand created for the ingredients?


  6. yes this is a cool parameter and i found the same limitation with the warehouse. I believe with advanced warehousing this would still work as long as you put those default warehouses in the item.


  7. Hey Kurt, interesting idea. Just a remark / question. Should this also work if the item and warehouse are WHS enabled? Any ideas on how D365F&O should collect the location as well (saying that the items are stored in a non LP tracked location)?


    • Hi. I have not gone down to that code area, so it needs to be tested and validated. The use of this auto-report-as-finished is controlled by the inventMov*_classes. In terms of the location, I would expect that some reservation logics should kick-in as reservation hierarchies now are supported. It is isn’t, then I would recommend to work close with Microsoft support on the business scenario, and maybe create an extension that can perform the reservation and setting the wmslocationid on the transaction(inventdim). It should be a fairly easy change: Take care 🙂

      Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.