# Harmony Integration with DotApparel

## Supported features <a href="#supported-features" id="supported-features"></a>

The following features are currently supported by DotApparel Core

* Products
* Inventory
* Orders
* Fulfillments
* Marketplace
* Images (via S3/Cloudinary. No native image integration from Harmony)
* Customers

**Coming soon**

* Gift Cards
* Refunds

## Connection <a href="#connection" id="connection"></a>

<figure><img src="/files/Yajg2jjnj4pSsDOaXGvQ" alt=""><figcaption></figcaption></figure>

A keyword should be configured along with URL, username and password. These should be available in the reference sheet, otherwise can be retrieved from merchant/FBS team.

## Products

<figure><img src="/files/cPuKmWAvYbPOloNjkMUy" alt=""><figcaption></figcaption></figure>

Harmony price fields settings are used to determine which field should we use for original/markdown price from Harmony response.

## Orders <a href="#orders" id="orders"></a>

**Freight options**

* Carrier code: Determines which carrier the order should be shipped with (i.e. Aus Post, StarTrack, etc.)
* Freight stock item namekey: This is configured in Harmony by FBS & merchant and is required as part of the order payload. This should be available in Reference sheet or can otherwise be retrieve from FBS/merchant.

<figure><img src="/files/vaYRiGBK3hbeqiBOI8kp" alt=""><figcaption></figcaption></figure>

**Click & Collect orders:**

Current implementation also enable C\&C order posting. If merchant enables new pick up location it they need to inform us to update the settings:\
![](/files/UZNsPvYZCnn2JWwm437b)

However, Harmony requires shipping address field to be populated in order payload so we also need to add a dummy value for this via order mapping.

<figure><img src="/files/BR6QmBqykrnNvbkLZWpA" alt=""><figcaption><p>Example mapping (only for address1 but can update for other fields if required)</p></figcaption></figure>

**Harmony specific values**

These are constant values that should be readily configured for each brand, and are required as part of order payload. These should be available in reference sheet or can otherwise be retrieved from FBS.

\
![](/files/II7pRyTUET8UcxkeUfF3)

![warning](https://dotcollectiveanz.atlassian.net/gateway/api/emoji/f974a7dc-41ac-4cad-9cf4-530208faa7aa/26a0/path) Fulfillment warehouse will be overridden for click and collect order (`Local pickup`), which will use the warehouse namekey that’s configured in the settings

<figure><img src="/files/1sJLFpL20x9YVyLgvBHw" alt=""><figcaption></figcaption></figure>

![warning](https://dotcollectiveanz.atlassian.net/gateway/api/emoji/f974a7dc-41ac-4cad-9cf4-530208faa7aa/26a0/path) Marketplace order can also override these fixed values, specifically:

* Agent zone
* Originated warehouse
* Payment merchant ID
* Payment card type
* Shop debtor

These make sure that order placed via marketplace can be processed against different payment information and fulfilled by different warehouse within Harmony.

<figure><img src="/files/pvAxlYDU2r7EtDugDcE3" alt=""><figcaption></figcaption></figure>

### Mappings <a href="#mappings" id="mappings"></a>

Most of the mappings are similar to what’s currently available to Apparel21. However there are a few areas that are specific to Harmony:

#### Orders <a href="#orders.1" id="orders.1"></a>

* By default, Harmony uses capitalisation for all order information (names, addresses, etc.)
* `altOrderNumber`: alternative order number mapping, only used for marketplace order.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dotapparel.com.au/core/settings/harmony-integration-with-dotapparel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
