> For the complete documentation index, see [llms.txt](https://docs.rishvi.co.uk/linnworks/llms.txt).
> Use it to discover all available pages before exploring further.

# BED BATH & BEYOND Supplier Oasis to Linnworks Integration

Install, configure, and operate the API and XML-based integration that automates orders, inventory, acknowledgements, shipment updates, short-ship, and backorder messaging between Supplier Oasis and Linnworks.

## Overview

The _BED BATH & BEYOND Supplier Oasis to Linnworks Integration_ connects Supplier Oasis with Linnworks through a controlled API and XML-based middleware service.

The integration automates:

- Sales-order retrieval from Supplier Oasis
- XML and XSD validation
- Order creation in Linnworks
- Inventory synchronisation from Linnworks
- Order acknowledgements
- Shipment confirmations
- Full and partial shipment updates
- Short-ship and backorder messages
- Duplicate-prevention controls
- Logging, retries, and operational monitoring

Linnworks acts as the operational source of truth for inventory availability and fulfilment status.

Supplier Oasis provides eligible sales orders and receives inventory, acknowledgement, shipment, short-ship, and backorder messages in the configured XML formats.

### Architecture at a glance

<Columns cols="3">
  <Card title="Supplier Oasis" icon="shopping-cart" horizontal="false" target="_self">
    Provides eligible sales orders and receives inventory, acknowledgement,
    shipment, short-ship, and backorder messages.
  </Card>

  <Card title="Integration Middleware" icon="zap" horizontal="false" target="_self">
    Manages authenticated communication, XML validation, transformation,
    transaction processing, duplicate prevention, retries, and logging.
  </Card>

  <Card title="Linnworks" icon="database" horizontal="false" target="_self">
    Receives sales orders and provides inventory availability, fulfilment
    status, shipped quantities, carrier information, and tracking details.
  </Card>
</Columns>

> Once configured, the integration reduces manual order administration, improves inventory accuracy, and provides traceable fulfilment communication between both systems.

---

## Integration Scope

The integration covers four primary operational areas.

<Columns cols="2">
  <Card title="Order Integration" icon="package" horizontal="false" target="_self">
    Retrieves eligible Supplier Oasis orders, validates the source XML, maps the
    order information, and creates the corresponding Linnworks order.
  </Card>

  <Card title="Inventory Synchronisation" icon="refresh" horizontal="false" target="_self">
    Retrieves configured Linnworks quantities and sends validated inventory
    messages to Supplier Oasis through scheduled or on-demand processing.
  </Card>

  <Card title="Shipment and Fulfilment Updates" icon="truck" horizontal="false" target="_self">
    Sends shipment confirmations containing shipped quantities, carrier
    information, tracking references, and partial-shipment data.
  </Card>

  <Card title="Acknowledgements and Exceptions" icon="file-text" horizontal="false" target="_self">
    Generates order acknowledgements, short-ship messages, backorder messages,
    and configured exception responses.
  </Card>
</Columns>

---

## Installation Guide

The installation has two parts:

1. Authorise and install the Bed Bath & Beyond application in Linnworks.
2. Add and configure the Bed Bath & Beyond channel from **Channel Integrations**.

### Before You Begin

Confirm that you have:

- The Bed Bath & Beyond installation URL
- Access to the Linnworks master account
- Permission to install Linnworks applications
- The channel account name
- The integration profile details
- The username and password required for the channel configuration

<Callout kind="warning" collapsed="false">
  **Security:** Never include real Linnworks passwords, channel passwords,
  account identifiers, API tokens, or customer information in public
  documentation or screenshots.
</Callout>

### Installation Steps

<Tabs>
  <Tab title="Step 1">
    **Navigate to Channel Integration**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134291886-gudvdc7ywpv-channel-Integaration.pngdfvd?fm=auto&auto=compress%2Cformat" width="1595" height="740" alt="" priority={true} fetchPriority="high" />

    1. Sign in to Linnworks.
    2. From the left-hand navigation menu, click **Settings**.
    3. Under Settings, locate **Channel integration**.
    4. Click **Channel integration**.

    The Channel Integrations page opens.
  </Tab>

  <Tab title="Step 2">
    **Start adding the channel**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134458178-ysnhxuwifne-Add-New.pngdfcdsf?fm=auto&auto=compress%2Cformat" width="1292" height="456" alt="" priority={true} fetchPriority="high" />

    The Channel Integrations page displays the channels currently connected to
    Linnworks.

    1. Review the existing channel list.
    2. Click **Add New** in the top-right corner.

    The **Add Channel** window opens.
  </Tab>

  <Tab title="Step 3">
    **Search for the Bed Bath & Beyond application**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134580895-gioph3x4r2-Search.pngfgdfg?fm=auto&auto=compress%2Cformat" width="713" height="623" alt="" />

    1. Open the **Third Party Applications** tab if it is not already selected.
    2. Enter `BED BATH & BEYOND` in the search field.
    3. Locate the required Bed Bath & Beyond application.
    4. Confirm that the expected application provider is displayed.
    5. Review the application name and developer.
    6. Click **Install Application**.
  </Tab>

  <Tab title="Step 4">
    **Add a channel account name**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134710821-cpptkomskoa-pasted-image-1785134661410.png?fm=auto&auto=compress%2Cformat" width="592" height="534" alt="" />

    Enter an account name that helps identify this integration in Linnworks.

    The account name should be:

    - Unique
    - Easy for operational users to recognise
    - Suitable for the selected environment
    - Different from existing channel account names

    Example account-name formats:

    - `BED BATH & BEYOND Production`
    - `BED BATH & BEYOND Staging`
    - `Bed Bath and Beyond US`

    After entering the account name, click **Next**.
  </Tab>

  <Tab title="Step 5">
    **Review and accept the disclaimer**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134870859-awwoknp6x7a-Disclaimer.png?fm=auto&auto=compress%2Cformat" width="600" height="613" alt="" style="width: 600px; height: auto; cursor: pointer; margin: 0 auto;" />

    1. Read the disclaimer displayed in the setup wizard.
    2. Open the linked terms and conditions when required.
    3. Tick **I agree to the terms and conditions**.
    4. Click **Next**.

    <Callout kind="warning" collapsed="false">
      Installing a third-party application grants it access to the Linnworks
      account through the permissions required by the integration. Review the
      displayed terms before continuing.
    </Callout>
  </Tab>

  <Tab title="Step 6">
    **Select the required integration profile**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134901515-ggwo9vymy7u-select-profiler.pngdfvdf?fm=auto&auto=compress%2Cformat" width="600" height="616" alt="" style="width: 600px; height: auto; cursor: pointer; margin: 0 auto;" />

    Select the integration profile assigned to the Bed Bath & Beyond account.

    The profile controls the configuration used for the channel and can depend
    on the selected environment.

    1. Open the integration-profile selector.
    2. Select the profile provided by the integration administrator.
    3. Confirm that the profile matches the required test or production environment.
    4. Click **Next**.
  </Tab>

  <Tab title="Step 7">
    **Enter the common integration settings**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134923588-k49othujmcl-configure-common.pngvffbg?fm=auto&auto=compress%2Cformat" width="601" height="614" alt="" style="width: 601px; height: auto; cursor: pointer; margin: 0 auto;" />

    On the **Configure Common** page:

    1. Enter the integration **Username**.
    2. Enter the integration **Password**.
    3. Confirm that the values are for the correct environment.
    4. Click **Next**.
  </Tab>

  <Tab title="Step 8">
    **Complete the channel configuration**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134942418-5gfu5auv9dd-Finish.pngdsc?fm=auto&auto=compress%2Cformat" width="598" height="615" alt="" style="width: 598px; height: auto; cursor: pointer; margin: 0 auto;" />

    When configuration is complete, the wizard displays:

    **Finished**

    1. Review the completion message.
    2. Click **Finish**.
    3. Wait for the configuration window to close.
    4. Return to the Channel Integrations page.
  </Tab>

  <Tab title="Step 9">
    **Enable channel and inventory processing**

    <Image src="https://blob-cdn.documentation.ai/org-87fb0951-1e07-4f5d-a887-8a7327c7777d/doc-98941d2e-0032-424f-8414-3034ac5fa6ee/1785134964181-apj62jud3i-Enable-Integration.pngfvdv?fm=auto&auto=compress%2Cformat" width="1538" height="335" alt="" />

    Locate the newly added Bed Bath & Beyond channel in the Channel Integrations
    list.

    1. Confirm that the expected source and subsource are displayed.
    2. Change the **Enabled** toggle to the enabled position.
    3. Enable **Inventory Sync** when inventory synchronisation is required.
    4. Confirm that both settings remain enabled after the page refreshes.
    5. Review the available channel actions and configuration icons.
  </Tab>
</Tabs>

---

## Verify the Installation

After enabling the channel, confirm that:

<Columns cols="2">
  <Card title="Channel Is Visible" icon="list-checks" horizontal="false" target="_self">
    The Bed Bath & Beyond source and configured subsource appear in Channel Integrations.
  </Card>

  <Card title="Channel Is Enabled" icon="check-circle" horizontal="false" target="_self">
    The channel Enabled toggle is active.
  </Card>

  <Card title="Inventory Sync Is Enabled" icon="refresh" horizontal="false" target="_self">
    Inventory Sync is active when inventory messages are required.
  </Card>

  <Card title="Configuration Is Correct" icon="settings" horizontal="false" target="_self">
    The account name, integration profile, credentials, warehouse, and mappings are correct.
  </Card>
</Columns>

---

## Installation Troubleshooting

<Columns cols="1">
  <Card title="Login is not accepted" icon="alert-circle" horizontal="false" target="_self">
    **Symptom:** The installation login page rejects the account details.

    **Likely cause:** The account is not the Linnworks master account, the
    password is incorrect, or the account lacks the required permission.

    **Resolution:** Confirm the authorised Linnworks account and try again.
  </Card>

  <Card title="Install button is unavailable" icon="alert-circle" horizontal="false" target="_self">
    **Symptom:** The application cannot be installed.

    **Likely cause:** The terms have not been accepted or the account lacks
    application-installation permissions.

    **Resolution:** Review the terms checkbox and verify the account permissions.
  </Card>

  <Card title="Application is not visible after installation" icon="search" horizontal="false" target="_self">
    **Symptom:** The application does not appear in Linnworks.

    **Likely cause:** Linnworks has not refreshed or installation did not complete.

    **Resolution:** Refresh Linnworks, sign out and back in, and verify that the
    Application Installed confirmation was displayed.
  </Card>

  <Card title="BED BATH & BEYOND application is not found" icon="search" horizontal="false" target="_self">
    **Symptom:** Searching for BED BATH & BEYOND returns no matching application.

    **Likely cause:** The wrong application category is selected or the
    application is not available for the current environment.

    **Resolution:** Open **Third Party Applications**, clear the search, and
    search again using `Bed Bath & Beyond`.
  </Card>

  <Card title="Account name is rejected" icon="alert-circle" horizontal="false" target="_self">
    **Symptom:** The setup cannot continue after entering an account name.

    **Likely cause:** The account name is already used by another channel.

    **Resolution:** Enter a unique and descriptive account name.
  </Card>

  <Card title="Common configuration fails" icon="key-round" horizontal="false" target="_self">
    **Symptom:** The username or password is not accepted.

    **Likely cause:** The credentials are incorrect or belong to another environment.

    **Resolution:** Confirm the credentials with the authorised integration administrator.
  </Card>

  <Card title="Channel remains disabled" icon="toggle-left" horizontal="false" target="_self">
    **Symptom:** The channel cannot be enabled after installation.

    **Likely cause:** A required configuration value or profile is incomplete.

    **Resolution:** Review the channel configuration, credentials, integration
    profile, and required mappings before enabling it again.
  </Card>
</Columns>

---

## Privacy and Terms

- **Privacy Policy:** [https://rishvi.co.uk/privacy-policy/](https://rishvi.co.uk/privacy-policy/)
- **Terms and Conditions:** [https://rishvi.co.uk/terms-conditions/](https://rishvi.co.uk/terms-conditions/)

The Linnworks installation and disclaimer pages can also display links to the
applicable third-party application terms. Review all displayed terms before
authorising or enabling the channel.

## Integration Dashboard

The integration dashboard provides visibility into connection and processing activity.

The dashboard can display:

<Columns cols="2">
  <Card title="Connection Status" icon="plug" horizontal="false" target="_self">
    Displays whether Supplier Oasis and Linnworks connections are active.
  </Card>

  <Card title="Order Activity" icon="shopping-cart" horizontal="false" target="_self">
    Displays successful, pending, rejected, retrying, and failed order transactions.
  </Card>

  <Card title="Inventory Activity" icon="refresh" horizontal="false" target="_self">
    Displays recent inventory transmissions and processed SKU totals.
  </Card>

  <Card title="Shipment Activity" icon="truck" horizontal="false" target="_self">
    Displays shipment, partial-shipment, and tracking update activity.
  </Card>

  <Card title="Failed Transactions" icon="alert-circle" horizontal="false" target="_self">
    Displays transactions that require correction or manual review.
  </Card>

  <Card title="Scheduled Jobs" icon="settings" horizontal="false" target="_self">
    Displays enabled jobs and their next expected execution time.
  </Card>
</Columns>

---

## Business Objectives

<Columns cols="2">
  <Card title="Automate Order Creation" icon="shopping-cart" horizontal="false" target="_self">
    Valid Supplier Oasis orders are created once in Linnworks with the required
    customer, address, item, quantity, and reference information.
  </Card>

  <Card title="Improve Inventory Accuracy" icon="package" horizontal="false" target="_self">
    Supplier Oasis receives stock quantities calculated using the configured
    Linnworks inventory rules.
  </Card>

  <Card title="Provide Fulfilment Visibility" icon="map-pin" horizontal="false" target="_self">
    Supplier Oasis receives shipment, carrier, tracking, and shipped-quantity
    updates for full and partial fulfilment.
  </Card>

  <Card title="Maintain Operational Control" icon="bar-chart-2" horizontal="false" target="_self">
    Failed transactions are recorded, classified, and eligible for controlled retry.
  </Card>

  <Card title="Prevent Duplicate Processing" icon="copy" horizontal="false" target="_self">
    Idempotency controls prevent duplicate Linnworks orders and repeated outbound messages.
  </Card>

  <Card title="Maintain XML Compliance" icon="file-check" horizontal="false" target="_self">
    Inbound and outbound documents are validated against the configured XML schemas.
  </Card>
</Columns>

---

## High-Level Data Flows

| Flow                   | Source                  | Destination    | Primary Content                                                             | Trigger                       |
| ---------------------- | ----------------------- | -------------- | --------------------------------------------------------------------------- | ----------------------------- |
| Sales orders           | Supplier Oasis          | Linnworks      | Order header, customer, delivery address, items, quantities, and references | Scheduled retrieval           |
| Inventory              | Linnworks               | Supplier Oasis | SKU, available quantity, and stock status                                   | Scheduled or on-demand        |
| Shipment confirmation  | Linnworks               | Supplier Oasis | Order reference, shipment lines, quantities, carrier, and tracking          | Fulfilment processing         |
| Order acknowledgement  | Linnworks / Integration | Supplier Oasis | Accepted quantities, order status, and exceptions                           | After order processing        |
| Short ship / backorder | Linnworks / Integration | Supplier Oasis | Affected items, quantities, and exception status                            | Stock or fulfilment exception |

---

## Core Integration Components

<Columns cols="2">
  <Card title="Connector Layer" icon="plug" horizontal="false" target="_self">
    Manages authenticated communication with Supplier Oasis and Linnworks.
  </Card>

  <Card title="XML Validation" icon="file-check" horizontal="false" target="_self">
    Validates inbound and outbound XML against the configured XSD files.
  </Card>

  <Card title="Mapping and Transformation" icon="settings" horizontal="false" target="_self">
    Maps orders, products, customers, addresses, quantities, carriers, and statuses.
  </Card>

  <Card title="Transaction Processor" icon="layers" horizontal="false" target="_self">
    Applies business rules, message sequencing, partial fulfilment, and exception handling.
  </Card>

  <Card title="Duplicate Prevention" icon="copy" horizontal="false" target="_self">
    Stores source references and transaction states to prevent duplicate processing.
  </Card>

  <Card title="Scheduler and Retry Service" icon="refresh" horizontal="false" target="_self">
    Runs scheduled jobs and retries temporary communication failures.
  </Card>

  <Card title="Logging and Monitoring" icon="file-text" horizontal="false" target="_self">
    Records requests, responses, validation results, errors, and correlation identifiers.
  </Card>

  <Card title="Secure Configuration" icon="lock" horizontal="false" target="_self">
    Stores endpoint references, schedules, mappings, and credential references outside source code.
  </Card>
</Columns>

---

## How Orders Are Processed

When an eligible Supplier Oasis order becomes available, the integration follows a controlled processing sequence.

<Steps>
  <Step title="Step 1 - Retrieve eligible orders" title-type="p">
    The integration retrieves the next eligible Supplier Oasis order or order batch.
  </Step>

  <Step title="Step 2 - Validate the XML" title-type="p">
    The incoming XML document is validated against the configured order XSD.
  </Step>

  <Step title="Step 3 - Check for duplicates" title-type="p">
    The Supplier Oasis order reference is checked against previously processed transactions.
  </Step>

  <Step title="Step 4 - Map order information" title-type="p">
    Customer, address, order-line, quantity, product, and reference information is transformed.
  </Step>

  <Step title="Step 5 - Validate business fields" title-type="p">
    Required values, SKU mappings, quantities, and configured business rules are checked.
  </Step>

  <Step title="Step 6 - Create the Linnworks order" title-type="p">
    The corresponding order is created through the Linnworks API.
  </Step>

  <Step title="Step 7 - Store the linkage" title-type="p">
    The Supplier Oasis reference and returned Linnworks order identifier are stored.
  </Step>

  <Step title="Step 8 - Generate the response" title-type="p">
    The applicable acknowledgement or exception response is generated.
  </Step>

  <Step title="Step 9 - Record the outcome" title-type="p">
    The transaction is marked as completed, rejected, retry-pending, or failed.
  </Step>
</Steps>

---

## Order Data Mapping

<Tabs>
  <Tab title="Order Identity">
    Order identity mapping can include:

    - Supplier Oasis order number
    - Supplier Oasis external reference
    - Linnworks order identifier
    - Linnworks source
    - Linnworks subsource
    - Channel reference
  </Tab>

  <Tab title="Customer and Address">
    Customer and delivery-address mapping can include:

    - Customer name
    - Company name
    - Address lines
    - City or town
    - Region or state
    - Postal code
    - Country
    - Telephone number
    - Email address
  </Tab>

  <Tab title="Products and Quantities">
    Product and quantity mapping can include:

    - Supplier Oasis SKU
    - Linnworks SKU
    - Ordered quantity
    - Accepted quantity
    - Backordered quantity
    - Short-shipped quantity
    - Shipped quantity
  </Tab>

  <Tab title="Carrier and Tracking">
    Carrier and tracking mapping can include:

    - Linnworks shipping provider
    - Linnworks postal service
    - Supplier Oasis carrier code
    - Tracking number
    - Shipment reference
  </Tab>

  <Tab title="XML Structures">
    XML transformation can include:

    - Namespaces
    - Elements
    - Attributes
    - Enumerated values
    - Date and time formats
    - Decimal formats
    - Required fields
    - Optional fields
  </Tab>
</Tabs>

<Callout kind="info" collapsed="false">
  **Configuration:** Available fields and required mappings depend on the configuration for the connected Supplier Oasis and Linnworks accounts.
</Callout>

---

## Duplicate Prevention

<Columns cols="2">
  <Card title="Source Reference Check" icon="file-check" horizontal="false" target="_self">
    The Supplier Oasis order reference is checked before a Linnworks order is created.
  </Card>

  <Card title="Transaction State" icon="database" horizontal="false" target="_self">
    Each transaction stores its current processing state and destination identifier.
  </Card>

  <Card title="Payload Identification" icon="hash" horizontal="false" target="_self">
    A payload key or equivalent identifier can be stored to detect repeated messages.
  </Card>

  <Card title="Outbound Message State" icon="file-text" horizontal="false" target="_self">
    Inventory, acknowledgement, shipment, and exception messages are tracked individually.
  </Card>
</Columns>

---

## Order Acknowledgements

After an order has been validated and processed, the integration generates the applicable acknowledgement.

The acknowledgement can contain:

- Supplier Oasis order reference
- Linnworks order identifier
- Accepted quantities
- Current processing status
- Validation result
- Exception information

<Card title="Acknowledgement Processing" icon="check-circle" horizontal="false" target="_self">
  The acknowledgement is generated after the inbound order has been validated and its Linnworks processing result is available.
</Card>

---

## Short-Ship and Backorder Processing

<Tabs>
  <Tab title="Short Ship">
    A short-ship message can be generated when the shipped quantity is lower than the ordered or accepted quantity.

    It can include:

    - Supplier Oasis order reference
    - Affected SKU
    - Ordered quantity
    - Shipped quantity
    - Short-shipped quantity
    - Exception status
  </Tab>

  <Tab title="Backorder">
    A backorder message can be generated when an item cannot be fulfilled immediately but remains available for later fulfilment.

    It can include:

    - Supplier Oasis order reference
    - Affected SKU
    - Ordered quantity
    - Accepted quantity
    - Backordered quantity
    - Backorder status
  </Tab>

  <Tab title="Subsequent Updates">
    The configured rules determine whether:

    - A later shipment message is permitted
    - A previous exception can be updated
    - Remaining quantities stay open
    - A final completion message is required
  </Tab>
</Tabs>

---

## Inventory Synchronisation

Inventory synchronisation sends configured Linnworks stock quantities to Supplier Oasis.

### Inventory Processing Sequence

<Steps>
  <Step title="Step 1 - Select locations and SKUs" title-type="p">
    The integration selects the configured Linnworks locations and SKU population.
  </Step>

  <Step title="Step 2 - Retrieve stock data" title-type="p">
    Current Linnworks stock information is retrieved.
  </Step>

  <Step title="Step 3 - Calculate availability" title-type="p">
    The configured availability formula is applied.
  </Step>

  <Step title="Step 4 - Build the inventory XML" title-type="p">
    A Supplier Oasis-compatible inventory message is generated.
  </Step>

  <Step title="Step 5 - Validate the XML" title-type="p">
    The outbound XML is validated against the configured inventory XSD.
  </Step>

  <Step title="Step 6 - Send the update" title-type="p">
    The message is transmitted to Supplier Oasis.
  </Step>

  <Step title="Step 7 - Record the response" title-type="p">
    The response, processed SKU count, and transaction result are stored.
  </Step>

  <Step title="Step 8 - Retry temporary failures" title-type="p">
    Retryable failures are processed again without duplicating accepted messages.
  </Step>
</Steps>

---

## Inventory Availability Rules

The inventory quantity can be calculated using:

- Selected Linnworks locations
- Physical stock
- Available stock
- Allocated stock
- Safety stock
- Out-of-stock rules
- Negative-stock rules
- Zero-stock representation
- Location aggregation
- Full or delta updates
- SKU exclusions

<Callout kind="info" collapsed="false">
  **Note:** Supplier Oasis quantities depend on the configured Linnworks locations, allocation settings, and safety-stock rules.
</Callout>

---

## Inventory Execution Options

<Tabs>
  <Tab title="Scheduled Synchronisation">
    Inventory updates are sent according to the configured schedule.

    The schedule can account for:

    - API rate limits
    - Expected SKU volume
    - Full or delta update mode
    - Peak processing periods
  </Tab>

  <Tab title="On-Demand Synchronisation">
    On-demand synchronisation sends an immediate inventory update.

    It can be used after:

    - Stock corrections
    - Warehouse receipts
    - Inventory adjustments
    - Failed scheduled runs
    - Mapping corrections
  </Tab>

  <Tab title="Failed Message Resubmission">
    Failed messages can be resubmitted through a controlled process.

    Resubmission:

    - Uses the existing transaction context
    - Prevents duplicate accepted messages
    - Records the retry result
    - Retains the correlation identifier
  </Tab>
</Tabs>

---

## Shipment and Fulfilment Updates

### Shipment Processing Sequence

<Steps>
  <Step title="Step 1 - Identify eligible orders" title-type="p">
    The integration identifies dispatched or fulfilled Linnworks orders.
  </Step>

  <Step title="Step 2 - Retrieve shipment information" title-type="p">
    Shipment lines, shipped quantities, carrier details, and tracking information are retrieved.
  </Step>

  <Step title="Step 3 - Map carrier information" title-type="p">
    Linnworks shipping values are mapped to Supplier Oasis carrier codes.
  </Step>

  <Step title="Step 4 - Build the shipment XML" title-type="p">
    A Supplier Oasis-compatible shipment message is generated.
  </Step>

  <Step title="Step 5 - Validate the XML" title-type="p">
    The message is validated against the configured shipment XSD.
  </Step>

  <Step title="Step 6 - Send the message" title-type="p">
    The shipment confirmation is transmitted to Supplier Oasis.
  </Step>

  <Step title="Step 7 - Store the result" title-type="p">
    The transaction is recorded as completed, rejected, retry-pending, or failed.
  </Step>
</Steps>

---

## Shipment Message Content

| Field                          | Description                                     |
| ------------------------------ | ----------------------------------------------- |
| Supplier Oasis order reference | Identifies the source sales order               |
| Linnworks order identifier     | Identifies the related Linnworks order          |
| Shipment lines                 | Identifies the fulfilled order lines            |
| Shipped quantities             | Records the quantity shipped for each line      |
| Carrier                        | Contains the mapped Supplier Oasis carrier code |
| Tracking number                | Contains the tracking reference                 |
| Shipment status                | Identifies the fulfilment state                 |
| Message timestamp              | Identifies when the message was generated       |

---

## Full and Partial Shipments

<Tabs>
  <Tab title="Full Shipment">
    A full shipment message is generated when all configured quantities are fulfilled.
  </Tab>

  <Tab title="Partial Shipment">
    A partial shipment contains only the quantities included in the current fulfilment event.

    The order remains available for later valid shipment updates.
  </Tab>

  <Tab title="Duplicate Shipment Prevention">
    Each transmitted shipment is recorded using a transaction key.

    Previous shipment states are checked before another message is sent.
  </Tab>
</Tabs>

---

## Production-Readiness Features

<Columns cols="2">
  <Card title="Rate-Limit Controls" icon="settings" horizontal="false" target="_self">
    Scheduled processing can respect configured Supplier Oasis and Linnworks API limits.
  </Card>

  <Card title="Retry Handling" icon="refresh" horizontal="false" target="_self">
    Temporary communication failures can be retried without duplicate destination processing.
  </Card>

  <Card title="Configuration Validation" icon="alert-circle" horizontal="false" target="_self">
    Required connections and mappings are checked before transactions are processed.
  </Card>

  <Card title="Structured Logging" icon="file-text" horizontal="false" target="_self">
    Operations are recorded with transaction types, timestamps, statuses, and outcomes.
  </Card>

  <Card title="Correlation IDs" icon="hash" horizontal="false" target="_self">
    Each transaction can be traced across validation, processing, and transmission.
  </Card>

  <Card title="Secure Configuration" icon="lock" horizontal="false" target="_self">
    Credentials and endpoint values are stored outside application source code.
  </Card>
</Columns>

---

## Operational Monitoring

Operational monitoring provides visibility into integration processing.

<Columns cols="2">
  <Card title="View Transaction Status" icon="bar-chart-2" horizontal="false" target="_self">
    Review completed, pending, retrying, rejected, and failed transactions.
  </Card>

  <Card title="Review Validation Errors" icon="alert-circle" horizontal="false" target="_self">
    Review schema, mapping, quantity, address, and configuration errors.
  </Card>

  <Card title="Inspect Correlation IDs" icon="hash" horizontal="false" target="_self">
    Trace an order, inventory update, acknowledgement, or shipment message.
  </Card>

  <Card title="Review Retry Activity" icon="refresh" horizontal="false" target="_self">
    Review retry counts, next-attempt times, and final outcomes.
  </Card>

  <Card title="Run On-Demand Processing" icon="zap" horizontal="false" target="_self">
    Start an authorised inventory or transaction process when immediate execution is required.
  </Card>

  <Card title="Review Audit History" icon="file-text" horizontal="false" target="_self">
    Review transaction timestamps, destination references, statuses, and responses.
  </Card>
</Columns>

---

## Error Handling and Monitoring

<Tabs>
  <Tab title="XML Validation Errors">
    XML validation errors can include:

    - Missing required elements
    - Invalid data types
    - Incorrect namespaces
    - Unsupported enumerations
    - Invalid date or decimal formats
  </Tab>

  <Tab title="Business-Rule Errors">
    Business-rule errors can include:

    - Missing SKU mappings
    - Invalid quantities
    - Missing carrier mappings
    - Incomplete addresses
    - Duplicate source references
  </Tab>

  <Tab title="Connectivity Errors">
    Connectivity errors can include:

    - Timeouts
    - Authentication failures
    - Unavailable services
    - Endpoint communication errors
  </Tab>

  <Tab title="Retry Classification">
    Temporary failures can be retried automatically.

    Invalid data should be corrected before the transaction is submitted again.
  </Tab>
</Tabs>

### Logging Information

Transaction logs can contain:

- Correlation identifier
- Source reference
- Transaction type
- Processing timestamp
- Current status
- Validation result
- Destination identifier
- Endpoint response
- Retry count
- Final outcome
- Actionable error details

<Callout kind="warning" collapsed="false">
  **Security:** Credentials, passwords, tokens, secret keys, and unnecessary personal information must not be written to standard logs.
</Callout>

---

## Retry Handling

<Steps>
  <Step title="Classify the failure" title-type="p">
    The integration determines whether the failure is temporary or requires a data correction.
  </Step>

  <Step title="Store the retry state" title-type="p">
    The retry count, next attempt time, and transaction status are recorded.
  </Step>

  <Step title="Retry temporary failures" title-type="p">
    Timeouts and temporary service errors are retried according to configuration.
  </Step>

  <Step title="Prevent duplicate processing" title-type="p">
    Duplicate checks are applied before another destination action is performed.
  </Step>

  <Step title="Stop after the maximum attempts" title-type="p">
    Transactions that exceed the configured limit are marked as failed for review.
  </Step>
</Steps>

---

## Security and Data Handling

<Columns cols="2">
  <Card title="Encrypted Transport" icon="lock" horizontal="false" target="_self">
    External connections use encrypted communication.
  </Card>

  <Card title="Secret Management" icon="settings" horizontal="false" target="_self">
    Credentials are stored using secure configuration rather than source code.
  </Card>

  <Card title="Least-Privilege Access" icon="users" horizontal="false" target="_self">
    Connected accounts should receive only the permissions required by the integration.
  </Card>

  <Card title="Sensitive-Data Protection" icon="alert-circle" horizontal="false" target="_self">
    Logs and screenshots should exclude unnecessary customer and credential information.
  </Card>

  <Card title="Retention Controls" icon="file-text" horizontal="false" target="_self">
    Transaction records are retained according to the configured retention settings.
  </Card>

  <Card title="Access Control" icon="lock" horizontal="false" target="_self">
    Portal access should be limited to authorised operational and support users.
  </Card>
</Columns>

---

## Privacy and Data Protection

The integration processes order, customer, address, product, inventory, and fulfilment information required to complete the configured workflows.

To protect this information:

- Collect only the data required for order and fulfilment processing
- Restrict portal access to authorised users
- Use encrypted connections
- Store credentials in secure configuration
- Avoid exposing customer data in screenshots
- Mask sensitive information in logs where appropriate
- Remove personal data from public support messages
- Follow the configured data-retention policy
- Review access when users change roles or leave the organisation

<Callout kind="warning" collapsed="false">
  **Public Documentation:** Redact customer names, email addresses, telephone numbers, delivery addresses, account identifiers, order numbers, tokens, and secret values from screenshots before publishing.
</Callout>

---

## Transaction Lifecycle

| Status            | Description                                                         |
| ----------------- | ------------------------------------------------------------------- |
| **Pending**       | The transaction is waiting to be processed                          |
| **Validating**    | XML, mappings, configuration, and required values are being checked |
| **Processing**    | Transformation and destination processing are in progress           |
| **Submitted**     | The outbound request or message was transmitted                     |
| **Acknowledged**  | The destination accepted or acknowledged the transaction            |
| **Retry Pending** | A temporary failure occurred and another attempt is scheduled       |
| **Rejected**      | Invalid data or a non-retryable response prevented processing       |
| **Failed**        | Processing stopped after the configured failure rules               |
| **Completed**     | The transaction completed successfully                              |

### Lifecycle Flow

<Steps>
  <Step title="Pending" title-type="p">
    An eligible order, inventory update, shipment, acknowledgement, or exception is identified.
  </Step>

  <Step title="Validating" title-type="p">
    XML, mappings, configuration, duplicate state, and required values are checked.
  </Step>

  <Step title="Processing" title-type="p">
    Transformation and business rules are applied.
  </Step>

  <Step title="Submitted" title-type="p">
    The transaction is sent to the destination system.
  </Step>

  <Step title="Acknowledged or Retry Pending" title-type="p">
    A successful response continues the transaction. A temporary failure schedules another attempt.
  </Step>

  <Step title="Completed, Rejected, or Failed" title-type="p">
    The final outcome and supporting diagnostic information are stored.
  </Step>
</Steps>

---

## Validation Errors and Common Causes

| Validation Error             | Common Cause                                                        |
| ---------------------------- | ------------------------------------------------------------------- |
| XML schema validation failed | The document does not comply with the configured XSD                |
| Missing required element     | A required XML element or business value is absent                  |
| Unsupported value            | A status, carrier, country, or transaction code is not configured   |
| Duplicate order reference    | The Supplier Oasis order was already processed                      |
| SKU not found                | The Supplier Oasis SKU cannot be mapped to an active Linnworks item |
| Delivery address incomplete  | One or more required address fields are missing                     |
| Carrier mapping missing      | The Linnworks service has no Supplier Oasis carrier mapping         |
| Invalid quantity             | A quantity is missing, malformed, negative, or inconsistent         |
| Authentication failed        | The configured endpoint credentials are invalid or expired          |
| Endpoint unavailable         | Supplier Oasis or Linnworks is temporarily unavailable              |
| Duplicate shipment           | The shipment transaction was already transmitted                    |
| Invalid inventory message    | The stock value or XML does not comply with the configured rules    |

---

## Troubleshooting Guide

<Columns cols="1">
  <Card title="Application is not visible in Linnworks" icon="alert-circle" horizontal="false" target="_self">
    **Symptom:** The installed application does not appear under My Applications.

    **Likely cause:** The page has not refreshed or installation did not complete.

    **Resolution:** Refresh Linnworks, sign out and back in, and confirm that the installation completed successfully.
  </Card>

  <Card title="Supplier Oasis connection failed" icon="alert-circle" horizontal="false" target="_self">
    **Symptom:** Supplier Oasis requests cannot be sent or received.

    **Likely cause:** The endpoint, authentication, environment, or account configuration is incorrect.

    **Resolution:** Review the secure connection configuration and run the connection test again.
  </Card>

  <Card title="Linnworks connection failed" icon="database" horizontal="false" target="_self">
    **Symptom:** Orders cannot be created or Linnworks data cannot be retrieved.

    **Likely cause:** Linnworks authorisation is invalid, expired, or missing a required permission.

    **Resolution:** Reauthorise the Linnworks connection and verify the requested permissions.
  </Card>

  <Card title="Order was not created in Linnworks" icon="shopping-cart" horizontal="false" target="_self">
    **Symptom:** The Supplier Oasis order remains pending or failed.

    **Likely cause:** XML validation failed, a required field is missing, the SKU is unmapped, or Linnworks rejected the request.

    **Resolution:** Review the validation error, mappings, correlation ID, and Linnworks response.
  </Card>

  <Card title="Duplicate order was blocked" icon="copy" horizontal="false" target="_self">
    **Symptom:** The transaction reports that the reference has already been processed.

    **Likely cause:** The order was previously created in Linnworks.

    **Resolution:** Review the stored Linnworks order identifier before attempting another submission.
  </Card>

  <Card title="Inventory message was rejected" icon="package" horizontal="false" target="_self">
    **Symptom:** Supplier Oasis does not accept the inventory message.

    **Likely cause:** XML validation failed, the SKU is invalid, or the calculated quantity is unsupported.

    **Resolution:** Review the XSD error, SKU mapping, and inventory calculation.
  </Card>

  <Card title="Stock quantities do not match" icon="refresh" horizontal="false" target="_self">
    **Symptom:** Supplier Oasis stock differs from the expected Linnworks quantity.

    **Likely cause:** Location selection, allocation, safety stock, or update mode is incorrect.

    **Resolution:** Review the inventory configuration and run an on-demand synchronisation.
  </Card>

  <Card title="Shipment confirmation was not sent" icon="truck" horizontal="false" target="_self">
    **Symptom:** A fulfilled Linnworks order has no successful shipment message.

    **Likely cause:** The order is not eligible, a mapping is missing, tracking is invalid, or XML validation failed.

    **Resolution:** Review the fulfilment state, carrier mapping, XML validation result, and correlation ID.
  </Card>

  <Card title="Partial shipment quantities are incorrect" icon="package" horizontal="false" target="_self">
    **Symptom:** The transmitted quantities do not match the fulfilled quantities.

    **Likely cause:** The order-line mapping or subsequent-update rule is incorrect.

    **Resolution:** Compare Linnworks fulfilment quantities with the outbound shipment message.
  </Card>

  <Card title="Acknowledgement was not generated" icon="file-text" horizontal="false" target="_self">
    **Symptom:** The order was processed but no acknowledgement is available.

    **Likely cause:** The response mapping failed or the transaction type is not configured.

    **Resolution:** Review the order result and acknowledgement configuration.
  </Card>

  <Card title="Short-ship or backorder message is missing" icon="alert-circle" horizontal="false" target="_self">
    **Symptom:** A fulfilment exception occurred but no exception message was sent.

    **Likely cause:** The exception rule or transaction mapping is incomplete.

    **Resolution:** Review the configured short-ship and backorder rules.
  </Card>

  <Card title="Temporary failure is not retrying" icon="refresh" horizontal="false" target="_self">
    **Symptom:** A retryable transaction remains failed.

    **Likely cause:** Retry processing is disabled, the maximum attempts were reached, or the error is non-retryable.

    **Resolution:** Review the retry count, next attempt time, and failure classification.
  </Card>

  <Card title="Transaction cannot be traced" icon="hash" horizontal="false" target="_self">
    **Symptom:** The full order or message history cannot be found.

    **Resolution:** Search using both the source reference and correlation ID.
  </Card>
</Columns>

---

## Best Practices

<Columns cols="2">
  <Card title="Keep XML Schemas Current" icon="file-check" horizontal="false" target="_self">
    Confirm that the configured XML and XSD versions match the current message requirements.
  </Card>

  <Card title="Use Stable References" icon="hash" horizontal="false" target="_self">
    Use consistent order and transaction identifiers so duplicate controls remain reliable.
  </Card>

  <Card title="Validate Mappings" icon="settings" horizontal="false" target="_self">
    Test order, inventory, acknowledgement, shipment, and exception mappings using representative data.
  </Card>

  <Card title="Keep SKUs Consistent" icon="package" horizontal="false" target="_self">
    Ensure Supplier Oasis product codes match active Linnworks items.
  </Card>

  <Card title="Maintain Carrier Mappings" icon="truck" horizontal="false" target="_self">
    Map every required Linnworks postal service to the correct Supplier Oasis carrier code.
  </Card>

  <Card title="Monitor Failed Transactions" icon="alert-circle" horizontal="false" target="_self">
    Review rejected, retry-pending, and failed transactions regularly.
  </Card>

  <Card title="Use Correlation IDs" icon="hash" horizontal="false" target="_self">
    Use correlation IDs when investigating orders, inventory messages, and shipment updates.
  </Card>

  <Card title="Protect Credentials" icon="lock" horizontal="false" target="_self">
    Store authentication values only in approved secure configuration.
  </Card>
</Columns>

---

## FAQ

**Which system provides the sales orders?**

Supplier Oasis provides eligible sales orders. The integration validates and creates them in Linnworks.

**Which system is the inventory source of truth?**

Linnworks is the source of truth for inventory availability and fulfilment status.

**How are inbound orders validated?**

Incoming order XML is validated against the configured Supplier Oasis XSD before Linnworks processing begins.

**What prevents an order from being created twice?**

The integration stores the Supplier Oasis order reference and checks its transaction state before creating another Linnworks order.

**How is inventory sent to Supplier Oasis?**

The integration reads Linnworks stock, applies the configured availability rules, generates XML, validates it, and transmits it to Supplier Oasis.

**Can inventory be synchronised manually?**

Yes. On-demand inventory synchronisation can be used when it is enabled for the connected account.

**Are partial shipments supported?**

Yes. A shipment message can include only the quantities fulfilled in the current shipment while keeping the remaining quantity available for later updates.

**Are short-ship and backorder messages supported?**

Yes. These messages are generated according to the configured transaction rules.

**What happens when Supplier Oasis or Linnworks is temporarily unavailable?**

The integration records the failure and applies the configured retry policy.

**What happens when XML is invalid?**

The transaction is rejected before destination processing and an actionable validation error is recorded.

**How are transactions traced?**

Each transaction receives a correlation ID that can be used with the source reference to find its processing history.

**Where are credentials stored?**

Credentials and sensitive configuration values are stored outside the application source using secure configuration.

**What should I do when a mapping is missing?**

Add or correct the mapping, save the configuration, and retry the affected transaction.

**How should screenshots be prepared for public documentation?**

Remove or obscure names, email addresses, telephone numbers, delivery addresses, order references, account identifiers, API tokens, and any other sensitive information.

---

## Legal Information

- **Privacy Policy:** [https://rishvi.co.uk/privacy-policy/](https://rishvi.co.uk/privacy-policy/)
- **Terms and Conditions:** [https://rishvi.co.uk/terms-conditions/](https://rishvi.co.uk/terms-conditions/)

Review these pages for information about data handling, privacy, and the terms governing use of the integration.

---

## Summary

The _BED BATH & BEYOND Supplier Oasis to Linnworks Integration_ provides controlled API and XML-based automation for orders, inventory, acknowledgements, shipments, short ships, and backorders.

<Columns cols="2">
  <Card title="Automated Order Integration" icon="shopping-cart" horizontal="false" target="_self">
    Eligible Supplier Oasis orders are validated, mapped, and created once in Linnworks.
  </Card>

  <Card title="Reliable Inventory Synchronisation" icon="refresh" horizontal="false" target="_self">
    Configured Linnworks quantities are converted into validated Supplier Oasis inventory messages.
  </Card>

  <Card title="Fulfilment Updates" icon="truck" horizontal="false" target="_self">
    Full and partial shipment messages contain shipped quantities, carrier details, and tracking references.
  </Card>

  <Card title="Acknowledgements and Exceptions" icon="file-text" horizontal="false" target="_self">
    Acknowledgement, short-ship, and backorder messages are generated according to configuration.
  </Card>

  <Card title="Duplicate Prevention" icon="copy" horizontal="false" target="_self">
    Persistent transaction states protect order and message processing from duplicates.
  </Card>

  <Card title="Operational Traceability" icon="bar-chart-2" horizontal="false" target="_self">
    Validation, logging, correlation IDs, retries, and transaction history provide operational visibility.
  </Card>
</Columns>

The primary order flow is:

`Retrieve Supplier Oasis order → Validate XML → Check duplicates → Map order → Create Linnworks order → Send acknowledgement`

The primary inventory flow is:

`Read Linnworks stock → Apply availability rules → Generate XML → Validate XSD → Send inventory update`

The primary shipment flow is:

`Detect Linnworks fulfilment → Map shipment information → Generate XML → Validate XSD → Send shipment confirmation`
