Order Module 2.2.0 - Greater Sourcing Control and More Reliable Re-Sourcing
Release
Author:
Kirill Gaiduk
Changed on:
13 Aug 2026
| Target release date: | 2026-08-13 |
|---|---|
| Release status: | Released |
Description
Order Module 2.2.0 extends the Responsive Sourcing Framework (RSF) with greater flexibility, foundational fulfillment options integration enhancements, and reliability improvements.Sourcing profiles now give you full control over the criteria applied during strategy evaluation. Previously, rejected-location exclusion behavior was enforced by the framework regardless of your configuration. With this release, rejected location exclusion criterion becomes a standard reference criterion. Add it to your strategies when you need it, or leave it out when you don’t.The sourcing utilities library introduces foundational enhancements for Responsive Sourcing integration with fulfillment options workflows, including:- ETA calculator injection support
- Multi-attempt fulfillment plan generation
- Concurrent re-sourcing from simultaneous fulfillment expiry no longer produces duplicate fulfillments or incorrect allocation quantities (requires
`fc.api.fulfilment.uniqueness`configuration) - Fallback sourcing now selects locations based on the items still to be fulfilled at each step, not the full original order
- All eligible locations in the sourcing network are now evaluated during primary sourcing
- Primary sourcing exits early when the available stock across candidate locations cannot cover the order, reducing unnecessary processing time
- Escalated fulfillments - routed to customer service when Responsive Sourcing cannot fulfill all items after primary and fallback strategies - now contain only unsourced items with their correct product references, keeping already allocated items separate
- Locations with
`AT_RISK`and`OUT_OF_STOCK`virtual position (VP) statuses are now included as sourcing candidates alongside`ACTIVE`VPs - Rejected fulfillments now carry the correct rejected quantity on their fulfillment items
Changelog
Framework & Sample Data Module
`RejectedLocationExclusionCriterion`is no longer injected automatically during sourcing strategy evaluation. Add it explicitly to the relevant sourcing profile strategies- Sample data sourcing profiles (
`CC_DEFAULT`,`HD_DEFAULT`,`MULTI_DEFAULT`) now include`RejectedLocationExclusionCriterion`explicitly in both primary and fallback strategies
- Updated the
`fc.rubix.order.sourcing.criteria`setting to list`RejectedLocationExclusionCriterion`as an available reference criterion - Added the new
`REF_ONLY`value to the`fc.api.fulfilment.uniqueness`setting
When configured, the setting ensures fulfillment uniqueness based on the fulfillment reference. It deduplicates concurrent creation attempts that use the same reference so that only one fulfillment record is persisted. Existing setting values are unaffected
- Added the new
`ReSourceOrder`ruleset to CC, HD, and Multi order workflows
When triggered, it schedules two`SourceOrder`attempts using`ScheduleEventWithRandomOffset`with configurable delays and offset percentages. This prevents simultaneous sourcing executions for the same order when multiple fulfillments expire concurrently - Updated the
`FulfilmentExpiry`ruleset to route to`ReSourceOrder`instead of directly to`SourceOrder`
All other sourcing entry points (`PartiallyFulfilled`,`AllRejected`,`RejectFulfilment`,`ReassignRejections`) continue to route directly to`SourceOrder`and are unchanged
`CreateFulfilmentWithSourcingProfile`: now evaluates all eligible locations via incremental chunk loading, performs an early availability check before entering permutation search, and recalculates location ratings after each iteration in fallback sourcing. See Sourcing Utilities section for implementation details`CreateFulfilmentWithSourcingProfile`and`CreatePartialFulfilmentWithSourcingProfile`now include locations with`AT_RISK`and`OUT_OF_STOCK`virtual position statuses as sourcing candidates, in addition to`ACTIVE`ones`CreateRejectedFulfilment`now sets the rejected quantity to 0 for items in a rejected fulfillment. Previously, the full requested quantity was incorrectly set as the rejected quantity
- Renamed the rejected location exclusion criterion
`type`identifier from`fc.sourcing.criterion.locationExclusion`to`fc.sourcing.criterion.rejectedLocationExclusion` - Added
`getCriteria(SourcingStrategy)`as the new signature for retrieving criteria for a strategy.`getCriteria(strategy, defaultCriteria)`and`getDefaultCriteria()`are deprecated - Chunk loading architecture: location evaluation now uses a
`ProfileStrategyPlanFinder`→`ChunkLoadingPlanFinder`→`AllItemsPlanFinder`chain`ChunkLoadingPlanFinder`loads locations in incremental chunks sized proportionally to the order's item count and runs a single-location search after each chunk. A multi-split search is run across the full evaluated set if no single-location plan is found - Early availability check: before entering permutation search, the combined available quantity for each required item is summed across all candidate locations. If any item cannot be covered, the permutation search is skipped and sourcing proceeds directly to the next strategy
- Fallback sourcing: location ratings are now recalculated after each allocation iteration using remaining unfulfilled items, ensuring each location selection reflects actual demand at that point in the iteration
- ETA Calculator: the injectable
`EtaCalculator`function runs for each fulfillment plan and its fulfillments, with access to selected locations and event context. Additional GraphQL queries are supported within the calculator - Added the
`availableQty`field to`FulfilmentItem`and`CreateFulfilmentPlanFulfilmentItemInput`. The value is saved on the fulfillment plan at sourcing time - Multi-attempt sourcing:
`getPlanFinder`is the preferred entry point - it returns a`SourcingPlanFinder`exposing`nextFullPlan()`(primary) and`nextFallbackPlan()`(fallback), loading sourcing data at most once per variant so alternative plans can be generated without reloading. The lower-level factory methods`getBasedOnStrategiesPlanFinder`and`getBasedOnFallbackStrategiesPlanFinder`are available for decorator/wrapping scenarios - Extracted
`findPartialFulfilmentPlan`as a public static method - Deterministic fulfillment reference format (
`createFulfilments`): fulfillments are now created with a sequential one-based index reference`{orderId}-{fulfilmentChoiceId}-{index}`. The index starts at the number of existing fulfillments for the order plus one. This ensures that concurrent sourcing processes operating from the same starting state generate identical references, enabling deduplication via`fc.api.fulfilment.uniqueness`
Limitations
- Duplicate fulfillment prevention during concurrent re-sourcing requires explicit configuration of
`fc.api.fulfilment.uniqueness`=`REF_ONLY`. Without this setting, concurrent sourcing behavior is unchanged - The unique constraint on the combination of order and unique reference applies only to fulfillments created after the production release date. Pre-existing fulfillment records are not affected
- The ReSourceOrder ruleset depends on the
`ScheduleEventWithRandomOffset`rule, which is delivered in Core Reference Module v2.3.0. Core Reference Module v2.3.0 must be deployed alongside Order Reference Module v2.2.0 for staggered re-sourcing to function - Customers upgrading from a previous version who relied on automatic injection of
`RejectedLocationExclusionCriterion`must add this criterion explicitly to their sourcing profile strategies before or after upgrading. Without this update, previously rejected locations will no longer be excluded from sourcing
Packages
| Released capability depth: | Enhancement |
|---|---|
| Release bundle / Capability type: | Module |
