Once a merchant of the JTL Fulfillment Network (FFN) is handed over to you, X-Sitter does the complete processing for this merchant:

- Waiting outbound orders are accepted after a stock check and acknowledged in FFN.
- Shipped orders and stored goods are reported back to FFN.
- An hourly stock reconciliation brings everything else that changes the stock to FFN: corrections, inventory counts, putaways without advance notice, quality locks.

FFN therefore always keeps the merchant's stock up to date.

## Before you start

- The FFN connection exists, see [Connect JTL Fulfillment Network (FFN)](/jtl/ffn-connection.md).
- The merchant is assigned to a client, **including the FFN warehouse**, see [FFN merchants](/jtl/ffn-merchants.md). Without a warehouse no goods receipts are reported.
- The client's articles are imported (job **FFN products**, *FFN-Produkte laden*). Articles that are still missing are loaded from FFN one by one when an order arrives.
- **Stock in X-Sitter:** an order is only accepted if the free stock covers it. Without booked goods, every order stays in FFN.
- You have access to **Administration › Jobs & connections** (*Administration › Jobs & Verbindungen*), see [Jobs & connections](/administration/jobs-and-connections.md).

!!! warning No parallel operation
As long as another system (for example JTL-WMS) still serves the merchant, leave the merchant's job inactive or without a cut-off date. Otherwise orders are acknowledged twice and goods receipts are booked twice.
!!!

## The three switches

Orders only arrive when all three are set:

| Switch | Where | Effect |
|---|---|---|
| Merchant assignment | **JTL › FFN Dealer Directory › Add a new dealer** | Decides which client the merchant's orders belong to |
| Job **FFN orders** (*FFN - Aufträge laden*), active | **Administration › Jobs & connections**, at the client's company | Releases this client's merchant. A job at your own (logistician) company applies to all assigned merchants |
| Cut-off date **Orders and goods receipts from** (*Aufträge und Wareneingänge ab*) | In the mask of this job | Puts the processing for this merchant live. Empty = the job does nothing |

The card **Takeover by X-Sitter** (*Übernahme durch X-Sitter*) on the [FFN connection page](/jtl/ffn-connection.md) shows all merchants with an active job, their cut-off date and the link **Edit job** (*Job bearbeiten*).

## Step by step

1. Open **ERP Systems › JTL › FFN Dealer Directory** and assign the merchant to the client, including the **FFN Warehouse** ([FFN merchants](/jtl/ffn-merchants.md)).
2. Open **Administration › Jobs & connections**, choose the client's company, create the job **FFN orders** (*FFN - Aufträge laden*) and switch it on.
3. Put the client's goods into stock in X-Sitter or take over the existing stock, see [Putaway](/inbound/putaway.md).
4. Open the job, enter the takeover date under **Orders and goods receipts from** and save.
5. Optional: set **Reconcile stock with FFN** to **report only** first (see below).
6. From the next run (every minute), accepted orders appear in the [order overview](/orders/order-overview.md) with the source FFN and the status **Open** (*Offen*).

![Screenshot: Job mask of "FFN - Aufträge laden" with the cut-off date, the warning about parallel operation and the stock reconciliation fields](/jtl/images/ffn-order-processing-job-mask.png)

## Fields and options

| Field | Where | Meaning |
|---|---|---|
| **Orders and goods receipts from** (*Aufträge und Wareneingänge ab*) | FFN order job | Takeover date. FFN orders created before this day and putaways before this day stay untouched. Empty = no import and no goods receipt reports |
| **Reconcile stock with FFN** (*Bestand mit FFN abgleichen*) | FFN order job | **off** (*aus*), **report only** (*nur melden*: differences are sent by Telegram, nothing is booked) or **correct automatically** (*automatisch korrigieren*: differences are booked in FFN). Only works with a cut-off date |
| **Largest automatic correction (units)** (*Größte automatische Korrektur (Stück)*) | FFN order job | Default 10. Larger differences are reported instead of booked. This protects against a wrong booking that empties an article's stock in FFN |
| **Import ASNs from** (*Avise importieren ab*) | [FFN connection page](/jtl/ffn-connection.md) | From this day on, FFN inbound deliveries of all assigned merchants are created as [advance notices](/inbound/advance-notices.md). Empty = off |

The order cut-off date applies per job, i.e. per merchant: every merchant can be taken over on its own day. The advance notice date applies to your whole company and does not depend on any job.

![Screenshot: "Reconcile stock with FFN" dropdown opened with the options off, report only and correct automatically](/jtl/images/ffn-order-processing-stock-sync.png)

## How it works

### Accepting an order (every minute)

1. X-Sitter reads the merchant's orders that are waiting in FFN.
2. Every item must be a known article, and the free stock must cover the quantity. Free stock = stock on storage places without a quality lock, minus the open quantities of all orders in progress. Bill-of-materials headers do not count, their components do (see [Bills of materials](/products/bills-of-materials.md)).
3. If the stock is sufficient, the order is created with the status **Pending** (*Wartend*), acknowledged in FFN, its documents (e.g. invoice) are loaded, and then it becomes **Open** (*Offen*). Only now does the warehouse see it.
4. If the stock is not sufficient or an article is unknown, nothing is created. The order stays waiting in FFN and is checked again in the next run.
5. If a run is interrupted between creating and opening the order, the next run finishes the order or removes the waiting order again.

After the order has been opened, workflows with the trigger "when an order is imported/created" start, see [Workflows](/automation/workflows.md).

### Cancellations

An order cancelled in FFN is cancelled in X-Sitter as long as it is **Open**, **Pending**, **Error** (*Fehler*) or **Waiting** (*Wartet*). If it is already in progress, it stays and you receive a Telegram message.

### Reporting the shipment (every 5 minutes)

For orders with the status **Sent** (*Versendet*), X-Sitter sends a shipment notification to FFN with the shipped quantities and one parcel per tracking number. FFN books the stock out and marks the order as shipped. The order history then shows **Tracking transferred** (*Tracking übertragen*).

### Reporting goods receipts (every 5 minutes)

For advance notices that came from FFN, X-Sitter reports the stored quantity per article, batch and best-before date that FFN does not know yet. Putaways wait ten minutes before they are reported, so that you can still cancel them. An advance notice that you close in X-Sitter is closed in FFN as soon as everything has been reported.

![Screenshot: Advance notice from FFN with stored items and the closed status](/jtl/images/ffn-order-processing-advance-notice.png)

### Stock reconciliation (every hour)

Switched on per job with **Reconcile stock with FFN**.

1. For every article of the client that is known in FFN, X-Sitter compares its stock with the FFN stock: goods on storage places without a quality lock against the FFN stock (including quantities reserved for orders), quality-locked goods against the blocked FFN stock.
2. The difference is the correction. Example: 6 units are booked out in the warehouse, X-Sitter has 94, FFN has 100 – the reconciliation reports or books −6.
3. An article is skipped while its stock is on the move: an order with the article is in progress (picked, packed, waiting for loading) or was shipped as an FFN order but not reported yet; the article was put away in the last 30 minutes; a goods receipt for an FFN advance notice has not been reported yet; an earlier correction is still open.
4. **Report only:** the differences arrive by Telegram, the same list at most once a day. **Correct automatically:** differences up to the limit are booked in FFN with the note "X-Sitter Bestandsabgleich"; larger ones are reported.
5. Emergency brake: if more than 20 articles and at the same time more than a quarter of the compared articles differ, nothing is booked, only reported. That many differences are not corrections but stock that has not been booked in X-Sitter yet.

!!!
Recommended order when you take over a merchant: first **report only** – the list shows whether the opening stock in X-Sitter matches the FFN stock – then **correct automatically**.
!!!

## What is taken over from FFN

| FFN | X-Sitter |
|---|---|
| Merchant's order number | Order ID |
| External number (shop) | Order number |
| Delivery address with company, salutation, state, mobile number | Delivery address, street and house number separated |
| External and internal note | Note on the order; the internal note starts with "Intern:" |
| Shipping method | Shipping provider and name of the shipping method |
| Requested delivery date | Expected delivery date |
| Priority 0–5 | Priority 10–1 |
| Items | SKU, name, quantity, net and gross price, tax rate, article, EAN, weight |
| Bill of materials | Header as a bundle item (not picked), components as items |
| Documents (invoice, delivery note, shipping label) | [Order documents](/orders/order-documents.md) |

## Good to know / Troubleshooting

Most messages arrive by Telegram. Subscribe to **JTL-FFN - error** (*JTL-FFN - Fehler*), see [Telegram notifications](/account/telegram-notifications.md).

| Message | Cause | Solution |
|---|---|---|
| No orders arrive although the cut-off date is set | Job missing or inactive, merchant not assigned, or the order was created before the cut-off date | Check the card **Takeover by X-Sitter** on the FFN connection page; fix the job and the assignment |
| **Der FFN-Auftrag … wartet in JTL-FFN und wurde nicht angenommen.** with "Not enough stock: SKU (x needed, y free)" | The free stock is not sufficient | Put the goods away; the next run accepts the order |
| … with "Unknown article: SKU" | The article can be found neither in X-Sitter nor in FFN | Import or create the article (merchant's SKU, owner = client) |
| **Der FFN-Auftrag … kann so nicht importiert werden und bleibt in JTL-FFN liegen.** | The order has no pickable item or a fractional quantity | Clarify the order with the merchant |
| **Der Auftrag … wurde in JTL-FFN storniert, ist hier aber bereits in Arbeit …** | The cancellation came after picking had started | Stop the order manually |
| **Die Versandmeldung für den Auftrag … wurde von JTL-FFN nicht angenommen …** with "Stocks_NotEnoughStock" | FFN does not know the stock (goods receipt never reported) | Put the goods away through an FFN advance notice, or correct the stock in FFN |
| **Für … wurden n Stück mehr an JTL-FFN gemeldet, als jetzt eingelagert sind …** | A putaway was cancelled after it had been reported | The stock reconciliation corrects the difference; otherwise correct the stock in FFN manually |
| **Einlagerungen zur Referenz … passen zu mehreren Avisen …** | Two advance notices have the same delivery note/order number and the same article | Change the reference of one advance notice |
| **Bestandsabgleich JTL-FFN, Händler …: n Artikel weichen ab. …** | Warehouse and FFN stock differ; the job is set to "report only" or the emergency brake was triggered | Check the list; if the warehouse stock is right, switch to "correct automatically" or correct in FFN |
| **… n Differenzen liegen über der Grenze von x Stück und wurden nicht gebucht. Bitte prüfen.** | Difference larger than **Largest automatic correction** | Check the stock; raise the limit in the job or correct manually in FFN |
| **… n Korrekturen wurden von FFN nicht angenommen.** | FFN rejects the correction, e.g. because the product is managed with batch or best-before date there | Correct the stock of this article in FFN manually |
| **Die Einstellung ist für diese Firma nicht angelegt. …** (when saving the advance notice date) | Your company has no FFN merchant assignment yet | Assign a merchant first; if the message stays, contact X-Sitter support |
| **Bitte ein gültiges Datum angeben oder das Feld leer lassen.** | The date is not valid | Choose the date with the date picker |

### Limits

- If a merchant locks an order in FFN to change it, an order that X-Sitter has already accepted is not stopped.
- FFN is only informed once the order is **Sent**. Partial deliveries before that are not reported.
- The stock reconciliation compares per article, not per batch or best-before date. Products that FFN manages with batch or best-before date are not corrected automatically.
- A putaway that is cancelled after the goods receipt report, and quality locks, are only balanced by the stock reconciliation. Without it, the difference stays in FFN.
