---
title: "Custom Application Management"
type: operation
sources:
- sources/archives/Gestion_custom_application.md
related:
- architecture/application-dictionary.md
- operations/development-methodology.md
- operations/first-deployment.md
- operations/deployment-existing-app.md
- operations/git-workflow.md
- operations/code-review-process.md
last_compiled: "2026-04-17"
---
# Custom Application Management
## Overview
Procédure de **gestion de la custom application** EasyWMS (extension AD projet) via **EasyBuilder** : création, import et export. La custom app contient l'ensemble des éléments AD spécifiques au projet (Commands, Queries, Entities, Workflows, Dialogs…) compilés au-dessus du core EasyWMS et des modules standards activés dans le `DeployConfig.yaml`.
> ⚠️ Plusieurs développeurs peuvent travailler sur un même projet depuis des VM différentes. Une **gestion rigoureuse de la CustomApp** et une **bonne communication** sur l'avancement sont indispensables pour éviter les écrasements.
Règles de base :
- **Exporter** la CustomApp **à chaque fin de tâche** (après tests locaux)
- **Réimporter** la CustomApp de `develop` **après merge** de votre branche dans `develop`
- Si vous **rejoignez un projet en cours** → l'**import** de la CustomApp existante est la **première chose à faire**
> ⛔ Une mauvaise manipulation ici peut entraîner la **perte de vos développements**. Procéder avec soin.
Source : Confluence EasyWMS France - *Gestion de la custom application* (v12, 20/12/2022).
## 1. Création de l'application custom
À n'exécuter qu'**une seule fois par projet** (le premier développeur). Les autres devs font un **Import** (cf. section 2).
### Option A - Partir d'une app existante du Toolkit
Si le projet réutilise des modifications déjà packagées dans le dépôt [**FRANCE_OPERATIONS_TOOLS**](https://msscode.mecalux.com/Proyectos_SW/FRANCE_OPERATIONS_TOOLS.git) (ex. modifications habituelles du module transporteur) :
1. Cloner le projet **FRANCE_OPERATIONS_TOOLS** en local
2. Réaliser l'import (cf. section 2) depuis :
```
..\FRANCE_OPERATIONS_TOOLS\
```
Exemple : `..\FRANCE_OPERATIONS_TOOLS\Module transporteur`
### Option B - Créer une application vierge
Dans **EasyBuilder** :
1. **Clic droit sur "Application"** → **"New application"**
2. Saisir le nom de l'application
3. Définir les dépendances (en général : **`EasyWMS`**)
### Premier export
Après création, faire un **1ᵉʳ export sur la branche `develop`** du dépôt GIT (cf. section 3) pour initialiser `..\source\NomApplication` et permettre aux autres devs d'importer.
## 2. Import de l'application custom
> ⚠️ **Avant d'importer**, il faut d'abord **supprimer** la CustomApp existante dans votre Builder local.
### Procédure d'import
1. Dans EasyBuilder : clic droit sur l'application custom existante → **"Delete application"**
2. Clic droit sur **"Applications"** → **"Import and save application from text"**
3. Sélectionner le chemin dans votre dépôt GIT :
```
..\source\NomApplication
```
### Quand importer
| Situation | Import ? |
|-----------|----------|
| Vous rejoignez un projet en cours | **Oui** (première action) |
| Vous venez de merger votre branche dans `develop` | **Oui** (réimporter le `develop` à jour) |
| Un collègue a poussé une modif majeure sur `develop` | **Oui** après `git pull` |
| Vous démarrez la journée sur votre branche perso | **Non** - travailler sur votre export local |
## 3. Export de l'application custom
### Pré-requis
> ⚠️ **Avant l'export**, **vider** le dossier de destination dans le dépôt GIT :
> ```
> ..\source\NomApplication
> ```
> Sinon, des anciens fichiers orphelins peuvent rester et polluer le diff.
> ⚠️ Bien vérifier d'être sur **la branche de votre tâche** avant d'exporter.
> ⛔ **Aucun élément en "Check-out" n'est sauvegardé ni exporté.** Tous les Check-in doivent être effectués avant l'export.
### Procédure d'export
1. Dans EasyBuilder : clic droit sur l'application custom → **"Export application to text"**
2. Sélectionner le chemin :
```
..\source\NomApplication
```
### Suites logiques
- **Commit + push** sur la branche de votre tâche - cf. [git-workflow](git-workflow.md#3-commit-de-vos-modifications)
- Les fichiers exportés peuvent être **séparés en plusieurs** pour un même élément AD (workflow, source C#, DESIGN…). Bien prendre **tous** les fichiers portant le nom de l'élément modifié.
## Règles de coexistence multi-développeurs
| Situation | Action |
|-----------|--------|
| Plusieurs devs sur le projet | Chacun sur sa **branche GIT personnelle** (cf. [development-methodology](development-methodology.md)) |
| Éviter les écrasements | **Export systématique** en fin de tâche + **import** après merge dans `develop` |
| Éléments en Check-out | À **Check-in avant export** - sinon perte silencieuse |
| Structure commune (toolkit) | Utiliser **FRANCE_OPERATIONS_TOOLS** en option A de création |
## Common errors
- **Perte de développements après import** → la CustomApp locale contenait des changements non exportés. **Toujours exporter avant de supprimer/importer.**
- **Diff GIT pollué par d'anciens fichiers** → dossier de destination non vidé avant export. Vider `..\source\NomApplication` avant chaque export.
- **Élément absent du dépôt après export** → élément laissé en **Check-out** dans EasyBuilder. Les Check-out sont silencieusement ignorés à l'export.
- **Import échoue avec des erreurs de dépendances** → `EasyWMS` (ou autre module requis) non listé comme dépendance lors de la création. Re-créer la custom app avec les bonnes dépendances.
- **Conflits récurrents sur la CustomApp** → deux devs poussent en parallèle sur `develop`. Respecter le workflow : branche perso → rebase avant merge → export/import séquentiel (cf. [git-workflow](git-workflow.md) + [development-methodology](development-methodology.md)).
- **Fichiers partiels commités** → un même élément est sérialisé en plusieurs fichiers (workflow, C#, DESIGN). Bien stager **tous les fichiers** avant commit.
## Related
- [Application Dictionary](../architecture/application-dictionary.md) - contenu packagé dans la custom app (Commands, Queries, Entities, Views, Dialogs, Events, Workflows)
- [Development Methodology](development-methodology.md) - stratégie de branches et cadre dans lequel s'inscrit la gestion de la custom app
- [First Deployment](first-deployment.md) - création initiale de la custom app (étape 9) et référencement dans `DeployConfig.yaml` (étape 10)
- [Deploy Existing Application](deployment-existing-app.md) - import custom app lors d'un redéploiement (étape 6 si anciens scripts)
- [Git Workflow](git-workflow.md) - rythme commit/push et gestion des branches