Introduction to Containerization – Automated packing process in Microsoft Dynamics AX 2012 R3


In addition to the manual packing functionality that was introduced in my previous post, the new Warehouse management system also provides a feature, Containerization, which supports an automated or guided packing process. In this process, containerization assists the user by:

  • Automatically calculating required containers for the outbound shipment based on product and container physical dimensions.
  • Optimizing packing structure according to a set of rules configured by the user.
  • Generating picking work based on the calculated container structure.

By using this feature, you will not only have an overview of the quantity and types of containers that are going to be used for packing prior to the picking of goods, but you’ll also have work created in a way that the work lines are split into quantities that fit the containers. This allows and guides the warehouse workers to pick the items directly into the chosen container. Compared to the manual packing process, tasks such as creating containers, assigning items, closing containers are automated by the system.

The containerization logic is integrated into waves as an optional process and when enabled, it is executed as part of the processing of the wave. During the processing of a wave, containerization is performed prior to the creation of work. This allows the system to utilize the generated container structure information to guide the work creation process. You can also configure wave templates to automate the wave process so that containerization is executed upon release of the source orders.

Currently, this feature is primarily aimed at assisting the user with the planning of container structure and work in the packing process. We do not support any manual packing operations on the containers created by the system or modification of the container structure, which you are able to do in the manual packing flow on the containers created by the user. For example, you cannot delete, re-open or change item quantity inside the container. Right now, there is also no support on the Mobile device implemented for the warehouse workers to validate things such as item quantity, product configuration, or physical dimensions as they actually pack goods into containers.

This blog post describes the necessary setup for containerization and provides an example of a basic automated packing flow.


Containerization setup

Wave templates


Figure 1. Wave template (Warehouse management > Setup > Waves > Wave templates)

A wave template is the entry point to the containerization process. In the screenshot above, the containerization method is shown as an optional method on the right side of the window. To enable containerization, move it to the Selected methods pane on the left by clicking the arrow button.


Figure 2. Wave template with Containerization method added

Enter a Wave step code for the added method, which can be any code. This code will be used later in the setup.

Note: It’s possible to add the method more than once and assign different wave step codes. To do this, you need to set this method to repeatable in the Wave process methods form (Warehouse management > Setup > Waves > Wave process methods).

Container types


Figure 3. Container types (Warehouse management > Setup > Containers > Container types)

You can define your containers in the Container types form. Configure the physical dimensions of containers including tare weight, maximum weight, maximum volume, length, width, and height. In this example we have three different sizes of boxes.

Container groups


Figure 4. Container group setup (Warehouse management > Setup > Containers > Container groups)

You can include a set of container types in a group.

  • Sequence number: Containers in the group are listed in order so each container has a sequence number.
  • Container type: Select a pre-defined container type.
  • Container utilization percentage: You can define how much of the max volume and weight defined on the container type should be available. The default is 100%.

Note: When containerization is executed, a selected container group will be processed and when there are more than one containers in the group, the system will determine which container is the best fit for the goods to be packed. This is done by using a “downsize” logic. For each container that is found in the group and that meets the requirement (volume, weight, etc.), the system will attempt to find a smaller container that also fits the goods, and the currently found container will be “downsized” into a smaller one. For this to function correctly, it’s important that you order the containers in a container group by size, from large to small.

Container build template


Figure 5. Container build template (Warehouse management > Setup > Containers > Container build template)

The container build template is the core setup for this feature, based on which the containerization process is performed. Each container build template defines one containerization process that will be used by a wave template.

  • Edit query: The standard AX query form that allows you to define the conditions on which this template will be selected to be processed. For example, you may want to only run containerization for specific customers, products, or warehouses and in this case, you can add the corresponding query ranges to the template.
  • Wave step code: Remember the code that we set on the wave template? This is how a container build template is linked to the wave template, so when a wave is executed, it will determine which container build template(s) to use to initiate containerization.

As mentioned earlier, you can have a container build template that is used on multiple wave template, or vice versa, multiple container build templates that point to the same wave template.

The former allows you to re-use the container build template in different wave configurations. The latter is useful when:

1) You have set up multiple container build templates and want the system to choose the proper one based on the template query criteria during processing of the wave. For example, if you want to use different containers for two different items and they are both placed on a sales order, you can set up two templates with query condition on item number so that both items have the corresponding containers generated during the process.

2) You need to build a nested container structure, that is, a container inside a container.

  • Container group ID: The container group that the system evaluates and selects containers from during the process.
  • Base query types: Defines the purpose of this template. Options are Sales allocation lines, Transfer allocation lines and Container. The first two options are used to match the source document type for which you want to build containers for. If you want to use a wave template with containerization for both sales and transfer orders, you’ll need to set up two container build templates, one for sales and one for transfer, and then set your wave template to have two containerization methods pointing to each container build template. The last option indicates that this template is used to build containers for containers, that is, for nested container structure.
  • Allow split picks: Determines when the items on the allocation line exceed one container, if it is allowed to split them into multiple containers. When items have different units of measure, the splitting is performed on the highest unit only.
  • Container packing strategy: Determines, when the system assigning items on an allocation line, whether it should only pack them into the current container (Pack into current container only) or check all containers created during the process and try to pack into those that still have extra capacity (Packing into all open containers). Here we select the latter for maximum utilization of the containers.
  • Pack by unit: If selected, the unit of measure of the items will be used as the container type (each, box, pallet) instead of the pre-defined container types. The Container group ID setting will be unavailable in this case. For our example, we leave the check box unselected.


Figure 6. Mixing logic breaks

  • Mixing logic breaks: Click the button on the action pane to open the form shown in Figure 6. This form allows you to add fields by which you want the system to split the items into a new container. For our example, I added the Item number field, which means that when assigning items to containers, the system should create a new container when there is a new item number. This is so that different items will not be packed into a same container.

Note: By design, containers always break by Shipment ID.

Item physical dimensions


Figure 7. Item physical dimensions (from the Released product form > Manage inventory > Physical dimensions)

To calculate containers correctly, item physical dimensions must be set properly. Open the Physical dimensions form from the item detail page and set the weight, width, depth, and height (volume will be calculated). If there are multiple units in the unit sequence group for the item and they are all used during the outbound process, make sure to set physical dimensions for all units (for the above item, the unit conversion is 1PL = 50EA).

Work templates

For this example, we have a work template that takes items directly to baydoor, and not to a packing location, which is different than the manual packing flow.


Containerization workflow

Now that the necessary setup is done, we’ll work through a simple outbound flow that uses containerization to build up a single-level container structure.

Source document


Figure 8. Sales order

Here we have a sales order with three lines. For the first item, we only have one EA and for the second item, we have some quantity that is in PL and some that is less than one PL quantity (1PL = 50EA for 000148_202). Assume that we have enough on-hand inventory for both items and all sales lines have been reserved.

Trigger containerization process by releasing the order

Now we release the sales order to warehouse. Based on the wave template setup, this step should create, process, and then release the wave. Upon the processing of the wave, containerization executes the following steps:

1. The container build template with matching wave step code on the wave template is selected.

2. The query criteria of the template is checked for the current allocation line. If met, the system starts processing the template to create containers for the allocation line. This process is illustrated in figure 9 below.


        Figure 9. Containerization logic for packing an allocation line


  • When checking the physical dimensions, length, width, height of a single item in its highest unit are checked first, against the maximum allowed values set on the container type. The system will attempt to rotate the item along the z-axis, that is, flip the length and width, to determine if an item fit into the container. It, however, will not try to rotate along the x- or y-axis, that is, rotate the item upside down. If a single item cannot fit in, the containerization process for this allocation line will fail.
  • If length, width, height meet the requirement, the system then checks the weight and volume of the entire items on the allocation line against the maximum allowed weight and volume of the container, taking into account the container utilization percentage set on the container group.
  • The Allow split picks node in the diagram refers to the checkbox on container build templates.
  • The bottom of the diagram shows the downsize logic. The system will keep trying to downsize into smaller containers defined in the container group. When a container type fails to downsize, it will stop trying to downsize any further and this is why the container types in the group should be ordered by size.

3. If the query criteria is met but the container build template fails to pack the allocation line (due to, for example, dimension not being met), the line will still be assigned to the container. However, the created container will have field Container has errors, enabled, indicating that the containerization process failed here and you will also receive an error.

4. Continue the same process on the next allocation line until there are no more items to be packed.

Containers created


Figure 10. Shipment details

If you open the shipment from the sales order, you can view the created container structure by clicking the Container structure button on the Shipment details form.


Figure 11. Container structure (from Shipment detail form > Transportation > Container structure)

As shown in the screenshot above, five containers are created (I opened the form five times to show the content in all the containers).

  • The first container is of type Small and only has the first item, quantity 1 EA. Since we set mixing logic breaks to only allow one item number in a container, this is the only item in it.
  • The second and third containers are of type Large and each contains 2 PLs of the second items. Since the largest container in the container group can fit exactly two PLs and we selected Allow split picks, the containerization process breaks the allocation line of 5 PLs into three containers. If you pay attention to the dimension settings, the items are constrained by weight here, when being packed into the containers.
  • The fourth container only has one PL so it has extra space to contain another 25 EA of the second item.
  • The rest of the quantity is distributed to the last container. For these items, a medium-size container is sufficient.


Figure 12. Containers (from Shipment detail form > Transportation > View containers or Warehouse management > Inquiries > Containers)

You can also open the Containers form to view all the created containers and related information. Here you can do things such as print container content and view accessorial charges. Compared to the manual packing flow, buttons such as New, Delete, and Reopen appear unavailable in this form for containerization-created containers. Again, this is because we currently don’t support these operations.

Work created

Now, let’s look at how the work was generated as part of the wave processing.


Figure 13. Work

The work lines are broken into quantities that match our container structure, each with the container ID assigned. You may notice that the fourth and fifth work lines belong to the same container. This is because they are for two different sales lines with different units and to be picked from different locations. Based on our configuration, they should still be packed into the same container.

Complete work

The warehouse worker can go to the location, pick the items, and pack them directly into the containers as guided by the created work lines using Mobile device. The procedure of completing the work on Mobile device is the same as completing an usual outbound picking work.

After the work is completed, the status of containers will be automatically updated to Closed, which is different from the manual packing flow where you need to manually mark containers as closed.

After that you can confirm the outbound shipment and the goods are then ready for shipping.


A few notes

Here are a few things that are worth noting when using containerization.

Splitting work on Mobile device


Figure 14. Allow splitting of work on Mobile device menu item

Splitting of work through Mobile device is not supported when containerization is enabled. The Allow splitting of work option allows the warehouse worker to split work line quantities on the mobile device during the execution of work. This is not supported right now. If selected, the mobile user will receive an error and will be prevented from proceeding.

Container space utilization


Figure 15. A container with remaining volume larger than a single item but cannot fit in one more item

As explained earlier in the containerization logic, when the system calculates the remaining available volume of a container, it adds up volume of the existing items inside and deducts this number from the maximum allowable volume of the container. This may lead to a situation where the remaining volume of a container is larger than the volume of one or more items but you actually cannot fit in any more, as illustrated in the above graph. This is where the Container utilization percentage in the Container groups setting becomes useful. It allows you to specify a container usage margin so that the calculated packing quantity reflects the actual container capacity for a particular item.

Removal of containers

As mentioned above, you cannot manually delete the containers created during containerization process. However, the created containers will be deleted when the work is cancelled.



This blog post has given you an introduction to the new containerization feature and shown the necessary setup and the basic workflow. Compared to the manual packing flow where you first move the goods to the packing location and then have the packer conduct the packing process of selecting containers, assigning items, and closing containers, containerization provides a way to accommodate the scenario where you would like to have the system automatically generate the container structure, so the warehouse worker can pick the goods directly into containers with optimal picking routes. It’s a useful tool that helps you with work planning in the packing process. Optimized work creation based on containers and reduced manual operation makes the packing process more efficient.

Thanks for reading! We look forward to your feedback on this new feature.