ERP Core / Sales OMS

Sales OMS - Core Domain Concepts & Structural Topology

Channel and ingestion topology, order hierarchy tree, and fulfillment routing engine logic.

Core Domain Concepts & Structural Topology

The Sales / OMS domain unifies demand from many channels into a single commercial model, structures orders into a hierarchy of fulfillment commitments, and routes those commitments to the most appropriate supply nodes.


1. Channel & Ingestion Topology

All customer demand enters through inbound channels and is normalized by a unified ingestion pipeline:

Inbound Channels
├── E-Commerce Storefront
├── Mobile Application
├── B2B Portal / EDI
├── Manual Sales Desk
└── POS Sync
        |
        v
Unified OMS Ingestion Pipeline
├── Channel Adapter (normalize payload)
├── Pricing Engine (resolve tiers & discounts)
├── Availability Check (soft reservation / ATP)
├── Fraud & Validation Gate
└── Order Canonicalization
ChannelCharacteristics
E-Commerce StorefrontHigh-volume, consumer-facing, real-time stock checks, promotional pricing.
Mobile ApplicationSimilar to storefront, with location-aware features and push notifications.
B2B Portal / EDIContract pricing, scheduled delivery, bulk quantities, negotiated terms.
Manual Sales DeskPhone or counter orders entered by representatives, often for exceptions.
POS SyncRetail point-of-sale transactions synchronized into the unified order ledger.

Canonicalization Rules

  • Every channel-specific order is translated into the same internal order structure.
  • Channel origin is retained for reporting and routing but does not alter core order invariants.
  • Duplicate ingestion is prevented through idempotent order keys per channel.

2. Order Hierarchy Tree

A sales order is decomposed into a tree of executable fulfillment instructions:

Master Sales Order
├── Header (customer, channel, currency, payment terms)
├── Fulfillment Batch / Split Shipment 1
│   ├── Sourcing Node: Warehouse A
│   ├── Line Item 1
│   ├── Line Item 2
│   └── Shipping Schedule
├── Fulfillment Batch / Split Shipment 2
│   ├── Sourcing Node: Store B
│   ├── Line Item 3
│   └── Shipping Schedule
└── Billing Schedule
LevelPurpose
Master Sales OrderThe commercial contract with the customer, including totals, terms, and statuses.
Fulfillment BatchA logical grouping of lines to be sourced and shipped together from one node.
Line ItemA single product or service with quantity, price, discount, and tax attributes.
Shipping SchedulePromised ship date, carrier service level, and delivery address for a batch.
Billing ScheduleInvoicing timing and payment method associated with the order.

3. Fulfillment Routing Engine

The routing engine determines the optimal sourcing node for each fulfillment batch based on configurable policies:

PolicyDescription
Single-Node FulfillmentAssign the entire order to one node that can satisfy all lines.
Proximity FulfillmentSelect the node closest to the delivery address to minimize transit time.
Stock Priority FulfillmentSelect the node with the highest ATP for the ordered items.
Cost-Optimized FulfillmentMinimize total fulfillment cost considering shipping, handling, and node operating costs.
Service-Level FulfillmentPrioritize nodes capable of meeting the promised delivery date.

Routing Constraints

  • A line can only be hard-allocated to a node with positive ATP.
  • Splitting is avoided when possible to reduce shipping cost and customer friction.
  • Customer-specific routing rules (e.g., always ship from a designated regional depot) override generic policies.
  • Dropship lines bypass internal nodes and route directly from a supplier to the customer.

Our Premium Sponsors

Obelaw is proudly open-source. Continued development, bug fixes, and community support are made possible by the generosity of our sponsors.

Sponsor Obelaw