Siebel Field Service Guide > Fulfillment > Fulfillment Overview >

Fulfillment Engine


The Fulfillment Engine automatically finds and allocates products for selected service orders, and produces pick tickets to use for the orders. The engine uses the following information to find a product:

  • Distances of source inventory locations to the order address.
  • Priority of an order, which can influence fulfillment relationships. For moreinformation, see the Order Priority field in Relationships View.
  • Types of inventory locations.
  • Customer's preferred inventory location. Each account has a default inventory location.
  • Relationships among inventory locations (to determine which location to query next if the product cannot be found in a location).
  • Product information (for example, available substitutes).

The engine can run from the Field Service user interface, in batch mode using the Repeat Interval, or by Siebel Business Process Designer. As a batch process, fulfillment can be initiated at regular intervals (for example, twice a day for pending high-priority orders or once a day for other orders) or according to conditions (for example, high-priority orders might be fulfilled immediately).

The Fulfillment Engine uses information entered elsewhere in Field Service to decide how to fulfill an order. For example, it considers account information to select the default source inventory location if no source inventory location is specified at the order and the order line item level. Where substitution of products is necessary, the engine uses substitutes specified for a product. If the product is out of stock at the warehouse of first choice, it reads the fulfillment relationships between inventory locations to determine from which other warehouse to fulfill the order. For more information, see Inventory Relationships.

The Fulfillment Engine produces this output:

  • Allocated parts for each order.
  • Pick tickets to be used by picker to pick, pack, and ship each order.
  • Inventory transactions for part allocation.

NOTE:  For the Fulfillment or Part Locator Engines to allocate a line item from inventory, the line item must have a status of On-Hand for Inventory Level.

How the Fulfillment Engine Finds Fulfillment Inventory Locations

When fulfilling an order, the Fulfillment Engine looks for parts in this order:

  1. The source inventory location, if any, defined in the Line Details subview. For more information, see Line Detail Subview.
  2. The source inventory location defined in the Fulfillment view. This may be different from the source location in the Line Details subview. For more information, see Fulfillment View.
  3. The inventory location, if any, defined in the Accounts screen. For more information, see Accounts View.
  4. The server component parameter for DefaultFulfillInvLoc. For more information, see Parameters for the Fulfillment and Part Locator Engines.

Fulfill Command

The Fulfill command on the Orders screen finds the order line items, allocates these items, and generates a pick ticket record for the item. (The Shipping screen, PickTickets view processes pick ticket records.) The Part Locator carries out each of these tasks separately, controlled by the Locate, Allocate, and Generate PickTickets commands.

Locate Button

The Locate button on the Orders screen, Line Items view finds in inventory the product specified in an order line item. It also finds substitutes if the product is unavailable. For more information about this function, see Fulfillment Engine.

Allocate Button

The Allocate button on the Orders screen, Line Items view, Part Locator subview creates an inventory transaction of the type Allocate (see Table 88) that reserves the product.

Generate PickTickets Command

The Generate PickTickets command on the Orders screen produces a pick ticket record. The logic for the command follows:

  • For each line item action of the type Allocate, where the item is not on a pick ticket (the Shipment number field in the Line Items view, Actions subview is blank), the Generate PickTickets function tries to create a valid pick ticket (a new row in table S_SHIPMENT). In doing so, it looks at the source inventory where the allocation is done.

    If this inventory is not of the type defined for the InventoryTypeForPT system preference, then it tries to find a parent inventory for the source inventory with the type defined in the InventoryTypeForPT system preference (the default for this is Warehouse). If one is found, then it generates a pick ticket record for this location. For other line item actions that have same source, the same pick ticket is used. A new pick ticket is generated only when source warehouses are different.

  • Associates the line item action to that pick ticket by updating the Shipment number field.

Figure 12 shows how the Fulfillment Engine works for an order. For each line item to be fulfilled, it does the following:

  1. Sets the source as the default source for the line item or the customer site.
  2. Generates a prioritized list of inventory locations based on distance to the order address, order priority, and warehouse type.
  3. If the prioritized list of inventory locations is not empty, populates inventory from the list and sets the source as the inventory location.
  4. Allocates the lesser of the quantity available for this product and the order quantity pending.
  5. If the quantity allocated does not equal the quantity pending, reviews possible substitutes for the product and allocates as appropriate.
  6. If the quantity allocated still does not equal the quantity pending, sets the source as the next source for this order priority.
  7. If there is a next source, repeat Step 2 through Step 6. If there is no next source, starts again at Step 1.
  8. When no line items remain to be fulfilled, generates a pick ticket per selected inventory location.
Figure 12.  Logic for Fulfillment Engine
Click for full size image
Siebel Field Service Guide