---
title: "Défragmentation — Zone client et ordonnancement par tournée"
tags: [stockage, défragmentation, expédition, zone-client, planning, tournée, STOP, custom]
status: draft
standard_ref: concepts/defragmentation.md
jira_refs: [LIM-85, LIM-87]
confluence_refs: []
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "LIM-85 LOT2.1 Configuration stratégies defragmentation du stock client par tournée.md", "LIM-87 LOT2.1 [TOURNÉES] Défragmentation client - quai non assigné ATTENTE_CLIENT CT-13.md"]
last_updated: 2026-05-12
author: Arthur
---

# Défragmentation — Zone client et ordonnancement par tournée

> **Résumé** : processus de défragmentation pour préparer les palettes
> d'expédition vers la zone de défragmentation client dans l'ASRS.
> Inclut un **custom majeur** de défragmentation par tournée (RUT) avec
> ordonnancement par numéro de STOP, déclenché uniquement quand toutes
> les palettes sont prêtes et qu'aucun quai n'est assigné.

> **Standard EasyWMS** : → voir [Defragmentation](../../concepts/defragmentation.md)
> Ce qui suit documente les **spécificités Limagrain** par rapport au
> standard.

## Contexte projet

La défragmentation est un processus standard des entrepôts automatisés.
Chez Limagrain, elle sert à préparer les routes (expéditions) en
déplaçant les conteneurs vers la zone de défragmentation client
(TK02-04, rangées 60-69).

La défragmentation shipping standard propose trois modes d'assignation
(Picking Only, Shipping Only, Picking & Shipping) mais **aucun ne
répond au besoin Limagrain** :

| Mode standard | Comportement | Problème |
|---------------|-------------|----------|
| Shipping Only | Défrag uniquement les palettes complètes | Les palettes de picking ne sont pas repositionnées → ordonnancement STOP faux dans le canal |
| Picking & Shipping | Défrag toutes les palettes (y compris celles à picker) | Les palettes sortent pour être défragmentées alors qu'elles doivent d'abord passer au PK → casse l'ordonnancement |
| Picking Only | Non applicable au besoin | — |

**Contrainte métier** : le stock doit être rangé dans le canal
d'expédition ASRS dans l'**ordre inverse des STOP** de la tournée, de
sorte que les palettes sortent du canal dans le bon ordre lors du
chargement camion (STOP max chargé en premier → déchargé en dernier).

Deux cas se présentent selon l'assignation du quai :

| Situation | Custom | Page |
|-----------|--------|------|
| Quai **non assigné** au RUT | Défrag custom décrite ci-dessous | Cette page |
| Quai **déjà assigné** au RUT | Override du WF stacker crane | → voir [Séquençage shipping par STOP](../04-outbound/sequencage-shipping-stop.md) |

## Principe général

Les conteneurs assignés à une expédition sont relocalisés dans la zone
de défragmentation client **en avance**, généralement la nuit ou pendant
les périodes de moindre charge. Cela permet une sortie rapide le jour
de l'expédition.

## Caractéristiques

- **Priorité** : basse (s'exécute en arrière-plan)
- **Planification** : horaires configurables par Limagrain
- **Zone cible** : zone défragmentation client (TK02, 03, 04 —
  rangées 60-69, profondeurs 2-10)
- **Déclencheur** : stratégie de défragmentation shipping (mode
  Shipping, type d'ordre Tournée) avec filtre custom

## Configuration du planning

Limagrain peut modifier les horaires de façon autonome :

1. Menu « Configuration » → « Défragmentation » → « Planning de
   défragmentation »
2. Bouton « Ajouter » → paramétrer les horaires/planning souhaités
3. Activer la défragmentation via le bouton « Activer »

## Prérequis

Pour que EasyWMS puisse défragmenter les conteneurs vers la zone client,
il doit exister au moins une **stratégie de défragmentation shipping**
configurée en mode Shipping et type d'ordre Tournée.

## Lien avec l'expédition

La défragmentation est l'étape 4 du flux d'expédition (voir
[Flux expédition](../04-outbound/flux-expedition.md)) :

1. OS reçu et libéré → stock assigné
2. Palettes complètes → défragmentation vers zone client
3. Palettes picking → poste de travail d'abord, puis zone client
4. Depuis zone client → sortie vers poumon le jour J

## Custom défrag client par tournée — quai non assigné (LIM-87)

### Objectif

Déclencher la défragmentation client d'une tournée **uniquement lorsque
toutes ses palettes de tous ses OS sont prêtes à partir vers l'image de
quai**, c'est-à-dire :

- Les palettes complètes (PC) sont dans l'ASRS
- Les palettes ayant nécessité un picking sont revenues dans l'ASRS
  après prélèvement (palettes filles PF retournées)
- **Aucun quai n'est encore associé à la tournée** (sinon le flux
  shipping standard avec ordonnancement par STOP prend le relais —
  voir [Séquençage shipping par STOP](../04-outbound/sequencage-shipping-stop.md))

La condition « toutes les palettes terminées » s'évalue **au niveau de
la tournée** (RUT) : c'est du « tout-ou-rien ».

### Mécanisme

Le custom utilise le **job de défragmentation client standard** avec
une stratégie en mode Shipping et type d'ordre Tournée. Un **filtre
custom au niveau de la sélection des candidats** exclut de l'éligibilité
toute tournée dont au moins une palette (d'au moins un OS) n'est pas
encore prête dans l'ASRS.

### Règle d'éligibilité

```
POUR CHAQUE RUT candidat à la défrag shipping
  (standard : exclut les RUT avec quai assigné) :
    POUR CHAQUE OS du RUT :
        SI l'OS a des lignes picking non terminées → EXCLURE le RUT
        SI au moins une palette complète assignée n'est pas dans l'ASRS
           → EXCLURE le RUT
    SI aucune exclusion → ÉLIGIBLE
    SINON → reste candidat pour le prochain passage du job
```

> **Point clé** : l'éligibilité est « tout-ou-rien » au niveau tournée.
> Tant qu'un seul OS du RUT n'a pas toutes ses palettes prêtes, aucune
> défrag n'est lancée pour le RUT.

### Ordonnancement dans le canal

Les tâches de défrag sont générées avec un tri par **numéro de STOP**
inversé : les palettes du STOP max entrent dans le canal en premier,
celles du STOP 1 en dernier. Ainsi, à la sortie du canal, l'ordre
est respecté (STOP 1 sort en premier).

La décision prise est de ranger **une tournée par canal** (ou plusieurs
canaux si nécessaire) et non un STOP par canal.

### Paramétrage

- **MAX_DEFRAG_ATTEMPT** : nombre max de tentatives par support pour
  trouver un emplacement de destination. Le compteur ne s'incrémente
  que si le WMS a cherché un emplacement et n'en a pas trouvé. Si le
  filtre custom exclut la tournée avant la recherche de destination,
  le compteur reste à 0.

> ⚠️ Point ouvert : vérifier si MAX_DEFRAG_ATTEMPT impacte uniquement
> la défrag par rotation ou aussi la défrag client.

### Cas de test

#### Cas nominaux

| CT | Préconditions | Résultat attendu |
|----|--------------|------------------|
| CT-01 | RUT mono-OS, 3 PC dans l'ASRS, aucun quai | Éligible. 3 tâches défrag, tri par séquence STOP |
| CT-02 | RUT mono-OS, 2 PP pickées → 2 PF revenues ASRS, aucun quai | Éligible. 2 tâches défrag pour les PF |
| CT-03 | RUT mono-OS mixte : 2 PC + 1 PF revenue, aucun quai | Éligible. 3 tâches défrag |
| CT-04 | RUT multi-OS (STOP 1, 2, 3), 2 PC chacun, aucun quai | Éligible. 6 tâches, STOP 3 entre en premier dans le canal |
| CT-05 | RUT multi-OS mixte, tous prêts, aucun quai | Éligible en un seul passage |

#### Cas limites

| CT | Préconditions | Résultat attendu |
|----|--------------|------------------|
| CT-06 | RUT 2 OS : SOR1 prêt, SOR2 a 1 PF non revenue | **NON éligible** — un OS bloque tout le RUT |
| CT-07 | RUT multi-OS, 1 PF en transit AGV vers ASRS | **NON éligible** tant que PF pas physiquement stockée dans un emplacement ASRS |
| CT-08 | RUT prêt mais quai déjà assigné | **NON éligible** pour le custom défrag. Flux shipping standard prend le relais |
| CT-09 | RUT 1 SOR, 3 lignes picking : 2 PF revenues, 1 PP au PK | **NON éligible** — on attend la totalité |

#### Cas dégradés

| CT | Préconditions | Résultat attendu |
|----|--------------|------------------|
| CT-11 | AGV HS pendant retour PF → ASRS | **NON éligible** tant que PF pas dans l'ASRS. Redevient éligible après remise en route |
| CT-12 | PP en litige, stock réassigné sur PP' | Éligible quand toutes les palettes (y compris réassignations) sont dans l'ASRS |
| CT-13 | Rupture de stock sur un OS de la tournée | **À trancher** — voir point ouvert ci-dessous |
| CT-14 | Bouton « Problème » au picking, OnStockAdjust recalcule | Si stock suffisant : PF revient, RUT éligible. Si réassignation : attente nouvelle PF' |
| CT-15 | RUT libéré, aucune tâche picking jamais générée | **À trancher** — non éligible par défaut |
| CT-16 | Nouveau SOR ajouté à un RUT déjà éligible | **Redevient NON éligible** jusqu'à ce que le nouveau SOR soit terminé |

## Pause et reprise

Le processus peut être mis en pause et repris ultérieurement en cas de
reprise d'activité (par exemple si l'activité reprend la nuit).

## Points d'attention

⚠️ Les tâches de défragmentation ont une priorité **basse** — elles ne
perturbent pas l'activité normale mais peuvent être longues.

⚠️ MECALUX conseille une présence sur site lors de la défragmentation
en cas de défaut sur les transstockeurs (non obligatoire).

⚠️ L'avancée des tâches est consultable sur la vue des tâches.

⚠️ Le filtre custom n'incrémente pas MAX_DEFRAG_ATTEMPT quand il
exclut un RUT — le compteur ne démarre que lors d'une recherche
effective de destination.

## Questions ouvertes

- [ ] Comportement en cas de **rupture de stock** sur un OS de la
  tournée (CT-13) : option A (RUT reste non éligible, attend un
  nouveau SOR sans les lignes concernées) ou option B (défrag lancée
  sur les palettes disponibles) ? (@Justine — à vérifier avec client)
  → voir [Questions ouvertes](../08-transverse/questions-ouvertes.md)
- [ ] **MAX_DEFRAG_ATTEMPT** : impacte-t-il uniquement la défrag par
  rotation ou aussi la défrag client ? (@Nicolas)
  → voir [Questions ouvertes](../08-transverse/questions-ouvertes.md)

## Historique des modifications

| Date | Auteur | Modification |
|------|--------|--------------|
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
| 2026-05-12 | Arthur | Ajout custom défrag client par tournée (LIM-85/LIM-87) : mécanisme, éligibilité, cas de test, points ouverts |

## Références

| Source | Type | Date |
|--------|------|------|
| FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | Analyse fonctionnelle | 28/11/2025 |
| [LIM-85](https://easywmsfrance.atlassian.net/browse/LIM-85) | Ticket Jira | 2026 |
| [LIM-87](https://easywmsfrance.atlassian.net/browse/LIM-87) | Ticket Jira | 2026 |
