# Interfacility transfer

An interfacility transfer describes the case where items should be transferred from one warehouse or store to another warehouse or store of the same retailer. In the fulfillmenttools platform it specifically describes moving items between facilities when a [click & collect order](https://docs.fulfillmenttools.com/documentation/order-management#click-and-collect-order) is split during routing due to missing items in the receiving facility.

## Concept

The interfacility transfer process involves two types of facilities: **receiving and supplying**. The process covers the following steps:

1. **Receiving facility:** The receiving facility's pick job lists expected items. Available items can be picked immediately, but picking may pause until all items arrive.
2. **Supplying facility:** The supplying facility sends missing items to the receiving facility, working like a "ship from store" process. Once handed over, a purchase order is created that includes a transfer ID (which helps identify the parcel).
3. **Item transfer and receipt:** When the shipment arrives in the receiving facility, scanning the parcel triggers the receipt, which updates the pick job in the receiving facility with the newly arrived items.
4. **Final picking:** Once all items are available, the pick job is completed, and the order is ready for the customer.

<figure><img src="https://4170739437-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLrrr5jgTsDuR38gNJIrm%2Fuploads%2FzE1Pg6cY5uZwqTxh0CPc%2FInterfacility%20transfer%20process.png?alt=media&#x26;token=26cf6115-16b2-4742-a971-78c1766f4772" alt=""><figcaption></figcaption></figure>

## Implementation in fulfillmenttools

Below, a step-by-step guide on implementing an interfacility transfer can be found.

### 1. Create an order including an interfacility transfer

[Create a click & collect order](https://fulfillmenttools.github.io/fulfillmenttools-api-reference-ui/#post-/api/orders) and define the supplying facility in the order's delivery preferences under `COLLECT/supplyingFacilitiesConfigurations:`

1. `facilityRef`: id of the facility that should supply the missing items
2. `deliveryEvents.deliveryTarget`: set to `"SHIP_TO_STORE"`
3. `deliveryEvents.deliveryTrigger`: set to `"DEFAULT"`
4. The order can be monitored in the [order view](https://docs.fulfillmenttools.com/documentation/backoffice/network-view/orders) in Backoffice

{% hint style="info" %}
If no items are available in the preferred facility, the system will still route the order to the next best facility for fulfillment based on configuration settings. A pickJob will be created in the preferred facility with only expected items.
{% endhint %}

<details>

<summary><strong>Example body information for a click and collect case</strong></summary>

```json
    "deliveryPreferences": {
        "collect": [
            {
                "facilityRef": "021e3402-ff49-4ec5-a907-af3b1e031c60",
                "supplyingFacilitiesConfigurations": [
                    {
                        "facilityRef": "e19ae843-0987-48bf-a182-a59997f937b0",
                        "deliveryEvents": [
                            {
                                "deliveryTarget": "SHIP_TO_STORE",
                                "deliveryTrigger": "DEFAULT"
                            }
                        ]
                    }
                ]
            }
        ]
    }
```

</details>

### 2. Picking and handover in supplying facility

* A regular `pickJob` is automatically created in the supplying facility containing all items that should be sent to the receiving facility. The pickJob can be carried out like any other "normal" pickJob via our [Operations app](https://docs.fulfillmenttools.com/documentation/apps/operations-app).
* Once the `pickJob` is processed and the items are packed, the `handoverJob` is completed and the items are handed over to a carrier who will ship the items to the facility specified in the order under `supplyingFacilities`. The hand over can be carried out like any other "normal" `handOverJob` via our [Operations app](https://docs.fulfillmenttools.com/documentation/apps/operations-app). The address of the receiving facility will be displayed on the shipping label.
* The tasks can be monitored in the task view in the Backoffice (tasks are not marked as belonging to an inter-facility transfer).

### 3. Picking in receiving facility

* A `pickJob` is automatically created in the receiving facility containing all items that should be picked in the facility as well as expected items that are still needed to be transferred from the supplying facility.
* Users can start picking the already available items immediately.
  * The status of the pickJob is immediately set to open, allowing picking to begin for available items. Once all available items are picked, the status of the pickJob is automatically changed to `WAITING_FOR_INPUT`.
  * In a case only part of the expected items arrive in a delivery, picking can continue until all expected items have arrived. Only when all items are picked, the pickJob is finalized and marked as finished.
* The pickJob can be monitored in the task view in the Backoffice. In the task overview, information on the facility from which items are shipped is display for expected line items.

### 4. Transfer process and goods receipt

* After the `handoverJob` in the supplying facility is completed, an [`inboundProcess`](https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/inbound-process) with a `purchaseOrder` is created automatically in the receiving facility.

{% hint style="warning" %}
If there are two or more `handoverJobs` from different facilities, an `inboundProcess` is created for each facility.
{% endhint %}

* As soon as the `purchaseOrder` was created, the included items are announced in the receiving facility as [expected stock](https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/stock/expected-stock-in-availability). The transfer can be monitored in the [inbound view](https://docs.fulfillmenttools.com/documentation/backoffice/facility-view/inventory/inbound) in Backoffice where it is marked as "internal".
* When the delivery has arrived in the receiving facility, it can be identified by scanning the `transferId`.
* The goods receipt can be performed via our [Inventory app](https://docs.fulfillmenttools.com/documentation/apps/inventory-app). Alternatively, a `receipt` can be directly added to the respective `inboundProcess` via [API](https://fulfillmenttools.github.io/fulfillmenttools-api-reference-ui/#post-/api/inboundprocesses/-inboundProcessId-/receipts).
* After the `receipt` is set to status `FINISHED`, the expected stock is added to the inventory of the receiving facility and the `pickJob` is updated, converting expected items into existing items.

### 5. Finalizing the order

* After the missing items have arrived, the system updates the `pickJob` and:
  * Converts the expected items into regular items.
  * Changes the status of the `pickJob` to `OPEN`, allowing the picking process to continue or begin.
* With all items picked, the entire order can now be packed and is then ready for the handover to the customer.
* Picking, packing and handover can be performed as usual via the [Operations app](https://docs.fulfillmenttools.com/documentation/apps/operations-app).
