Split or move producing operations to suitable warehouse resources – where there are enough space.

If a warehouse is found with enough space for the entire operation it is moved to the resource assigned to that warehouse. Otherwise the operation is splitted and the splitted operations are moved to the suitable warehouse resources. The BOM lines on the operations are updated – so they produce to the correct warehouse. The warehouses considered are extracted from the possible resource list set on the template operation.

Example parameter configuration

Example 1

In this case a producing operation is first assigned to a Packaging group resource. The two member resources “Packaging 1” and “Packaging 2” each have warehouses assigned (shown in the material graphs below) with a max capacity of respectively 1000 and 6000 (the maximum of the warehouses have been specified in “Edit->Materials” on the “Max/Min stock level” tab). The operation produces 6000. Notice that the operation might stay on the group’s warehouse if there is enough space. This is changed with the setting “warehouseSelectionOrder”.



The entire operation can run on Packaging 2 because the linked warehouse (Packaging storage 2) has enough capacity. Thus the operation is moved and not splitted.

Example 2


After (splitted):

Here the capacity of the “Packaging 2” warehouse is reduced from 6000 to 5000. This causes the operation to be split in two – where the first chunk on 5000 is assigned to “Packaging 2” and the remaining 1000 on the “Packaging 1”. Notice that by default operations being split are hardlinked.


  1. The relevant warehouses must be created and assigned to resources. If the starting point is on a resource group, that one must also have assigned a warehouse.
  2. A “Min/max stock level” must be created for each warehouse – defining the capacity.
  3. There must only be one producing BOM line on the operations to split. And the warehouse set on that BOM line must match the warehouse linked to the current resource the operation is to.
  4. A license to the Batch module is needed.


  1. If the max stock level defined on the warehouse is not in the same unit as material produced it is possible to set a conversion factor on the material. Thus it is for instance possible to convert between weight and volume. If a conversion factor when estimating available storage space. As an example if a material has kg as the standard unit of measure and liter as the alternate unit of measure, then this macro will assume that the max storage capacity of the warehouse is in liters (and use the material conversion factor to convert between the standard and the alternate unit of measure).
  2. This macro will always start out with joining existing splitted operations – and then split again based on the new current situation. This ensures that you can always run this macro a second time for an already split operation.
  3. If the operation to split/move is on a resource group – create a warehouse and assign it to the resource group. Then it is possible to have it moved/splitted to the resource members. But notice if there is enough space on the resource group’s warehouse it might stay there. This is changed with the setting “warehouseSelectionOrder”.
  4. The macro can also join already splitted operations – see parameter “onlyJoinOperations”. Use this option to revert operations back to the starting point.

Parameter descriptions

(* = configuration required)

A comma separated list of operation status values. An operation with one of these status’s will be ignored.

Default 40, 50, 60, 70
Possible operation status values:

10 = Incomplete
15 = Reserved
20 = Planned
30 = Start possible
40 = Started
50 = Paused
60 = Cancelled
70 = Completed

The parameters “horizonBackwardFromNow” and “horizonForwardFromNow” decides the period where the operations are analyzed. The value provided is in days. Only used when parameter “onlySplitSelectedOperations” is false.

Default 0

The parameters “horizonBackwardFromNow” and “horizonForwardFromNow” decides the period where the operations are analyzed. The value provided is in days. Only used when parameter “onlySplitSelectedOperations” is false.

Default 90

Only relevant if “onlyCheckSelectedOperations” is true.
If true all operations in the route will be analyzed – even though only one operation was originally selected.

Default false

If true the selected operations will be joined again if they are already splitted – no splitting will take place. It is enough to just select one of the split members in a route. Use this option to return operations back to their original size and location.
Only relevant if “onlySplitSelectedOperations” is true.

Default false

If true only the currently selected operations will be analyzed.

Default true

Use this parameter to control how a warehouse is selected. The different strategies, specified as a comma separated list of keywords, are evaluated in the order specified. It is possible to change the sequence or remove any of the keywords. The default value is:

This means that if the existing warehouse operation X is assigned to has capacity left – then it will be filled first. If the full amount cannot be assigned, then any remaining amount is then assigned to any warehouse with an open production lot (see definition of “openLot” below). If no open lots exists or cannot store the amount left, then existing closed production lots will be searched (see “oldestClosedLot” description below). And similar for the remaining strategies.

The following explains the strategies of the different keywords, as they are applied when the splitting logic needs to decide on what warehouse operation X should be placed. The list of possible warehouses (resources) are the list of resource alternatives of the operation.

existing: the warehouse the operation X is currently assigned to will be evaluated and used if it has any capacity left. This is a useful strategy to enable the planner to manually decide what warehouse a product is produced to.

openLot: warehouses where the product that operation X produces have not yet been consumed from. I.e. either the warehouse has never been filled before or an operation earlier in time than X has produced to the warehouse. No other operation/shipment has been consuming from the warehouse. This is a useful strategy if a product is produced to e.g. a QA tank being filled by many different batches – before being analyzed as a new combined QA lot.

oldestClosedLot: selects the warehouse with the oldest product that operation X produces have been stored and consumed. Use this strategy to have the logic select the warehouse with the oldest product.

biggest: selects the warehouse that has the biggest capacity (as specified in “Edit->Materials” on the “Max/Min stock level” tab)

name: selects the warehouse with the name sorted first in alphabetical sequence


Was this helpful?

Yes No
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.

Post your comment on this topic.

Post Comment