Workflow Steps
Complete reference for all workflow steps (OrderActions) in Omnium OMS - the building blocks of order processing workflows.
Workflow steps are the core building blocks of order processing in Omnium. Each step performs a specific action on an order or shipment, such as allocating inventory, capturing payments, sending notifications, or exporting to external systems.
How Workflow Steps Work
Workflow steps are configured in Workflows and execute automatically as orders move through different statuses. Each step:
- Receives the current Order, optional Shipment, and WorkflowStep configuration
- Performs its action and returns a result (Success, Warning, or Error)
- Can optionally trigger a status change or cancel the workflow on failure
Configuration
Each workflow step can be configured with:
| Setting | Description |
|---|---|
| Properties | Key-value pairs that control step behavior |
| Market restrictions | Limit execution to specific markets |
| Store/Warehouse restrictions | Limit execution to specific locations |
| Shipment options | Filter by shipping method |
| Tags | Filter by order tags |
| StopOnError | Whether to halt the workflow if this step fails |
Step Categories
Workflow steps are organized into functional categories:
| Category | Description | Steps |
|---|---|---|
| Allocation | Warehouse assignment, order splitting, reallocation | 26 |
| Payment | Payment capture, authorization, refunds, invoicing | 18 |
| Inventory | Stock reservation, reduction, ATP calculation | 14 |
| Shipments | Shipment creation, label printing, status updates | 14 |
| Enrichment | Order data enrichment, tagging, barcode generation | 22 |
| Validation | Order validation, fraud checks, payment verification | 7 |
| Export | ERP export, webhooks, external system integration | 5 |
| Notifications | Email and SMS notifications | 1 |
| Customers | Customer creation, loyalty points | 6 |
| Workflow | Status changes, workflow control | 5 |
| Analytics | Analytics indexing | 1 |
| Subscriptions | Subscription order creation | 2 |
| Purchase Orders | PO creation from orders | 3 |
Identifying Workflow Steps
Each workflow step has a unique Key identifier used in configuration. This key is shown in the documentation for each step and matches the value in FactoryContants.OrderActions.
Example: The "Allocate to Warehouse" step has key AllocateToWarehouse.
Common Patterns
Test Mode
Most workflow steps support test mode (context.IsTest = true), which returns a simulated result without performing actual operations. This is useful for validating workflow configuration.
Market/Store Restrictions
Steps can check workflowStep.IsAvailableForMarket(order.MarketId) to skip execution for orders from non-configured markets.
Property Configuration
Steps read configuration from workflow step properties:
Result Handling
| Status | Meaning |
|---|---|
| Success | Step completed successfully |
| Warning | Step completed with a non-critical issue |
| Error | Step failed - may cancel workflow if StopOnError is set |
When a step sets CancelWorkflow = true, remaining steps in the workflow are skipped.
When a step sets TriggerNewStatus, the order transitions to that status after the workflow completes.
Example: Online Order Happy Flow
This example shows a typical Online order type "happy flow" - where everything goes smoothly without cancellations, returns, or other complications. The "Online" order type handles standard e-commerce scenarios - orders placed online that are fulfilled either from a central warehouse or directly from a store.
The configurations shown here are examples. Your actual setup will likely be different - it might be less complex or more complicated.
Status: New (14 workflow steps)
When an online order is created:
- TryReallocateToOtherWarehouse - Attempts to find alternative warehouse inventory if primary warehouse lacks stock
- ProductPackageBreakDown - Breaks down bundled products into individual components for fulfillment
- TransferReplacementOrderPayment (invisible) - Transfers payment from original order to replacement orders (only executes for orders with
IsReplacementOrderproperty set) - CheckAndUpdateCouponUsage - Validates and marks coupons as used to prevent double redemption
- UpdateOrderLineReservedInventory - Updates inventory reservations at the line level
- EnrichOrderFromProducts - Adds product details, weights, dimensions from product catalog
- TrySplitUnreservedOrderLinesToNewShipment - Splits unreserved order lines to a separate shipment for allocation
- Notification - Sends notifications (email/SMS) based on order status
- IncreaseReservedInventory - Increases reserved inventory for order lines
- EnrichShipmentLabel - Enriches shipping label information from shipping options
- SetAuthorizationExpires (invisible) - Sets payment authorization expiration timeframe
- GetOrCreateCustomerFromOrder - Creates or updates customer record
- CustomerClubCalculateNewPointsOnHold (invisible) - Calculates loyalty points (held pending completion)
- CalculateAtp (runs after save) - Recalculates Available-to-Promise inventory levels
Status: InProgress (2 workflow steps)
When order moves to processing:
- Notification - Sends notifications that order is being prepared
- UpdateShipmentStatus - Updates shipment status
Status: Ship (11 workflow steps)
When order is shipped to customer:
- UpdateShipmentStatus - Updates shipment to "Released"
- CapturePayments - Charges the customer's payment method
- ReduceInventoryAndReservedInventory - Removes items from available inventory
- CompleteShipment - Marks shipment as completed in carrier system
- Notification - Sends shipping confirmation notifications with tracking info
- RemoveAuthorizationExpires (invisible) - Removes payment auth expiration
- TryReleaseRemainingAuth (invisible) - Releases any unused payment authorization
- SetCompletedDate - Records order completion timestamp
- CustomerClubMoveFromOnHoldToEarnedPoints (invisible) - Converts held points to earned points
- CustomerClubCancelNewPointsOnHold (invisible) - Cleans up temporary point calculations
- CustomerClubCalculateAndUpdateTierForMember (invisible, runs after save) - Updates customer loyalty tier
