If you are following along from the previous Distributed Order Management blog, this is the second of the DOM series. If you have not read the overview featured in Part 1, I recommend you start from the beginning in order to understand the fundamentals of DOM.
In this blog post, we will look at the different rules that can be applied to your organization’s DOM configuration. We will define these rules and review how they interact with different fulfillment policies.
Below is a list of fulfillment rules currently available in Dynamics 365 DOM. The following rules can be assigned to different fulfillment groups and profiles that will be discussed in the third part of this blog series.
- Minimum inventory rule – This rule type lets organizations “ring-fence” a specific quantity of a product for purposes other than order fulfillment. For example, organizations might not want DOM to consider all the inventory that is available in a store for order fulfillment. Instead, they might want to reserve some inventory for walk-in customers. When this rule type is used, you can define the minimum inventory to keep for a category of products, an individual product, or a product variant per location or group of locations.
- Fulfillment location priority rule – This rule type lets organizations define a hierarchy of locations to establish the priority that the DOM engine considers when it tries to identify fulfillment locations for specific products. The valid range of priorities is 1 through 10, where 1 is the highest priority, and 10 is the lowest priority. Locations that have higher priority are considered before locations that have lower priority. If the rule is defined as a hard constraint rule, orders are brokered only to locations that priorities are defined for.
- Partial orders rule – This rule lets organizations define whether an order or order lines can be partially fulfilled. The following parameters are available:
- Fulfill partial orders? – If this option is set to Yes, DOM can fulfill only part of the quantity on an order line. This partial fulfillment is achieved by splitting the order line.
- Fulfill partial lines? – If this option is set to Yes, DOM can fulfill a partial quantity of order lines. This partial fulfillment is achieved by splitting the order line.
- Fulfill orders from one location only – If this option is set to Yes, DOM makes sure that all lines on an order are fulfilled from a single location.
- Offline fulfillment location rule – This rule lets organizations specify a location or group of locations as offline or unavailable to DOM, so that orders can’t be assigned to those locations for fulfillment.
- Maximum rejects rule – This rule lets organizations define a threshold for rejections. When the threshold is reached, the DOM processor will mark an order or order line as an exception and exclude it from further processing.
After order lines are assigned to a location, the location can reject an assigned order line because it might not be able to fulfill that line for some reason. Rejected lines are marked as an exception and put back into the pool for processing in the next run. During the next run, DOM will try to assign the rejected line to a different location. The new location can also reject the assigned order line. This cycle of assignment and rejection can occur multiple times. When the rejection count hits the threshold that is defined, DOM will mark the order line as a permanent exception and won’t pick the line for assignment again. DOM will consider the order line again for reassignment only if a user manually resets the status of the order line.
- Maximum distance rule – This rule lets organizations define the maximum distance that a location or group of locations can be to fulfill the order. If overlapping maximum distance rules are defined for a location, DOM will apply the lowest maximum distance that is defined for that location.
- Maximum orders rule – This rule lets organizations define the maximum number of orders that a location or group of locations can process during a calendar day. If the maximum number of orders is assigned to a location in a single day, DOM won’t assign any more orders to that location for the rest of that calendar day.
Each of the rules above uses the following attributes to further define how they interact with your DOM runs:
- Start date and End date – Every rule can be made date-effective by using these fields.
- Disabled – Only rules that have a value of No for this field are considered in a DOM run.
- Hard constraint – A rule can be defined as either a hard constraint or not a hard constraint. Every DOM run goes through two iterations. In the first iteration, every rule is treated as a hard constraint rule, regardless of the setting of this field. In other words, every rule is applied. The only exception is the Location priority rule. In the second iteration, the rules that weren’t defined as hard constraint rules are removed, and the order or order lines that weren’t assigned to locations when all the rules were applied are assigned to locations.
Fulfillment Rules Matrix
|Fulfill partial orders||Fulfill partial lines||Fulfill order from one location only||Description|
|Yes||Yes||Yes||A few lines of the order can be fulfilled, and individual lines can be partially fulfilled, but all the lines must be from the same location in an instance of the DOM run. (This combination isn’t currently supported.)|
|Yes||No||Yes||A few lines of the order can be fulfilled, but individual lines can’t be partially fulfilled, and all the fulfilled lines must be from the same location in an instance of the DOM run. (This combination isn’t currently supported.)|
|Yes||No||No||A few lines of the order can be fulfilled, individual lines can be partially fulfilled, and each line can be fulfilled from more than one location in an instance of the DOM run.|
|No||NA||No||All order lines must be fulfilled, individual lines can’t be partially fulfilled, and each order line can be fulfilled from a different location.|
|No||NA||Yes||All order lines must be fulfilled, individual lines can’t be partially fulfilled, and all the order lines can be delivered from one location only.|
|No||NA||No||This combination works like combination 4 because Fulfill partial lines can’t be set to Yes when Fulfill partial orders is set to No.|
|No||NA||Yes||This combination works like combination 5 because Fulfill partial lines can’t be Yes when Fulfill partial orders is No.|
|Yes||No||No||A few lines of the order can be fulfilled, but individual lines can’t be partially fulfilled, and the various order lines can be fulfilled from more than one location in an instance of the DOM run.|
|No||NA||Yes||All order lines must be fulfilled, and all the order lines must be fulfilled from one location only.|
Distributed Order Management in Dynamics 365 gives your organization the ability to optimize order fulfillment, regardless of the complexity of the operation. DOM provides a vast array of rules and fulfillment policies that can be applied to groups of different channels/locations via customizable profiles. With this ability to mix and match rules and fulfillment policies, every organization can be assured to find a setup that works for their business needs.
To learn more about DOM fulfillment profiles and plans in Dynamics 365, continue reading the third part of this blog series, where we take a deeper dive into how these rules are applied to DOM processing.