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:

SettingDescription
PropertiesKey-value pairs that control step behavior
Market restrictionsLimit execution to specific markets
Store/Warehouse restrictionsLimit execution to specific locations
Shipment optionsFilter by shipping method
TagsFilter by order tags
StopOnErrorWhether to halt the workflow if this step fails

Step Categories

Workflow steps are organized into functional categories:

CategoryDescriptionSteps
AllocationWarehouse assignment, order splitting, reallocation26
PaymentPayment capture, authorization, refunds, invoicing18
InventoryStock reservation, reduction, ATP calculation14
ShipmentsShipment creation, label printing, status updates14
EnrichmentOrder data enrichment, tagging, barcode generation22
ValidationOrder validation, fraud checks, payment verification7
ExportERP export, webhooks, external system integration5
NotificationsEmail and SMS notifications1
CustomersCustomer creation, loyalty points6
WorkflowStatus changes, workflow control5
AnalyticsAnalytics indexing1
SubscriptionsSubscription order creation2
Purchase OrdersPO creation from orders3

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:

var warehouseCode = workflowStep.GetProperty("warehouseCode")?.Value;
var skipManual = workflowStep.GetPropertyAsBool("SkipForManualOrder", true);
var storeRoles = workflowStep.GetProperties("storeRoles")?.Select(x => x.Value).ToList();

Result Handling

StatusMeaning
SuccessStep completed successfully
WarningStep completed with a non-critical issue
ErrorStep 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:

  1. TryReallocateToOtherWarehouse - Attempts to find alternative warehouse inventory if primary warehouse lacks stock
  2. ProductPackageBreakDown - Breaks down bundled products into individual components for fulfillment
  3. TransferReplacementOrderPayment (invisible) - Transfers payment from original order to replacement orders (only executes for orders with IsReplacementOrder property set)
  4. CheckAndUpdateCouponUsage - Validates and marks coupons as used to prevent double redemption
  5. UpdateOrderLineReservedInventory - Updates inventory reservations at the line level
  6. EnrichOrderFromProducts - Adds product details, weights, dimensions from product catalog
  7. TrySplitUnreservedOrderLinesToNewShipment - Splits unreserved order lines to a separate shipment for allocation
  8. Notification - Sends notifications (email/SMS) based on order status
  9. IncreaseReservedInventory - Increases reserved inventory for order lines
  10. EnrichShipmentLabel - Enriches shipping label information from shipping options
  11. SetAuthorizationExpires (invisible) - Sets payment authorization expiration timeframe
  12. GetOrCreateCustomerFromOrder - Creates or updates customer record
  13. CustomerClubCalculateNewPointsOnHold (invisible) - Calculates loyalty points (held pending completion)
  14. CalculateAtp (runs after save) - Recalculates Available-to-Promise inventory levels

Status: InProgress (2 workflow steps)

When order moves to processing:

  1. Notification - Sends notifications that order is being prepared
  2. UpdateShipmentStatus - Updates shipment status

Status: Ship (11 workflow steps)

When order is shipped to customer:

  1. UpdateShipmentStatus - Updates shipment to "Released"
  2. CapturePayments - Charges the customer's payment method
  3. ReduceInventoryAndReservedInventory - Removes items from available inventory
  4. CompleteShipment - Marks shipment as completed in carrier system
  5. Notification - Sends shipping confirmation notifications with tracking info
  6. RemoveAuthorizationExpires (invisible) - Removes payment auth expiration
  7. TryReleaseRemainingAuth (invisible) - Releases any unused payment authorization
  8. SetCompletedDate - Records order completion timestamp
  9. CustomerClubMoveFromOnHoldToEarnedPoints (invisible) - Converts held points to earned points
  10. CustomerClubCancelNewPointsOnHold (invisible) - Cleans up temporary point calculations
  11. CustomerClubCalculateAndUpdateTierForMember (invisible, runs after save) - Updates customer loyalty tier