CreateFulfilmentWithSourcingProfile
Changed on:
27 Aug 2026
Overview
Create Fulfillment(s) using the specified Sourcing Profile.| Plugin Name | Order Reference Module |
|---|---|
| Namespace | [[account.id]].order |
UI Description
Apply the Sourcing Profile identified by {sourcingProfileRef} to a Sourcing Request (Order, Fulfillment Option, etc.) and produce Fulfillment(s).
Accepts
- ORDER
- FULFILMENT_CHOICE
Actions
- This Rule produces a MutateAction
Rule parameters
| Name | Type | Description |
`sourcingProfileRef` | `String` | Reference to the Sourcing Profile to apply. |
Event attributes
Exceptions
- This Rule throws a
`PropertyNotFoundException`when the Rule parameter(s) is not provided.
- This Rule throws an
`IllegalArgumentException`if Sourcing Conditions or Criteria are improperly configured
Configuration example
1{
2 "name": "[[account.id]].order.CreateFulfilmentWithSourcingProfile",
3 "props": {
4 "sourcingProfileRef": "GLOBAL_DEFAULT"
5 }
6}Detailed Technical Description
This Rule executes the following steps:1. Validate the`sourcingProfileRef` parameter.2. Load the Sourcing Profile using the provided reference (`SourcingUtils.loadSourcingProfile`).3. Verify that the Sourcing Profile contains at least one Primary Sourcing Strategy.4. Load the Sourcing Context and identify Unfulfilled Items (`SourcingContextUtils.loadSourcingContext`).5. Iterate over the Primary Sourcing Strategies in `priority` order (`SourcingUtils.getPlanFinder().nextFullPlan()`).For each Strategy:
- Confirm that the Strategy
`status`is`ACTIVE` - Evaluate the Sourcing Conditions against the current Sourcing Request (skip the Strategy if its Conditions are not met)
- Load Locations for the Strategy Network and rank them using the ATS-Agnostic Sourcing Criteria
- Evaluate Locations using a
`ChunkLoadingPlanFinder`that loads Locations and Virtual Positions (`SourcingUtils.loadPositions`) in incremental chunks sized proportionally to the order's item count. Virtual Positions with status`ACTIVE`,`AT_RISK`, and`OUT_OF_STOCK`are included. A single-location search is run after each chunk. A multi-split search is run across the full evaluated set if no single-location plan is found (`SourcingUtils.findPlanForAllItems`):- Before entering permutation search, an early availability check sums available quantities for each required item across all candidate Locations. If any item cannot be covered, permutation search is skipped
- If the Plan is fully sourced → stop and return it
- If not → continue to the next Strategy
- If no Strategy produces a fully sourced Plan → return an empty Sourcing Plan
`OrderUtils.fillFulfilmentType`).8. Create the Fulfillment(s) (`OrderUtils.createFulfilments`).`SourcingUtils.captureAudit` → `createSourcingAudit` mutation). Version History
See previous versions
v26.8.13
Key Changes:- This rule now evaluates all eligible Locations via incremental chunk loading - a single-location search runs after each chunk, and a multi-split search runs across the full evaluated set if no single-location plan is found
- An early availability check skips permutation search when the order cannot be fully sourced from the available stock
- Virtual Positions with status
`AT_RISK`and`OUT_OF_STOCK`are now included when loading Locations during sourcing - Fulfillments are now assigned deterministic references to prevent duplication during concurrent re-sourcing