• Home
  • About Me
  • Contact Me
  • Downloads
  • White Papers
  • Web Sites
  • Post List
  • Articles
  • FAQ

Olof Simren - Microsoft Dynamics 365 Business Central Blog

  • Home
  • About Me
  • Contact Me
  • Downloads
  • White Papers
  • Web Sites
  • Post List
  • Articles
  • FAQ

Assemble to Order with Inventory Picks and Movements

May 20, 2015 Posted by Olof Simren Assembly, Inventory, Sales 10 Comments

One of the nicer things about the assembly functionality in Microsoft Dynamics NAV is the option to assemble to order. What this means is that you can stock the components and not assemble them until it is time to ship the order (very useful if you sell kits of products for example).

In this blog post I will describe how this works together with the inventory picks and movements. This is in my mind a setup that works well and supports scenarios where the personnel that are picking the products also assembling/bundling them at the same time.

I have previously described the different ways of processing shipments in Dynamics NAV and the inventory pick option I use with the assembly functionality in this example is option 2 from that blog post.

The example will be described using a computer package that consists of a computer, monitor, keyboard and mouse. They are all items that are stocked individually and also can be sold individually. The computer package itself has its own price and are marketed as a product.

For this we first create an item representing the computer package. In the below case I make it item number ‘COMP-001’ and the description computer package.

Item-Card-General-Dynamics-NAV

Next we setup the replenishment tab with the replenishment system equal to assembly and the assembly policy equal to assemble-to-order.

Item-Card-Replenishment-Assembly-Dynamics-NAV

We also need the assembly BOM to define what items that the computer package consists of.

Assembly-BOM-Dynamics-NAV

That’s it for the setup of the item (you might also want to put on dimensions, prices, do a cost roll, etc. but that is outside the scope of this blog post).

The concept is now to place a sales order for the computer package and create an inventory pick to pick and ship it. Dynamics NAV will in this process first create an assembly order in the background when the sales order line is entered (to assemble the components) and an inventory movement when the inventory pick is created (to move the components to an assembly or shipping bin from where it is shipped). Posting the inventory pick will then post the consumption of the components, the output from the assembly and the shipment of the sales order, all with one click. Nice!

Some of you might have worked with the kitting functionality that previously came standard in certain local versions of Dynamics NAV (it was standard in the North American version of NAV for example). The assembly functionality has replaced this kitting functionality and it is worth noting that the process is slightly different. The old kitting functionality did actually create an inventory pick with the components, while now it creates an inventory pick for the assembly and an inventory move for the components. Good to know if you are upgrading!

For it to work we need to define the assemble to order shipping bin and the to-assembly bin codes on the location card, this is where the components are going to be assembled at and from where we are going to ship the assembly sold. In my case I have a PURPLE location setup with bin mandatory and require pick, and the bin where the assembly takes place in is called ASSEMBLY (you could potentially have two different assembly bins here to separate the components from the assemblies).

Assemble-to-Order-Shipping-Bin-Location-Card-Dynamics-NAV

To have the inventory movement to be created automatically during the creation of the inventory pick we need to activate this in the assembly setup table.

Create-Movements-Automatically-Assembly-Setup-Dynamics-NAV

This should be it, let’s try it. 🙂

First we create a sales order where we enter the computer package as a line item.

Sales-Order-With-Assembly-Dynamics-NAV

When the sales line is entered NAV knows that this is an item that is setup as being assembled to order so it checks the availability of all the components instead of the item being placed on the sales order and if one or more of the components are not available an availability warning like below will be displayed (if that feature is activated in the inventory setup/item card that is). This I think is really nice.

Assembly-Availability-Warning-Dynamics-NAV

As the availability warning shows, I am short of item 80212 and are only able to assemble 5 computer systems. The quantity of 10 can be accepted anyway as this is just a warning.

Also note that the bin code on the sales line defaults to the bin code defined as the assemble to order shipment bin code defined on the location.

Next step is to create the inventory pick. For regular items, the inventory pick is created based on the qty. to ship on the sales order line (a way for the order entry person to control if not all items should be picked) and the availability of the item, but for assemble to order items the inventory pick is created based on the qty. to assemble to order field on the sales line and independent of the item availability. I guess this makes sense if you think of it as this is the quantity that is going to be assembled and therefor is what you want to pick.

In my example I am only able to assembly 5 systems and therefor I will change the qty. to assemble to 5.

Sales-Order-With-Qty-to-Assemble-Dynamics-NAV

Changing the qty. to assemble to order field automatically updates the assemble order that Dynamics NAV created in the background when the sales order line was entered. You can navigate to the assembly order from the sales line by making a drilldown on the same field. Note the bin codes for the output in the header and the consumption on the lines, they all come from the location card.

Assembly-Order-Dynamics-NAV

Note that without changing the qty. to assemble to order field to 5 the assembly order will still show a quantity of 10 and the inventory pick will be for 10 pcs, but the inventory movement will only be for the components that are available. This is one thing that I think could be argued. If I was designing this I would have the inventory pick to be for what was available to assemble and the inventory movement to only move components that could be used to complete full assemblies (e.g. 5 of each, and not 10 for all except one of the components). This should not be that hard to change though since the inventory pick and movement is created at the same time (maybe something for a future blog post).

The assembly order in this case is nothing to worry about since Dynamics NAV will take can of it automatically when the inventory pick is posted (but it is good to know that it is there in the background and how it looks).

The sales order is then released and the inventory pick is created, typically through a batch job (see previous blog post related to processing shipments). This also automatically creates an inventory movement for components that goes into the assembly.

The inventory movement looks like below. Note the take and place actions that moves the components from their corresponding bins to the assembly bin.

Inventory-Movement-for-Assembly-Order-Dynamics-NAV

The inventory pick looks like below, shipping 5 pcs of computer system from the assembly bin.

Inventory-Pick-Dynamics-NAV

Register the inventory movement then moves the components to the assembly bin and posting the inventory pick consumes the components, posts the assembly output and ships the sales order. Note the terminology difference; ‘register’ vs. ‘post’. Register does not create any g/l entries (only warehouse entries).

The result in the item ledger looks like below. The consumption of the components are first posted, then the output of the assembly order, and last the shipment. The document numbers comes from the posted assembly order and the sales shipment.

Item-Ledger-Entries-Assemble-to-Order-Dynamics-NAV

Note that using the inventory movement in the above example is optional. If you leave the to-assembly bin code blank on the location card then the assembly order will be created with bin codes on the lines according to the default bin codes of the items and there is no need for a move. This might be a simpler solution if you don’t have the same items in multiple bins (e.g. if the on hand quantity for an item is always in the default bin then it will work fine without the inventory movement).

Have a look at my shop floor barcode solution if you want to simplify the registration/posting of the inventory movement/pick. There is a potential to have the printout of the inventory pick to display the lines from the inventory movement together with a barcode to scan to register it. If you display the inventory movement lines on the printout of the pick then it becomes almost like the good old kitting functionality.

If you in the decision of whether to use assembly of manufacturing for a requirement, then check out my previous blog post assembly vs. production.

That’s all for this time! Let me know your experiences with the assembly functionality! Both negative and positive comments are appreciated on this blog, but no spams promoting your add-ons please.

Make sure to also visit my Dynamics NAV FAQ page. 🙂

Share this:

  • Share on Facebook (Opens in new window) Facebook
  • Share on X (Opens in new window) X

Related


Discover more from Olof Simren - Microsoft Dynamics 365 Business Central Blog

Subscribe to get the latest posts sent to your email.

Tags: AssemblyAssembly BOMInventory MovementInventory PickKittingSales Order
10 Comments
Share
4

About Olof Simren

I am a Microsoft Dynamics NAV and 365 Business Central Expert, I started implementing Microsoft Dynamics NAV in 2002, back then it was called Navision Attain. Throughout the years there has been many exciting implementations in different parts of the world, all of them with different challenges but with one common theme; manufacturing. As a consultant, I bring over 20 years of experience in implementing Microsoft Dynamics NAV and 365 Business Central within manufacturing and distribution companies. The services I offer includes project management, consultation, development and training. Feel free to contact me if you need help with anything related to Microsoft Dynamics NAV or 365 Business Central. I work through my company Naviona where I team up with other skilled Microsoft Dynamics NAV and 365 Business Central Experts.

You also might be interested in

Assembly Order Posting to General Ledger

Jul 20, 2015

I have previously described how production orders are posting into[...]

Sales Quote without Customer

Jul 11, 2016

Do you know that you can create sales quotes without[...]

Assembly or Manufacturing?

Jul 20, 2014

With Dynamics NAV 2013 came the assembly management. It is[...]

10 Comments

Leave your reply.
  • SY
    · Reply

    May 27, 2015 at 1:51 AM

    Hi,

    I have followed the steps above and tried at the NAV2015, but still fail to create an inventory pick using the batch job as per suggested.

    Then, I tried to debug and found that there is a function called “CreatePickOrMoveFromAssembly” inside a codeunit 7322 – Create Inventory Pick/Movement is having a line of code with the comment stated as “no support for inventory pick on assembly”. That’s why failed to create inventory pick. May I know how do you by pass the code successfully create the inventory pick? Kindly advise.

    Thanks,
    Shin Ying

    • Olof Simren
      · Reply

      Author
      May 27, 2015 at 7:44 AM

      Hi Shin,
      Thanks for your comment.
      I have looked in the code in my database and it looks the same as you are describing.
      The inventory pick is not supposed to be created for the assembly order, it is supposed to be created for the sales order and then you have an inventory movement for the assembly order (thereof the comment in the code from Microsoft).
      So, to me it looks ok and this is probably not why your inventory pick is failing.
      I am guessing it is a configuration somewhere, or the sales order is not released.

      /Olof

  • Ruslan
    · Reply

    July 6, 2015 at 1:08 AM

    Hallo Olof.
    Thak you for your breaf article. It is very helpfull. It will be more helpfull if you give us connection of assembly operarions in Item Ledger Entries with Value Entries and GL Entries.

    Best regards,
    Rus.

  • Vinamis
    · Reply

    June 2, 2016 at 4:31 AM

    Hi. Thank you for your post.

    Did you try this with option (4) ?

    I’m always facing a greyed on the assembly order… (NAV2016).
    Is it due to my Location Parameters :
    Require Shipment TRUE
    Require Put-away : TRUE !!!
    Require Pick : TRUE
    Bin Mandatory : TRUE

    Any idea ?
    Tx
    Vinamis

    • Olof Simren
      · Reply

      Author
      June 2, 2016 at 3:06 PM

      Hi Vinamis,
      I have not tried that option, I would imagine it works similar to production orders on locations with that setup which is something that I normally trying to avoid (using warehouse picks and put-aways on locations that have production orders).

      Maybe someone else that reads this knows? 🙂

      /Olof

  • Flora Mendiola
    · Reply

    November 9, 2016 at 2:37 PM

    Hi!

    Thank you for your article. How are you going to process and Assembly BOM inside an Assembly Order? Do you need to create a separate assembly order for each assembly BOM?
    Ex: AS0001 has
    item 1
    item 2
    item 3(Assembly BOM)

    Should I create a separate Assembly order for Item 3? Also what if item 3 also has assembly BOM.

    Thanks and hoping for your reply.

    • Olof Simren
      · Reply

      Author
      November 10, 2016 at 10:10 AM

      Hi Flora,
      I am quite sure that you would need a separate assembly order for the Item 3 in your example.
      It will probably have to be a make-to-stock type of assembly where the order is created either by mrp or manually. The make-to-order assemblies only work for sales orders (they are ment to be more of kits).

      Hope this helps. 🙂

      /Olof

  • Sekhar
    · Reply

    May 13, 2020 at 5:54 AM

    Hi Olof,

    I am trying to process Sales Order Kits.
    I did the Assembly Setup, Created Assembly BOM to Sales Item.
    Assembly order also created automatically through Sales Order. When i try to post Ship for sales order, I am getting below Error.
    The General Posting Setup does not exist. Identification fields and values: Gen. Bus. Posting Group=Gen. Prod. Posting Group=”OTHER”

    If i try to process the sales order with same item without Assembly BOM (Same as Normal Sales Order), It is processed good without any error

    I am not using Location, Bin etc.. So, is this mandatory for Kit process? If yes, can you please share complete setup also.

    • Olof Simren
      · Reply

      Author
      June 5, 2020 at 7:57 AM

      Hi Sekhar,
      You just have to go to the general posting setup and define the combination that the error message is referring to (GEN / OTHER).
      This is related to how the system posts into the G/L.

  • Koen
    · Reply

    July 30, 2020 at 4:06 AM

    Hi Olof, did you also use this functionality in BC SaaS?
    I’m working with this now, but it looks like a inventory movement is mandatory. In your example in NAV2015 you said the following: Note that using the inventory movement in the above example is optional. If you leave the to-assembly bin code blank on the location card then the assembly order will be created with bin codes on the lines according to the default bin codes of the items and there is no need for a move. This might be a simpler solution if you don’t have the same items in multiple bins (e.g. if the on hand quantity for an item is always in the default bin then it will work fine without the inventory movement).

    But when I do this in BC SaaS I get the error that the bin code “” does not exist.
    Thanks in advance.

Leave a Reply

Your email is safe with us.
Cancel Reply

Subscribe to My Blog via Email

Check Out My Apps in AppSource

My Dynamics NAV Partner

Naviona, LLC

Categories

  • Assembly (3)
  • Development (35)
  • Finance (14)
  • General (28)
  • Inventory (25)
  • Manufacturing (37)
  • Miscellaneous (28)
  • Purchase (10)
  • Sales (11)
  • Warehouse (7)

Tags

.net Add-in AI AppSource Assembly Assembly BOM CAL Capacity Consumption Convergence 2015 EMEA Copilot Costs Customer Development Dimensions Excel Finance General Ledger Inventory Item KCP Dynamics MRP NAV 2013 NAV 2015 NAV 2016 Output Planning Production Production BOM Production Orders Purchase Orders Quality Reports Routing Sales Order Scrap Security Stockkeeping Unit Subcontracting Task List Warehouse Warehouse Put-away Warehouse Receipt Warehouse Shipment Work Center

Recent Posts

  • Quality Management in Business Central Version 28
  • Business Central Configuration Audit using Vibe Coding
  • Copilot in Planning Parameter Worksheet
  • Copilot in Planning Worksheet
  • Copilot Inventory Queries
  • Record Deletion Tool for Business Central in AppSource
  • Reopen Finished Production Orders
  • XML Buffer and CSV Buffer Tables
  • Functionality Improvements in NAV 2017
  • Reversing Production Output and Consumption

Categories

  • Assembly
  • Development
  • Finance
  • General
  • Inventory
  • Manufacturing
  • Miscellaneous
  • Purchase
  • Sales
  • Warehouse

Contact Us

We're currently offline. Send us an email and we'll get back to you, asap.

Send Message

Categories

  • Assembly (3)
  • Development (35)
  • Finance (14)
  • General (28)
  • Inventory (25)
  • Manufacturing (37)
  • Miscellaneous (28)
  • Purchase (10)
  • Sales (11)
  • Warehouse (7)

Tags

.net Add-in AI AppSource Assembly Assembly BOM CAL Capacity Consumption Convergence 2015 EMEA Copilot Costs Customer Development Dimensions Excel Finance General Ledger Inventory Item KCP Dynamics MRP NAV 2013 NAV 2015 NAV 2016 Output Planning Production Production BOM Production Orders Purchase Orders Quality Reports Routing Sales Order Scrap Security Stockkeeping Unit Subcontracting Task List Warehouse Warehouse Put-away Warehouse Receipt Warehouse Shipment Work Center

Recent Posts

  • Quality Management in Business Central Version 28
  • Business Central Configuration Audit using Vibe Coding
  • Copilot in Planning Parameter Worksheet
  • Copilot in Planning Worksheet
  • Copilot Inventory Queries
  • Record Deletion Tool for Business Central in AppSource
  • Reopen Finished Production Orders
  • XML Buffer and CSV Buffer Tables
  • Functionality Improvements in NAV 2017
  • Reversing Production Output and Consumption

Recent Comments

  • Olof on Business Central Configuration Audit using Vibe Coding
  • Andrew Trayfoot on Business Central Configuration Audit using Vibe Coding
  • Barrett Allen on Reopen Finished Production Orders
  • Kateryna on Business Central Configuration Audit using Vibe Coding
  • Takeshi Setoya on Reopen Finished Production Orders
  • Steve on Consignment Inventory
  • Olof Simren on Copilot in Planning Worksheet
  • Omaer Amjad on Copilot in Planning Worksheet

© 2026 · Olof Simren

  • Home
  • About Me
  • Contact Me
  • Downloads
  • White Papers
  • Web Sites
  • Post List
  • Articles
  • FAQ
Prev Next