The following guide contains examples and field descriptions for the Order Fulfillment Logic (OFL) user interface.

Basic Information

Field nameDescriptionValues
Fulfillment Rule Set Name (Required)The name of the rule set. This name is displayed in the table on the Fulfillment Rules page.String
Description (optional)A description of the rule set. It is best practice to include a detailed description describing the purpose of the rule set for anyone viewing the rule set. If this is a cloned rule set with minor differences, describe the differences between each rule set.String

Field Descriptions

Order Level Rule Groups are run in order from the top down. If one of the rule conditions are met, this rule is executed and subsequent rules are not run. If you wanted to move a rule up, you can drag and drop rules to change their order.

Item level rules runs in parallel and execute all rules even if a previous rule condition is met (including order level rules). This means item level rules override order level rules for the specified item.

Condition fields

When creating any new rule, a condition is required. The condition is used to determine if a rule should be executed. A condition is used as the prerequisite to take an action.

Each condition you create executes from the top down. This means the order of your defined conditions matter. If you wanted to move a condition up, you can drag and drop conditions to change their order.

The following table outlines the available fields and their values for conditions.

Field nameDescriptionValues
Attribute typeAttribute type is used to determine the attribute schema used to fulfill the condition. For Order Level Rule Groups, the Order schema is set as the default. For Item Level Rule Groups, the Item schema is set as the default. The default values cannot be changed.Order, Item
Attribute nameThe dropdown for attribute name is populated based on the Order or Item attribute type.Default values for Order are type, subtype, orderId, channelId, and referenceId. The default values for Item are attributes, type, backOrdered, lineId, itemId, sku. Additional values are available based on your Order or Item schema. For example, shippingInfo.address.city, price.itemUnitPrice.
ContainsA list of supported expressions. Each expression can be used to filter in different ways. Only supported expressions are displayed for an attribute.• EQ Equals

• NEQ Not Equals

• IN In

• NIN Not In

• LT Less Than

• LTE Less Than or Equal To

• GT Greater Than

• GTE Greater Than or Equal To
Add ValueThe value of an attribute. For example, an online order can have the attribute name type with a value equal to STH (Ship to home). This value can also be SDD (Same day delivery). Multiple values are supported.String

Action fields

Each action you create executes from the top down. This means the order of your defined actions matters. If you wanted to move an action up, you can drag and drop actions to change their order.

There are 3 different Action type fields. They determine which additional action field options are made available.

  • Provided location: Buy online, pick up in store (BOPIS). The order itself has the location and does not not need to be provided.
  • Configured Location: Use this method if you want to predefine where all your orders will be fulfilled from when meeting a rule/condition. This can be any location that you provide along with the associated location number. For example, as a retailer you can choose to ship all web ship orders from the DC 975 location. Additionally, you can use this method for item level rules to assign fulfillment locations for particular SKUs. For example, you can provide a SKU that starts with 1122 and set this SKUs specific fulfillment location.
  • Multi Location: Multi location allows for multiple location types and additional features such as geo-location, split shipments, and item exclusions. This method is best used for retailers who have a lot of store presence or multiple warehouses in a particular region. It also provides the most flexibility if you want to split shipments from different locations for a single order.

Once an Action Type is selected, depending on the selected type, different fields outlined in the table below are made available.

Field nameDescriptionValue
Location-NumsUsed to configure the distribution location number.String
Allow-Partial-FillSet this value to Yes if you want to allow the order to be partially filled if one or more of the SKU’s are not available at a particular location. For example, if an order had 5 table lamps and 1 chair but you did not have the chair available, the 5 table lamps are shipped and the chair is ignored. Setting this value to No cancels the order if it cannot be fully fulfilled.Yes/No
Included-Location-TypesA dropdown containing all the available configured location types. This option is only available for the Multi-Location action type. All the locations that are selected will be checked for inventory availability based on the additional geo locations, split shipment, and exclude fields selected.Value is based on your available fulfillment locations. All configured locations are listed. For example: StoreDropshipDC
Use-Geo-LocationEnable this field if you want to fulfill shipments based on the customers shipping location. If this field is set to No, Start-Boundary-In-Miles, Inc-Boundary-In-Miles, and Max-Boundary-In-Miles are not used.Yes/No
Start-Boundary-In-MilesThe initial circumference boundary when determining geo-location. For example, if the value 100 is provided, fabric will look to see if any Included-Location-Types can fulfill the order within 100 miles of the shipping location.Number
Inc-Boundary-In-MilesIncremental Boundary In Miles is the number of miles you want to add every time search is performed. This means if the Start-Boundary-In-Miles was unable to fulfill an order, the incremental circumference is increased by the number specified here. For example, we can set this value set to 50. If no stores were in the first 100 miles entered in Start-Boundary-In-Miles, the search boundary is increased to 100-150, then 150-200, and so on until it reaches the Max-Boundary-In-Miles value.Number
Max-Boundary-In-MilesThe maximum search radius. Once the Inc-Boundary-In-Miles reaches this number and the order cannot be fulfilled, the order is canceled.Number
Prioritize-Location-ByThe Prioritize-Location-By dropdown has two values, Distance and InventoryAvailability. Selecting Distance means the order fulfillment is completed by the nearest store with the item(s) in stock. Selecting InventoryAvailability, means fabric looks at each of the eligible stores within your boundary and chooses the store with the most inventory. For example, if a store had 1 item remaining and another store had 5 of the same item within the search boundary, the order fulfillment would default to the store with more inventory.DistanceInventoryAvailability
Allow-Split-ShipmentsSetting this value to Yes enables orders to be fulfilled through multiple stores if the SKU’s or items are not available at a single location. Setting this value to No means that fabric must find a location that has every item for an order at a single fulfillment location. If fabric is unable to find all the items in the order at a single location, the entire order is canceled.Yes/No
Allow-Item-Level-Split-ShipmentSet this value to Yes if you want to look between locations to meet the item quantity request of an order. For example, if an order for 20 of the same office chair came in, and a location only had 15 available, the remaining 5 chairs would be sourced from another location. With this set to No, the remaining quantity of chairs are canceled and only the 15 at the first location are allocated.Yes/No
Max-Splits-AllowedThe maximum number of locations that a split order can be fulfilled from.Number
Exclude-ItemsAllows you to create an additional condition based on an item attribute. For example, if an item is less than $10, you can create a condition to ship it from a retail store near the customer to save on shipping costs.Yes/No

Creating a Fulfillment Rule Set

Requirements:

  • Allocate orders to different fulfillment locations based on a the selected shipping type during checkout.
  • Configure geographic distance rules for same day shipping.
  • Configure rules around split shipments.
  • Configure a price/margin rule for items under a certain cost.
  • Configure an auto cancel rule for shipments that cannot be fulfilled.
  • Create a default dropship rule to ship directly from the factory for orders that cannot be fulfilled from the main fulfillment locations.

Using the above requirements, the examples outlined in this document assume that both a web store and retail locations are available. The web store allows customers to select two different types of shipping: default and expedited. In the Order attribute are the attribute types STH (ship to home) and SDD (same day delivery). The rules that are created must automatically send an order to a specific location based on the shipping type selected during checkout.

The following examples outline how to create a rule set for each requirement. Although the conditions and requirements are separate examples in this document, note that all of the following examples make up a single Fulfillment Rule Set and that only one rule set can be active at any given time.

All of the examples below build upon one another.

Pre-requisites

Ensure you have the Orders & Inventory Editor or Administrator privilege for fabric Orders. For more information, see Role-Based Access Control.

Create a New Rule Set

  1. Using the left navigation, select Orders > Fulfillment.
    • The Fulfillment Rule Set page is displayed.
  2. Select the Create Rule Set button to create a new rule.
  3. In the Basic Information section, provide a Fulfillment rule set name, and optionally a description.
    • It’s best practice to always provide a description indicating what the rule is doing and its purpose.

Example 1 - Allocate orders to specific fulfillment locations

This example fulfills the following requirements:

  • Allocates orders to different fulfillment locations based on a the selected shipping type during checkout.
  • Geographic distance rules for same day shipping.
  • Creates rules for split shipments.

To create a rule, you must first define the condition for when the rule should be executed.

  1. In the Setup your set of rules section, a default rule is provided in the subsection for Order Level Rule Group. Select the edit icon to rename the default rule.
    • In this example, the first rule is called Allocate to fulfillment locations [ STH ].
    • Expanding the field reveals the Add condition and Add action buttons. A blank default condition and action are provided. The fields populated for Attribute name are all based on your Attribute type which is automatically set to Order. This cannot be changed.
  2. In the Attribute name dropdown, select type.
  3. In the Contains dropdown, select EQ.
  4. In the Add Value field, input STH as the value.
    • This condition makes it so an action is triggered when the condition for an order is STH. Note that in your instance, ship to home may not be equal to the value STH. For example, the value could be Ship_To_Home. It is suggested that you check your Order schema to determine what values are allowed/expected.

Once a condition is created, the Action type needs to be set. The Action type determines what happens when a condition is met. In this example, the action needs to direct STH orders to the DC fulfillment warehouse.

  1. Select Multi Location Single Ship Fulfillment from the Action type dropdown. Additional fields appear.
    • If you only have a single fulfillment location and are not expecting additional conditions, you can use Configured Location and enter the location number without needing to follow the remaining steps.
  2. Set the Included-Location-Types to where you want to fulfill STH orders.
    • In this example, STH orders need to be fulfilled in DC.
  3. The remaining available options are not needed in the STH use case. For more information on each of these fields, visit the Action fields table The following list is an example of what the default values look like:
    • Set Use-Geo-Location to No.
    • Leave all the boundary field values 0.
    • Set Prioritize-Location-By to Distance.
    • Set Allow-Split-Shipments to No.
    • Set Allow-Item-Level-Split-Shipments to No.
    • Set Allow-Partial-Fill to Yes.
    • Set Max-Splits-Allowed to 3.
    • Set Exclude-items set to No.

This creates our first rule which is executed when the shipping method STH is selected during checkout. However, in order to create a same day delivery SSD condition, an additional rule is needed.

  1. Select Add Rule.
  2. In the Attribute name dropdown, select type.
  3. In the Contains dropdown, select EQ.
  4. In the Add Value field, input SDD as the value.
    • This condition makes it so an action is triggered when the condition for an order is SDD (same day delivery). Note that in your instance, same day delivery may not be equal to the value SDD. For example, the value could be expedite or same_day_delivery. It is suggested that you check your Order schema to determine what value is expected.
  5. Set Included-Location-Types to the main warehouse DC and retail locations Store.
    • If we had additional distribution methods, they could be selected here.
  6. Set Use-Geo-Location to Yes.
    • The use geo-location feature looks at the customer’s location and sees if any of our location types within a set distance are able to fulfill the order.
    • Unlike STH, SDD requires that we take into consideration where the items are located in relation to the shipping location. This is because we want to fulfill the order as quickly as possible and ship from the closest location to the customer.
  7. Set the geo-location boundaries. The following settings look for a store from 0-100 miles from the customer’s shipping address that can fulfill the order. If the order cannot be fulfilled, it then searches between 100-200 miles and finally, 200-300 miles.
    • Set the Start-Boundary-In-Miles to 100.
    • Set the Inc-Boundary-In-Miles to 100.
    • Set the Max-Boundary-In-Miles to 300.
  8. Set Prioritize-Location-By to one of the following values:
    • Distance: The order fulfillment is completed by the nearest store with the items in stock.
    • InventoryAvailability: Looks at each of the eligible stores within the geo-location boundary and chooses based on maximum available stock. For example, if multiple stores had the items in stock and one store had 1 item remaining, whereas another store had 5, the order fulfillment would default to the store with 5 inventory.
  9. Split shipments are used to fulfill orders from multiple fulfillment locations. Each split shipment method changes how an order is fulfilled. Depending on your individual needs and logistics, one or more of these methods may not be feasible. Visit the Action fields table, for more information on each of these fields and examples.
    • Set Allow-Split-Shipments to Yes.
    • Set Allow-Item-Level-Split-Shipments to Yes.
    • Set Allow-Partial-Fill to Yes.
    • Leave Max-Splits-Allowed as the default value of 3.
  10. Set Exclude-items to No.

Example 2 - Create a price rule for items under a set cost

This example fulfills the following requirements:

  • Creates a price/margin rule for items under a certain cost.
  • Configures an auto cancel rule for shipments that cannot be fulfilled.

There are three ways to create price rules. If you must ship certain items from certain locations, it is recommended you use the third method described below:

  • Create a new rule with the condition specifying a price.
  • Add an item exclusion to an existing condition.
  • Use item level rules to provide a condition and action for all items within a certain price range.

If you wish to follow along, please review the following example Allocate Orders to Specific Fulfillment Locations. The example below builds upon this example.

The allocate orders to a specific fulfillment location rule set allocates ship to home STH orders to a DC fulfillment location. Same day delivery SDD orders are fulfilled based on geographical location and can be shipped from retail stores or the DC fulfillment location.

  1. Using the Allocate to fulfillment locations [ STH ] rule, set the Exclude-Items dropdown to Yes.
    • Enabling Exclude-items creates a new condition with the Attribute type default set to Item.
  2. Set the Attribute name to price.itemUnitPrice.
  3. Set Contains to LTE.
  4. In the Add Value field, input 5.
    • This condition now checks to see if any item is less than or equal to 5$. If an item meets this condition, it is excluded from the action with Exclude-Items value set to Yes. In other words, if Exclude-Items is Yes, fabric looks at the next action in a rule that has been specified.

At this point, if you do not configure a default “catch-all” condition or add an additional action, the items that fall under the exclude condition are never added to an order. This means those items are canceled and depending on if you have Allow-Partial-Fill enabled or not, the shipment is cancelled.

There are two options for making sure small items are shipped.

  • Create another action within the same rule where the exclusion exists.
  • Create an item level rule.

In this example an item level rule is created.

  1. Rename the default item rule from the Item Level Rule Group section to Items under 5$.
  2. Set the Attribute name to price.itemUnitPrice.
  3. Set Contains to LTE.
  4. In the Add Value field, input 5.
  5. Select the Multi Location Single Ship Fulfillment Method from the Action type dropdown.
  6. Set Included-Location-Types to include Store.
    • If instead of using retail stores you had specific warehouses to ship smaller items from, you could instead use Configured Location Fulfillment Method and enter the location numbers.
  7. Set Use-Geo-Location to Yes.
    • The locations should be limited based on shipping costs and logistics.
    • Set the Start-Boundary-In-Miles to 200.
    • Set the Inc-Boundary-In-Miles to 100.
    • Set the Max-Boundary-In-Miles to 400.
  8. Leave Prioritize-Location-By as the default Distance value.
    • This ensures the item is shipped from the closest store.
  9. Set all of the split shipment options to No.
    • It would be too costly to ship items under /$5 from multiple different locations for a single order.
    • Set Allow-Split-Shipments to No.
    • Set Allow-Item-Level-Split-Shipments to No.
    • Set Allow-Partial-Fill to No.
      • You can choose to enable partial fill if you want to partially fill an order.
    • Leave Max-Splits-Allowed as the default value of 3.
  10. Set Exclude-Items to No.

This item level rule accounts for all items under /5andshipsitemsunder/5 and ships items under /5 from the nearest retail location.

Example 3 - Create a default dropship action

Sometimes you are unable to fulfill an order from any of your available fulfillment locations. When this happens, you can create an action to fulfill the order directly from a factory dropship location. With this type of action in place, orders with partially filled SKUs and items not currently in stock can still be fulfilled.

If you wish to follow along, please review the following example Allocate Orders to Specific Fulfillment Locations. The example below builds upon this example. The allocate orders to a specific fulfillment location rule set allocates ship to home STH orders to a DC fulfillment location. Same day delivery SDD orders are fulfilled based on geographical location and can be shipped from retail stores or the DC fulfillment location.

In this example, an additional action is added to backfill orders with no current inventory. If an order cannot be fulfilled, the remaining items are sent to a dropship location to be filled at a later time.

  1. In the Allocate to fulfillment locations [ STH ] rule, select the Add action button.
    • You will already have an action to fulfill orders from DC from the previous example. A new action must be created under it.
  2. Select the Multi Location Single Ship Fulfillment Method from the Action type dropdown.
  3. Set Included-Location-Types to include Dropship, store, and DC.
    • All the locations are selected to ensure the order is fulfilled if possible.
  4. Make sure that Allow-Partial-Fill for the original (first) action is set to Yes.
    • If this is disabled, the order will be canceled because it cannot be fulfilled in the first action. Actions execute from the top down.
    • Alternatively, if you wanted to guarantee that an order is fulfilled, you would also set Allow-Item-Level-Split-Shipments and Allow-Split-Shipments to Yes. However, this can complicate shipping logistics making it so certain orders might have multiple shipping locations for different SKUs. Check with your team to determine what settings should be enabled based on your individual needs.
  5. All remaining fields can be left as their default values.