Ongoing WMS

Comprehensive technical documentation for the Omnium Ongoing Warehouse Management System integration. Learn how to configure, sync orders, inventory, products, and deliveries with Ongoing WMS.

The Omnium Ongoing integration provides a bidirectional synchronization between Omnium OMS and Ongoing Warehouse (WMS). This integration enables automated warehouse fulfillment workflows including order export, inventory synchronization, product management, delivery tracking, and return processing.

Overview

The integration supports:

  • Order Export: Exports orders to Ongoing for warehouse fulfillment
  • Order Sync: Receives order status updates (shipped, picked, canceled) from Ongoing
  • Inventory Sync: Synchronizes stock levels from Ongoing warehouses
  • Product Export: Exports product/article data to Ongoing
  • Delivery Export: Exports purchase orders (inbound deliveries) to Ongoing
  • Purchase Order Sync: Receives goods reception updates from Ongoing
  • Return Sync: Processes returns registered in Ongoing

Architecture

┌─────────────┐                    ┌─────────────────┐
│   Omnium    │◄──────────────────►│  Ongoing WMS    │
│     OMS     │   REST API         │                 │
└─────────────┘                    └─────────────────┘
      │                                    │
      │ ┌─────────────────────────────────┐│
      │ │  Data Flows:                    ││
      │ │  → Orders (export)              ││
      │ │  ← Order status (sync)          ││
      │ │  → Products/Articles (export)   ││
      │ │  ← Inventory levels (sync)      ││
      │ │  → Deliveries/POs (export)      ││
      │ │  ← PO status & reception (sync) ││
      │ │  ← Returns (sync)               ││
      │ └─────────────────────────────────┘│
      ▼                                    ▼

Configuration

Connector Options

The Ongoing integration is configured via connector options in the tenant settings. Add a connector with the name Ongoing.

PropertyTypeDescription
HoststringThe Ongoing API base URL (e.g., https://api.ongoingwarehouse.com/)
UsernamestringAPI username for authentication
PasswordstringAPI password for authentication
SyncOrdersboolEnable order status synchronization from Ongoing
SyncPurchaseOrdersboolEnable purchase order/delivery synchronization
SyncInventoryboolEnable inventory level synchronization
SyncReturnsboolEnable return synchronization
ShippedOrderStatusstringOmnium status a shipped order is set to when Ongoing reports it as shipped. Defaults to ShippedFromWarehouse. Set this when your workflow uses a different status name for shipped orders (for example Ship). See Shipped Order Status.

Example Configuration

{
  "Connectors": [
    {
      "Name": "Ongoing",
      "Host": "https://api.ongoingwarehouse.com/",
      "Username": "your-username",
      "Password": "your-password",
      "Properties": [
        { "Key": "SyncOrders", "Value": "true" },
        { "Key": "SyncPurchaseOrders", "Value": "true" },
        { "Key": "SyncInventory", "Value": "true" },
        { "Key": "SyncReturns", "Value": "true" }
      ]
    }
  ]
}

Store/Warehouse Configuration

For each warehouse that should integrate with Ongoing, configure the following properties on the Store entity:

PropertyTypeDescription
IsOngoingStoreboolSet to true to mark the store as an Ongoing warehouse
OngoingGoodsOwnerIdExternalIdThe Goods Owner ID in Ongoing (numeric)
OngoingWarehouseIdExternalIdThe Warehouse ID in Ongoing (numeric)

Example Store Configuration

{
  "Id": "warehouse-01",
  "Name": "Main Warehouse",
  "IsWarehouse": true,
  "Properties": [
    { "Key": "IsOngoingStore", "Value": "true" }
  ],
  "ExternalIds": [
    { "Provider": "OngoingGoodsOwnerId", "ExternalId": "123" },
    { "Provider": "OngoingWarehouseId", "ExternalId": "456" }
  ]
}

Order Export

Orders are exported to Ongoing by the ExportOrder workflow step. Adding the Ongoing connector alone does not export anything — the step is the trigger.

Workflow Step

Add an ExportOrder step to the order workflow, on the status where the order should be sent to the warehouse (typically New). Set RunAfterOrderIsSaved to true so the step runs after the order has been saved — once the earlier workflow steps have enriched and allocated it — and the order is exported in its final, persisted state:

{
  "Name": "ExportOrder",
  "Connector": "Ongoing",
  "Active": true,
  "RunAfterOrderIsSaved": true
}

Export Flow

  1. The order reaches a status where the ExportOrder step runs
  2. The system checks if the shipment's warehouse is marked as an Ongoing warehouse (IsOngoingStore is true)
  3. Each shipment is exported as a separate order to Ongoing (format: {OrderNumber}-{ShipmentId})
  4. The Ongoing Order ID is stored as an external ID on the shipment
  5. Shipment status is updated to InProgressWarehouse

Order Mapping

Omnium FieldOngoing FieldDescription
OrderNumber + ShipmentIdOrderNumberCombined as {OrderNumber}-{ShipmentId}
OrderTypeOrderType.CodeOrder type code
CustomerEmailEmailNotification.ValueCustomer email for notifications
CustomerPhoneSmsNotification.ValueCustomer phone for notifications
ShippingAddressConsigneeDelivery address details
OrderNotesOrderRemarkCombined order notes
ShippingTotalFreightPriceShipping cost

Transporter Mapping

The integration supports multiple transporter integrations:

  • Unifaun: Maps transporterCode, transporterServiceCode, and servicePointCode
  • Porterbuddy: Special handling with ONGOING_PORTERBUDDY transporter code
  • Ingrid: Maps TOS ID to PreparedTransportDocumentId

Order Cancellation

When an order or shipment is canceled in Omnium, the integration updates the Ongoing order status to 1000 (Canceled).

Order Synchronization

The OngoingSyncScheduledTask periodically fetches order updates from Ongoing and synchronizes them back to Omnium.

Sync Flow

  1. Scheduled task queries Ongoing for orders changed since last sync
  2. Each changed Ongoing order is matched to an Omnium order and shipment. Only shipments currently at InProgressWarehouse (the status set when the order was exported) are considered
  3. The Ongoing status is mapped to an Omnium status via the OngoingStatus property on the order status configuration
  4. If the mapped status is a shipped, picked-up, or canceled status, the shipment is advanced and its workflow runs
  5. Tracking information (waybill, tracking URL) is updated on shipments
  6. Shipping labels are downloaded and stored in blob storage
  7. For partial deliveries, new shipments are created in Omnium

Status Mapping

Configure status mapping via the OngoingStatus property on your order status configuration:

{
  "OrderStatuses": [
    {
      "Name": "ShippedFromWarehouse",
      "Properties": [
        { "Key": "OngoingStatus", "Value": "Skickat" }
      ]
    }
  ]
}

The mapped Omnium status must be one of the recognized target statuses: Ship, PickedUp, OrderCanceled, or ShippedFromWarehouse. If the OngoingStatus property points to any other status, the sync does not advance the order.

Shipped Order Status

By default, an order reported as shipped by Ongoing is set to ShippedFromWarehouse. If your workflow's shipped status uses a different name (for example Ship), set the ShippedOrderStatus connector option to that name so the order lands on the correct status:

{ "Key": "ShippedOrderStatus", "Value": "Ship" }

If the shipped order is set to a status name that does not exist in your workflow, no workflow steps run for it (payment capture, inventory reduction, notifications), and the order appears to stall. Make sure the target status — either ShippedFromWarehouse or the value of ShippedOrderStatus — exists in your order workflow.

Tracking Information

The following tracking data is synchronized from Ongoing:

FieldSourceDescription
ShipmentTrackingNumberWaybill or ParcelNumberTracking number
ShipmentTrackingLinkTrackingUrlLink to carrier tracking page
LabelLinkOrder files (label*.pdf)Shipping label PDF (stored in blob)
ReturnLabelLinkOrder files (return*.pdf)Return label PDF (stored in blob)

Return Synchronization

Returns registered in Ongoing are automatically synchronized to Omnium and create return records.

Return Flow

  1. The scheduled task queries Ongoing for orders that have returned items not yet reported back. The trigger is at line level: a line whose returned quantity in Ongoing exceeds the quantity already reported to Ongoing.
  2. For each such line, a return is created in Omnium with:
    • The returned quantity (the difference between Ongoing's returned and already-reported quantities)
    • A return type derived from Ongoing's return cause (see Return Reason Mapping)
    • A credit for the returned lines, and stock marked as updated
  3. After processing, Ongoing's ReportedReturnedNumberOfItems is set equal to its ReturnedNumberOfItems, so the same return is not processed again.

Return Reason Mapping

The return cause registered in Ongoing is carried onto the Omnium return as its return type. Ongoing's return cause code is matched against the Id of a configured Return Type in the return settings (Configuration → Settings → Return settings → Return Types). For the cause to resolve to a named type, Ongoing must send a cause code equal to a Return Type Id; otherwise the code is stored on the return line as-is without matching a configured type.

Order Status After a Return

Creating a return does not by itself change the order or shipment status to Returned or PartiallyReturned. The status only changes if the return workflow includes an UpdateOrderStatus step. Without that step, the return is recorded (return lines, credit, stock) but the order keeps its current status.

Return Properties

PropertyDescription
ReturnedByOngoingSet to true on returns created by sync
OngoingReturnErrorContains error details if return sync fails

Inventory Synchronization

Inventory levels are synchronized from Ongoing to Omnium.

Sync Methods

  1. Delta Sync: Fetches inventory changes since last sync (limited to 24 hours lookback)
  2. Full Sync: Scrolls through all articles for a specific warehouse

Inventory Flow

  1. Query Ongoing for inventory per warehouse
  2. Match Ongoing warehouse ID to Omnium warehouse via OngoingWarehouseId external ID
  3. Calculate inventory change (delta between Ongoing sellable quantity and current Omnium inventory)
  4. Apply inventory updates to Omnium

Configuration Note

The inventory sync uses SellableNumberOfItems from Ongoing, which represents the available-to-sell quantity.

Product Export

Products are exported to Ongoing as "Articles"

Export Flow

  1. For products with variants, each variant is exported as a separate article
  2. The Ongoing Article System ID is stored as an external ID

Product Mapping

Omnium FieldOngoing FieldDescription
SkuIdArticleNumberSKU identifier
SkuIdProductCodeProduct code
WeightWeightWeight in kilograms
EanBarCodeInfo.BarCodeEAN barcode
DescriptionDescriptionProduct description
Name + ColorArticleNameCombined article name
ColorArticleColorColor attribute
SizeArticleSizeSize attribute
BrandSupplierInfo.SupplierNameBrand/supplier name
SupplierSkuIdSupplierInfo.SupplierArticleNumberSupplier article number
MainImageUrlLinkToPictureProduct image URL

Deleted Products

When a product is deleted in Omnium:

  • IsActive is set to false
  • Barcode is cleared (to avoid duplicate barcode conflicts in Ongoing)

Delivery/Purchase Order Export

Deliveries (inbound goods) are exported to Ongoing as Purchase Orders by the ExportDeliveries workflow step.

Workflow Step

Add an ExportDeliveries step to the purchase order workflow (not a separate delivery workflow), on the status where deliveries should be sent to Ongoing (for example Confirmed):

{
  "Name": "ExportDeliveries",
  "Connector": "Ongoing",
  "Active": true
}

ExportDeliveries only exports deliveries that already exist on the purchase order. Create the delivery on the purchase order first — otherwise the step finds nothing to export.

Export Flow

  1. The purchase order reaches a status where the ExportDeliveries workflow step runs
  2. The step collects the deliveries linked to the purchase order lines
  3. Each delivery is mapped to an Ongoing Purchase Order
  4. The Ongoing Purchase Order ID is stored as a property on the delivery

Delivery Mapping

Omnium FieldOngoing FieldDescription
Delivery.IdPurchaseOrderNumberDelivery ID
Supplier.NameSupplierInfo.SupplierNameSupplier name
Supplier.IdSupplierInfo.SupplierNumberSupplier ID
InvoiceNumberReferenceNumberInvoice reference

Purchase Order Status Sync

Purchase order status updates are synchronized from Ongoing to update delivery status in Omnium.

Status Constants

StatusCodeDescription
Ankommet199Arrived
Varslet200Notified
Inkommende300Incoming
Avvik400Deviation
Mottatt500Received
Makulert900Voided
Avbrutt1000Canceled

Goods Reception

When items are received in Ongoing, the integration:

  1. Calculates newly delivered quantities
  2. Creates goods reception lines
  3. Updates delivery line item quantities
  4. Processes inventory transactions

Scheduled Tasks

OngoingSyncScheduledTask

Main synchronization task that runs all enabled sync operations.

ConfigurationDescription
Task NameOngoingSyncScheduledTask
GroupPlugins
TypeDelta (time-based)

Runs the following operations based on connector settings:

  • SyncPurchaseOrders: Sync purchase order statuses
  • SyncOrders: Sync order statuses and shipping info
  • SyncReturns: Process returns from Ongoing
  • SyncInventory: Sync inventory levels

OngoingProductSyncScheduledTask

Scheduled task for bulk product export to Ongoing.

ConfigurationDescription
Task NameOngoingProductSyncScheduledTask
GroupPlugins
TypeDelta (time-based)

Exports products with available inventory that have been modified since the last sync.

External IDs and Properties

External ID Providers

ProviderEntityDescription
OngoingOrderIdOrder, ShipmentOngoing order system ID
OngoingArticleIdProduct, VariantFormat: {ArticleSystemId}_{GoodsOwnerId}
OngoingPurchaseOrderIdDeliveryOngoing purchase order ID
OngoingGoodsOwnerIdStoreGoods owner ID in Ongoing
OngoingWarehouseIdStoreWarehouse ID in Ongoing

Properties

Property KeyEntityDescription
IsOngoingStoreStoreMarks store as Ongoing warehouse
IsDeliveredShipmentShipmentMarks shipment as delivered from Ongoing
IsOrderLineDeliveredOrderLineMarks line as delivered
OngoingPurchaseOrderStatusDeliveryCurrent Ongoing PO status
ReturnedByOngoingOrderReturn created by Ongoing sync
OngoingReturnErrorOrderError details for return sync

Error Handling

The integration implements comprehensive error handling:

  • Export Failures: Errors are logged and stored on the entity
  • Sync Failures: Individual sync operations continue even if one fails
  • Return Sync Errors: Errors are stored in OngoingReturnError property and ReportedReturnedNumberOfItems is updated to prevent repeated failures

Troubleshooting

Common Issues

IssuePossible CauseSolution
Orders not exportingWarehouse not configuredVerify IsOngoingStore property
No Goods Owner IDMissing external IDAdd OngoingGoodsOwnerId to store
Inventory not syncingWarehouse ID mismatchVerify OngoingWarehouseId mapping
Return sync failsLine item mismatchCheck OngoingReturnError property
Orders stuck at InProgressWarehouseShipped status name not present in the workflowSet ShippedOrderStatus to a status that exists in your workflow, or name the shipped status ShippedFromWarehouse
Return created but order status unchangedReturn workflow has no UpdateOrderStatus stepAdd an UpdateOrderStatus step to the return workflow

Debugging Tips

  1. Verify connector options are correctly configured
  2. Ensure store has both OngoingGoodsOwnerId and OngoingWarehouseId
  3. Check scheduled task execution logs for sync errors