From b3d0580439b9a00c7eb918085de1694151066004 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 16:02:49 +0000
Subject: [PATCH] rename packages

---
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/ImportData.java                                                                                | 1138 ++
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/StructureChampJsonService.java                                                              |   51 
 fdx_convert/documentation_convertisseur.rar                                                                                                          |    0 
 fdx_convert/src/main/resources/images/Reset.png                                                                                                      |    0 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalSearchForm.fxml                                               |   29 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SchedulerConstraint.java                                                           |   22 
 fdx_convert/src/main/resources/images/143-01.png                                                                                                     |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/StructureChampJsonTable.java                                                       |   54 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/ValidateurParser.java                                                                          |  289 
 fdx_convert/src/main/resources/images/Barre_outils_hover-01.png                                                                                      |    0 
 fdx_convert/src/main/resources/images/Recherche.png                                                                                                  |    0 
 fdx_convert/target/classes/styles/app-theme.css                                                                                                      |   34 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierSearchFormController.java                                              |   31 
 fdx_convert/target/classes/images/Search.png                                                                                                         |    0 
 fdx_convert/src/main/resources/images/update-subtype.png                                                                                             |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ConversionModelDAO.java                                                                         |   33 
 fdx_convert/app.properties                                                                                                                           |    1 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConversionModelEditFormController.java                                                        |  218 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/DecryptageAESEditForm.fxml                                                   |   79 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java                                                      |  325 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/AlphaNumeriqueFieldService.java                                                             |   53 
 fdx_convert/src/main/resources/styles/FormComponents1.css                                                                                            |  367 
 fdx_convert/target/classes/images/success-icon.png                                                                                                   |    0 
 fdx_convert/src/main/resources/images/agrandir.png                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DecryptageAESEditFormController.java                                                          |   76 
 fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureTableViewController.java                                                         |  167 
 fdx_convert/src/main/resources/images/previous-img.png                                                                                               |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelListDialogController.java                                                 |  112 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ResultFileParsing.java                                                                         |   21 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJob.java                                                                               |  281 
 fdx_convert/target/classes/images/edit.png                                                                                                           |    0 
 fdx_convert/target/classes/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml                                             |  121 
 fdx_convert/fdx-convert.log                                                                                                                          |  401 
 fdx_convert/src/main/resources/images/max-icon.png                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/MetaAlphaNumeriqueField.java                                                                  |   66 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java                                                                              |  242 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/FileToValidateEditDialogController.java                                                  |  447 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/PredicateConfig.java                                                                     |   62 
 fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructureFromJsonStructure.java                                       |   57 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurListFormController.java                                                             |  237 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/SubObjectService.java                                                                       |   51 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/ModeleJson.java                                                                               |   84 
 fdx_convert/src/main/resources/images/edit-disabled.png                                                                                              |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ValidateurDAO.java                                                                              |  101 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/SubObject.java                                                                                |   81 
 fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx  |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TruncatedElementTable.java                                                         |   76 
 fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx    |    0 
 fdx_convert/src/main/resources/predicatelogic-engine.xml                                                                                             | 1701 +++
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/pojo/PaginationElts.java                                                                    |   49 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml                                   |  101 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirConstraint.java                                                            |   27 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AlphaNumeriqueFieldDAO.java                                                                     |   42 
 fdx_convert/src/main/resources/images/next-img.png                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierListDialogController.java                                                     |   97 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TypeFichierEditFormController.java                                                            |   43 
 fdx_convert/src/main/resources/fonts/Roboto-Thin.ttf                                                                                                 |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureFormController.java                                                              |  133 
 fdx_convert/target/classes/images/Recherche.png                                                                                                      |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptValidator.java                                                         |   27 
 fdx_convert/target/classes/images/add-disabled.png                                                                                                   |    0 
 fdx_convert/target/classes/images/min-icon.png                                                                                                       |    0 
 fdx_convert/src/main/resources/fonts/Roboto-LightItalic.ttf                                                                                          |    0 
 fdx_convert/src/main/resources/images/tache.png                                                                                                      |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurEditForm.fxml                                                      |   99 
 fdx_convert/src/main/resources/styles/main_screen.css                                                                                                |  246 
 fdx_convert/target/classes/images/Accueil.png                                                                                                        |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DataFileToJsonFormController.java                                                             |  136 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml                                              |   71 
 fdx_convert/src/main/resources/images/Barre_outils_hover-02.png                                                                                      |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/SubObjectEditForm.fxml                                                           |   95 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/ImportFileService.java                                                                      |   88 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConfigEditDialogController.java                                                          |   63 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/JsonStructureService.java                                                                   |   95 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterValidator.java                                              |   30 
 fdx_convert/src/main/resources/styles/CustomFormComponents.css                                                                                       |  225 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeConstraint.java                                                            |   27 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConfigurationService.java                                                                   |   63 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/AlphaNumeriqueField.java                                                                      |  102 
 fdx_convert/src/main/resources/fonts/Roboto-Regular.ttf                                                                                              |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJobService.java                                                                        |   91 
 fdx_convert/target/classes/styles/FormComponents1.css                                                                                                |  367 
 fdx_convert/target/classes/importation/validation/data/client/forms/FileToValidateEditForm.fxml                                                      |  132 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalAdvancedSearchFormController.java                                          |   59 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/TruncatedElementService.java                                                                |   98 
 fdx_convert/target/classes/images/delete-new.png                                                                                                     |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/TypeFichierEditForm.fxml                                                         |   54 
 fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java                                                               |  177 
 fdx_convert/target/classes/images/add-new.png                                                                                                        |    0 
 fdx_convert/target/classes/images/143-01.png                                                                                                         |    0 
 fdx_convert/target/classes/images/delete-subtype.png                                                                                                 |    0 
 fdx_convert/target/classes/images/custom_close_icon.png                                                                                              |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractMainDialog.fxml                                                  |  250 
 fdx_convert/src/main/resources/styles/style.css                                                                                                      |   15 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/TruncatedElement.java                                                                         |   84 
 fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/DefaultNestedJsonStructure.java                                                 |   57 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Validation.java                                                                          |   50 
 fdx_convert/src/main/java/com/megatim/fdxconvert/converter/DataTypeConverter.java                                                                    |   36 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TacheEditFormController.java                                                                  |  411 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalListDialogController.java                                                         |  113 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/TypeFichierEditForm.fxml                                                     |   54 
 fdx_convert/src/main/resources/styles/app-theme.css                                                                                                  |   34 
 fdx_convert/src/main/resources/styles/custom-main-style.css                                                                                          |  426 
 fdx_convert/target/classes/log4j.properties                                                                                                          |   11 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierEditDialogController.java                                                     |   90 
 fdx_convert/src/main/resources/images/trash.png                                                                                                      |    0 
 fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureFormView.fxml                                                       |  147 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConversionModelService.java                                                                 |   96 
 fdx_convert/hibernate.cfg.xml                                                                                                                        |   35 
 fdx_convert/target/classes/images/next-img.png                                                                                                       |    0 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml                                           |   22 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SChedulerValidator.java                                                            |   16 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESConstraint.java                                                       |   27 
 fdx_convert/target/classes/images/Barre_outils_hover-01.png                                                                                          |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoSearchFormController.java                                            |   27 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ConversionModelTable.java                                                          |  141 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterValidator.java                                     |   31 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/JsonDataTypeUtil.java                                                                          |  102 
 fdx_convert/target/classes/images/oeil.png                                                                                                           |    0 
 fdx_convert/src/main/resources/images/delete-disabled.png                                                                                            |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml                                        |   29 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConfigEditFormController.java                                                                 |   51 
 fdx_convert/target/classes/fonts/Roboto-LightItalic.ttf                                                                                              |    0 
 fdx_convert/target/classes/images/print-disabled.png                                                                                                 |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheEditDialogController.java                                                           |  360 
 fdx_convert/src/main/resources/images/intervalle_affichage.png                                                                                       |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierJsonDAO.java                                                                         |   40 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TruncatedElementEditFormController.java                                                       |   50 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/StructureChampJsonEditDialogController.java                                              |  244 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterConstraint.java                                                           |   22 
 fdx_convert/target/classes/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml                                                   |   48 
 fdx_convert/src/main/resources/log4j.properties                                                                                                      |   11 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ImportTypeFichierEditDialogController.java                                               |   79 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Assertion.java                                                                           |   63 
 fdx_convert/target/classes/images/add-subtype.png                                                                                                    |    0 
 fdx_convert/src/main/resources/images/icone_ins.png                                                                                                  |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonConverter.java                                                                  |   83 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/FileToValidateEditFormController.java                                                         |  305 
 fdx_convert/target/classes/images/Accuueil_agent.jpg                                                                                                 |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml                               |   35 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ConfigEditForm.fxml                                                          |   59 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/AproposEditFormController.java                                                                |   48 
 fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureFormView.fxml                                                   |  147 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DecryptageAESEditDialogController.java                                                   |  135 
 fdx_convert/src/main/resources/images/tache_hover.png                                                                                                |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml                                       |   22 
 fdx_convert/target/classes/images/app_icon.png                                                                                                       |    0 
 fdx_convert/fdx-convert-client.iml                                                                                                                   |   12 
 fdx_convert/src/main/resources/fonts/Roboto-MediumItalic.ttf                                                                                         |    0 
 fdx_convert/target/classes/fonts/Roboto-Bold.ttf                                                                                                     |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/TacheEditForm.fxml                                                           |  273 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichier.java                                                                              |   94 
 fdx_convert/target/classes/fonts/Roboto-Italic.ttf                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierDAO.java                                                                             |  104 
 fdx_convert/target/classes/images/table-plus.png                                                                                                     |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESValidator.java                                                        |   24 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalSearchForm.fxml                                           |   29 
 fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractMainDialog.fxml                                                      |  250 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/util/SchedulerUtil.java                                                                     |  298 
 fdx_convert/target/classes/images/fichiers_generesx.png                                                                                              |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterConstraint.java                                             |   30 
 fdx_convert/target/classes/fonts/Roboto-BlackItalic.ttf                                                                                              |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/AproposEditDialogController.java                                                         |   82 
 fdx_convert/src/main/resources/images/Fichier.png                                                                                                    |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml                           |   44 
 fdx_convert/target/classes/importation/validation/data/client/controller/main.fxml                                                                   |  145 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TacheSearchFormController.java                                                    |   81 
 fdx_convert/target/classes/fonts/Roboto-MediumItalic.ttf                                                                                             |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueTable.java                                                       |   75 
 fdx_convert/src/main/java/com/megatim/fdxconvert/enums/StatutConverter.java                                                                          |   38 
 fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureFormViewModel.java                                                           |  115 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml                                   |   35 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/MetaAlphaNumeriqueFieldDAO.java                                                                 |   31 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/ModeleJsonService.java                                                                      |   96 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/SubObjectEditFormController.java                                                              |  206 
 fdx_convert/target/classes/images/tache_hover.png                                                                                                    |    0 
 fdx_convert/target/classes/images/add.png                                                                                                            |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/ConversionModel.java                                                                          |   90 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/TruncatedElementEditForm.fxml                                                |   82 
 fdx_convert/src/main/resources/images/Logo_FDX_Convert.png                                                                                           |    0 
 fdx_convert/src/main/resources/styles/custom-title-bar.css                                                                                           |   47 
 fdx_convert/target/classes/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml                                                      |   77 
 fdx_convert/target/classes/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml                                                   |   57 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/JournalTable.java                                                                  |   61 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TacheSearchForm.fxml                                             |   27 
 fdx_convert/src/main/resources/images/reduire.png                                                                                                    |    0 
 fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractEditDialog.fxml                                                      |  125 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/main.fxml                                                               |  145 
 fdx_convert/target/classes/importation/validation/data/client/forms/JournalEditForm.fxml                                                             |   77 
 fdx_convert/target/classes/images/Apropos.png                                                                                                        |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MetaAlphaNumeriqueFieldEditDialogController.java                                         |   94 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AbstractDAO.java                                                                                |  295 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/SubObjectEditForm.fxml                                                       |   95 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/DecryptageAESService.java                                                                   |   50 
 fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst                                                         |  173 
 fdx_convert/pom.xml                                                                                                                                  |  195 
 fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructure.java                                                        |   26 
 fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractEditDialog.fxml                                                  |  125 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DataFileToJsonEditDialogController.java                                                  |  176 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueFieldTable.java                                                  |   40 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/ParserUtils.java                                                                               |  246 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirValidator.java                                                             |   34 
 fdx_convert/target/classes/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml                                                  |   71 
 fdx_convert/src/main/resources/images/fichiers_generesx.png                                                                                          |    0 
 fdx_convert/target/classes/.netbeans_automatic_build                                                                                                 |    0 
 fdx_convert/src/main/resources/app.properties                                                                                                        |    1 
 fdx_convert/target/maven-archiver/pom.properties                                                                                                     |    5 
 fdx_convert/src/main/resources/images/add-new.png                                                                                                    |    0 
 fdx_convert/target/classes/images/custom_app_icon.png                                                                                                |    0 
 fdx_convert/src/main/resources/images/add.png                                                                                                        |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Entity.java                                                                              |   62 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml                                            |   29 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Delimiteur.java                                                                                |   28 
 fdx_convert/src/main/java/com/megatim/fdxconvert/enums/JournalStatut.java                                                                            |   50 
 fdx_convert/src/main/resources/images/fermer.png                                                                                                     |    0 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml                              |   29 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ModeleJsonTable.java                                                               |   25 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml                                                |   88 
 fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ModeleJsonDAO.java                                                                              |   32 
 fdx_convert/src/main/resources/images/143-05.png                                                                                                     |    0 
 fdx_convert/target/classes/images/Reset.png                                                                                                          |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/JournalService.java                                                                         |   97 
 fdx_convert/target/classes/images/update-subtype.png                                                                                                 |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/JsonStructure.java                                                                            |   82 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/MetaAlphaNumeriqueFieldEditFormController.java                                                |   95 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TxtFileToValidateEditFormController.java                                                      |   83 
 fdx_convert/target/classes/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml                                                    |   88 
 fdx_convert/target/classes/fonts/Roboto-Thin.ttf                                                                                                     |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/TruncatedElementEditForm.fxml                                                    |   82 
 fdx_convert/target/classes/images/exporter.png                                                                                                       |    0 
 fdx_convert/src/main/resources/images/print.png                                                                                                      |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml                          |   29 
 fdx_convert/src/main/resources/images/success-icon.png                                                                                               |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ImportFile.java                                                                                |   43 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/Journal.java                                                                                  |   58 
 fdx_convert/src/main/resources/fonts/Roboto-Italic.ttf                                                                                               |    0 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml                                       |  101 
 fdx_convert/target/classes/predicatelogic-engine.xml                                                                                                 | 1701 +++
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/MetaAlphaNumeriqueFieldService.java                                                         |   52 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/TacheSearchForm.fxml                                                 |   27 
 fdx_convert/target/classes/styles/style.css                                                                                                          |   15 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TacheTable.java                                                                    |   71 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/EntityList.java                                                                          |   29 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml                                             |   35 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ModeleJsonEditForm.fxml                                                      |  128 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/StructureChampJsonEditFormController.java                                                     |   88 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ValidateurTable.java                                                               |   53 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/JournalEditFormController.java                                                                |   80 
 fdx_convert/target/classes/fonts/Roboto-BoldItalic.ttf                                                                                               |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementSearchFormController.java                                         |   86 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/Validateur.java                                                                               |   69 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/ValidateurService.java                                                                      |  152 
 fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx   |    0 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml                                       |   29 
 fdx_convert/target/classes/images/print-new.png                                                                                                      |    0 
 fdx_convert/src/main/resources/fonts/Roboto-Medium.ttf                                                                                               |    0 
 fdx_convert/target/classes/images/delete-disabled.png                                                                                                |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/Tache.java                                                                                    |  130 
 fdx_convert/target/classes/styles/CustomFormComponents.css                                                                                           |  225 
 fdx_convert/src/main/resources/images/app_icon.png                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoAdvancedSearchFormController.java                                    |   40 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierService.java                                                                     |  108 
 fdx_convert/target/classes/importation/validation/data/client/forms/ModeleJsonEditForm.fxml                                                          |  128 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DecryptageAES.java                                                                             |   36 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierAdvancedSearchFormController.java                                      |   38 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelAdvancedSearchController.java                                      |   76 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/Utilities.java                                                                                 |   61 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml                                  |   33 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterConstraint.java                                    |   30 
 fdx_convert/src/main/resources/images/print-new.png                                                                                                  |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/TxtFileToValidate.java                                                                         |   27 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml                                                  |   77 
 fdx_convert/target/classes/importation/validation/data/client/forms/ConfigEditForm.fxml                                                              |   59 
 fdx_convert/target/classes/images/Logo_FDX_Convert.png                                                                                               |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidate.java                                                                            |   58 
 fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java                                                          |  171 
 fdx_convert/target/classes/images/edit-disabled.png                                                                                                  |    0 
 fdx_convert/src/main/resources/fonts/Roboto-Black.ttf                                                                                                |    0 
 fdx_convert/src/main/resources/images/edit-new.png                                                                                                   |    0 
 fdx_convert/src/main/resources/images/table-plus.png                                                                                                 |    0 
 fdx_convert/target/classes/app.properties                                                                                                            |    1 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigValidator.java                                                               |   28 
 fdx_convert/target/classes/images/icone_ins.png                                                                                                      |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelEditDialogController.java                                                 |  235 
 fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/AttributeFormatException.java                                                            |   23 
 fdx_convert/src/main/resources/images/custom_close_icon.png                                                                                          |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/About.fxml                                                                       |  117 
 fdx_convert/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst                                                 |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ConversionModelEditForm.fxml                                                 |  152 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheListeDialogController.java                                                          |   89 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ColumnDefinition.java                                                                          |   28 
 fdx_convert/target/classes/images/trash.png                                                                                                          |    0 
 fdx_convert/src/main/resources/images/143-04.png                                                                                                     |    0 
 fdx_convert/src/main/resources/images/Export.png                                                                                                     |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/SubObjectEditDialogController.java                                                       |  240 
 fdx_convert/src/main/resources/images/add-subtype.png                                                                                                |    0 
 fdx_convert/nb-configuration.xml                                                                                                                     |   18 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/SubObjectTable.java                                                                |   26 
 fdx_convert/target/classes/images/Barre_outils_hover-02.png                                                                                          |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementAdvancedSearchFormController.java                                 |   34 
 fdx_convert/target/classes/images/error-icon.png                                                                                                     |    0 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml                               |   44 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/JournalEditForm.fxml                                                         |   77 
 fdx_convert/src/main/resources/images/add-disabled.png                                                                                               |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterValidator.java                                                            |   23 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonListeDialogController.java                                                     |   60 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml                                               |   57 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/AlphaNumeriqueFieldTable.java                                                      |   67 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/TypeFichierJsonsList.java                                                                |   35 
 fdx_convert/target/classes/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml                                                 |   35 
 fdx_convert/target/classes/fonts/Roboto-ThinItalic.ttf                                                                                               |    0 
 fdx_convert/src/main/resources/fonts/Roboto-ThinItalic.ttf                                                                                           |    0 
 fdx_convert/src/main/resources/images/max_icon.png                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ValidatorException.java                                                                  |   26 
 fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/JsonStructureController.java                                                    |  277 
 fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml                                   |   29 
 fdx_convert/target/classes/images/143-05.png                                                                                                         |    0 
 fdx_convert/target/classes/images/max-icon.png                                                                                                       |    0 
 fdx_convert/target/classes/images/edit-new.png                                                                                                       |    0 
 fdx_convert/target/classes/styles/main_screen.css                                                                                                    |  246 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichierJson.java                                                                          |   50 
 fdx_convert/src/main/resources/images/Search.png                                                                                                     |    0 
 fdx_convert/target/classes/fonts/Roboto-Light.ttf                                                                                                    |    0 
 fdx_convert/target/classes/images/agrandir.png                                                                                                       |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ModeleJsonEditFormController.java                                                             |  254 
 fdx_convert/src/main/java/com/megatim/fdxconvert/enums/DataType.java                                                                                 |   38 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheService.java                                                                           |  156 
 fdx_convert/src/main/resources/images/delete-subtype.png                                                                                             |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java                                                                                     |  158 
 fdx_convert/target/test-classes/.netbeans_automatic_build                                                                                            |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalSearchFormController.java                                                  |   95 
 fdx_convert/src/main/resources/images/min-icon.png                                                                                                   |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/ParamValue.java                                                                          |   49 
 fdx_convert/target/classes/fonts/Roboto-Black.ttf                                                                                                    |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataToImport.java                                                                              |   37 
 fdx_convert/src/main/resources/images/Accueil.png                                                                                                    |    0 
 fdx_convert/target/classes/styles/custom-main-style.css                                                                                              |  426 
 fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst                                                       |  209 
 fdx_convert/target/classes/images/intervalle_affichage.png                                                                                           |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/TacheEditForm.fxml                                                               |  273 
 fdx_convert/target/classes/images/fermer.png                                                                                                         |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/ConversionModelEditForm.fxml                                                     |  152 
 fdx_convert/src/main/resources/images/print-disabled.png                                                                                             |    0 
 fdx_convert/src/main/resources/images/edit.png                                                                                                       |    0 
 fdx_convert/src/main/resources/images/exporter.png                                                                                                   |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureTableView.fxml                                                  |  248 
 fdx_convert/target/classes/images/143-02.png                                                                                                         |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Decryptage.java                                                                                |   27 
 fdx_convert/target/classes/styles/custom-title-bar.css                                                                                               |   47 
 fdx_convert/src/main/java/com/megatim/fdxconvert/App.java                                                                                            |   95 
 fdx_convert/src/main/resources/images/143-03.png                                                                                                     |    0 
 fdx_convert/src/main/resources/images/oeil.png                                                                                                       |    0 
 fdx_convert/src/main/resources/images/motif-title-bar.jpg                                                                                            |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/About.fxml                                                                   |  117 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/XmlUtils.java                                                                                  |   34 
 fdx_convert/target/classes/fonts/LICENSE.txt                                                                                                         |  202 
 fdx_convert/target/classes/images/Export.png                                                                                                         |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurListForm.fxml                                                          |  274 
 fdx_convert/src/main/resources/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml                                         |  121 
 fdx_convert/src/main/resources/images/delete-new.png                                                                                                 |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ConfigException.java                                                                     |   24 
 fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierJsonService.java                                                                 |   92 
 fdx_convert/src/main/resources/images/Accuueil_agent.jpg                                                                                             |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml                                               |   48 
 fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurEditForm.fxml                                                          |   99 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataFileToJson.java                                                                            |   45 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TypeFichierTable.java                                                              |   53 
 fdx_convert/src/main/java/com/megatim/fdxconvert/Test.java                                                                                           |  262 
 fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidateDescription.java                                                                 |   33 
 fdx_convert/target/classes/images/Fichier.png                                                                                                        |    0 
 fdx_convert/target/classes/images/143-04.png                                                                                                         |    0 
 fdx_convert/target/classes/importation/validation/data/client/forms/DecryptageAESEditForm.fxml                                                       |   79 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurListForm.fxml                                                      |  274 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptConstraint.java                                                        |   27 
 fdx_convert/src/main/resources/fonts/Roboto-Light.ttf                                                                                                |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalEditDialogController.java                                                         |   69 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ValidateurEditDialogController.java                                                      |  202 
 fdx_convert/target/classes/images/tache.png                                                                                                          |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TxtFileToValidateEditDialogController.java                                               |  175 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/JsonStructureDAO.java                                                                           |   43 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ImportTypeFichierEditFormController.java                                                      |   50 
 fdx_convert/src/main/resources/images/error-icon.png                                                                                                 |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonMarshaller.java                                                                 |   81 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/StructureChampJson.java                                                                       |   96 
 fdx_convert/src/main/resources/fonts/Roboto-Bold.ttf                                                                                                 |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelSearchController.java                                              |   91 
 fdx_convert/target/classes/images/motif-title-bar.jpg                                                                                                |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ValidateurSearchFormController.java                                               |   99 
 fdx_convert/target/classes/fonts/Roboto-Regular.ttf                                                                                                  |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurEditFormController.java                                                             |  147 
 fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MainController.java                                                                      |  432 
 fdx_convert/src/main/resources/images/Apropos.png                                                                                                    |    0 
 fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureTableView.fxml                                                      |  248 
 fdx_convert/src/main/resources/fonts/LICENSE.txt                                                                                                     |  202 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigConstraint.java                                                              |   27 
 fdx_convert/target/classes/fonts/Roboto-Medium.ttf                                                                                                   |    0 
 fdx_convert/src/main/resources/fonts/Roboto-BlackItalic.ttf                                                                                          |    0 
 fdx_convert/target/classes/images/max_icon.png                                                                                                       |    0 
 fdx_convert/src/main/resources/fonts/Roboto-BoldItalic.ttf                                                                                           |    0 
 fdx_convert/src/main/resources/images/custom_app_icon.png                                                                                            |    0 
 fdx_convert/target/classes/images/reduire.png                                                                                                        |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/Configuration.java                                                                            |   55 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TacheDAO.java                                                                                   |   43 
 fdx_convert/target/classes/images/previous-img.png                                                                                                   |    0 
 fdx_convert/src/main/resources/importation/validation/data/client/forms/FileToValidateEditForm.fxml                                                  |  132 
 fdx_convert/target/classes/images/print.png                                                                                                          |    0 
 fdx_convert/src/main/java/com/megatim/fdxconvert/dao/HibernateUtil.java                                                                              |   48 
 fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml                                      |   33 
 fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeValidator.java                                                             |   26 
 fdx_convert/target/classes/images/143-03.png                                                                                                         |    0 
 fdx_convert/src/main/resources/images/143-02.png                                                                                                     |    0 
 412 files changed, 31,904 insertions(+), 0 deletions(-)

diff --git a/fdx_convert/app.properties b/fdx_convert/app.properties
new file mode 100644
index 0000000..6229368
--- /dev/null
+++ b/fdx_convert/app.properties
@@ -0,0 +1 @@
+nbThreads = 2
\ No newline at end of file
diff --git a/fdx_convert/documentation_convertisseur.rar b/fdx_convert/documentation_convertisseur.rar
new file mode 100644
index 0000000..5e3c2ed
--- /dev/null
+++ b/fdx_convert/documentation_convertisseur.rar
Binary files differ
diff --git a/fdx_convert/fdx-convert-client.iml b/fdx_convert/fdx-convert-client.iml
new file mode 100644
index 0000000..6a11d4d
--- /dev/null
+++ b/fdx_convert/fdx-convert-client.iml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+  <component name="FacetManager">
+    <facet type="hibernate" name="Hibernate">
+      <configuration>
+        <datasource-map />
+        <naming-strategy-map />
+        <deploymentDescriptor name="hibernate.cfg.xml" url="file://$MODULE_DIR$/hibernate.cfg.xml" />
+      </configuration>
+    </facet>
+  </component>
+</module>
\ No newline at end of file
diff --git a/fdx_convert/fdx-convert.log b/fdx_convert/fdx-convert.log
new file mode 100644
index 0000000..3e9c763
--- /dev/null
+++ b/fdx_convert/fdx-convert.log
@@ -0,0 +1,401 @@
+2024-10-21 14:22:45 ERROR TxtFileToJsonEditDialogController:113 - java.lang.StringIndexOutOfBoundsException: String index out of range: 1
+2024-10-21 14:23:25 ERROR TxtFileToJsonEditDialogController:113 - java.lang.StringIndexOutOfBoundsException: String index out of range: 1
+2024-10-21 15:26:46 ERROR TxtFileToJsonEditDialogController:113 - java.lang.StringIndexOutOfBoundsException: String index out of range: 1
+2024-11-22 16:12:20 ERROR FileToValidateEditDialogController:267 - Validation r�ussie. Fichier correcte
+2024-11-22 16:17:19 ERROR FileToValidateEditDialogController:267 - Validation r�ussie. Fichier correcte
+2024-11-22 16:19:44 ERROR FileToValidateEditDialogController:267 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur CAADES2024112216194407.txt.err pour en savoir plus
+2024-11-22 16:27:18 ERROR FileToValidateEditDialogController:267 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur CAADES2024112216271752.txt.err pour en savoir plus
+2024-11-22 16:28:34 ERROR FileToValidateEditDialogController:267 - Validation r�ussie. Fichier correcte
+2024-12-02 14:33:02 ERROR FileToValidateEditDialogController:267 - Validation r�ussie. Fichier correcte
+2024-12-02 14:44:29 ERROR DataFileToJsonEditDialogController:111 - java.lang.NullPointerException
+2024-12-02 14:45:16 ERROR DataFileToJsonEditDialogController:111 - java.lang.Exception: Existence des lignes mal formatt�es
+2024-12-04 10:19:21 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 108
+2024-12-04 10:21:36 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 108
+2024-12-04 12:41:32 ERROR DataFileToJsonEditDialogController:111 - java.lang.NullPointerException
+2024-12-05 14:09:04 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 134
+2024-12-05 14:09:42 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 134
+2024-12-05 14:11:13 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 266
+2024-12-05 14:15:41 ERROR DataFileToJsonEditDialogController:111 - java.lang.Exception: Existence des lignes mal formatt�es
+2024-12-05 14:27:01 ERROR DataFileToJsonEditDialogController:111 - java.lang.NullPointerException
+2024-12-05 16:12:39 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 108
+2024-12-10 15:45:21 ERROR DataFileToJsonEditDialogController:111 - java.lang.NullPointerException
+2025-02-26 14:29:07 ERROR FileToValidateEditDialogController:267 - Validation r�ussie. Fichier correcte
+2025-04-16 14:45:15 ERROR FileToValidateEditDialogController:464 - java.lang.UnsupportedOperationException
+2025-04-16 14:48:06 WARN  FileToValidateEditDialogController:458 - Validation impossible. Le type fichier DGBACT n'a pas de structure JSON enregistr�
+2025-04-16 14:50:23 ERROR FileToValidateEditDialogController:464 - java.lang.UnsupportedOperationException
+2025-04-16 14:54:14 ERROR FileToValidateEditDialogController:467 - java.util.ConcurrentModificationException
+2025-04-16 15:02:52 ERROR FileToValidateEditDialogController:427 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis ouvrir le fichier d'erreur DGBACT2025041615022555_JSON.txt.err pour en savoir plus
+2025-04-17 13:55:41 ERROR FileToValidateEditDialogController:453 - java.nio.file.NoSuchFileException: C:\Users\ASUS\Documents\ERROR\DGBACT.json
+2025-07-16 10:19:17 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 214
+2025-07-16 10:24:59 ERROR DataFileToJsonEditDialogController:111 - java.lang.StringIndexOutOfBoundsException: String index out of range: 205
+2025-10-31 15:20:44 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025103115164632.txt.err pour en savoir plus
+2025-10-31 17:20:59 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025103117103935.txt.err pour en savoir plus
+2025-10-31 17:44:07 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025103117335642.txt.err pour en savoir plus
+2025-11-01 10:40:29 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110110300413.txt.err pour en savoir plus
+2025-11-01 11:20:03 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110111102316.txt.err pour en savoir plus
+2025-11-03 10:21:55 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110310120831.txt.err pour en savoir plus
+2025-11-03 10:41:18 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110310314019.txt.err pour en savoir plus
+2025-11-03 11:01:20 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110310520509.txt.err pour en savoir plus
+2025-11-03 11:27:41 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110311162834.txt.err pour en savoir plus
+2025-11-03 11:52:25 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110311421354.txt.err pour en savoir plus
+2025-11-03 12:18:58 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110312092237.txt.err pour en savoir plus
+2025-11-03 12:39:43 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-03 12:43:17 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-03 13:02:15 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110312534342.txt.err pour en savoir plus
+2025-11-03 13:25:20 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110313164155.txt.err pour en savoir plus
+2025-11-03 13:38:53 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110313303649.txt.err pour en savoir plus
+2025-11-03 14:31:27 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110314230804.txt.err pour en savoir plus
+2025-11-03 14:56:45 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110314482634.txt.err pour en savoir plus
+2025-11-03 15:24:43 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110315152931.txt.err pour en savoir plus
+2025-11-03 15:48:17 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110315395645.txt.err pour en savoir plus
+2025-11-03 16:09:45 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110316012635.txt.err pour en savoir plus
+2025-11-03 16:27:59 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110316275914.txt.err pour en savoir plus
+2025-11-03 16:36:34 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110316363435.txt.err pour en savoir plus
+2025-11-03 16:48:42 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110316484232.txt.err pour en savoir plus
+2025-11-03 17:10:06 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110317100604.txt.err pour en savoir plus
+2025-11-03 17:13:55 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110317135407.txt.err pour en savoir plus
+2025-11-03 17:17:36 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110317173538.txt.err pour en savoir plus
+2025-11-03 17:24:58 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110317245800.txt.err pour en savoir plus
+2025-11-03 17:29:40 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110317294023.txt.err pour en savoir plus
+2025-11-04 09:58:28 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110409560940.txt.err pour en savoir plus
+2025-11-04 10:10:19 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110410073202.txt.err pour en savoir plus
+2025-11-04 10:15:47 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110410133006.txt.err pour en savoir plus
+2025-11-04 10:34:59 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110410330425.txt.err pour en savoir plus
+2025-11-04 10:52:44 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110410505020.txt.err pour en savoir plus
+2025-11-04 10:56:46 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 11:15:34 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRE202025110411102131.txt.err pour en savoir plus
+2025-11-04 11:28:33 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 11:48:55 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110411485552.txt.err pour en savoir plus
+2025-11-04 12:10:14 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 12:22:55 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110412113416.txt.err pour en savoir plus
+2025-11-04 12:29:03 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 12:40:32 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110412355819.txt.err pour en savoir plus
+2025-11-04 12:53:56 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110412492445.txt.err pour en savoir plus
+2025-11-04 13:02:34 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110413003046.txt.err pour en savoir plus
+2025-11-04 13:26:22 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110413215046.txt.err pour en savoir plus
+2025-11-04 13:37:26 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 13:39:55 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 13:42:06 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110413420620.txt.err pour en savoir plus
+2025-11-04 13:46:47 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110413464757.txt.err pour en savoir plus
+2025-11-04 13:54:39 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110413543804.txt.err pour en savoir plus
+2025-11-04 14:06:40 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414063942.txt.err pour en savoir plus
+2025-11-04 14:15:51 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414155039.txt.err pour en savoir plus
+2025-11-04 14:21:18 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414211725.txt.err pour en savoir plus
+2025-11-04 14:29:55 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414295421.txt.err pour en savoir plus
+2025-11-04 14:33:09 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414330837.txt.err pour en savoir plus
+2025-11-04 14:39:52 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414395156.txt.err pour en savoir plus
+2025-11-04 14:43:37 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414433627.txt.err pour en savoir plus
+2025-11-04 14:47:51 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110414475104.txt.err pour en savoir plus
+2025-11-04 15:19:59 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110415195820.txt.err pour en savoir plus
+2025-11-04 15:29:40 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 15:44:57 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110415350806.txt.err pour en savoir plus
+2025-11-04 16:05:34 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 16:10:49 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110416062842.txt.err pour en savoir plus
+2025-11-04 16:20:21 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110416161414.txt.err pour en savoir plus
+2025-11-04 16:41:18 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025110416374405.txt.err pour en savoir plus
+2025-11-04 16:42:31 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 16:59:27 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-04 17:12:31 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110417030721.txt.err pour en savoir plus
+2025-11-05 10:49:31 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110510384153.txt.err pour en savoir plus
+2025-11-05 11:54:31 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110511444853.txt.err pour en savoir plus
+2025-11-05 13:17:10 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110513150823.txt.err pour en savoir plus
+2025-11-05 13:51:33 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-05 13:54:57 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-05 13:57:00 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-05 14:16:41 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110514062942.txt.err pour en savoir plus
+2025-11-05 14:43:02 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110514324126.txt.err pour en savoir plus
+2025-11-05 15:36:43 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110515262636.txt.err pour en savoir plus
+2025-11-05 16:02:04 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110515514534.txt.err pour en savoir plus
+2025-11-05 16:20:49 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110516102502.txt.err pour en savoir plus
+2025-11-05 16:44:36 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110516341122.txt.err pour en savoir plus
+2025-11-05 17:15:33 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110517044209.txt.err pour en savoir plus
+2025-11-06 09:37:11 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025110609351342.txt.err pour en savoir plus
+2025-11-06 10:03:11 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-06 10:08:23 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-06 10:21:39 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110610111653.txt.err pour en savoir plus
+2025-11-06 11:33:38 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110611231142.txt.err pour en savoir plus
+2025-11-06 15:58:33 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025110615480113.txt.err pour en savoir plus
+2025-11-06 16:16:23 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-11-11 10:51:32 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025111110461359.txt.err pour en savoir plus
+2025-11-11 11:02:12 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025111110562956.txt.err pour en savoir plus
+2025-11-11 11:19:02 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025111111072604.txt.err pour en savoir plus
+2025-11-11 11:40:30 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAPU2025111111285759.txt.err pour en savoir plus
+2025-11-11 12:00:00 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRENF2025111111552903.txt.err pour en savoir plus
+2025-11-11 12:18:42 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202025111112122902.txt.err pour en savoir plus
+2025-11-17 12:42:00 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRE202025111712420015.txt.err pour en savoir plus
+2025-11-17 13:11:44 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRE202025111713114334.txt.err pour en savoir plus
+2025-11-18 12:07:30 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRE202025111812072502.txt.err pour en savoir plus
+2025-11-18 12:12:15 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRE202025111812121130.txt.err pour en savoir plus
+2025-11-26 15:27:39 ERROR FileToValidateEditDialogController:179 - java.lang.NoClassDefFoundError: org/apache/commons/io/build/AbstractStreamBuilder
+2025-11-26 15:30:27 ERROR FileToValidateEditDialogController:179 - java.lang.NoClassDefFoundError: org/apache/commons/io/build/AbstractStreamBuilder
+2025-12-16 14:59:47 WARN  FileToValidateEditDialogController:175 - Validation impossible. Le type fichier FPRABU n'a pas de validateur enregistr�
+2025-12-16 15:03:06 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRABU2025121615024600.txt.err pour en savoir plus
+2025-12-16 15:05:30 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRABU2025121615050942.txt.err pour en savoir plus
+2025-12-16 15:09:28 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAIM2025121615092841.txt.err pour en savoir plus
+2025-12-16 15:24:55 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAIM2025121615245542.txt.err pour en savoir plus
+2025-12-16 15:37:46 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-12-16 15:39:46 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRABU2025121615383214.txt.err pour en savoir plus
+2025-12-16 15:44:39 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-12-16 15:46:45 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-12-16 15:49:01 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAVI2025121615472157.txt.err pour en savoir plus
+2025-12-16 16:03:46 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAVI2025121616020549.txt.err pour en savoir plus
+2025-12-16 16:48:17 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRERM2025121616302414.txt.err pour en savoir plus
+2025-12-16 17:15:36 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRJOP2025121617153640.txt.err pour en savoir plus
+2025-12-17 14:21:28 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRJOP2025121714212728.txt.err pour en savoir plus
+2025-12-17 14:41:21 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-12-17 14:46:07 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAVI2025121714441620.txt.err pour en savoir plus
+2025-12-17 15:08:13 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRERM2025121714510638.txt.err pour en savoir plus
+2025-12-17 15:32:54 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2025-12-17 16:00:21 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAVI2025121715582218.txt.err pour en savoir plus
+2025-12-17 16:07:46 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAVI2025121716055240.txt.err pour en savoir plus
+2025-12-17 16:46:49 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRAVI2025121716450201.txt.err pour en savoir plus
+2026-01-13 11:51:07 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRSMS2026011311502711.txt.err pour en savoir plus
+2026-01-13 11:52:26 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-13 12:02:48 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-13 14:47:43 ERROR FileToValidateEditDialogController:179 - java.lang.NoClassDefFoundError: org/apache/commons/io/build/AbstractStreamBuilder
+2026-01-13 14:49:43 ERROR FileToValidateEditDialogController:179 - java.lang.NoClassDefFoundError: org/apache/commons/io/build/AbstractStreamBuilder
+2026-01-13 14:52:44 ERROR FileToValidateEditDialogController:179 - java.lang.NoClassDefFoundError: org/apache/commons/io/build/AbstractStreamBuilder
+2026-01-13 15:28:34 ERROR FileToValidateEditDialogController:179 - java.lang.NoClassDefFoundError: org/apache/commons/io/build/AbstractStreamBuilder
+2026-01-13 16:03:40 ERROR FileToValidateEditDialogController:179 - org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
+2026-01-13 16:08:44 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPR3C2026011316084224.txt.err pour en savoir plus
+2026-01-13 16:10:55 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-13 16:15:32 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-21 15:02:54 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-21 15:03:50 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-21 15:04:56 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-21 15:08:24 ERROR FileToValidateEditDialogController:218 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPR3C2026012115082416.txt.err pour en savoir plus
+2026-01-21 15:13:12 ERROR FileToValidateEditDialogController:218 - Validation r�ussie. Fichier correcte
+2026-01-27 15:27:55 ERROR DataFileToJsonEditDialogController:111 - java.lang.Exception: Existence des lignes mal formatt�es
+2026-02-02 15:46:05 ERROR FileToValidateEditDialogController:220 - Validation r�ussie. Fichier correcte
+2026-02-03 16:01:46 ERROR DataFileToJsonEditDialogController:111 - java.lang.NumberFormatException: null
+2026-02-03 16:05:26 ERROR DataFileToJsonEditDialogController:111 - java.lang.Exception: Type de donn�es non support�
+2026-02-03 17:16:48 ERROR DataFileToJsonEditDialogController:109 - org.xml.sax.SAXParseException; systemId: file:/C:/Users/ASUS/Documents/NetBeansProjects/share_sources/importation-validation-data/; lineNumber: 1; columnNumber: 1; Contenu non autoris� dans le prologue.
+2026-02-03 17:18:37 ERROR DataFileToJsonEditDialogController:109 - java.lang.NullPointerException
+2026-02-03 17:21:03 ERROR DataFileToJsonEditDialogController:109 - java.lang.NullPointerException
+2026-02-04 09:29:27 ERROR DataFileToJsonEditDialogController:110 - org.xml.sax.SAXParseException; systemId: file:/C:/Users/ASUS/Documents/NetBeansProjects/share_sources/importation-validation-data/; lineNumber: 1; columnNumber: 1; Contenu non autoris� dans le prologue.
+2026-02-04 09:33:15 ERROR DataFileToJsonEditDialogController:110 - java.lang.NullPointerException
+2026-02-04 09:38:45 ERROR DataFileToJsonEditDialogController:110 - java.lang.NullPointerException
+2026-02-16 09:49:13 ERROR FileToValidateEditDialogController:220 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026021609490648.txt.err pour en savoir plus
+2026-02-16 14:38:22 ERROR FileToValidateEditDialogController:220 - Validation r�ussie. Fichier correcte
+2026-02-16 14:45:02 ERROR FileToValidateEditDialogController:220 - Validation r�ussie. Fichier correcte
+2026-02-16 14:51:57 ERROR FileToValidateEditDialogController:220 - Validation r�ussie. Fichier correcte
+2026-02-16 15:31:38 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ENFANTS.M102025.csv.err pour en savoir plus
+2026-02-16 15:53:17 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur AGENTS.M102025 .csv.err pour en savoir plus
+2026-02-16 16:09:26 ERROR FileToValidateEditDialogController:225 - Validation r�ussie. Fichier correcte
+2026-02-16 16:17:16 ERROR FileToValidateEditDialogController:225 - Validation r�ussie. Fichier correcte
+2026-02-16 16:27:26 ERROR FileToValidateEditDialogController:225 - Validation r�ussie. Fichier correcte
+2026-02-16 16:45:53 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ERM.M112025.csv.err pour en savoir plus
+2026-02-16 16:49:38 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur JOURNAL DES OPPOSITIONS.M112025.csv.err pour en savoir plus
+2026-02-16 16:57:07 ERROR FileToValidateEditDialogController:225 - Validation r�ussie. Fichier correcte
+2026-02-18 15:08:56 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 000030FPRJOP2025120110000000.csv.err pour en savoir plus
+2026-02-18 15:23:02 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-02-18 15:23:37 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur SMS.M122025.csv.err pour en savoir plus
+2026-02-18 16:25:52 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 000030FPRSMS2025120110000000.csv.err pour en savoir plus
+2026-02-25 15:00:35 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022515002256.txt.err pour en savoir plus
+2026-02-25 15:11:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022515110215.txt.err pour en savoir plus
+2026-02-25 15:26:00 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022515254846.txt.err pour en savoir plus
+2026-02-25 15:33:56 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022515335519.txt.err pour en savoir plus
+2026-02-25 15:37:53 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022515375355.txt.err pour en savoir plus
+2026-02-25 15:45:18 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022515450944.txt.err pour en savoir plus
+2026-02-25 16:22:10 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022516215709.txt.err pour en savoir plus
+2026-02-25 16:38:29 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022516381637.txt.err pour en savoir plus
+2026-02-25 16:42:57 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022516424314.txt.err pour en savoir plus
+2026-02-25 16:46:24 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022516461046.txt.err pour en savoir plus
+2026-02-25 17:07:14 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022517070029.txt.err pour en savoir plus
+2026-02-25 17:11:07 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022517105357.txt.err pour en savoir plus
+2026-02-25 17:23:11 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022517225827.txt.err pour en savoir plus
+2026-02-25 17:32:38 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMPE2026022517322440.txt.err pour en savoir plus
+2026-02-26 09:32:53 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-02-26 09:36:25 ERROR FileToValidateEditDialogController:182 - java.nio.charset.UnmappableCharacterException: Input length = 1
+2026-03-06 14:33:53 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-03-24 13:36:00 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 20260324-10h50-JP2026-FDX (Test data).csv.err pour en savoir plus
+2026-03-24 13:56:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 14:01:07 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 14:08:21 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 14:21:47 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 14:27:48 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 14:33:59 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 14:54:20 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 15:01:24 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 15:04:10 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 15:07:51 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 15:14:20 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGBACT2026032415142009.txt.err pour en savoir plus
+2026-03-24 15:31:12 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 15:35:08 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 15:37:54 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 16:01:12 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 16:04:42 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 16:08:34 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 16:12:10 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJOP2026032413303030.csv.err pour en savoir plus
+2026-03-24 16:40:59 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-03-25 10:30:58 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGBACT2026032510305839.txt.err pour en savoir plus
+2026-03-26 10:23:02 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 000042PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-26 10:25:54 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-03-27 14:29:56 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 000042PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 14:31:29 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 15:19:18 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 15:20:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 15:33:20 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 15:35:40 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 15:41:27 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 15:57:51 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 16:26:38 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 16:38:10 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 16:48:42 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 17:03:07 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 17:15:37 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-27 17:20:55 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-30 07:42:46 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-30 07:49:25 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-03-30 08:11:07 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-04-01 10:38:17 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-04-01 11:03:55 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-04-01 11:30:31 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur PATJDP2026010304010101.csv.err pour en savoir plus
+2026-04-01 11:58:20 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-04-28 15:50:36 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202026042815454610.txt.err pour en savoir plus
+2026-04-28 16:29:51 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPRA202026042816242350.txt.err pour en savoir plus
+2026-04-28 17:01:16 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur A20.M012026.csv.err pour en savoir plus
+2026-04-28 17:19:39 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur A20.M012026.csv.err pour en savoir plus
+2026-04-29 09:58:01 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-04-29 10:31:51 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur E20.M012026.csv.err pour en savoir plus
+2026-04-29 10:58:54 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur E20.M012026.csv.err pour en savoir plus
+2026-04-29 11:14:08 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ENFANTS.M012026.CSV.err pour en savoir plus
+2026-04-29 11:45:41 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ENFANTS.M012026.CSV.err pour en savoir plus
+2026-04-29 12:16:35 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ENFANTS1.M012026.CSV.err pour en savoir plus
+2026-04-29 13:49:54 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur JOURNAL DES OPPOSITIONS.M012026.csv.err pour en savoir plus
+2026-04-29 14:14:18 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ERM.M012026.CSV.err pour en savoir plus
+2026-04-29 14:42:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ERM.M012026.CSV.err pour en savoir plus
+2026-04-29 14:50:18 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur AGENTS IMPOT.M012026.csv.err pour en savoir plus
+2026-04-29 15:19:21 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur AGENTS BUDGET.M012026.csv.err pour en savoir plus
+2026-04-29 15:25:24 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur ASS_RET.M012026.CSV.err pour en savoir plus
+2026-04-29 15:30:58 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur AVI.M012026.csv.err pour en savoir plus
+2026-04-29 15:46:30 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur SMS.M012026.txt.err pour en savoir plus
+2026-04-29 15:49:46 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur RIB.M012026.csv.err pour en savoir plus
+2026-04-29 16:59:52 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur AGENTS.M012026.CSV.err pour en savoir plus
+2026-04-29 17:05:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 2C.M012026.xlsx.err pour en savoir plus
+2026-04-29 17:07:07 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-04-29 17:08:49 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur FPR3C2026042917084847.txt.err pour en savoir plus
+2026-04-29 17:30:21 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-06 16:04:21 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026050616042005.txt.err pour en savoir plus
+2026-05-06 16:05:56 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050616054240.txt.err pour en savoir plus
+2026-05-06 16:26:14 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050616260155.txt.err pour en savoir plus
+2026-05-06 17:07:12 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050617071113.txt.err pour en savoir plus
+2026-05-07 10:08:00 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050710074655.txt.err pour en savoir plus
+2026-05-07 10:11:54 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050710115441.txt.err pour en savoir plus
+2026-05-07 10:16:01 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050710154627.txt.err pour en savoir plus
+2026-05-07 10:19:11 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050710185808.txt.err pour en savoir plus
+2026-05-07 10:31:20 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050710310515.txt.err pour en savoir plus
+2026-05-07 10:47:36 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050710472203.txt.err pour en savoir plus
+2026-05-07 11:11:54 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050711113848.txt.err pour en savoir plus
+2026-05-07 11:20:38 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050711202411.txt.err pour en savoir plus
+2026-05-07 11:34:10 ERROR FileToValidateEditDialogController:182 - java.lang.NullPointerException
+2026-05-07 11:45:03 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050711424720.txt.err pour en savoir plus
+2026-05-07 11:56:56 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050711545015.txt.err pour en savoir plus
+2026-05-07 12:07:54 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050712055541.txt.err pour en savoir plus
+2026-05-07 12:15:23 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050712133613.txt.err pour en savoir plus
+2026-05-07 12:23:07 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026050712230715.txt.err pour en savoir plus
+2026-05-07 12:28:26 ERROR FileToValidateEditDialogController:182 - java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
+2026-05-07 12:31:25 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026050712312446.txt.err pour en savoir plus
+2026-05-07 13:48:34 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050713483418.txt.err pour en savoir plus
+2026-05-07 13:51:33 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050713513342.txt.err pour en savoir plus
+2026-05-07 13:54:48 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050713544754.txt.err pour en savoir plus
+2026-05-07 13:59:10 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050713591036.txt.err pour en savoir plus
+2026-05-07 14:03:00 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050714012635.txt.err pour en savoir plus
+2026-05-07 14:30:39 ERROR FileToValidateEditDialogController:182 - org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
+2026-05-07 14:31:18 ERROR FileToValidateEditDialogController:182 - java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell
+2026-05-07 14:32:11 ERROR FileToValidateEditDialogController:182 - java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell
+2026-05-07 14:33:50 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050714334910.txt.err pour en savoir plus
+2026-05-07 14:45:41 ERROR FileToValidateEditDialogController:182 - java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell
+2026-05-07 14:47:57 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050714475720.txt.err pour en savoir plus
+2026-05-07 14:48:57 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050714485634.txt.err pour en savoir plus
+2026-05-07 14:50:34 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050714503446.txt.err pour en savoir plus
+2026-05-07 14:58:45 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050714584436.txt.err pour en savoir plus
+2026-05-07 15:01:01 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715010045.txt.err pour en savoir plus
+2026-05-07 15:05:43 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715054220.txt.err pour en savoir plus
+2026-05-07 15:10:46 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715104555.txt.err pour en savoir plus
+2026-05-07 15:13:47 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715134650.txt.err pour en savoir plus
+2026-05-07 15:15:35 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715153437.txt.err pour en savoir plus
+2026-05-07 15:18:09 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715180858.txt.err pour en savoir plus
+2026-05-07 15:29:24 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715292339.txt.err pour en savoir plus
+2026-05-07 15:39:10 ERROR FileToValidateEditDialogController:182 - java.lang.IllegalStateException: Cannot get a BOOLEAN value from a NUMERIC cell
+2026-05-07 15:40:29 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715402829.txt.err pour en savoir plus
+2026-05-07 15:43:13 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715431258.txt.err pour en savoir plus
+2026-05-07 15:48:59 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050715485832.txt.err pour en savoir plus
+2026-05-07 16:10:16 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050716101542.txt.err pour en savoir plus
+2026-05-07 16:24:18 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-07 16:38:07 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050716380608.txt.err pour en savoir plus
+2026-05-07 16:44:55 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050716445413.txt.err pour en savoir plus
+2026-05-07 16:46:52 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050716465249.txt.err pour en savoir plus
+2026-05-07 16:52:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur Jeu de donn�es execution des march�s.xlsx.err pour en savoir plus
+2026-05-07 16:52:59 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050716525942.txt.err pour en savoir plus
+2026-05-07 16:55:55 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050716555434.txt.err pour en savoir plus
+2026-05-07 17:06:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050717061407.txt.err pour en savoir plus
+2026-05-07 17:13:43 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050717134202.txt.err pour en savoir plus
+2026-05-07 17:23:22 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050717232133.txt.err pour en savoir plus
+2026-05-08 09:02:22 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050809022121.txt.err pour en savoir plus
+2026-05-08 09:08:23 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050809082216.txt.err pour en savoir plus
+2026-05-08 09:09:35 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050809093408.txt.err pour en savoir plus
+2026-05-08 09:12:24 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050809122345.txt.err pour en savoir plus
+2026-05-08 09:16:19 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPEMR2026050809161854.txt.err pour en savoir plus
+2026-05-08 09:23:12 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-08 09:23:56 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-08 10:04:05 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050810040522.txt.err pour en savoir plus
+2026-05-08 10:35:16 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050810351509.txt.err pour en savoir plus
+2026-05-08 10:36:45 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050810364457.txt.err pour en savoir plus
+2026-05-08 10:38:38 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050810383745.txt.err pour en savoir plus
+2026-05-08 10:40:31 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050810402930.txt.err pour en savoir plus
+2026-05-08 10:47:34 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-08 10:55:30 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050810535015.txt.err pour en savoir plus
+2026-05-08 11:09:05 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050811072238.txt.err pour en savoir plus
+2026-05-08 11:17:37 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050811154845.txt.err pour en savoir plus
+2026-05-08 11:29:00 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050811271025.txt.err pour en savoir plus
+2026-05-08 11:37:18 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCP2026050811352025.txt.err pour en savoir plus
+2026-05-08 12:17:58 ERROR FileToValidateEditDialogController:182 - java.lang.NullPointerException
+2026-05-08 12:20:30 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050812202947.txt.err pour en savoir plus
+2026-05-08 12:23:16 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2026050812231508.txt.err pour en savoir plus
+2026-05-08 14:32:36 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-08 14:45:20 ERROR FileToValidateEditDialogController:182 - java.lang.NullPointerException
+2026-05-08 14:58:22 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-08 15:27:23 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-11 15:13:25 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur Jeu de donn�es march�s sign�s.xlsx.err pour en savoir plus
+2026-05-11 15:20:21 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur Jeu de donn�es march�s sign�s.xlsx.err pour en savoir plus
+2026-05-11 15:24:22 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur Jeu de donn�es march�s sign�s.xlsx.err pour en savoir plus
+2026-05-11 15:29:19 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPMSG2025120101010101.xlsx.err pour en savoir plus
+2026-05-12 14:42:37 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051214423637.txt.err pour en savoir plus
+2026-05-12 15:08:52 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215085148.txt.err pour en savoir plus
+2026-05-12 15:11:40 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215113919.txt.err pour en savoir plus
+2026-05-12 15:22:46 ERROR FileToValidateEditDialogController:182 - java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell
+2026-05-12 15:25:50 ERROR FileToValidateEditDialogController:182 - java.lang.NumberFormatException: For input string: "10,000,000"
+2026-05-12 15:30:29 ERROR FileToValidateEditDialogController:182 - java.lang.NumberFormatException
+2026-05-12 15:33:55 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215335403.txt.err pour en savoir plus
+2026-05-12 15:41:56 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215415558.txt.err pour en savoir plus
+2026-05-12 15:44:39 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215443736.txt.err pour en savoir plus
+2026-05-12 15:48:03 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215480154.txt.err pour en savoir plus
+2026-05-12 15:51:23 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051215512225.txt.err pour en savoir plus
+2026-05-12 16:00:25 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051216002337.txt.err pour en savoir plus
+2026-05-12 16:08:39 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051216083828.txt.err pour en savoir plus
+2026-05-12 16:14:08 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur MAPDCV2026051216140717.txt.err pour en savoir plus
+2026-05-12 16:21:47 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-12 16:30:08 ERROR FileToValidateEditDialogController:223 - Validation r�ussie. Fichier correcte
+2026-05-13 10:13:39 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGBACT2026051310133955.txt.err pour en savoir plus
+2026-05-13 10:22:13 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur 000009DGBACT2026060405245800.txt.err pour en savoir plus
+2026-05-13 10:24:48 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGBACT2026060405245800.txt.err pour en savoir plus
+2026-06-04 12:06:15 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060317263925.txt.err pour en savoir plus
+2026-06-04 12:18:59 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060317263925.txt.err pour en savoir plus
+2026-06-04 12:32:05 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060317263925.txt.err pour en savoir plus
+2026-06-04 12:38:42 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060317263925.txt.err pour en savoir plus
+2026-06-04 12:55:59 ERROR FileToValidateEditDialogController:223 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060317263925.txt.err pour en savoir plus
+2026-06-04 13:05:45 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060317263925.txt.err pour en savoir plus
+2026-06-04 13:09:08 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060413090741.txt.err pour en savoir plus
+2026-06-04 13:45:45 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPEH2026060413454337.txt.err pour en savoir plus
+2026-06-04 13:50:34 ERROR FileToValidateEditDialogController:225 - Validation r�ussie. Fichier correcte
+2026-06-04 13:53:54 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTRBA2026060413535403.txt.err pour en savoir plus
+2026-06-04 14:22:24 ERROR FileToValidateEditDialogController:225 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTPCT2026060414222356.txt.err pour en savoir plus
+2026-06-04 15:08:23 ERROR FileToValidateEditDialogController:230 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTREG2026060415072935.txt.err pour en savoir plus
+2026-06-04 15:27:08 ERROR FileToValidateEditDialogController:230 - Echec de la validation. Le fichier contient des erreurs, veuillez consulter le r�pertoire C:\Users\ASUS\Documents\ERROR, puis et ouvrir le fichier d'erreur DGTREG2026060415264611.txt.err pour en savoir plus
+2026-06-04 15:36:51 ERROR FileToValidateEditDialogController:230 - Validation r�ussie. Fichier correcte
+2026-06-05 10:24:43 ERROR FileToValidateEditDialogController:228 - Validation r�ussie. Fichier correcte
+2026-06-17 10:22:35 ERROR FileToValidateEditDialogController:228 - Validation r�ussie. Fichier correcte
+2026-06-17 10:22:57 ERROR FileToValidateEditDialogController:228 - Validation r�ussie. Fichier correcte
+2026-06-17 10:23:39 ERROR FileToValidateEditDialogController:228 - Validation r�ussie. Fichier correcte
+2026-06-17 10:24:13 ERROR FileToValidateEditDialogController:228 - Validation r�ussie. Fichier correcte
diff --git a/fdx_convert/hibernate.cfg.xml b/fdx_convert/hibernate.cfg.xml
new file mode 100644
index 0000000..e1c309b
--- /dev/null
+++ b/fdx_convert/hibernate.cfg.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+Click nbfs://nbhost/SystemFileSystem/Templates/XML/XMLDocument.xml to edit this template
+-->
+
+<hibernate-configuration>
+  <session-factory>
+    <property name="hibernate.connection.driver_class">org.h2.Driver</property>
+    <property name="hibernate.connection.url">jdbc:h2:file:C:/h2/convertisseur_alpha/convertisseur</property>
+    <property name="hibernate.connection.username">sa</property>
+    <property name="hibernate.connection.password"></property>
+    <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
+    <property name="show_sql">true</property>
+    <property name="hibernate.hbm2ddl.auto">update</property>
+	
+	<!--  all entities -->
+	<mapping class="importation.validation.data.client.model.Tache"></mapping>
+    <mapping class="importation.validation.data.client.model.TypeFichier"></mapping>
+	<mapping class="importation.validation.data.client.model.Configuration"></mapping>
+	<mapping class="importation.validation.data.client.model.Validateur"></mapping>
+	<mapping class="importation.validation.data.client.model.Journal"></mapping>
+	<mapping class="importation.validation.data.client.model.AlphaNumeriqueField"></mapping>
+	<mapping class="importation.validation.data.client.model.TruncatedElement"></mapping>
+	<mapping class="importation.validation.data.client.model.MetaAlphaNumeriqueField"></mapping>
+	<mapping class="importation.validation.data.client.model.ConversionModel"></mapping>
+	<mapping class="importation.validation.data.client.model.StructureChampJson"></mapping>
+	<mapping class="importation.validation.data.client.model.ModeleJson"></mapping>
+	<mapping class="importation.validation.data.client.model.SubObject"></mapping>
+	<mapping class="importation.validation.data.client.model.JsonStructure"></mapping>
+	<mapping class="importation.validation.data.client.model.TypeFichierJson"></mapping>
+
+  </session-factory>
+</hibernate-configuration>
+
diff --git a/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx
new file mode 100644
index 0000000..f52d4e9
--- /dev/null
+++ b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Convert v.1.0.2.docx
Binary files differ
diff --git a/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx
new file mode 100644
index 0000000..ae2255b
--- /dev/null
+++ b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide installation Fdx-Generator v.1.0.2.docx
Binary files differ
diff --git a/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx
new file mode 100644
index 0000000..bb8baa0
--- /dev/null
+++ b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Convert v.1.0.2.docx
Binary files differ
diff --git a/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx
new file mode 100644
index 0000000..4c19cca
--- /dev/null
+++ b/fdx_convert/manuels_installation_&_utilisation_fdxconvert_&_fdxgenerator/MGTCM-MINFI-Projet Fdx - FO - Guide utilisation Fdx-Generator v.1.0.2.docx
Binary files differ
diff --git a/fdx_convert/nb-configuration.xml b/fdx_convert/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx_convert/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+    <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+        <!--
+Properties that influence various parts of the IDE, especially code formatting and the like. 
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+        <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+    </properties>
+</project-shared-configuration>
diff --git a/fdx_convert/pom.xml b/fdx_convert/pom.xml
new file mode 100644
index 0000000..31e5e35
--- /dev/null
+++ b/fdx_convert/pom.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+    
+    <groupId>com.megatim.importation.validation.data.client</groupId>
+    <artifactId>fdx-convert-client</artifactId>
+    <version>1.0</version>
+    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <exec.mainClass>importation.validation.data.client.App</exec.mainClass>
+    </properties>
+    
+    <build>
+    
+        <plugins>   
+            
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>importation.validation.data.client.App</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
+                        <phase>package</phase> <!-- bind to the packaging phase -->
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+                     
+        </plugins>
+    </build>
+    
+    <dependencies>
+        <dependency>
+            <groupId>com.megatim</groupId>
+            <artifactId>dynamicjsonparser</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-xml</artifactId>
+            <version>2.15.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.megatim</groupId>
+            <artifactId>fdx-datafile-converter</artifactId>
+            <version>1.0</version>
+        </dependency>
+    
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <scope>runtime</scope>
+            <version>2.1.214</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.20</version>
+            <scope>provided</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <version>5.3.0.Final</version>
+            <scope>compile</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>2.0.0.Final</version>
+        </dependency>
+
+        
+        <dependency>
+            <groupId>org.hibernate.validator</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <version>6.0.13.Final</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.megatimfx.common</groupId>
+            <artifactId>megatimfx-common</artifactId>
+            <version>1.0</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.megatim.typefichier.validator</groupId>
+            <artifactId>typefichier-validator</artifactId>
+            <version>1.0</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>com.megatim</groupId>
+            <artifactId>module.encryption</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.megatim</groupId> 
+            <artifactId>module-compression</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.17</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.17</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.dhatim</groupId>
+            <artifactId>fastexcel</artifactId>
+            <version>0.14.0</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.dhatim/fastexcel-reader -->
+        <dependency>
+            <groupId>org.dhatim</groupId>
+            <artifactId>fastexcel-reader</artifactId>
+            <version>0.15.7</version>
+        </dependency>
+
+        
+        <dependency>
+            <groupId>com.megatim</groupId>
+            <artifactId>customview</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.opencsv</groupId>
+            <artifactId>opencsv</artifactId>
+            <version>4.1</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-csv</artifactId>
+            <version>1.10.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tika</groupId>
+            <artifactId>tika-core</artifactId>
+            <version>2.9.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tika</groupId>
+            <artifactId>tika-parsers</artifactId>
+            <version>2.9.0</version>
+            <type>pom</type>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tika</groupId>
+            <artifactId>tika-parser-text-module</artifactId>
+            <version>2.9.0</version>
+        </dependency>
+        
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/App.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/App.java
new file mode 100644
index 0000000..1f2f2f2
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/App.java
@@ -0,0 +1,95 @@
+package com.megatim.fdxconvert;
+
+import com.megatimfx.common.abstracts.context.AbstractViewContext;
+import com.megatim.fdxconvert.controller.MainController;
+import com.megatim.fdxconvert.dao.HibernateUtil;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.service.TacheJobService;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.application.Application;
+import static javafx.application.Application.launch;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class App extends Application {
+
+    public static final Map<String, Delimiteur> DELIMITEURS_COLONNE = new HashMap<>();
+    public static final Map<String, Delimiteur> DELIMITEURS_LIGNE = new HashMap<>();
+    public static final Map<String, Delimiteur> SEPARATEURS_DATE = new HashMap<>();
+
+    public static final List<String> FORMATS_DATE = new ArrayList<>();
+
+    static {
+        DELIMITEURS_COLONNE.put("", new Delimiteur("", "Aucun"));
+        DELIMITEURS_COLONNE.put(";", new Delimiteur(";", "Point-virgule ( ; )"));
+        DELIMITEURS_COLONNE.put("|", new Delimiteur("|", "Barre verticale ( | )"));
+        DELIMITEURS_COLONNE.put("\\t", new Delimiteur("\\t", "Tabulation ( \\t )"));
+
+        DELIMITEURS_LIGNE.put("\\n", new Delimiteur("\\n", "Retour Charriot ( \\n )"));
+
+        FORMATS_DATE.add("yyyyMMdd");
+        FORMATS_DATE.add("yyyyddMM");
+        FORMATS_DATE.add("MMyyyydd");
+        FORMATS_DATE.add("MMddyyy");
+        FORMATS_DATE.add("yyyy");
+
+        SEPARATEURS_DATE.put("", new Delimiteur("", "Aucun"));
+        SEPARATEURS_DATE.put("-", new Delimiteur("-", "Tiret ( - )"));
+        SEPARATEURS_DATE.put("/", new Delimiteur("/", "Slash ( / )"));
+    }
+
+    @Override
+    public void start(Stage primaryStage) throws FileNotFoundException, MalformedURLException, IOException {
+
+        AbstractViewContext.getInstance().setAbstractEditDialogControllerURL(App.class.getResource("/importation/validation/data/client/abstracts/AbstractEditDialog.fxml"));
+
+        AbstractViewContext.getInstance().setAbstractMainDialogControllerURL(App.class.getResource("/importation/validation/data/client/abstracts/AbstractMainDialog.fxml"));
+
+        FXMLLoader loader = new FXMLLoader();
+        loader.setLocation(MainController.class.getResource("main.fxml"));
+        Parent root = loader.load();
+
+        Scene scene = new Scene(root, 1100, 600);
+
+        primaryStage.setTitle("Convertisseur et validateur des données de Fdx V1.0.2 ");
+        primaryStage.getIcons().add(new Image("images/icone_ins.png"));
+        primaryStage.setOnCloseRequest(e -> {
+            HibernateUtil.shutdown();
+            System.exit(0);
+        });
+        primaryStage.setScene(scene);
+        primaryStage.show();
+    }
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+
+        try {
+
+            TacheJobService.getInstance().startJobs();
+            launch(args);
+
+        } catch (Exception ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/Test.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/Test.java
new file mode 100644
index 0000000..5f7345b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/Test.java
@@ -0,0 +1,262 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.dynamicjsonparser.extender.JsonDataValidator;
+import com.megatim.dynamicjsonparser.pojo.JsonField;
+import static com.megatim.dynamicjsonparser.utils.Utility.writeToFile;
+import com.megatim.typefichier.validator.Validator;
+import com.megatim.typefichier.validator.model.ConfigJsonValidator;
+import com.megatim.typefichier.validator.utilities.Utilities;
+import com.megatim.fdxconvert.dao.JsonStructureDAO;
+import com.megatim.fdxconvert.dao.TypeFichierJsonDAO;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.model.jaxb.TypeFichierJsonsList;
+import com.megatim.fdxconvert.service.JsonStructureService;
+import com.megatim.fdxconvert.service.TypeFichierJsonService;
+import com.megatim.fdxconvert.util.TypeFichierJsonMarshaller;
+import com.megatim.fdxconvert.util.TypeFichierJsonConverter;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.xml.bind.JAXBException;
+import org.apache.poi.ss.usermodel.DateUtil;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class Test {
+
+    public static void main(String[] args) throws Exception {
+        Date date = DateUtil.getJavaDate(Double.parseDouble("45112   "));
+        SimpleDateFormat sdf
+                = new SimpleDateFormat("dd/MM/yyyy");
+        System.out.println("" + sdf.format(date));
+    }
+
+    private static void unMarshall() {
+        String filePath = "C:\\Users\\ASUS\\Documents\\DATAS\\Export\\typefichierJsons.xml";
+        try {
+            TypeFichierJsonsList typeFichierJsonsList = TypeFichierJsonMarshaller.unMarshall(filePath);
+            TypeFichierJsonService service = TypeFichierJsonService.getInstance();
+
+            for (TypeFichierJson t : typeFichierJsonsList.getTypeFichierJson()) {
+                service.add(t);
+            }
+        } catch (JAXBException ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (Exception ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static void unMarshallOne(String filePath) {
+        try {
+            TypeFichierJson t = TypeFichierJsonMarshaller.unMarshallOne(filePath);
+            TypeFichierJsonService.getInstance().add(t);
+
+        } catch (JAXBException ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (Exception ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static void marshallOne(String codeTypeFichier) {
+        try {
+            TypeFichierJson typeFichierJson = TypeFichierJsonDAO.getByTypeFichier(codeTypeFichier);
+            TypeFichierJsonMarshaller.marshall("C:\\Users\\ASUS\\Documents\\DATAS\\Export", typeFichierJson);
+        } catch (Exception ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    private static void marshall() {
+        try {
+            List<TypeFichierJson> typefichierJsons = TypeFichierJsonService.getInstance().getAll();
+            for (TypeFichierJson t : typefichierJsons) {
+                JsonStructure jsonStructure = JsonStructureDAO.loadSubJsonStructure(t.getJsonStructure());
+                t.setJsonStructure(jsonStructure);
+            }
+            TypeFichierJsonMarshaller.marshall(typefichierJsons, "C:\\Users\\ASUS\\Documents\\DATAS\\Export");
+        } catch (Exception ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    private static void validateWithValidator() {
+        File file = new File("C:\\Users\\ASUS\\Documents\\DATAS\\DGBACT.json");
+        String validatorPath = "C:\\Users\\ASUS\\Documents\\DATAS\\Export\\DGBACT20250417151916.xml";
+        Validator validator = new Validator();
+        ConfigJsonValidator configJson = new ConfigJsonValidator(
+                "C:\\Users\\ASUS\\Documents\\ERROR",
+                "C:\\Users\\ASUS\\Documents\\OUT",
+                file
+        );
+        try {
+            boolean result = validator.validate(validatorPath, configJson, System.getProperty("user.dir") + "\\src\\main\\java", true, true, 1);
+            System.out.println("result = " + result);
+        } catch (IOException ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (JAXBException ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static void validate() {
+        try {
+            final String packageName = "com.megatim.dynamicjsonparser.generated";
+            File file = new File("C:\\Users\\ASUS\\Documents\\DATAS\\DGBACT.json");
+
+            List<JsonField> fields = new TypeFichierJsonConverter(dgbact()).convert();
+            JsonDataValidator jsonDataValidator = new JsonDataValidator();
+
+            boolean result = jsonDataValidator.validateDatas(fields, System.getProperty("user.dir") + "\\src\\main\\java", packageName, file, 1);
+            System.out.println("result = " + result + ", " + LocalDateTime.now());
+
+            if (!result) {
+                Path errorPath = Paths.get("C:\\Users\\ASUS\\Documents\\JSON_TEST\\DGBACT.txt.err");
+                writeToFile(jsonDataValidator.getParsedData().getErrors(), errorPath);
+            }
+            System.out.println("NbElts = " + jsonDataValidator.getParsedData().getVirtuals().size() + ", " + LocalDateTime.now());
+//            jsonDataValidator.getParsedData().getVirtuals().forEach(v -> System.out.println(v));
+        } catch (IOException ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+//    private static String print(List<JsonDataType> jsonDataTypes) {
+//        if (jsonDataTypes != null && !jsonDataTypes.isEmpty()) {
+//            jsonDataTypes.stream().forEach(j -> {
+//                if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+//                    System.out.println(j);
+//                    System.out.println("    " + print(j.getJsonDataTypes()));
+//                } else {
+//                    System.out.println(j);
+//                }
+//            });
+//        }
+//        return "";
+//    }
+
+    public static void save() {
+        TypeFichierJson t = typeFichierJson();
+        JsonStructure jsonStruct = t.getJsonStructure();
+        jsonStruct.setTypeFichierJson(null);
+
+        try {
+            TypeFichierJsonService tjService = TypeFichierJsonService.getInstance();
+            JsonStructureService jService = JsonStructureService.getInstance();
+
+            JsonStructure newJsonStruct = jService.add(t.getJsonStructure());
+            t.setJsonStructure(newJsonStruct);
+            TypeFichierJson newEntity = tjService.add(t);
+
+        } catch (Exception ex) {
+            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    public static TypeFichierJson typeFichierJson() {
+        TypeFichierJson typeFichierJson = new TypeFichierJson();
+        typeFichierJson.setTypeFichier(typeFichier());
+
+        JsonStructure parent = jsonStructure(null, typeFichierJson.getTypeFichier().getCode(), true, true, TypeDonnee.OBJET, 10);
+        parent.setFields(jsonStructures(parent));
+        parent.setTypeFichierJson(typeFichierJson);
+
+        typeFichierJson.setJsonStructure(parent);
+
+        return typeFichierJson;
+    }
+
+    private static TypeFichier typeFichier() {
+        TypeFichier typeFichier = new TypeFichier();
+        typeFichier.setCode("DGBACT");
+
+        return typeFichier;
+    }
+
+    private static TypeFichierJson dgbact() {
+        TypeFichierJson typeFichierJson = new TypeFichierJson();
+        typeFichierJson.setTypeFichier(typeFichier());
+
+        JsonStructure parent = jsonStructure(null, typeFichierJson.getTypeFichier().getCode(), true, true, TypeDonnee.OBJET, 10);
+        parent.setFields(jsonStructures(parent));
+        parent.setTypeFichierJson(typeFichierJson);
+
+        typeFichierJson.setJsonStructure(parent);
+
+        List<JsonStructure> jsonStructures = new ArrayList<>();
+        jsonStructures.add(jsonStructure(parent, "EXERCICE", true, false, TypeDonnee.ALPHANUMERIQUE, 2));
+        jsonStructures.add(jsonStructure(parent, "CHAPITRE", true, false, TypeDonnee.ALPHANUMERIQUE, 2));
+        jsonStructures.add(jsonStructure(parent, "CODEPROGRAMME", true, false, TypeDonnee.ALPHANUMERIQUE, 3));
+        jsonStructures.add(jsonStructure(parent, "CODEACTION", true, false, TypeDonnee.ALPHANUMERIQUE, 2));
+        jsonStructures.add(jsonStructure(parent, "LIBELLEF", true, false, TypeDonnee.ALPHANUMERIQUE, 255));
+        jsonStructures.add(jsonStructure(parent, "LIBELLEA", true, false, TypeDonnee.ALPHANUMERIQUE, 255));
+
+        parent.setFields(jsonStructures);
+
+        return typeFichierJson;
+    }
+
+    private static List<JsonStructure> jsonStructures(JsonStructure parent) {
+        List<JsonStructure> jsonStructures = new ArrayList<>();
+        jsonStructures.add(jsonStructure(parent, "numeros", true, true, TypeDonnee.NUMERIQUE, 8));
+        jsonStructures.add(jsonStructure(parent, "noms", true, false, TypeDonnee.ALPHANUMERIQUE, 100));
+        jsonStructures.add(jsonStructure(parent, "nbreEnfants", false, false, TypeDonnee.NUMERIQUE, 2));
+        jsonStructures.add(jsonStructure(parent, "salaire", true, false, TypeDonnee.DECIMAL, 14));
+        jsonStructures.add(jsonStructure(parent, "dateNaissance", true, false, "yyyyMMdd", "-", 10));
+
+        JsonStructure jsonStructure = jsonStructure(parent, "cptBanque", true, true, TypeDonnee.OBJET, 10);
+        jsonStructure.setFields(Arrays.asList(
+                jsonStructure(jsonStructure, "rib", true, false, TypeDonnee.NUMERIQUE, 23),
+                jsonStructure(jsonStructure, "solde", true, false, TypeDonnee.DECIMAL, 14),
+                jsonStructure(jsonStructure, "dateCreation", true, false, "yyyyMMdd", "-", 10)
+        ));
+        jsonStructures.add(jsonStructure);
+
+        return jsonStructures;
+    }
+
+    private static JsonStructure jsonStructure(JsonStructure parent, String name, boolean required, boolean collection, TypeDonnee typeDonnee, int taille) {
+        JsonStructure jsonStructure = new JsonStructure();
+        jsonStructure.setName(name);
+        jsonStructure.setCollection(collection);
+        jsonStructure.setTypeDonnee(typeDonnee);
+        jsonStructure.setRequired(required);
+        jsonStructure.setParent(parent);
+        jsonStructure.setLengthh(taille);
+
+        return jsonStructure;
+    }
+
+    private static JsonStructure jsonStructure(JsonStructure parent, String name, boolean required, boolean collection, String formatDate, String delimiteurDate, int taille) {
+        JsonStructure jsonStructure = new JsonStructure();
+        jsonStructure.setName(name);
+        jsonStructure.setCollection(collection);
+        jsonStructure.setTypeDonnee(TypeDonnee.DATE);
+        jsonStructure.setRequired(required);
+        jsonStructure.setFormatDate(formatDate);
+        jsonStructure.setCodeDelimiteurDate(delimiteurDate);
+        jsonStructure.setParent(parent);
+        jsonStructure.setLengthh(taille);
+
+        return jsonStructure;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/AproposEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/AproposEditDialogController.java
new file mode 100644
index 0000000..543f200
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/AproposEditDialogController.java
@@ -0,0 +1,82 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.forms.AproposEditFormController;
+import com.megatim.fdxconvert.forms.ImportTypeFichierEditFormController;
+import com.megatim.fdxconvert.pojo.ImportFile;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class AproposEditDialogController extends AbstractEditDialogController<ImportFile> {
+
+    private AproposEditFormController aproposEditFormController;
+    
+    @Override
+    public String getTitle() {
+        getEditButton().setText("OK");
+        getCancelButton().setVisible(false);
+        return "A Propos";
+    }
+
+   @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(aproposEditFormController.getClass().getResource("About.fxml"), aproposEditFormController);
+    
+    }
+
+     @Override
+    public Object getContentFormController() {
+        return aproposEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        aproposEditFormController = new AproposEditFormController();
+        super.initialize(url, rb); 
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        getCurrentObject();
+        return super.beforeSave(event);
+    }
+
+    @Override
+    public void save(ActionEvent event) {
+        closeDialog(event);
+    }
+
+    @Override
+    protected void afterBindCurrentObjectWithFormField(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.afterBindCurrentObjectWithFormField(bindObject, formController, typeOperation); 
+    }
+
+    @Override
+    protected void beforeBindCurrentObjectWithFormField(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.beforeBindCurrentObjectWithFormField(bindObject, formController, typeOperation);
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.afterBindFormFieldWithCurrentObject(bindObject, formController, typeOperation); 
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.beforeBindFormFieldWithCurrentObject(bindObject, formController, typeOperation); 
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConfigEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConfigEditDialogController.java
new file mode 100644
index 0000000..3ee1062
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConfigEditDialogController.java
@@ -0,0 +1,63 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.ConfirmationType;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.forms.ConfigEditFormController;
+import com.megatim.fdxconvert.model.Configuration;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author mela
+ */
+public class ConfigEditDialogController extends AbstractEditDialogController<Configuration> {
+    private ConfigEditFormController configEditFormController;
+    
+    @Override
+    public String getTitle() {
+        getEditButton().setText("Configurer");
+        return "Configuration des répertoires";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(configEditFormController.getClass().getResource("ConfigEditForm.fxml"), configEditFormController);
+    }
+    
+     @Override
+    public Object getContentFormController() {
+        return configEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        configEditFormController = new ConfigEditFormController();
+        super.initialize(url, rb); 
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(Configuration bindObject, Object formController, TypeOperation typeOperation) {
+        super.beforeBindFormFieldWithCurrentObject(bindObject, formController, typeOperation); 
+    }
+
+    @Override
+    public String getConfirmationMessage() {
+        return "Répertoires configurés avec succès !";
+    }
+
+    @Override
+    protected ConfirmationType getConfirmationType() {
+        return ConfirmationType.CONFIRMATION;
+    }
+
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelEditDialogController.java
new file mode 100644
index 0000000..7f69bab
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelEditDialogController.java
@@ -0,0 +1,235 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.ConfirmationType;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.forms.MetaAlphaNumeriqueFieldEditFormController;
+import com.megatim.fdxconvert.forms.ConversionModelEditFormController;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.event.ActionEvent;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelEditDialogController extends AbstractEditDialogController<ConversionModel> {
+
+    private ConversionModelEditFormController conversionModelEditFormController;
+
+    private MetaAlphaNumeriqueFieldEditDialogController metaAlphaNumeriqueFieldEditDialogController;
+
+    private Map<String, AlphaNumeriqueField> newAlphaFields = new HashMap<>();
+
+    @Override
+    public String getTitle() {
+        return "Editer un modèle de conversion";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(conversionModelEditFormController.getClass().getResource("ConversionModelEditForm.fxml"), conversionModelEditFormController);
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return conversionModelEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        getEditButton().setText("Editer");
+
+        conversionModelEditFormController = new ConversionModelEditFormController();
+
+        metaAlphaNumeriqueFieldEditDialogController = new MetaAlphaNumeriqueFieldEditDialogController();
+
+        metaAlphaNumeriqueFieldEditDialogController.setAlphaNumeriqueFieldEditFormController(new MetaAlphaNumeriqueFieldEditFormController());
+
+        super.initialize(url, rb);
+
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(ConversionModel bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof ConversionModelEditFormController) {
+            ConversionModelEditFormController controller = (ConversionModelEditFormController) formController;
+
+            if (typeOperation.equals(TypeOperation.VIEW) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+                if (bindObject.getCodeDelimiteurColonne() != null) {
+                    bindObject.setDelimiteurColonne(App.DELIMITEURS_COLONNE.get(bindObject.getCodeDelimiteurColonne()));
+                }
+
+                if (bindObject.getCodeDelimiteurLigne() != null) {
+                    bindObject.setDelimiteurLigne(App.DELIMITEURS_LIGNE.get(bindObject.getCodeDelimiteurLigne()));
+                }
+
+            }
+
+            if (typeOperation.equals(TypeOperation.ADD) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+                controller.getDelimiteurColonne().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+
+                controller.getDelimiteurLigne().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+
+                controller.getStrictValidationCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.TXT)));
+
+                controller.getHeaderPresentCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+
+            }
+
+            switch (typeOperation) {
+
+                case ADD:
+                    controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(true);
+                    break;
+
+                case UPDATE:
+                    controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false);
+                    break;
+
+                default:
+
+            }
+        }
+
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(ConversionModel bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof ConversionModelEditFormController) {
+
+            ConversionModelEditFormController controller = (ConversionModelEditFormController) formController;
+
+            controller.getMetaAlphaNumeriqueFieldAbstractTable().setController(metaAlphaNumeriqueFieldEditDialogController);
+
+            switch (typeOperation) {
+
+                case ADD:
+
+                    controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+                        if (newValue != null) {
+                            metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController().setTypeFichier(newValue);
+                            controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(false);
+                        }
+
+                    });
+
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().selectedProperty().addListener(listener -> {
+
+                        if (controller.getSaisieAlphaNumeriqueFieldChecBox().isSelected()) {
+                            controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false);
+                        }
+                    });
+
+                    break;
+
+                case UPDATE:
+
+                    metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController()
+                            .setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement());
+
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true);
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+
+                    break;
+
+                default:
+
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true);
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+
+                    break;
+            }
+        }
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        boolean proceed = super.beforeSave(event);
+
+        getCurrentObject().getMetaAlphaNumeriqueFields().forEach(m -> {
+            newAlphaFields.put(m.getAlphaNumeriqueField().getCodeColonne(), m.getAlphaNumeriqueField());
+        });
+
+        Delimiteur delimiteurColonne = getCurrentObject().getDelimiteurColonne();
+        Delimiteur delimiteurLigne = getCurrentObject().getDelimiteurLigne();
+
+        if (delimiteurColonne != null) {
+            getCurrentObject().setCodeDelimiteurColonne(delimiteurColonne.getCode());
+        }
+
+        if (delimiteurLigne != null) {
+            getCurrentObject().setCodeDelimiteurLigne(delimiteurLigne.getCode());
+        }
+
+        return proceed;
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+
+        try {
+            ConversionModel currentObject = getCurrentObject();
+            Set<MetaAlphaNumeriqueField> newSetMeta = currentObject.getMetaAlphaNumeriqueFields();
+
+            newSetMeta.forEach(m -> {
+                if (!newAlphaFields.containsKey(m.getAlphaNumeriqueField().getCodeColonne())) {
+                    try {
+                        MetaAlphaNumeriqueFieldService.getInstance().delete(m);
+                    } catch (Exception ex) {
+                        Logger.getLogger(ConversionModelEditDialogController.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+                }
+            });
+
+        } catch (Exception ex) {
+            Logger.getLogger(ConversionModelEditDialogController.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+    @Override
+    public String getConfirmationMessage() {
+        return "La configuration a été enregistrée avec succès";
+    }
+
+    @Override
+    protected ConfirmationType getConfirmationType() {
+        return ConfirmationType.CONFIRMATION;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelListDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelListDialogController.java
new file mode 100644
index 0000000..a25f0b6
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ConversionModelListDialogController.java
@@ -0,0 +1,112 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.controller.search.ConversionModelAdvancedSearchController;
+import com.megatim.fdxconvert.controller.search.ConversionModelSearchController;
+import com.megatim.fdxconvert.controller.table.ConversionModelTable;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.service.ConversionModelService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelListDialogController extends AbstractMainDialogController<ConversionModel, ConversionModel> {
+
+    private ConversionModelAdvancedSearchController conversionModelAdvancedSearchController;
+    private ConversionModelSearchController conversionModelSearchController;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        conversionModelSearchController = new ConversionModelSearchController();
+        conversionModelAdvancedSearchController = new ConversionModelAdvancedSearchController();
+
+        super.initialize(location, resources);
+    }
+
+    @Override
+    public GenericCrudService<ConversionModel> getGenericCrudService() {
+        return ConversionModelService.getInstance();
+    }
+
+    @Override
+    public String getTitle() {
+        return "Modèles de conversion";
+    }
+
+    @Override
+    public Class<ConversionModel> getElementClazz() {
+        return ConversionModel.class;
+    }
+
+    @Override
+    public List<TableColumn> getElementTableColumns() {
+        return Arrays.asList(ConversionModelTable.typeFichierColumn(), ConversionModelTable.dataTypeColumn(),
+                ConversionModelTable.delimiteurLigneColumn(), ConversionModelTable.delimiteurColonneColumn(),
+                ConversionModelTable.dateCreationColumn()
+        );
+    }
+
+    @Override
+    public AbstractEditDialogController<ConversionModel> getAbstractEditDialogController() {
+        return new ConversionModelEditDialogController();
+    }
+
+    @Override
+    public List<SearchCriteria> getPermanentSearchCriterias() {
+        List<SearchCriteria> liste = new ArrayList<>();
+
+        return liste;
+    }
+
+    @Override
+    public Object getAdvancedSearchFormController() {
+        return conversionModelAdvancedSearchController;
+    }
+
+    @Override
+    public Object getSearchFormController() {
+        return conversionModelSearchController;
+    }
+
+    @Override
+    public Pane getAdvancedSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(conversionModelAdvancedSearchController.getClass().getResource("ConversionModelAdvancedSearchForm.fxml"), conversionModelAdvancedSearchController);
+
+    }
+
+    @Override
+    public Pane getSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(conversionModelSearchController.getClass().getResource("ConversionModelSearchForm.fxml"), conversionModelSearchController);
+
+    }
+
+    @Override
+    public void resetFormFields(Object searchController, Object advancedSearchController) {
+
+        if (advancedSearchController instanceof ConversionModelAdvancedSearchController) {
+            ConversionModelAdvancedSearchController controller = (ConversionModelAdvancedSearchController) advancedSearchController;
+
+            controller.getDelimiteurColonneComboBox().setValue(null);
+            controller.getDelimiteurLigneComboBox().setValue(null);
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DataFileToJsonEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DataFileToJsonEditDialogController.java
new file mode 100644
index 0000000..74ad132
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DataFileToJsonEditDialogController.java
@@ -0,0 +1,176 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.exceptions.ConfigException;
+import com.megatim.fdxconvert.exceptions.ValidatorException;
+import com.megatim.fdxconvert.forms.DataFileToJsonFormController;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.pojo.ColumnDefinition;
+import com.megatim.fdxconvert.pojo.DataFileToJson;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import com.megatim.fdxconvert.util.ExportToJson;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import com.megatim.fdxconvert.service.ValidateurService;
+import com.megatim.typefichier.validator.utilities.ParserUtils;
+import com.megatim.fdxconvert.util.ValidateurParser;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DataFileToJsonEditDialogController extends AbstractEditDialogController<DataFileToJson> {
+
+    org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(DataFileToJsonEditDialogController.class);
+    private DataFileToJsonFormController txtFileToJsonFormController;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        txtFileToJsonFormController = new DataFileToJsonFormController();
+        super.initialize(url, rb);
+
+    }
+
+    @Override
+    public String getTitle() {
+        getEditButton().setText("Convertir");
+        return "Conversion d'un fichier de données en JSON";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(txtFileToJsonFormController.getClass().getResource("DataFileToJsonEditForm.fxml"), txtFileToJsonFormController);
+
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return txtFileToJsonFormController;
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+        List<Validateur> validateurs = ValidateurService.getInstance().getAll(Arrays.asList(validateurCriterion(getCurrentObject().getTypeFichier().getCode())));
+        boolean proceed = !validateurs.isEmpty() || getCurrentObject().getValidateurPath() != null;
+        Task<Void> task = new Task<Void>() {
+
+            @Override
+            protected Void call() throws Exception {
+                parseFile();
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            NotificationDialog notificationDialog = new NotificationDialog("Conversion en JSON reussie", NotificationType.SUCCESS, parentStage);
+            notificationDialog.showNotification();
+        });
+
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Throwable th = task.getException();
+
+            if (th instanceof ConfigException || th instanceof ValidatorException) {
+                Node source = (Node) event.getSource();
+                Stage parentStage = (Stage) source.getScene().getWindow();
+                NotificationDialog notificationDialog = new NotificationDialog(th.getMessage(), NotificationType.WARNING, parentStage);
+                logger.warn(th.getMessage());
+                notificationDialog.showNotification();
+
+            } else {
+                logger.error(th);
+                AlertMessageUtil.showAlertException(th, "Une exception s'est produite pendant la validation du fichier", "Erreur");
+            }
+        });
+        if (proceed) {
+            new Thread(task).start();
+        } else {
+            AlertMessageUtil.showAlertException(new Exception(""), "Validateur de " + getCurrentObject().getTypeFichier().getCode() + " introuvable", "Erreur");
+        }
+    }
+
+    private SearchCriteria validateurCriterion(String codeTypeFichier) {
+        SearchCriteria criterion = new SearchCriteria();
+        criterion.setFieldName("codeTypeFichier");
+        criterion.setFieldType(String.class);
+        criterion.setFieldValue(codeTypeFichier);
+        criterion.setOperateur(Operateur.EQUALS);
+
+        return criterion;
+    }
+
+    private void parseFile() throws Exception {
+        Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+        List<ColumnDefinition> colDefs = new ArrayList<>();
+
+        if (getCurrentObject().getValidateurPath()!= null) {
+            colDefs = ValidateurParser.retrieveFieldsFromValidator(new File(getCurrentObject().getValidateurPath()), getCurrentObject().getTypeFichier().getCode());
+        } else {
+            ParserUtils.getValidateurElements(getCurrentObject().getValidateurBytes());
+        }
+        parseFile(getCurrentObject(), config, colDefs);
+    }
+
+    private void parseFile(DataFileToJson txtFileToJson, Configuration config, List<ColumnDefinition> colDefs) throws Exception {
+        String fileName = (new File(txtFileToJson.getFileToConvertPath())).getName();
+        int index = fileName.lastIndexOf(".");
+        fileName = fileName.substring(0, index);
+        File outputFile = new File(config.getDatasDir(), fileName + ".json");
+        FileToValidateDescription fileDesc = null;
+
+        if (!txtFileToJson.getDataType().equals(DataType.TXT)) {
+            fileDesc = new FileToValidateDescription(new File(txtFileToJson.getFileToConvertPath()),
+                    txtFileToJson.getDelimiteurLigne().getCode(),
+                    txtFileToJson.getDelimiteurColonne().getCode());
+        }
+
+        switch (txtFileToJson.getDataType()) {
+            case CSV:
+                ExportToJson.parseCsvFile(fileDesc, outputFile, colDefs, txtFileToJson.isHeaderPresent());
+                break;
+            case TXT:
+                ExportToJson.parseFileByColumnLength(
+                        new FileToValidateDescription(new File(txtFileToJson.getFileToConvertPath()), "", ""),
+                        outputFile, colDefs);
+                break;
+            case XLS:
+                ExportToJson.parseXlsFile(fileDesc, outputFile, colDefs, txtFileToJson.isHeaderPresent());
+                break;
+            case XLSX:
+                ExportToJson.parseXlsxFile(fileDesc, outputFile, colDefs, txtFileToJson.isHeaderPresent());
+                break;
+            default:
+                throw new Exception("Type de données non supporté");
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DecryptageAESEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DecryptageAESEditDialogController.java
new file mode 100644
index 0000000..46f9a5b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/DecryptageAESEditDialogController.java
@@ -0,0 +1,135 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.module.encryption.impl.AESImpl;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.forms.DecryptageAESEditFormController;
+import com.megatim.fdxconvert.pojo.DecryptageAES;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class DecryptageAESEditDialogController extends AbstractEditDialogController<DecryptageAES> {
+
+    private DecryptageAESEditFormController decryptageAESEditFormController;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        decryptageAESEditFormController = new DecryptageAESEditFormController();
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        getEditButton().setText("Décrypter");
+        return "Décryptage d'un fichier";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(decryptageAESEditFormController.getClass().getResource("DecryptageAESEditForm.fxml"), decryptageAESEditFormController);
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return decryptageAESEditFormController;
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        boolean proceed = super.beforeSave(event);
+        boolean proceedKey = getCurrentObject().getKeyToDecrypt().equals(getCurrentObject().getKeyConfirmation());
+        proceed = proceed && proceedKey;
+
+        if (!proceedKey) {
+            com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+            com.megatimfx.common.dialogs.NotificationDialog notificationDialog = new com.megatimfx.common.dialogs.NotificationDialog(
+                    "La clé et sa confirmation doivent avoir la même valeur",
+                    com.megatimfx.common.dialogs.NotificationType.ERROR,
+                    parentStage
+            );
+            notificationDialog.showNotification();
+        }
+        return proceed;
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+        DecryptageAES dec = getCurrentObject();
+        Task<Void> task = new Task<Void>() {
+            @Override
+            protected Void call() throws Exception {
+                symetricDecrypt(dec);
+                return null;
+            }
+        };
+
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Throwable th = task.getException();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            if (th instanceof javax.crypto.BadPaddingException || th instanceof java.security.spec.InvalidKeySpecException
+                    || th instanceof java.security.InvalidKeyException) {
+                NotificationDialog notificationDialog = new NotificationDialog(
+                        "Echec décryptage : La clé fournie n'est pas la bonne ",
+                        NotificationType.ERROR,
+                        parentStage
+                );
+                notificationDialog.showNotification();
+
+            } else if (th instanceof javax.crypto.IllegalBlockSizeException) {
+                NotificationDialog notificationDialog = new NotificationDialog(
+                        "Echec décryptage : Ce fichier n'est pas crypté avec l'alogorithme AES ",
+                        NotificationType.ERROR,
+                        parentStage
+                );
+                notificationDialog.showNotification();
+            } else {
+                AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant le décryptage du fichier", "Erreur");
+            }
+        });
+
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+            NotificationDialog notificationDialog = new NotificationDialog(
+                    "Décryptage du fichier réussie",
+                    NotificationType.SUCCESS,
+                    parentStage
+            );
+            notificationDialog.showNotification();
+        });
+        new Thread(task).start();
+    }
+
+    private void symetricDecrypt(DecryptageAES dec) throws Exception {
+        AESImpl aes = new AESImpl();
+        File inputFile = new File(dec.getFilePath());
+        File outputFile = new File(dec.getOutputDir(), inputFile.getName());
+        aes.decryptFile(dec.getKeyToDecrypt(), dec.getKeyLength(), dec.getFilePath(), outputFile.getAbsolutePath());
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/FileToValidateEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/FileToValidateEditDialogController.java
new file mode 100644
index 0000000..0801f33
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/FileToValidateEditDialogController.java
@@ -0,0 +1,447 @@
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.typefichier.validator.Validator;
+import com.megatim.typefichier.validator.model.ConfigJsonValidator;
+import com.megatim.typefichier.validator.model.ConfigStreamValidator;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.dao.TypeFichierJsonDAO;
+import com.megatim.fdxconvert.dao.ValidateurDAO;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.exceptions.ConfigException;
+import com.megatim.fdxconvert.exceptions.ValidatorException;
+import com.megatim.fdxconvert.forms.MetaAlphaNumeriqueFieldEditFormController;
+import com.megatim.fdxconvert.forms.FileToValidateEditFormController;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import com.megatim.fdxconvert.util.ImportData;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import com.megatim.fdxconvert.util.TypeFichierJsonConverter;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Paths;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Random;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+import org.apache.commons.io.IOUtils;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class FileToValidateEditDialogController extends AbstractEditDialogController<FileToValidate> {
+
+    org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(FileToValidateEditDialogController.class);
+
+    private FileToValidateEditFormController fileToValidateEditFormController;
+    private MetaAlphaNumeriqueFieldEditDialogController metaAlphaNumeriqueFieldEditDialogController;
+
+    @Override
+    public String getTitle() {
+
+        getEditButton().setText("Valider");
+        return "Conversion manuelle des fichiers";
+
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(fileToValidateEditFormController.getClass().getResource("FileToValidateEditForm.fxml"), fileToValidateEditFormController);
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return fileToValidateEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        fileToValidateEditFormController = new FileToValidateEditFormController();
+        metaAlphaNumeriqueFieldEditDialogController = new MetaAlphaNumeriqueFieldEditDialogController();
+
+        metaAlphaNumeriqueFieldEditDialogController.setAlphaNumeriqueFieldEditFormController(new MetaAlphaNumeriqueFieldEditFormController());
+
+        super.initialize(url, rb);
+
+    }
+
+    @Override
+    protected void afterBindCurrentObjectWithFormField(FileToValidate bindObject, Object formController, TypeOperation typeOperation) {
+        FileToValidateEditFormController controller = (FileToValidateEditFormController) formController;
+        controller.getMetaAlphaNumeriqueFieldAbstractTable().setController(metaAlphaNumeriqueFieldEditDialogController);
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(FileToValidate bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof FileToValidateEditFormController) {
+            FileToValidateEditFormController controller = (FileToValidateEditFormController) formController;
+            controller.getMetaAlphaNumeriqueFieldAbstractTable().setController(metaAlphaNumeriqueFieldEditDialogController);
+
+            switch (typeOperation) {
+
+                case ADD:
+                    controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+                        if (newValue != null) {
+                            metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController().setTypeFichier(newValue);
+
+                            if (controller.getDataTypeComboBox().getSelectionModel().getSelectedItem() != null && controller.getDataTypeComboBox().getSelectionModel().getSelectedItem().equals(DataType.JSON)) {
+                                controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+                            }
+                            controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(false);
+                        }
+                    });
+                    fileToValidateEditFormController.getSaisieAlphaNumeriqueFieldChecBox().selectedProperty().addListener(listener -> {
+
+                        if (fileToValidateEditFormController.getSaisieAlphaNumeriqueFieldChecBox().isSelected()) {
+                            fileToValidateEditFormController.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false);
+                        }
+                    });
+                    fileToValidateEditFormController.getStrictValidationCheckbox().selectedProperty().addListener(l -> {
+                        if (fileToValidateEditFormController.getStrictValidationCheckbox().isSelected()) {
+                            fileToValidateEditFormController.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(true);
+                        }
+                    });
+                    break;
+                default:
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true);
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+                    break;
+            }
+        }
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+        Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+
+        if (getCurrentObject().getDataType().equals(DataType.JSON)) {
+            validateJsonFile(config, event);
+        } else {
+            Optional<Validateur> validateur = ValidateurDAO.findByCodeTypeFichier(getCurrentObject().getTypeFichier().getCode());
+
+            if (!validateur.isPresent()) {
+                Node source = (Node) event.getSource();
+                Stage parentStage = (Stage) source.getScene().getWindow();
+                NotificationDialog notificationDialog = new NotificationDialog("Validation impossible. Le type fichier " + getCurrentObject().getTypeFichier().getCode() + " n'a pas de validateur enregistré!",
+                        NotificationType.ERROR,
+                        parentStage);
+                notificationDialog.showNotification();
+            }
+            validateTexteFile(config, validateur.get(), event);
+        }
+
+    }
+
+    private void validateTexteFile(Configuration config, Validateur validateur, ActionEvent event) {
+        Task<Void> task = new Task<Void>() {
+
+            @Override
+            protected Void call() throws Exception {
+
+                if (validateur.isConvertDataBeforeValidation()) {
+
+                    //On converti le fichier à valider en fichier
+                    generateAndParseTxtFile(getCurrentObject(), config, validateur);
+                }
+                return null;
+            }
+        };
+
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Throwable th = task.getException();
+
+            if ((th instanceof ConfigException) || (th instanceof ValidatorException)) {
+
+                Node source = (Node) event.getSource();
+                Stage parentStage = (Stage) source.getScene().getWindow();
+                NotificationDialog notificationDialog = new NotificationDialog(th.getMessage(), NotificationType.WARNING, parentStage);
+                logger.warn(th.getMessage());
+                notificationDialog.showNotification();
+
+            } else {
+                logger.error(task.getException());
+                AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant l'importation des données", "Erreur");
+            }
+        });
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            validateGeneratedFile(config, validateur, event);
+        });
+        new Thread(task).start();
+    }
+
+    private void validateGeneratedFile(Configuration config, Validateur validateur, ActionEvent event) {
+        Task<Boolean> task = new Task<Boolean>() {
+
+            @Override
+            protected Boolean call() throws Exception {
+                return validate(config, validateur);
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            boolean valid = task.getValue();
+            String message;
+            NotificationDialog notificationDialog;
+            String errorFileName = getCurrentObject().getTxtFilePath() != null
+                    ? new File(getCurrentObject().getTxtFilePath()).getName()
+                    : new File(getCurrentObject().getFilePath()).getName();
+
+            if (!valid) {
+                message = "Echec de la validation. Le fichier contient des erreurs, veuillez consulter le répertoire " + config.getErrorDir() + ", puis et ouvrir le fichier d'erreur "
+                        + errorFileName + ".err pour en savoir plus";
+                notificationDialog = new NotificationDialog(message, NotificationType.ERROR, parentStage);
+
+            } else {
+                message = "Validation réussie. Fichier correcte";
+                notificationDialog = new NotificationDialog(message, NotificationType.SUCCESS, parentStage);
+            }
+            logger.error(message);
+            notificationDialog.showNotification();
+
+        });
+
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Throwable th = task.getException();
+
+            if (th instanceof ConfigException || th instanceof ValidatorException) {
+                Node source = (Node) event.getSource();
+                Stage parentStage = (Stage) source.getScene().getWindow();
+                NotificationDialog notificationDialog = new NotificationDialog(th.getMessage(), NotificationType.WARNING, parentStage);
+                logger.warn(th.getMessage());
+                notificationDialog.showNotification();
+
+            } else {
+                logger.error(th);
+                AlertMessageUtil.showAlertException(th, "Une exception s'est produite pendant la validation du fichier", "Erreur");
+            }
+        });
+
+        new Thread(task).start();
+
+    }
+
+    /**
+     * Méthode qui appelle la méthode de validation
+     *
+     * @param val :
+     * @param config
+     * @return
+     * @throws Exception
+     */
+    private boolean validate(Configuration config, Validateur validateur) throws Exception {
+
+        if (config == null) {
+            throw new ConfigException("Validation impossible, les répertoires ne sont pas configurés. Bien vouloir les configurer avant avant d'effectuer cette action");
+        }
+        File originalFile = new File(getCurrentObject().getFilePath());
+        File file = validateur.isConvertDataBeforeValidation() ? new File(getCurrentObject().getTxtFilePath()) : originalFile; //Fichier à valider
+
+        if (!file.exists()) {
+            throw new FileNotFoundException("Le fichier " + file.getAbsolutePath() + " est introuvable");
+        }
+        byte[] targetArray = IOUtils.toByteArray(FileToValidateEditDialogController.class.getClassLoader().getResourceAsStream("predicatelogic-engine.xml"));
+        ConfigStreamValidator configValidator = new ConfigStreamValidator(targetArray, validateur.getContent(), config.getErrorDir(), config.getOutputDir(), file, originalFile);
+        Validator validator = new Validator();
+        return validator.validate(configValidator, Boolean.TRUE, Boolean.TRUE, Utilities.getNbThreads());
+    }
+
+    /**
+     * Méthode qui génère et parse fichier txt à partir d'un fichier de données
+     * csv, txt, ou excel
+     *
+     * @param val : objet contenant
+     * @param config : objet contenant l'ensemeble des repertoires nécessaire à
+     * l'extraction des données
+     * @return : renvoie le chemin vers le fichier crée
+     * @throws Exception
+     */
+    private void generateAndParseTxtFile(FileToValidate fileToValidate, Configuration config, Validateur validateur) throws Exception {
+        if (config == null) {
+            throw new ConfigException("Validation impossible, veuillez configurer les repertoires avant d'effectuer cette action");
+        }
+        String fileName = fileToValidate.getTypeFichier().getCode() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + generateTierce() + ".txt";
+        File outputFile = new File(config.getDatasDir(), fileName);
+
+        if (!outputFile.exists()) {
+
+            //Creation du fichier
+            outputFile.createNewFile();
+        }
+        getCurrentObject().setTxtFilePath(outputFile.getAbsolutePath());
+        Set<AlphaNumeriqueField> alphaNumeriqueToBeTruncated = new HashSet<>();
+
+        fileToValidate.getMetaAlphaNumeriqueFields().forEach(m -> {
+            alphaNumeriqueToBeTruncated.add(m.getAlphaNumeriqueField());
+        });
+
+        switch (fileToValidate.getDataType()) {
+            case TXT:
+                FileToValidateDescription raw = new FileToValidateDescription(new File(fileToValidate.getFilePath()), fileToValidate.getDelimiteurLigne().getCode(), fileToValidate.getDelimiteurColonne().getCode());
+
+                if (fileToValidate.isStrictValidation()) {
+                    ImportData.parseFileByFieldLength(raw, validateur, outputFile, fileToValidate.isHeaderPresent());
+
+                } else {
+                    ImportData.parseFileCharacterByCharacter(raw, validateur, outputFile, fileToValidate.isHeaderPresent(), alphaNumeriqueToBeTruncated);
+                }
+                break;
+            case CSV:
+                raw = new FileToValidateDescription(new File(fileToValidate.getFilePath()), fileToValidate.getDelimiteurLigne().getCode(), fileToValidate.getDelimiteurColonne().getCode());
+                ImportData.parseCsvFile(raw, validateur, outputFile, fileToValidate.isHeaderPresent(), alphaNumeriqueToBeTruncated);
+                break;
+
+            case XLS:
+                ImportData.parseXlsFile(fileToValidate.getFilePath(), fileToValidate.isHeaderPresent(), outputFile, validateur, alphaNumeriqueToBeTruncated);
+                break;
+            case XLSX:
+                ImportData.parseXlsxFile(fileToValidate.getFilePath(), fileToValidate.isHeaderPresent(), outputFile, validateur, alphaNumeriqueToBeTruncated);
+                break;
+            default:
+                break;
+        }
+    }
+
+    private String generateTierce() {
+
+        // Instance of random class
+        Random rand = new Random();
+        int upperbound = 60;
+        int random = rand.nextInt(upperbound);
+
+        return String.format("%02d", random);
+
+    }
+
+    private boolean validateJson(FileToValidate fileToValidate, Configuration config) throws IOException {
+
+        if (config == null) {
+            throw new ConfigException("Validation impossible, les répertoires ne sont pas configurés. Bien vouloir les configurer avant avant d'effectuer cette action");
+        }
+        TypeFichierJson typefichierJson = TypeFichierJsonDAO.getByTypeFichier(fileToValidate.getTypeFichier().getCode());
+
+        if (typefichierJson == null) {
+            throw new ValidatorException("Validation impossible. Le type fichier " + fileToValidate.getTypeFichier().getCode() + " n'a pas de structure JSON enregistré");
+        }
+        Validator validator = new Validator();
+        ConfigJsonValidator configJson = new ConfigJsonValidator(
+                fileToValidate.getErrorFilePath(),
+                config.getOutputDir(),
+                new File(fileToValidate.getFilePath()),
+                new TypeFichierJsonConverter(typefichierJson).convert()
+        );
+
+        return validator.validate(configJson, System.getProperty("user.dir") + "\\src\\main\\java", true, true, Utilities.getNbThreads());
+    }
+
+    private void validateJsonFile(Configuration config, ActionEvent event) {
+        getCurrentObject().setErrorFilePath(Paths.get(config.getErrorDir(),
+                getCurrentObject().getTypeFichier().getCode() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
+                + generateTierce() + "_JSON.txt").toString());
+
+        Task<Boolean> task = new Task<Boolean>() {
+
+            @Override
+            protected Boolean call() throws Exception {
+
+                return validateJson(getCurrentObject(), config);
+
+            }
+
+        };
+
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+
+        task.setOnSucceeded(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            boolean valid = task.getValue();
+
+            String message;
+            NotificationDialog notificationDialog;
+
+            if (!valid) {
+
+                message = "Echec de la validation. Le fichier contient des erreurs, veuillez consulter le répertoire " + config.getErrorDir() + ", puis ouvrir le fichier d'erreur "
+                        + new File(getCurrentObject().getErrorFilePath()).getName() + ".err pour en savoir plus";
+
+                notificationDialog = new NotificationDialog(message, NotificationType.ERROR, parentStage);
+
+            } else {
+
+                message = "Validation réussie. Fichier correcte";
+
+                notificationDialog = new NotificationDialog(message, NotificationType.SUCCESS, parentStage);
+            }
+
+            logger.error(message);
+
+            notificationDialog.showNotification();
+
+        });
+
+        task.setOnFailed(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+            Throwable th = task.getException();
+
+            if (th instanceof ConfigException || th instanceof ValidatorException) {
+
+                Node source = (Node) event.getSource();
+
+                Stage parentStage = (Stage) source.getScene().getWindow();
+
+                NotificationDialog notificationDialog = new NotificationDialog(th.getMessage(), NotificationType.WARNING, parentStage);
+
+                logger.warn(th.getMessage());
+
+                notificationDialog.showNotification();
+
+            } else {
+
+                logger.error(th);
+
+                AlertMessageUtil.showAlertException(th, "Une exception s'est produite pendant la validation du fichier", "Erreur");
+
+            }
+
+        });
+
+        new Thread(task).start();
+
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ImportTypeFichierEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ImportTypeFichierEditDialogController.java
new file mode 100644
index 0000000..e9b1bb0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ImportTypeFichierEditDialogController.java
@@ -0,0 +1,79 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.forms.ImportTypeFichierEditFormController;
+import com.megatim.fdxconvert.pojo.ImportFile;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ImportTypeFichierEditDialogController extends AbstractEditDialogController<ImportFile> {
+
+    private ImportTypeFichierEditFormController importFileEditFormController;
+    
+    @Override
+    public String getTitle() {
+        getEditButton().setText("Importer");
+        return "Importation des type fichiers";
+    }
+
+   @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(importFileEditFormController.getClass().getResource("ImportTypeFichierEditForm.fxml"), importFileEditFormController);
+    
+    }
+
+     @Override
+    public Object getContentFormController() {
+        return importFileEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        importFileEditFormController = new ImportTypeFichierEditFormController();
+        super.initialize(url, rb); 
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        getCurrentObject();
+        return super.beforeSave(event);
+    }
+
+    @Override
+    protected void afterBindCurrentObjectWithFormField(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.afterBindCurrentObjectWithFormField(bindObject, formController, typeOperation); 
+    }
+
+    @Override
+    protected void beforeBindCurrentObjectWithFormField(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.beforeBindCurrentObjectWithFormField(bindObject, formController, typeOperation);
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.afterBindFormFieldWithCurrentObject(bindObject, formController, typeOperation); 
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(ImportFile bindObject, Object formController, TypeOperation typeOperation) {
+        super.beforeBindFormFieldWithCurrentObject(bindObject, formController, typeOperation); 
+    }
+    
+    @Override
+    public String getConfirmationMessage() {
+        return "Importation réussie !";
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalEditDialogController.java
new file mode 100644
index 0000000..f3f86cc
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalEditDialogController.java
@@ -0,0 +1,69 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatim.fdxconvert.forms.JournalEditFormController;
+import com.megatim.fdxconvert.model.Journal;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URL;
+import java.text.NumberFormat;
+import java.util.ResourceBundle;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalEditDialogController extends AbstractEditDialogController<Journal> {
+
+    private JournalEditFormController journalEditFormController;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        journalEditFormController = new JournalEditFormController();
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        return "Visualiser le journal des actions";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        FXMLLoader loader = new FXMLLoader(JournalEditFormController.class.getResource("JournalEditForm.fxml"));
+        loader.setControllerFactory(param -> journalEditFormController);
+        Parent parent = loader.load();
+        return (Pane) parent;
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return journalEditFormController;
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(Journal bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof JournalEditFormController) {
+            JournalEditFormController controller = (JournalEditFormController) formController;
+
+            if (typeOperation.equals(TypeOperation.VIEW)) {
+                controller.getNombreLignesTextfield().setText(separateurMillier(bindObject.getNombreLignes()));
+            }
+        }
+
+    }
+
+    private String separateurMillier(Long value) {
+        NumberFormat numberFormat = NumberFormat.getInstance(java.util.Locale.FRENCH);
+        return (numberFormat.format(value));
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalListDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalListDialogController.java
new file mode 100644
index 0000000..f1d6eb4
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/JournalListDialogController.java
@@ -0,0 +1,113 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.controller.search.JournalAdvancedSearchFormController;
+import com.megatim.fdxconvert.controller.search.JournalSearchFormController;
+import com.megatim.fdxconvert.controller.table.JournalTable;
+import com.megatim.fdxconvert.model.Journal;
+import com.megatim.fdxconvert.service.JournalService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalListDialogController extends AbstractMainDialogController<Journal, Journal> {
+
+    private JournalSearchFormController journalSearchFormController;
+    private JournalAdvancedSearchFormController journalAdvancedSearchFormController;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        journalSearchFormController = new JournalSearchFormController();
+        journalAdvancedSearchFormController = new JournalAdvancedSearchFormController();
+
+        getButtonAdd().setVisible(false);
+        getButtonDelete().setVisible(false);
+        getButtonEdit().setVisible(false);
+        getButtonPrint().setVisible(false);
+
+        super.initialize(location, resources);
+    }
+
+    @Override
+    public GenericCrudService<Journal> getGenericCrudService() {
+        return JournalService.getInstance();
+    }
+
+    @Override
+    public String getTitle() {
+        return "Journal des tâches exécutées";
+    }
+
+    @Override
+    public List<TableColumn> getElementTableColumns() {
+        return Arrays.asList(
+                JournalTable.dateColumn(), JournalTable.statutColumn(), JournalTable.typeFichierColumn(),
+                JournalTable.sourceFileNameColumn(), JournalTable.destinationFileNameColumn()
+        );
+    }
+
+    @Override
+    public Class<Journal> getElementClazz() {
+        return Journal.class;
+    }
+
+    @Override
+    public AbstractEditDialogController<Journal> getAbstractEditDialogController() {
+        return new JournalEditDialogController();
+    }
+
+    @Override
+    public List<SearchCriteria> getPermanentSearchCriterias() {
+        List<SearchCriteria> liste = new ArrayList<>();
+
+        return liste;
+    }
+
+    @Override
+    public Object getSearchFormController() {
+        return journalSearchFormController;
+    }
+
+    @Override
+    public Pane getSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(journalSearchFormController.getClass().getResource("JournalSearchForm.fxml"), journalSearchFormController);
+    }
+
+    @Override
+    public Object getAdvancedSearchFormController() {
+        return journalAdvancedSearchFormController;
+    }
+
+    @Override
+    public Pane getAdvancedSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(journalAdvancedSearchFormController.getClass().getResource("JournalAdvancedSearchForm.fxml"), journalAdvancedSearchFormController);
+    }
+
+    @Override
+    public void resetFormFields(Object searchController, Object advancedSearchController) {
+
+        if (searchController instanceof JournalSearchFormController) {
+            JournalSearchFormController controller = (JournalSearchFormController)searchController;
+            controller.getTypeFichierAbstractSelectionItem().setOldElement(null);
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MainController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MainController.java
new file mode 100644
index 0000000..efc3351
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MainController.java
@@ -0,0 +1,432 @@
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.abstracts.context.AbstractViewContext;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatim.fdxconvert.dao.HibernateUtil;
+import com.megatim.fdxconvert.forms.ValidateurListFormController;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.pojo.DecryptageAES;
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import com.megatim.fdxconvert.pojo.ImportFile;
+import com.megatim.fdxconvert.pojo.TxtFileToValidate;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.pojo.DataFileToJson;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import com.megatim.fdxconvert.service.ImportFileService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.megatim.fdxconvert.views.JsonStructureTableViewController;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.Tooltip;
+import javafx.scene.layout.VBox;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
+
+/**
+ * FXML Controller class
+ *
+ * @author mela
+ */
+public class MainController implements Initializable {
+
+    @FXML
+    private VBox mainContainer;
+
+    @FXML
+    public MenuItem configMenuItem;
+
+    @FXML
+    public MenuItem paramMenuItem;
+
+    @FXML
+    public MenuItem validationManuelMenuItem;
+
+    private Stage parent;
+
+    @FXML
+    private Button btnImportationFormatValidation;
+
+    @FXML
+    private Button btnConvertionManuelle;
+
+    @FXML
+    private Button btnGestionTachesConvertion;
+
+    @FXML
+    public MenuItem conversionModelMenuItem;
+
+    ConfigEditDialogController configEditDialogController;
+
+    /**
+     * Initializes the controller class.
+     *
+     * @param url
+     * @param rb
+     */
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+
+        //On ajoute les tooltips aux boutons
+        addToolTipBoutons();
+
+    }
+
+    /**
+     * Permet d'ajouter les tooltip aux boutons
+     */
+    private void addToolTipBoutons() {
+
+        //Variables
+        Tooltip tooltipOperationsRecuSI = new Tooltip("Importation des formats de validation");
+        Tooltip tooltipOperationsGenerees = new Tooltip("Convertion manuelle");
+        Tooltip tooltipConsoleSuivieOperations = new Tooltip("Gestion des taches de convertion");
+
+        //On set le styles
+        tooltipOperationsRecuSI.setStyle("-fx-background-color: rgba(216, 215, 208, 1); -fx-text-fill: black;");
+        tooltipOperationsGenerees.setStyle("-fx-background-color: rgba(216, 215, 208, 1); -fx-text-fill: black;");
+        tooltipConsoleSuivieOperations.setStyle("-fx-background-color: rgba(216, 215, 208, 1); -fx-text-fill: black;");
+
+        //On set les toolTips
+        btnImportationFormatValidation.setTooltip(tooltipOperationsRecuSI);
+        btnConvertionManuelle.setTooltip(tooltipOperationsGenerees);
+        btnGestionTachesConvertion.setTooltip(tooltipConsoleSuivieOperations);
+
+    }
+
+    private void setStage(Parent root) {
+        Scene scene = new Scene(root);
+        Stage stage = new Stage();
+
+        stage.setScene(scene);
+        stage.initStyle(StageStyle.UNDECORATED);
+        stage.initModality(Modality.APPLICATION_MODAL);
+        stage.show();
+    }
+
+    @FXML
+    public void openConfigDialog(ActionEvent event) {
+        Task<Configuration> task = new Task() {
+
+            @Override
+            protected Object call() throws Exception {
+                return ConfigurationService.getInstance().getCurrentConfig();
+            }
+        };
+        Thread th = new Thread(task);
+        th.setDaemon(true);
+        th.start();
+
+        task.setOnSucceeded(e -> {
+            try {
+
+                FXMLLoader loader = new FXMLLoader(
+                        (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                        ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                        : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+                );
+
+                configEditDialogController = new ConfigEditDialogController();
+
+                loader.setControllerFactory(param -> configEditDialogController);
+                Parent root = loader.load();
+                parent = (Stage) mainContainer.getScene().getWindow();
+
+                Configuration config = task.getValue();
+                if (config == null) {
+                    configEditDialogController.initData(parent, TypeOperation.ADD, new Configuration(), ConfigurationService.getInstance(), null, false);
+                } else {
+                    configEditDialogController.initData(parent, TypeOperation.UPDATE, config, ConfigurationService.getInstance(), null, false);
+                }
+                configMenuItem.setDisable(false);
+
+                setStage(root);
+            } catch (IOException ex) {
+                Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
+            }
+
+        });
+        task.setOnRunning(e -> configMenuItem.setDisable(true));
+
+    }
+
+    @FXML
+    public void openTypeFichierDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+                    ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+            );
+            loader.setControllerFactory(param -> new TypeFichierListDialogController());
+            Parent root = loader.load();
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openTacheDialog(ActionEvent event) {
+
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+                    ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+            );
+
+            loader.setControllerFactory(param -> new TacheListeDialogController());
+            Parent root = loader.load();
+            setStage(root);
+
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openJournalDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+                    ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+            );
+
+            loader.setControllerFactory(param -> new JournalListDialogController());
+            Parent root = loader.load();
+            setStage(root);
+
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openImportTypeFichierDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            ImportTypeFichierEditDialogController controller = new ImportTypeFichierEditDialogController();
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Stage parentStage = (Stage) mainContainer.getScene().getWindow();
+
+            ImportFile imp = new ImportFile();
+            imp.setType(TypeFichier.class);
+            controller.initData(parentStage, TypeOperation.ADD, imp, ImportFileService.getInstance(), null, false);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openAproposrDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            AproposEditDialogController controller = new AproposEditDialogController();
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Stage parentStage = (Stage) mainContainer.getScene().getWindow();
+
+            //ImportFile imp = new ImportFile();
+            //imp.setType(TypeFichier.class);
+            controller.initData(parentStage, TypeOperation.ADD, null, null, null, false);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openFileToValidateDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            FileToValidateEditDialogController controller = new FileToValidateEditDialogController();
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Stage parentStage = (Stage) mainContainer.getScene().getWindow();
+
+            controller.initData(parentStage, TypeOperation.ADD, new FileToValidate(), null, null, true);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void quit(ActionEvent event) {
+        HibernateUtil.shutdown();
+        System.exit(0);
+    }
+
+    @FXML
+    public void openDecryptageAESSymDailog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            DecryptageAESEditDialogController controller = new DecryptageAESEditDialogController();
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Stage stage = (Stage) mainContainer.getScene().getWindow();
+
+            controller.initData(stage, TypeOperation.ADD, new DecryptageAES(), null, null, true);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openTxtFileToValidateDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            TxtFileToValidateEditDialogController controller = new TxtFileToValidateEditDialogController();
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Stage parentStage = (Stage) mainContainer.getScene().getWindow();
+
+            controller.initData(parentStage, TypeOperation.ADD, new TxtFileToValidate(), null, null, true);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openTxtFileToJsonDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            DataFileToJsonEditDialogController controller = new DataFileToJsonEditDialogController();
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Stage parentStage = (Stage) mainContainer.getScene().getWindow();
+
+            controller.initData(parentStage, TypeOperation.ADD, new DataFileToJson(), null, null, true);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openValidateurDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(ValidateurListFormController.class.getResource("ValidateurListForm.fxml"));
+            loader.setControllerFactory(param -> new ValidateurListFormController());
+            Parent root = loader.load();
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openConversionModelDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+                    ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+            );
+
+            loader.setControllerFactory(param -> new ConversionModelListDialogController());
+            Parent root = loader.load();
+            setStage(root);
+
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    public void openJsonToValidateDialog(ActionEvent event) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractMainDialogControllerURL() == null)
+                    ? AbstractMainDialogController.class.getResource("AbstractMainDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractMainDialogControllerURL()
+            );
+
+            loader.setControllerFactory(param -> new ModeleJsonListeDialogController());
+            Parent root = loader.load();
+            setStage(root);
+
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    @FXML
+    public void openJsonStructureView(ActionEvent event) {
+        try {
+            FXMLLoader loader = new FXMLLoader(JsonStructureTableViewController.class.getResource("JsonStructureTableView.fxml"));
+            Parent root = loader.load();
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MetaAlphaNumeriqueFieldEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MetaAlphaNumeriqueFieldEditDialogController.java
new file mode 100644
index 0000000..fa85b36
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/MetaAlphaNumeriqueFieldEditDialogController.java
@@ -0,0 +1,94 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.forms.MetaAlphaNumeriqueFieldEditFormController;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MetaAlphaNumeriqueFieldEditDialogController extends AbstractEditDialogController<MetaAlphaNumeriqueField> {
+
+    private MetaAlphaNumeriqueFieldEditFormController alphaNumeriqueFieldEditFormController;
+
+    //Map qui garde la trace des éléments déjà selectionnés 
+    private Map<String, AlphaNumeriqueField> toBeTruncated = new HashMap<>();
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        return "Choisir le champ à tronquer";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(
+                alphaNumeriqueFieldEditFormController.getClass().getResource("AlphaNumeriqueFieldEditForm.fxml"),
+                alphaNumeriqueFieldEditFormController
+        );
+    }
+
+    public MetaAlphaNumeriqueFieldEditFormController getAlphaNumeriqueFieldEditFormController() {
+        return alphaNumeriqueFieldEditFormController;
+    }
+    
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        boolean proceed = super.beforeSave(event);
+        
+        AlphaNumeriqueField currentAlpha = getCurrentObject().getAlphaNumeriqueField();
+        
+        if (!toBeTruncated.containsKey(currentAlpha.getCodeColonne())) {
+                
+                toBeTruncated.put(currentAlpha.getCodeColonne(), currentAlpha);
+                
+            } else {
+
+                proceed = false;
+                
+                Node source = (Node) event.getSource();
+
+                Stage parentStage = (Stage) source.getScene().getWindow();
+
+                NotificationDialog notificationDialog = new NotificationDialog("La colonne "+currentAlpha.getCodeColonne()+" a déjà été ajouté à la liste "
+                        , NotificationType.ERROR, parentStage);
+
+                notificationDialog.showNotification();
+
+            }
+
+        return proceed;
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return alphaNumeriqueFieldEditFormController;
+    }
+
+    public void setAlphaNumeriqueFieldEditFormController(MetaAlphaNumeriqueFieldEditFormController alphaNumeriqueFieldEditFormController) {
+        this.alphaNumeriqueFieldEditFormController = alphaNumeriqueFieldEditFormController;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java
new file mode 100644
index 0000000..581bc44
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java
@@ -0,0 +1,325 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.forms.ModeleJsonEditFormController;
+import com.megatim.fdxconvert.forms.StructureChampJsonEditFormController;
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import com.megatim.fdxconvert.service.SubObjectService;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+import javafx.event.ActionEvent;
+import javafx.event.Event;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonEditDialogController extends AbstractEditDialogController<ModeleJson> {
+
+    private ModeleJsonEditFormController modeleJsonEditFormController;
+
+    private StructureChampJsonEditDialogController structureChampJsonEditDialogController;
+
+    private List<StructureChampJson> structJsonToBeDeleted = new ArrayList<>();
+    private final List<SubObject> subObjectToBeDeleted = new ArrayList<>();
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        modeleJsonEditFormController = new ModeleJsonEditFormController();
+
+        structureChampJsonEditDialogController = new StructureChampJsonEditDialogController();
+        structureChampJsonEditDialogController.setStructureChampJsonEditFormController(new StructureChampJsonEditFormController());
+        structureChampJsonEditDialogController.setModeleJsonEditFormController(modeleJsonEditFormController);
+
+        structureChampJsonEditDialogController.setSubObjectsList(modeleJsonEditFormController.getSubObjectListe());
+
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        return "Structure d'un fichier JSON";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(
+                modeleJsonEditFormController.getClass().getResource("ModeleJsonEditForm.fxml"),
+                modeleJsonEditFormController
+        );
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return modeleJsonEditFormController;
+    }
+
+    @Override
+    public ModeleJson refreshObjectToUpdate(ModeleJson objectToUpdate) {
+        ModeleJson modeleJson = new ModeleJson();
+
+        modeleJson.setId(objectToUpdate.getId());
+        modeleJson.setObjectName(objectToUpdate.getObjectName());
+        modeleJson.setTypeFichier(objectToUpdate.getTypeFichier());
+        modeleJson.getListeStructureJson().addAll(objectToUpdate.getListeStructureJson());
+        modeleJson.setDateCreation(objectToUpdate.getDateCreation());
+        modeleJson.getSubObjects().addAll(objectToUpdate.getSubObjects());
+
+        if (objectToUpdate.getSubObjects() != null) {
+            modeleJson.getSubObjects().addAll(objectToUpdate.getSubObjects());
+        }
+
+        return modeleJson;
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(ModeleJson bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof ModeleJsonEditFormController) {
+            ModeleJsonEditFormController controller = (ModeleJsonEditFormController) formController;
+
+            controller.getSubTypeDeleteButton().setOnAction(event -> {
+                removeSubObjectFromList(controller, event);
+            });
+
+            if (typeOperation.equals(TypeOperation.UPDATE) || typeOperation.equals(TypeOperation.VIEW)) {
+                controller.getSubObjectListe().addAll(bindObject.getSubObjects());
+            }
+
+            if (typeOperation.equals(TypeOperation.VIEW)) {
+
+                controller.getSubTypeAddButton().setDisable(true);
+                controller.getSubTypeUpdateButton().setDisable(true);
+                controller.getObjectNameTextField().setDisable(true);
+            }
+
+            if (typeOperation.equals(TypeOperation.ADD) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+                controller.getSubTypeDeleteButton().disableProperty().bind(controller.getSubObjetsTableView().getSelectionModel().selectedItemProperty().isNull());
+                controller.getSubTypeUpdateButton().disableProperty().bind(controller.getSubObjetsTableView().getSelectionModel().selectedItemProperty().isNull());
+            }
+
+        }
+
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(ModeleJson bindObject, Object formController, TypeOperation typeOperation) {
+        if (formController instanceof ModeleJsonEditFormController) {
+
+            ModeleJsonEditFormController controller = (ModeleJsonEditFormController) formController;
+
+            controller.getStructureChampAbstractTable().setController(structureChampJsonEditDialogController);
+
+            switch (typeOperation) {
+
+                case ADD:
+                    controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+                        if (newValue != null) {
+                            structureChampJsonEditDialogController.setTypeFichier(newValue);
+                        }
+
+                    });
+
+                    break;
+
+                case UPDATE:
+
+                    structureChampJsonEditDialogController.setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement());
+
+                    break;
+
+            }
+        }
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        boolean proceed = super.beforeSave(event);
+        ModeleJson modeleJson = getCurrentObject();
+        StringBuilder message = new StringBuilder();
+
+        if (modeleJson.getListeStructureJson().isEmpty()) {
+
+            message.append("Bien vouloir remplir la structure des champs\n");
+            proceed = false;
+
+        }
+
+        if (modeleJson.getTypeFichier() == null) {
+
+            message.append("Le type du fichier est obligatoire\n");
+            proceed = false;
+        }
+
+        if (modeleJson.getObjectName() == null || modeleJson.getObjectName().isEmpty()) {
+
+            message.append("Le nom de l'objet à définir est obligatoire");
+            proceed = false;
+
+        } else {
+            getCurrentObject().setObjectName(getCurrentObject().getObjectName().trim());
+            StringBuilder subMessage = Utilities.validateName(getCurrentObject().getObjectName(), "Le nom de l'objet ");
+
+            if (subMessage.length() != 0) {
+
+                message.append(subMessage);
+                proceed = false;
+            }
+        }
+
+        if (!proceed) {
+
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+            NotificationDialog notificationDialog = new NotificationDialog(message.toString(), NotificationType.ERROR, parentStage);
+            notificationDialog.showNotification();
+        } else {
+
+            getCurrentObject().setSubObjects(new HashSet<>(modeleJsonEditFormController.getSubObjectListe()));
+
+            getCurrentObject().getSubObjects().forEach(s -> {
+
+                s.setModeleJson(getCurrentObject());
+
+                s.getListeStructureJson().forEach(ss -> {
+                    ss.setFieldOfSubObject(s);
+                });
+            });
+
+        }
+
+        try {
+            List<SubObject> liste = new ArrayList<>();
+            liste.addAll(subObjectToBeDeleted);
+
+            for (SubObject s : liste) {
+                SubObjectService.getInstance().delete(s);
+                subObjectToBeDeleted.remove(s);
+            }
+        } catch (Exception ex) {
+            proceed = false;
+
+            AlertMessageUtil.showAlertException(ex, "Une exception s'est produite pendant la supprression", "Erreur");
+
+        }
+        return proceed;
+    }
+
+    public StructureChampJsonEditDialogController getStructureChampJsonEditDialogController() {
+        return structureChampJsonEditDialogController;
+    }
+
+    private void removeSubObjectFromList(ModeleJsonEditFormController controller, Event event) {
+        Object selectedItem = controller.getSubObjetsTableView().getSelectionModel().getSelectedItem();
+
+        if (selectedItem != null) {
+            SubObject subObject = (SubObject) selectedItem;
+
+            if (!findIfSubObjectIsUsed(subObject, controller)) {
+
+                controller.getSubObjectListe().remove(subObject);
+
+                if (subObject.getId() != null && subObject.getId() != 0L && subObject.getId() != 0) {
+                    subObjectToBeDeleted.add(subObject);
+                }
+
+            } else {
+                Node source = (Node) event.getSource();
+                Stage parentStage = (Stage) source.getScene().getWindow();
+                NotificationDialog notificationDialog = new NotificationDialog("Echec Suppression : L'objet à supprimer est utilisé dans la déjfinition d'un objet ou d'un champ", NotificationType.ERROR, parentStage);
+                notificationDialog.showNotification();
+            }
+
+        }
+    }
+
+    private boolean findIfSubObjectIsUsed(final SubObject subObject, ModeleJsonEditFormController controller) {
+
+        boolean found;
+
+        //Retirer le subObject concerné de la liste de recherche 
+        List<SubObject> subObjectsListe = controller.getSubObjectListe().stream()
+                .filter(p -> {
+
+                    if (subObject.getId() == null || subObject.getId() == 0 || subObject.getId() == 0L) {
+                        return !p.getDateCreation().equals(subObject.getDateCreation());
+                    } else {
+                        return !p.getId().equals(subObject.getId());
+                    }
+
+                }).collect(Collectors.toList());
+        List<SubObject> subObjectUsingSubObject = new ArrayList<>();
+
+        //Vérifier un sous-objet utilise le sous-objet à supprimer
+        subObjectsListe.forEach(s -> {
+            List<StructureChampJson> structUsingSubObject = s.getListeStructureJson().stream().filter(p -> p.getTypeDonnee().equals(TypeDonnee.OBJET) && p.getTypeOfSubObject().getId().equals(subObject.getId()))
+                    .collect(Collectors.toList());
+
+            if (!structUsingSubObject.isEmpty()) {
+                subObjectUsingSubObject.add(s);
+            }
+        });
+
+        //Si aucun sous-objet n'utilise le sous-objet à supprimer
+        if (subObjectUsingSubObject.isEmpty()) {
+
+            List<StructureChampJson> structList = controller.getStructureChampAbstractTable().getElementObservableList()
+                    .stream().filter(p -> p.getTypeDonnee().equals(TypeDonnee.OBJET))
+                    .collect(Collectors.toList());
+
+            if (!structList.isEmpty()) {
+
+                List<StructureChampJson> structUsingSubObject = structList.stream()
+                        .filter(p -> {
+
+                            if (p.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+                                
+                                if (subObject.getId() == null || subObject.getId() == 0 || subObject.getId() == 0L) {
+                                    return !p.getDateCreation().equals(subObject.getDateCreation());
+                                    
+                                } else {
+                                    return !p.getId().equals(subObject.getId());
+                                }
+                            } else {
+                                return false;
+                            }
+
+                        }
+                        )
+                        .collect(Collectors.toList());
+
+                found = !structUsingSubObject.isEmpty();
+
+            } else {
+                found = false;
+            }
+        } else {
+            found = false;
+        }
+        return found;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonListeDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonListeDialogController.java
new file mode 100644
index 0000000..565631d
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonListeDialogController.java
@@ -0,0 +1,60 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.controller.table.ModeleJsonTable;
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.service.ModeleJsonService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonListeDialogController extends AbstractMainDialogController<ModeleJson, ModeleJson> {
+
+    private ModeleJsonEditDialogController modeleJsonEditDialogController;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        modeleJsonEditDialogController = new ModeleJsonEditDialogController();
+        super.initialize(location, resources);
+    }
+
+    @Override
+    public GenericCrudService<ModeleJson> getGenericCrudService() {
+        return ModeleJsonService.getInstance();
+    }
+
+    @Override
+    public String getTitle() {
+        return "Liste des structures JSON";
+    }
+
+    @Override
+    public AbstractEditDialogController<ModeleJson> getAbstractEditDialogController() {
+        return modeleJsonEditDialogController;
+    }
+
+    @Override
+    public Class<ModeleJson> getElementClazz() {
+        return ModeleJson.class;
+    }
+
+    @Override
+    public List<TableColumn> getElementTableColumns() {
+        return Arrays.asList(
+                ModeleJsonTable.objectNameColumn()
+        );
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/StructureChampJsonEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/StructureChampJsonEditDialogController.java
new file mode 100644
index 0000000..2c38c63
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/StructureChampJsonEditDialogController.java
@@ -0,0 +1,244 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.forms.ModeleJsonEditFormController;
+import com.megatim.fdxconvert.forms.StructureChampJsonEditFormController;
+import com.megatim.fdxconvert.forms.SubObjectEditFormController;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.IOException;
+import java.net.URL;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author ASUS
+ */
+public class StructureChampJsonEditDialogController extends AbstractEditDialogController<StructureChampJson> {
+
+    private StructureChampJsonEditFormController structureChampJsonEditFormController;
+
+    private SubObjectEditFormController subObjectEditFormController;
+
+    private ObservableList<SubObject> subObjectsList;
+
+    private ModeleJsonEditFormController modeleJsonEditFormController;
+
+    private TypeFichier typeFichier;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+
+        if (subObjectEditFormController != null) {
+            structureChampJsonEditFormController = new StructureChampJsonEditFormController();
+        }
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        return "Edition d'un champ du fichier JSON";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(
+                structureChampJsonEditFormController.getClass().getResource("StructureChampJsonEditForm.fxml"),
+                structureChampJsonEditFormController
+        );
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return structureChampJsonEditFormController;
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(StructureChampJson bindObject, Object formController, TypeOperation typeOperation) {
+        structureChampJsonEditFormController.getTypeObjetComboBox().setItems(subObjectsList);
+    }
+
+    public void setStructureChampJsonEditFormController(StructureChampJsonEditFormController structureChampJsonEditFormController) {
+        this.structureChampJsonEditFormController = structureChampJsonEditFormController;
+    }
+
+    public void setTypeFichier(TypeFichier typeFichier) {
+        this.typeFichier = typeFichier;
+    }
+
+    @Override
+    public StructureChampJson refreshObjectToUpdate(StructureChampJson objectToUpdate) {
+        StructureChampJson struct = new StructureChampJson();
+
+        struct.setDelimiteurDate(objectToUpdate.getDelimiteurDate());
+        struct.setFormatDate(objectToUpdate.getFormatDate());
+        struct.setLibelle(objectToUpdate.getLibelle());
+        struct.setListe(objectToUpdate.isListe());
+        struct.setTypeOfSubObject(objectToUpdate.getTypeOfSubObject());
+        struct.setFieldOfSubObject(objectToUpdate.getFieldOfSubObject());
+        struct.setTypeDonnee(objectToUpdate.getTypeDonnee());
+        struct.setDateCreation(objectToUpdate.getDateCreation());
+        struct.setId(objectToUpdate.getId());
+        struct.setModeleJson(objectToUpdate.getModeleJson());
+
+        return struct;
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(StructureChampJson bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof StructureChampJsonEditFormController) {
+
+            if (typeOperation.equals(TypeOperation.UPDATE) || typeOperation.equals(TypeOperation.VIEW)) {
+
+                if (bindObject.getTypeDonnee().equals(TypeDonnee.DATE) && bindObject.getCodeDelimiteurDate() != null && !bindObject.getCodeDelimiteurDate().isEmpty()) {
+                    bindObject.setDelimiteurDate(App.SEPARATEURS_DATE.get(bindObject.getCodeDelimiteurDate()));
+                }
+            }
+        }
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        boolean proceed = super.beforeSave(event);
+        StringBuilder message = new StringBuilder("");
+
+        StructureChampJson currentObject = getCurrentObject();
+
+        if (currentObject != null) {
+
+            if (currentObject.getLibelle() == null || currentObject.getLibelle().isEmpty()) {
+
+                message.append("Le Libellé est obligatoire\n");
+                proceed = false;
+
+            } else {
+                getCurrentObject().setLibelle(getCurrentObject().getLibelle().trim());
+                StringBuilder subMessage = Utilities.validateName(getCurrentObject().getLibelle(), "Le libellé du champ");
+
+                if (subMessage.length() != 0) {
+
+                    message.append(subMessage);
+                    proceed = false;
+                }
+            }
+
+            if (currentObject.getTypeDonnee() == null) {
+
+                message.append("Le type de données est obligatoire\n");
+                proceed = false;
+
+            } else if (currentObject.getTypeDonnee().equals(TypeDonnee.DATE)) {
+
+                if (currentObject.getFormatDate() == null) {
+
+                    message.append("Le format de la date est obligatoire\n");
+                    proceed = false;
+                }
+                if (currentObject.getDelimiteurDate() == null) {
+
+                    message.append("Le séparateur de date est obligatoire\n");
+                    proceed = false;
+
+                } else {
+                    getCurrentObject().setCodeDelimiteurDate(getCurrentObject().getDelimiteurDate().getCode());
+                }
+            } else if (currentObject.getTypeDonnee().equals(TypeDonnee.OBJET) && currentObject.getTypeOfSubObject() == null) {
+
+                message.append("Le type de l'objet est obligatoire\n");
+                proceed = false;
+            }
+
+            if (!currentObject.getTypeDonnee().equals(TypeDonnee.DATE)) {
+                
+                getCurrentObject().setCodeDelimiteurDate(null);
+                getCurrentObject().setFormatDate(null);
+            }
+            
+            if(!currentObject.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+                getCurrentObject().setTypeOfSubObject(null);
+            }
+            String subMessage = "";
+
+            if (subObjectEditFormController != null) {
+                subMessage = verifyIfCodeIsAlreadUsed(subObjectEditFormController.getSubStructureJsonListe());
+
+            } else {
+                subMessage = verifyIfCodeIsAlreadUsed(modeleJsonEditFormController.getStructureChampAbstractTable().getElementObservableList());
+            }
+
+            if (!subMessage.isEmpty()) {
+
+                message.append(subMessage);
+                proceed = false;
+            }
+        }
+
+        if (!proceed) {
+
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+            NotificationDialog notificationDialog = new NotificationDialog(message.toString(), NotificationType.ERROR, parentStage);
+            notificationDialog.showNotification();
+
+        }
+
+        return proceed;
+    }
+
+    public void setSubObjectsList(ObservableList<SubObject> subObjectsList) {
+        this.subObjectsList = subObjectsList;
+    }
+
+    public void setSubObjectEditFormController(SubObjectEditFormController subObjectEditFormController) {
+        this.subObjectEditFormController = subObjectEditFormController;
+    }
+
+    public StructureChampJsonEditFormController getStructureChampJsonEditFormController() {
+        return structureChampJsonEditFormController;
+    }
+
+    public void setModeleJsonEditFormController(ModeleJsonEditFormController modeleJsonEditFormController) {
+        this.modeleJsonEditFormController = modeleJsonEditFormController;
+    }
+
+    private String verifyIfCodeIsAlreadUsed(List<StructureChampJson> observableList) {
+        String message = "";
+
+        List<StructureChampJson> foundListe = observableList.stream().filter(p
+                -> {
+            boolean testLibelle = p.getLibelle().equalsIgnoreCase(getCurrentObject().getLibelle());
+
+            return (testLibelle && getTypeOperation().equals(TypeOperation.ADD))
+                    || (getTypeOperation().equals(TypeOperation.UPDATE) && testLibelle && !p.equals(getCurrentObject()));
+
+        }
+        ).collect(Collectors.toList());
+
+        if (!foundListe.isEmpty()) {
+            message = "Le libellé \"" + getCurrentObject().getLibelle() + "\"" + " est déjà utilisé par un autre champ \n";
+        }
+
+        return message;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/SubObjectEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/SubObjectEditDialogController.java
new file mode 100644
index 0000000..96bd091
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/SubObjectEditDialogController.java
@@ -0,0 +1,240 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.forms.ModeleJsonEditFormController;
+import com.megatim.fdxconvert.forms.SubObjectEditFormController;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import com.megatim.fdxconvert.service.StructureChampJsonService;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SubObjectEditDialogController extends AbstractEditDialogController<SubObject> {
+
+    private SubObjectEditFormController subObjectEditFormController;
+    private ModeleJsonEditFormController modeleJsonEditFormController;
+
+    private List<StructureChampJson> structJsonToBeDeleted = new ArrayList<>();
+    private ObservableList<SubObject> subObjectsList;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+
+        subObjectEditFormController = new SubObjectEditFormController();
+        subObjectEditFormController.setCurrentSubObjectsListe(subObjectsList);
+
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        return "Edition d'un sous-type";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(
+                subObjectEditFormController.getClass().getResource("SubObjectEditForm.fxml"),
+                subObjectEditFormController
+        );
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return subObjectEditFormController;
+    }
+
+    public void setSubObjectEditFormController(SubObjectEditFormController subObjectEditFormController) {
+        this.subObjectEditFormController = subObjectEditFormController;
+    }
+
+    public void setModeleJsonEditFormController(ModeleJsonEditFormController modeleJsonEditFormController) {
+        this.modeleJsonEditFormController = modeleJsonEditFormController;
+    }
+
+    public void setSubObjectsList(ObservableList<SubObject> subObjectsList) {
+        this.subObjectsList = subObjectsList;
+    }
+
+    @Override
+    public SubObject refreshObjectToUpdate(SubObject objectToUpdate) {
+        SubObject subObject = new SubObject();
+
+        subObject.setId(objectToUpdate.getId());
+        subObject.getListeStructureJson().addAll(objectToUpdate.getListeStructureJson());
+        subObject.setModeleJson(objectToUpdate.getModeleJson());
+        subObject.setSubObjectName(objectToUpdate.getSubObjectName());
+        subObject.setDateCreation(objectToUpdate.getDateCreation());
+
+        return subObject;
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+        SubObject subObject = getCurrentObject();
+        subObject.setListeStructureJson(new HashSet<>(subObjectEditFormController.getSubStructureJsonListe()));
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(SubObject bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof SubObjectEditFormController) {
+
+            SubObjectEditFormController controller = (SubObjectEditFormController) formController;
+
+            controller.getDeleteFieldButton().setOnMouseClicked(event -> {
+                removeStructureJsonFromList(controller);
+            });
+
+            if (typeOperation.equals(TypeOperation.UPDATE) || typeOperation.equals(TypeOperation.VIEW)) {
+
+                //Filtrer afin de ne garder que les champs des sous-objets
+                controller.getSubStructureJsonListe().addAll(bindObject.getListeStructureJson()
+                        .stream().filter(p -> p.getModeleJson() == null)
+                        .collect(Collectors.toList()));
+
+                controller.getSubStructureJsonListe().forEach(s -> {
+
+                    if (s.getTypeDonnee().equals(TypeDonnee.DATE) && s.getCodeDelimiteurDate() != null) {
+                        s.setDelimiteurDate(App.SEPARATEURS_DATE.get(s.getCodeDelimiteurDate()));
+                    }
+                });
+            }
+
+            if (typeOperation.equals(TypeOperation.VIEW)) {
+                controller.getSubObjectNameTextField().setDisable(true);
+                controller.getAddFieldButton().setDisable(true);
+            }
+
+            if (typeOperation.equals(TypeOperation.UPDATE) || typeOperation.equals(TypeOperation.ADD)) {
+                controller.getDeleteFieldButton().disableProperty().bind(controller.getSubObjectsFieldsTableView().getSelectionModel().selectedItemProperty().isNull());
+                controller.getUpdateFieldButton().disableProperty().bind(controller.getSubObjectsFieldsTableView().getSelectionModel().selectedItemProperty().isNull());
+
+            }
+        }
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        boolean proceed = super.beforeSave(event);
+        StringBuilder message = new StringBuilder();
+
+        if (getCurrentObject().getSubObjectName() == null || getCurrentObject().getSubObjectName().isEmpty()) {
+
+            message.append("Bien vouloir renseigner le nom de l'objet\n");
+            proceed = false;
+
+        } else {
+            getCurrentObject().setSubObjectName(getCurrentObject().getSubObjectName().trim());
+            StringBuilder subMessage = Utilities.validateName(getCurrentObject().getSubObjectName(), "Le nom de l'objet ");
+
+            if (subMessage.length() != 0) {
+
+                message.append(subMessage);
+                proceed = false;
+            }
+        }
+
+        if (subObjectEditFormController.getSubStructureJsonListe().isEmpty()) {
+
+            message.append("Bien vouloir renseigner la structure des champs de l'objet");
+            proceed = false;
+
+        }
+
+        String subMessage = "";
+
+        if (modeleJsonEditFormController != null) {
+            subMessage = verifyIfSubObjectAlreadyExist(modeleJsonEditFormController.getSubObjectListe());
+        }
+
+        if (!subMessage.isEmpty()) {
+
+            message.append(subMessage);
+            proceed = false;
+        }
+
+        if (!proceed) {
+
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+            NotificationDialog notificationDialog = new NotificationDialog(message.toString(), NotificationType.ERROR, parentStage);
+            notificationDialog.showNotification();
+        }
+
+        try {
+            List<StructureChampJson> liste = new ArrayList<>();
+            liste.addAll(structJsonToBeDeleted);
+
+            for (StructureChampJson s : liste) {
+                StructureChampJsonService.getInstance().delete(s);
+                structJsonToBeDeleted.remove(s);
+            }
+        } catch (Exception ex) {
+            proceed = false;
+
+            AlertMessageUtil.showAlertException(ex, "Une exception s'est produite pendant la supprression", "Erreur");
+
+        }
+        return proceed;
+    }
+
+    private String verifyIfSubObjectAlreadyExist(List<SubObject> observableList) {
+        String message = "";
+
+        List<SubObject> foundListe = observableList.stream().filter(p
+                -> {
+            boolean testLibelle = p.getSubObjectName().equalsIgnoreCase(getCurrentObject().getSubObjectName());
+
+            return (testLibelle && getTypeOperation().equals(TypeOperation.ADD))
+                    || (getTypeOperation().equals(TypeOperation.UPDATE) && testLibelle && !p.equals(getCurrentObject()));
+
+        }
+        ).collect(Collectors.toList());
+
+        if (!foundListe.isEmpty()) {
+            message = "Le libellé \"" + getCurrentObject().getSubObjectName() + "\"" + " est déjà utilisé par un autre objet \n";
+        }
+
+        return message;
+    }
+
+    private void removeStructureJsonFromList(SubObjectEditFormController controller) {
+        Object selectedItem = controller.getSubObjectsFieldsTableView().getSelectionModel().getSelectedItem();
+
+        if (selectedItem != null) {
+            StructureChampJson structureChampJson = (StructureChampJson) controller.getSubObjectsFieldsTableView().getSelectionModel().getSelectedItem();
+            controller.getSubStructureJsonListe().remove(structureChampJson);
+
+            if (structureChampJson.getId() != null && structureChampJson.getId() != 0L && structureChampJson.getId() != 0) {
+                structJsonToBeDeleted.add(structureChampJson);
+            }
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheEditDialogController.java
new file mode 100644
index 0000000..9cf1299
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheEditDialogController.java
@@ -0,0 +1,360 @@
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.common.dialogs.NotificationDialog;
+import com.megatimfx.common.dialogs.NotificationType;
+import com.megatimfx.common.enums.ConfirmationType;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.forms.MetaAlphaNumeriqueFieldEditFormController;
+import com.megatim.fdxconvert.forms.TacheEditFormController;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService;
+import com.megatim.fdxconvert.service.TacheJobService;
+import com.megatim.fdxconvert.service.TacheService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Node;
+import javafx.scene.Parent;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class TacheEditDialogController extends AbstractEditDialogController<Tache> {
+
+    private TacheEditFormController tacheEditFormController;
+    private MetaAlphaNumeriqueFieldEditDialogController metaAlphaNumeriqueFieldEditDialogController;
+    private Map<String, AlphaNumeriqueField> newAlphaFields = new HashMap<>();
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        tacheEditFormController = new TacheEditFormController();
+        metaAlphaNumeriqueFieldEditDialogController = new MetaAlphaNumeriqueFieldEditDialogController();
+
+        metaAlphaNumeriqueFieldEditDialogController.setAlphaNumeriqueFieldEditFormController(new MetaAlphaNumeriqueFieldEditFormController());
+
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getTitle() {
+        return "Editer une tâche";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        FXMLLoader loader = new FXMLLoader(TacheEditFormController.class.getResource("TacheEditForm.fxml"));
+        loader.setControllerFactory(param -> tacheEditFormController);
+        Parent parent = loader.load();
+        return (Pane) parent;
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return tacheEditFormController;
+    }
+
+    @Override
+    protected void afterBindCurrentObjectWithFormField(Tache bindObject, Object formController, TypeOperation typeOperation) {
+
+        TacheEditFormController controller = (TacheEditFormController) formController;
+
+        controller.getMetaAlphaNumeriqueFieldAbstractTable().setController(metaAlphaNumeriqueFieldEditDialogController);
+    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(Tache bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof TacheEditFormController) {
+
+            TacheEditFormController controller = (TacheEditFormController) formController;
+
+            controller.getMetaAlphaNumeriqueFieldAbstractTable().setController(metaAlphaNumeriqueFieldEditDialogController);
+
+            //metaAlphaNumeriqueFieldEditDialogController.setSelectedMetaAlphaNumeriqueFields(controller.getMetaAlphaNumeriqueFieldAbstractTable().getElementObservableList());
+            switch (typeOperation) {
+
+                case ADD:
+
+                    controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+                        if (newValue != null) {
+                            metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController().setTypeFichier(newValue);
+                            controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(false);
+                        }
+
+                    });
+
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().selectedProperty().addListener(listener -> {
+
+                        if (controller.getSaisieAlphaNumeriqueFieldChecBox().isSelected()) {
+                            controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false);
+                        }
+                    });
+                    break;
+
+                case UPDATE:
+
+                    metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController()
+                            .setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement());
+
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true);
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+
+                    break;
+
+                default:
+
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true);
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+
+                    break;
+            }
+        }
+    }
+
+    @Override
+    protected void beforeBindFormFieldWithCurrentObject(Tache bindObject, Object formController, TypeOperation typeOperation) {
+        if (formController instanceof TacheEditFormController) {
+
+            TacheEditFormController controller = (TacheEditFormController) formController;
+            if (typeOperation.equals(TypeOperation.VIEW) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+                if (bindObject.getColDeliminter() != null) {
+                    bindObject.setDelimiteurColonne(App.DELIMITEURS_COLONNE.get(bindObject.getColDeliminter()));
+                }
+
+                if (bindObject.getRowDeliminter() != null) {
+                    bindObject.setDelimiteurLigne(App.DELIMITEURS_LIGNE.get(bindObject.getRowDeliminter()));
+                }
+
+            }
+
+            if (typeOperation.equals(TypeOperation.ADD) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+                controller.getDelimiteurColonne().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+
+                controller.getDelimiteurLigne().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+
+                controller.getStrictValidationCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.XLS))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.XLSX))
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+
+                controller.getWithHeader().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
+                        .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+                );
+                
+                controller.getUseExistingConversionModelCheckBox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON));
+                controller.getWithHeader().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON));
+
+                if (controller.getDataTypeComboBox().getSelectionModel().getSelectedItem() != null
+                        && controller.getDataTypeComboBox().getSelectionModel().getSelectedItem().equals(DataType.JSON)) {
+                    controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true);
+                }
+
+            }
+
+            switch (typeOperation) {
+
+                case ADD:
+                    controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(true);
+                    break;
+
+                case UPDATE:
+                    controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false);
+                    break;
+
+                default:
+
+            }
+        }
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+
+        getCurrentObject().getMetaAlphaNumeriqueFields().forEach(m -> {
+
+            if (m.getTache() == null) {
+                m.setTache(getCurrentObject());
+            }
+            newAlphaFields.put(m.getAlphaNumeriqueField().getCodeColonne(), m.getAlphaNumeriqueField());
+        });
+
+        boolean proceed = super.beforeSave(event);
+        StringBuilder message = new StringBuilder();
+
+        if (proceed) {
+
+            TacheService tacheService = TacheService.getInstance();
+
+            //Tester l'unicité du type de fichier par tâche
+            Tache tache = tacheService.findByTypefichier(getCurrentObject().getTypeFichier());
+
+            proceed = (getTypeOperation().equals(TypeOperation.ADD) && tache == null)
+                    || (getTypeOperation().equals(TypeOperation.UPDATE) && (tache == null || tache.getLibelle().equals(getCurrentObject().getLibelle())));
+
+            if (proceed) {
+
+                //Tester l'unicité du type du répertoire source
+                tache = tacheService.findByRepertoireSource(getCurrentObject().getRepertoireSource());
+
+                proceed = (getTypeOperation().equals(TypeOperation.ADD) && tache == null)
+                        || (getTypeOperation().equals(TypeOperation.UPDATE) && (tache == null || tache.getLibelle().equals(getCurrentObject().getLibelle())));
+
+                if (proceed) {
+
+                    //Tester l'unicité du type du répertoire d'erreur
+                    tache = tacheService.findByRepertoireErreur(getCurrentObject().getRepertoireErreur());
+
+                    proceed = (getTypeOperation().equals(TypeOperation.ADD) && tache == null)
+                            || (getTypeOperation().equals(TypeOperation.UPDATE) && (tache == null || tache.getLibelle().equals(getCurrentObject().getLibelle())));
+
+                    if (proceed) {
+
+                        //Verifier que les repertoires source et d'erreur sont différents
+                        proceed = !getCurrentObject().getRepertoireErreur().equals(getCurrentObject().getRepertoireSource());
+
+                        if (!proceed) {
+
+                            message.append("Les répertoires source et d'erreur ne doivent pas être identiques\n");
+                        } else {
+                            //Tester l'unicité du type du répertoire de destination
+                            tache = tacheService.findByRepertoireDestination(getCurrentObject().getRepertoireDestination());
+
+                            proceed = (getTypeOperation().equals(TypeOperation.ADD) && tache == null)
+                                    || (getTypeOperation().equals(TypeOperation.UPDATE) && (tache == null || tache.getLibelle().equals(getCurrentObject().getLibelle())));
+
+                            if (proceed) {
+
+                                //Verifier que les repertoires source et destination sont différents
+                                boolean proceed1 = !getCurrentObject().getRepertoireDestination().equals(getCurrentObject().getRepertoireSource());
+
+                                //Verifier que les repertoires destination et d'erreur sont différents
+                                boolean proceed2 = !getCurrentObject().getRepertoireDestination().equals(getCurrentObject().getRepertoireErreur());
+                                proceed = proceed1 && proceed2;
+
+                                if (!proceed1) {
+                                    message.append("Les répertoires source et destination ne doivent pas être identiques\n");
+                                }
+                                if (!proceed2) {
+                                    message.append("Les répertoires d'erreur et destination ne doivent pas être identiques");
+                                }
+
+                            } else { //Alert problème de répertoire de destination
+                                message.append("Le répertoire de destination est déjà utilisé\n");
+                            }
+                        }
+                    } else {//Alert problème de répertoire d'erreur
+                        message.append("Le répertoire d'erreur est déjà utilisé\n");
+                    }
+
+                } else { //Alert problème de répertoire source
+                    message.append("Le repertoire source est déjà utilisé\n");
+                }
+
+            } else { //Alert problème de type fichier
+
+                message.append("Le type de fichier est déjà utilisé\n");
+            }
+
+        }
+
+        Delimiteur delimiteurColonne = getCurrentObject().getDelimiteurColonne();
+        Delimiteur delimiteurLigne = getCurrentObject().getDelimiteurLigne();
+
+        if (delimiteurColonne != null) {
+            getCurrentObject().setColDeliminter(delimiteurColonne.getCode());
+        }
+
+        if (delimiteurLigne != null) {
+            getCurrentObject().setRowDeliminter(delimiteurLigne.getCode());
+        }
+
+        boolean proceedIntervalleTache = getCurrentObject().isWithoutInterval() ? getCurrentObject().isWithoutInterval() : getCurrentObject().getIntervalleTache() > 0;
+        proceed = proceed && proceedIntervalleTache;
+
+        if (!proceedIntervalleTache) {
+            message.append("L'intervalle de répétition doit être supérieure à 0");
+        }
+
+        if (!proceed && !message.toString().isEmpty()) {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+            NotificationDialog notificationDialog = new NotificationDialog(
+                    message.toString(),
+                    NotificationType.ERROR,
+                    parentStage
+            );
+            notificationDialog.showNotification();
+        }
+        return proceed;
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+
+        try {
+            Tache currentObject = getCurrentObject();
+            Set<MetaAlphaNumeriqueField> newSetMeta = currentObject.getMetaAlphaNumeriqueFields();
+
+            newSetMeta.forEach(m -> {
+                if (!newAlphaFields.containsKey(m.getAlphaNumeriqueField().getCodeColonne())) {
+                    try {
+                        MetaAlphaNumeriqueFieldService.getInstance().delete(m);
+                    } catch (Exception ex) {
+                        Logger.getLogger(TacheEditDialogController.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+                }
+            });
+
+        } catch (Exception ex) {
+            Logger.getLogger(TacheEditDialogController.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+        Thread th = new Thread(() -> {
+            TacheJobService.getInstance().restartJob();
+        });
+
+        th.setDaemon(true);
+        th.start();
+
+    }
+
+    @Override
+    public String getConfirmationMessage() {
+        return "La tâche a été enregistrée avec succès";
+    }
+
+    @Override
+    protected ConfirmationType getConfirmationType() {
+        return ConfirmationType.CONFIRMATION;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheListeDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheListeDialogController.java
new file mode 100644
index 0000000..5a8a392
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TacheListeDialogController.java
@@ -0,0 +1,89 @@
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.controller.search.TacheSearchFormController;
+import com.megatim.fdxconvert.controller.table.TacheTable;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.service.TacheService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class TacheListeDialogController extends AbstractMainDialogController<Tache, Tache> {
+
+    private TacheEditDialogController tacheEditDialogController;
+    private TacheSearchFormController tacheSearchFormController;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        tacheEditDialogController = new TacheEditDialogController();
+        tacheSearchFormController = new TacheSearchFormController();
+        
+        super.initialize(location, resources);
+    }
+
+    @Override
+    public GenericCrudService<Tache> getGenericCrudService() {
+        return TacheService.getInstance();
+    }
+
+    @Override
+    public String getTitle() {
+        return "Liste des tâches planifiées";
+    }
+
+    @Override
+    public List<TableColumn> getElementTableColumns() {
+        return Arrays.asList(
+                TacheTable.libelleColumn(),
+                TacheTable.typeFichierColumn(),
+                TacheTable.dateCreationColumn(),
+                TacheTable.dateMiseAJourColumn()
+        );
+    }
+
+    @Override
+    public AbstractEditDialogController<Tache> getAbstractEditDialogController() {
+        return tacheEditDialogController;
+    }
+
+    @Override
+    public Class<Tache> getElementClazz() {
+        return Tache.class;
+    }
+
+    @Override
+    public Tache getUpdatedEntity(Tache sourceEntity) {
+        return TacheService.getInstance().findByTacheId(sourceEntity.getLibelle());
+    }
+
+    @Override
+    public List<SearchCriteria> getPermanentSearchCriterias() {
+        List<SearchCriteria> liste = new ArrayList<>();
+
+        return liste;
+    }
+
+    @Override
+    public Object getSearchFormController() {
+        return tacheSearchFormController;
+    }
+
+    @Override
+    public Pane getSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(tacheSearchFormController.getClass().getResource("TacheSearchForm.fxml"), tacheSearchFormController);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TxtFileToValidateEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TxtFileToValidateEditDialogController.java
new file mode 100644
index 0000000..ca17140
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TxtFileToValidateEditDialogController.java
@@ -0,0 +1,175 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.typefichier.validator.Validator;
+import com.megatim.typefichier.validator.model.ConfigStreamValidator;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.dao.ValidateurDAO;
+import com.megatim.fdxconvert.exceptions.ConfigException;
+import com.megatim.fdxconvert.exceptions.ValidatorException;
+import com.megatim.fdxconvert.forms.TxtFileToValidateEditFormController;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.pojo.TxtFileToValidate;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Optional;
+import java.util.ResourceBundle;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+import org.apache.commons.io.IOUtils;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TxtFileToValidateEditDialogController extends AbstractEditDialogController<TxtFileToValidate> {
+
+    private TxtFileToValidateEditFormController txtFileToValidateEditFormController;
+
+    @Override
+    public String getTitle() {
+        getEditButton().setText("Vérifier");
+        return "Vérification format de fichier Fdx";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(txtFileToValidateEditFormController.getClass().getResource("TxtFileToValidateEditForm.fxml"), txtFileToValidateEditFormController);
+
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return txtFileToValidateEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        txtFileToValidateEditFormController = new TxtFileToValidateEditFormController();
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public void afterSave(ActionEvent event) {
+
+        Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+
+        Task<Boolean> task = new Task<Boolean>() {
+
+            @Override
+            protected Boolean call() throws Exception {
+
+                TxtFileToValidate val = getCurrentObject();
+
+                return validate(val, config);
+
+            }
+        };
+
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+
+        task.setOnSucceeded(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+            Node source = (Node) event.getSource();
+
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            boolean valid = task.getValue();
+
+            if (valid) {
+
+                 NotificationDialog notificationDialog = new NotificationDialog(
+                        "Vérification réussie. Fichier correcte",
+                        NotificationType.SUCCESS,
+                        parentStage
+                );
+
+                notificationDialog.showNotification();
+                
+            } else {
+                 NotificationDialog notificationDialog = new NotificationDialog(
+                        "Echec de la vérification. Le fichier contient des erreurs, veuillez consulter le fichier d'erreur pour en savoir plus",
+                        NotificationType.ERROR,
+                        parentStage
+                );
+
+                notificationDialog.showNotification();
+               
+            }
+
+        });
+
+        task.setOnFailed(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+            Throwable th = task.getException();
+
+            if (th instanceof ConfigException || th instanceof ValidatorException) {
+
+                Node source = (Node) event.getSource();
+
+                Stage parentStage = (Stage) source.getScene().getWindow();
+
+                NotificationDialog notificationDialog = new NotificationDialog(th.getMessage(), NotificationType.WARNING, parentStage);
+
+                notificationDialog.showNotification();
+
+            } else {
+
+                AlertMessageUtil.showAlertException(th, "Une exception s'est produite pendant la validation du fichier", "Erreur");
+
+            }
+
+        });
+
+        new Thread(task).start();
+
+    }
+
+    private boolean validate(TxtFileToValidate val, Configuration config) throws Exception {
+
+        if (config == null) {
+            throw new ConfigException("Validation impossible, les repertoires ne sont pas configurés. Bien vouloir les configurer avant avant d'effectuer cette action");
+        }
+
+        String codeTypeFichier = val.getTypeFichier().getCode();
+
+        Optional<Validateur> validateur = ValidateurDAO.findByCodeTypeFichier(codeTypeFichier);
+
+        if (!validateur.isPresent()) {
+            throw new ValidatorException("Validation impossible. Le type fichier " + codeTypeFichier + " n'a pas de validateur enregistré");
+        }
+
+        File file = new File(val.getTxtFilePath());
+
+        if (!file.exists()) {
+            throw new FileNotFoundException("Le fichier " + file.getAbsolutePath() + " est introuvable");
+        }
+
+        byte[] targetArray = IOUtils.toByteArray(App.class.getClass().getResourceAsStream("/predicatelogic-engine.xml"));
+
+        ConfigStreamValidator configValidator = new ConfigStreamValidator(targetArray, validateur.get().getContent(), config.getErrorDir(), config.getOutputDir(), file,file);
+
+        return new Validator().validate(configValidator, Boolean.FALSE, Boolean.FALSE,Utilities.getNbThreads());
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierEditDialogController.java
new file mode 100644
index 0000000..3c6c6ed
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierEditDialogController.java
@@ -0,0 +1,90 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.forms.TypeFichierEditFormController;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierEditDialogController extends AbstractEditDialogController<TypeFichier> {
+
+    private TypeFichierEditFormController typeFichierEditFormController;
+
+    @Override
+    public String getTitle() {
+        return "Edition d'un type fichier";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(typeFichierEditFormController.getClass().getResource("TypeFichierEditForm.fxml"), typeFichierEditFormController);
+
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return typeFichierEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        typeFichierEditFormController = new TypeFichierEditFormController();
+        super.initialize(url, rb);
+    }
+
+//    @Override
+//    public boolean beforeSave(ActionEvent event) {
+//        boolean proceed = super.beforeSave(event);
+//
+//        if (getCurrentObject().getDataType() == null) {
+//
+//            Node source = (Node) event.getSource();
+//            Stage parentStage = (Stage) source.getScene().getWindow();
+//            NotificationDialog notificationDialog = new NotificationDialog(
+//                    "Le type de données est obligatoire",
+//                    NotificationType.ERROR,
+//                    parentStage
+//            );
+//            notificationDialog.showNotification();
+//
+//            proceed = false;
+//        }
+//        return proceed;
+//    }
+
+    @Override
+    protected void afterBindFormFieldWithCurrentObject(TypeFichier bindObject, Object formController, TypeOperation typeOperation) {
+
+        if (formController instanceof TypeFichierEditFormController) {
+            TypeFichierEditFormController controller = (TypeFichierEditFormController) formController;
+
+            if (typeOperation.equals(TypeOperation.UPDATE)) {
+                controller.getCodeTextField().setDisable(true);
+            }
+        }
+
+    }
+
+    @Override
+    public String getConfirmationMessage() {
+        return "Type Fichier " + getCurrentObject().getCode() + "enregistré avec succès";
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierListDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierListDialogController.java
new file mode 100644
index 0000000..8eb8b3c
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/TypeFichierListDialogController.java
@@ -0,0 +1,97 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatim.fdxconvert.controller.search.TypeFichierAdvancedSearchFormController;
+import com.megatim.fdxconvert.controller.search.TypeFichierSearchFormController;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.scene.control.TableColumn;
+import javafx.scene.layout.Pane;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierListDialogController extends AbstractMainDialogController<TypeFichier,TypeFichier>{
+   
+    private TypeFichierSearchFormController typeFichierSearchFormController;
+    private TypeFichierAdvancedSearchFormController typeFichierAdvancedSearchFormController;
+    
+    @Override
+    public GenericCrudService<TypeFichier> getGenericCrudService() {
+        return TypeFichierService.getInstance();
+    }
+
+    @Override
+    public String getTitle() {
+        return "Liste des type de fichiers";
+    }
+
+    @Override
+    public Class<TypeFichier> getElementClazz() {
+        return TypeFichier.class;
+    }
+
+    @Override
+    public List<TableColumn> getElementTableColumns() {
+        return Arrays.asList(TypeFichierTable.codeColumn(),TypeFichierTable.libelleColumn(),TypeFichierTable.participantColumn());
+    }
+
+    @Override
+    public AbstractEditDialogController<TypeFichier> getAbstractEditDialogController() {
+        return new TypeFichierEditDialogController();
+    }
+
+    @Override
+    public List<SearchCriteria> getPermanentSearchCriterias() {
+        List<SearchCriteria> liste = new ArrayList<>();
+        
+        return liste;
+    }
+
+    @Override
+    public Object getSearchFormController() {
+        return typeFichierSearchFormController;
+    }
+
+    @Override
+    public Pane getSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(typeFichierSearchFormController.getClass().getResource("TypeFichierSearchForm.fxml"), typeFichierSearchFormController);
+    }
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        typeFichierSearchFormController = new TypeFichierSearchFormController();
+        typeFichierAdvancedSearchFormController = new TypeFichierAdvancedSearchFormController();
+//            setPrintButtonDisable(true);
+            setPrintButtonRemoved(true);
+            
+        super.initialize(location, resources); 
+    }
+
+    @Override
+    public Object getAdvancedSearchFormController() {
+        return typeFichierAdvancedSearchFormController;
+    }
+
+    @Override
+    public Pane getAdvancedSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(typeFichierAdvancedSearchFormController.getClass().getResource("TypeFichierAdvancedSearchForm.fxml"), typeFichierAdvancedSearchFormController);
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ValidateurEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ValidateurEditDialogController.java
new file mode 100644
index 0000000..96e40ba
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ValidateurEditDialogController.java
@@ -0,0 +1,202 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.module.compression.impl.JavaZipZip4Impl;
+import com.megatim.module.encryption.impl.AESImpl;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.dao.ValidateurDAO;
+import com.megatim.fdxconvert.exceptions.ConfigException;
+import com.megatim.fdxconvert.forms.ValidateurEditFormController;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import com.megatim.fdxconvert.util.ParserUtils;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.ResourceBundle;
+import javafx.concurrent.Task;
+import javafx.event.ActionEvent;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+import org.apache.commons.io.FileUtils;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurEditDialogController extends AbstractEditDialogController<Validateur> {
+
+    private ValidateurEditFormController validateurEditFormController;
+    private final String UNZIP_DIR = "UNZIP_DIR";
+    Boolean result;
+
+    @Override
+    public String getTitle() {
+        getEditButton().setText("Importer");
+        return "Importer le validateur d'un type fichier";
+    }
+
+    @Override
+    public Pane getContentFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(validateurEditFormController.getClass().getResource("ValidateurEditForm.fxml"), validateurEditFormController);
+
+    }
+
+    @Override
+    public Object getContentFormController() {
+        return validateurEditFormController;
+    }
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        validateurEditFormController = new ValidateurEditFormController();
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public String getConfirmationMessage() {
+        return "Validateur du typefichier " + getCurrentObject().getCodeTypeFichier() + " importé avec succès !";
+    }
+
+    @Override
+    public boolean beforeSave(ActionEvent event) {
+        result = false;
+        boolean proceed = super.beforeSave(event);
+
+        if (validateurEditFormController.getProtegeCheckBox().isSelected()) {
+            proceed = proceed && validateurEditFormController.getKeyConfirmationField() != null
+                    && validateurEditFormController.getKeyToDecryptField() != null;
+        }
+
+        if (proceed && getTypeOperation().equals(TypeOperation.ADD)) {
+            Node source = (Node) event.getSource();
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            Validateur validateur = getCurrentObject();
+            Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+            File decryptedFile = null;
+
+            try {
+                if (validateur.isProtege()) {
+                    Optional<Validateur> exist = ValidateurDAO.findByCodeTypeFichier(validateur.getCodeTypeFichier());
+
+                    if (!exist.isPresent()) {
+                        File fileToUnzip = new File(validateur.getFilePath());
+                        unzip(fileToUnzip, config);
+                        decryptedFile = decrypt(validateur, config, fileToUnzip);
+                        validateur.setFilePath(decryptedFile.getAbsolutePath());
+                        setContent(validateur);
+
+                        decryptedFile.deleteOnExit();
+                        result = true;
+                    } else {
+                        NotificationDialog notificationDialog = new NotificationDialog(
+                                "Validateur du typefichier " + validateur.getCodeTypeFichier() + " déjà enregistré. Bien vouloir supprimer l'existant avant d'effectuer cette action",
+                                NotificationType.WARNING, parentStage);
+                        notificationDialog.showNotification();
+                        result = false;
+                    }
+                } else {
+                    setContent(validateur);
+                    result = true;
+                }
+            } catch (Exception th) {
+
+                if (th instanceof javax.crypto.BadPaddingException || th instanceof java.security.spec.InvalidKeySpecException
+                        || th instanceof java.security.InvalidKeyException) {
+
+                    decryptedFile.deleteOnExit();
+
+                    NotificationDialog notificationDialog = new NotificationDialog(
+                            "Echec décryptage : La clé fournie n'est pas la bonne ",
+                            NotificationType.ERROR,
+                            parentStage
+                    );
+                    notificationDialog.showNotification();
+                } else if (th instanceof ConfigException) {
+                    NotificationDialog notificationDialog = new NotificationDialog(
+                            th.getMessage(), NotificationType.ERROR, parentStage);
+                    notificationDialog.showNotification();
+                } else {
+                    AlertMessageUtil.showAlertException(th, "Une exception s'est produite pendant le décryptage du fichier", "Erreur");
+                }
+            } finally {
+                if (config != null) {
+                    File unzipDir = new File(config.getValidatorsDir(), UNZIP_DIR);
+
+                    if (unzipDir.exists() && unzipDir.isDirectory()) {
+                        List<File> liste = Arrays.asList(unzipDir.listFiles());
+                        liste.forEach(f -> f.deleteOnExit());
+                    }
+                }
+            }
+        }
+
+        return result;
+    }
+
+    private void unzip(File fileToUnzip, Configuration config) throws Exception {
+        JavaZipZip4Impl zip4Impl = new JavaZipZip4Impl();
+
+        if (config == null) {
+            throw new ConfigException("Bien vouloir configurer les répertoires  avant avant d'effectuer cette action");
+        }
+
+        File unzipDir = new File(config.getValidatorsDir(), UNZIP_DIR);
+
+        if (!unzipDir.exists()) {
+            unzipDir.mkdir();
+        }
+
+        Arrays.asList(unzipDir.listFiles()).forEach(f -> f.deleteOnExit());
+        zip4Impl.unZipFile(fileToUnzip, unzipDir);
+    }
+
+    private File decrypt(Validateur val, Configuration config, File fileToUnzip) throws Exception {
+        AESImpl aes = new AESImpl();
+        File unzipDir = new File(config.getValidatorsDir(), UNZIP_DIR);
+        String fileName = fileNameWithoutExtension(fileToUnzip);
+        File inputFile = new File(unzipDir.getAbsolutePath(), fileName + ".xml");
+        File outputFile = new File(config.getValidatorsDir(), inputFile.getName());
+        aes.decryptFile(val.getKeyToDecrypt(), val.getKeyLength(), inputFile.getAbsolutePath(), outputFile.getAbsolutePath());
+
+        inputFile.deleteOnExit();
+
+        return outputFile;
+    }
+
+    private void setContent(Validateur validateur) throws Exception {
+        TypeFichier typeFichier = getCurrentObject().getTypeFichier();
+        getCurrentObject().setConvertDataBeforeValidation(ParserUtils.isConvertDataBeforeValidation(new File(validateur.getFilePath())));
+        byte[] content = FileUtils.readFileToByteArray(new File(validateur.getFilePath()));
+        getCurrentObject().setContent(content);
+        getCurrentObject().setCodeTypeFichier(typeFichier.getCode());
+    }
+
+    private String fileNameWithoutExtension(File file) {
+        String name = file.getName();
+        int index = name.lastIndexOf(".");
+        String fileName = name.substring(0, index);
+
+        return fileName;
+    }
+
+    @Override
+    public String getConfirmationDialogMessage() {
+        return "Le validateur du typefichier " + getCurrentObject().getCodeTypeFichier() + " a été importé avec succès.";
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelAdvancedSearchController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelAdvancedSearchController.java
new file mode 100644
index 0000000..a471af9
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelAdvancedSearchController.java
@@ -0,0 +1,76 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelAdvancedSearchController implements Initializable {
+
+    @FXML
+    private ComboBox<Delimiteur> delimiteurLigneComboBox;
+
+    @FXML
+    private ComboBox<Delimiteur> delimiteurColonneComboBox;
+
+    @FXML
+    @Search(fieldName = "codeDelimiteurLigne", operateur = Operateur.EQUALS)
+    private TextField codeDelimiteurLigneTextField;
+
+    @FXML
+    @Search(fieldName = "codeDelimiteurColonne", operateur = Operateur.EQUALS)
+    private TextField codeDelimiteurColonneTextField;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        delimiteurColonneComboBox.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurColonneComboBox.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_COLONNE.values()
+        ));
+
+        delimiteurLigneComboBox.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurLigneComboBox.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_LIGNE.values()
+        ));
+
+        delimiteurColonneComboBox.setOnAction(e -> {
+            Delimiteur delimiteurColonne = delimiteurColonneComboBox.getSelectionModel().getSelectedItem();
+
+            if (delimiteurColonne != null) {
+                codeDelimiteurColonneTextField.setText(delimiteurColonne.getCode());
+            }
+        });
+
+        delimiteurLigneComboBox.setOnAction(e -> {
+            Delimiteur delimiteurLigne = delimiteurLigneComboBox.getSelectionModel().getSelectedItem();
+
+            if (delimiteurLigne != null) {
+                codeDelimiteurLigneTextField.setText(delimiteurLigne.getCode());
+            }
+        });
+    }
+
+    public ComboBox<Delimiteur> getDelimiteurLigneComboBox() {
+        return delimiteurLigneComboBox;
+    }
+
+    public ComboBox<Delimiteur> getDelimiteurColonneComboBox() {
+        return delimiteurColonneComboBox;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelSearchController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelSearchController.java
new file mode 100644
index 0000000..cc7b07d
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ConversionModelSearchController.java
@@ -0,0 +1,91 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelSearchController implements Initializable {
+
+    @FXML
+    @Search(fieldName = "typeFichier", operateur = Operateur.EQUALS)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+    
+    @FXML
+    @Search(fieldName = "dataType", operateur = Operateur.EQUALS)
+    private ComboBox<DataType> dataTypeComboBox;
+    
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        
+        dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+
+        dataTypeComboBox.setItems(FXCollections.observableArrayList(
+                DataType.values()
+        ));
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+        
+        initElements();
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalAdvancedSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalAdvancedSearchFormController.java
new file mode 100644
index 0000000..15370f4
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalAdvancedSearchFormController.java
@@ -0,0 +1,59 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import com.megatim.fdxconvert.enums.JournalStatut;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.DatePicker;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalAdvancedSearchFormController  implements Initializable {
+
+    
+    @FXML
+    @Search(fieldName = "localDateAction", operateur = Operateur.GREATER_OR_EQUALS_THAN)
+    private DatePicker dateDebutDatePicker;
+    
+    @FXML
+    @Search(fieldName = "localDateAction", operateur = Operateur._LESS_OR_EQUALS_THAN)
+    private DatePicker dateFinDatePicker;
+    
+    @FXML
+    @Search(fieldName = "statut", operateur = Operateur.EQUALS)
+    private ComboBox<JournalStatut> statutActionComboBox;
+    
+    @FXML
+    @Search(fieldName = "destinationFileName", operateur = Operateur.LIKE)
+    private TextField destinationFileNameTextField;
+    
+    @FXML
+    @Search(fieldName = "sourceFileName", operateur = Operateur.LIKE)
+    private TextField sourceFileNameTextField;
+    
+    /**
+     * Initializes the controller class.
+     */
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        
+        statutActionComboBox.setPromptText("Sélectionnez un élément dans la liste");
+        statutActionComboBox.setItems(FXCollections.observableArrayList(
+                JournalStatut.values()
+        ));
+        
+    }    
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalSearchFormController.java
new file mode 100644
index 0000000..49899a3
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/JournalSearchFormController.java
@@ -0,0 +1,95 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalSearchFormController implements Initializable {
+
+    @Search(fieldName = "codeTypefichier", operateur = Operateur.LIKE)
+    @FXML
+    private TextField typeFichierTextField;
+
+    @FXML
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectionItem;
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        typeFichierAbstractSelectionItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectionItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectionItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        typeFichierAbstractSelectionItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue == null) {
+                typeFichierTextField.setText("");
+            } else {
+                typeFichierTextField.setText(newValue.getCode());
+            }
+        });
+
+        initElements();
+    }
+
+    public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectionItem() {
+        return typeFichierAbstractSelectionItem;
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectionItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoAdvancedSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoAdvancedSearchFormController.java
new file mode 100644
index 0000000..4ba19ba
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoAdvancedSearchFormController.java
@@ -0,0 +1,40 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import com.megatim.fdxconvert.enums.DataType;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ParametreAutoAdvancedSearchFormController implements Initializable {
+    
+    @Search(fieldName = "intervalle", operateur = Operateur.EQUALS, editable = false)
+    @FXML
+    private TextField intervalle;
+    
+//    @FXML
+//    @Search(fieldName = "dataType", operateur = Operateur.EQUALS, editable = false)
+//    private ComboBox<DataType> dataTypeComboBox;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+//         dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+//        
+//        dataTypeComboBox.setItems(FXCollections.observableArrayList(
+//                DataType.values()
+//        ));
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoSearchFormController.java
new file mode 100644
index 0000000..55f1b69
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ParametreAutoSearchFormController.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ParametreAutoSearchFormController  implements Initializable {
+    @Search(fieldName = "codeTypeFichier", operateur = Operateur.LIKE)
+    @FXML
+    private TextField code;
+    
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TacheSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TacheSearchFormController.java
new file mode 100644
index 0000000..ab00314
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TacheSearchFormController.java
@@ -0,0 +1,81 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TacheSearchFormController implements Initializable {
+
+    @FXML
+    @Search(fieldName = "typeFichier", operateur = Operateur.EQUALS)
+    private AbstractSelectionItem typeFichierAbstractSelectItem;
+    
+    private Set<TypeFichier> TypeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        intitTypeFichiers();
+    }
+
+    private void intitTypeFichiers() {
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier de la tâche");
+
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn(),
+                TypeFichierTable.participantColumn()
+        ));
+
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                TypeFichierSet.clear();
+                TypeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            typeFichierAbstractSelectItem.setElements(TypeFichierSet);
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementAdvancedSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementAdvancedSearchFormController.java
new file mode 100644
index 0000000..cde3971
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementAdvancedSearchFormController.java
@@ -0,0 +1,34 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.DatePicker;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TruncatedElementAdvancedSearchFormController implements Initializable {
+
+    @FXML
+    @Search(fieldName = "codeColonne", operateur = Operateur.LIKE)
+    private TextField codeColonneTextfield;
+    
+    @FXML
+    @Search(fieldName = "localDateAction", operateur = Operateur.EQUALS)
+    private DatePicker dateActionDatePicker;
+            
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementSearchFormController.java
new file mode 100644
index 0000000..a5ea5f0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TruncatedElementSearchFormController.java
@@ -0,0 +1,86 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TruncatedElementSearchFormController implements Initializable {
+
+    @FXML
+    @Search(fieldName = "codeTypeFichier", operateur = Operateur.LIKE)
+    private TextField codeTypeFichierTextfield;
+
+    @FXML
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectionItem;
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        typeFichierAbstractSelectionItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectionItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectionItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        typeFichierAbstractSelectionItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+            codeTypeFichierTextfield.setText(newValue.getCode());
+        });
+
+        initElements();
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectionItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierAdvancedSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierAdvancedSearchFormController.java
new file mode 100644
index 0000000..d8926e1
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierAdvancedSearchFormController.java
@@ -0,0 +1,38 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierAdvancedSearchFormController  implements Initializable {
+
+    
+    @Search(fieldName = "libelle", operateur = Operateur.LIKE, editable = false)
+    @FXML
+    private TextField libelle;
+    
+    @Search(fieldName = "codeParticipant", operateur = Operateur.LIKE, editable = false)
+    @FXML
+    private TextField participant;
+    
+    /**
+     * Initializes the controller class.
+     */
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        // TODO
+    }    
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierSearchFormController.java
new file mode 100644
index 0000000..efbd8e2
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/TypeFichierSearchFormController.java
@@ -0,0 +1,31 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.enums.Operateur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierSearchFormController implements Initializable{
+    @Search(fieldName = "code", operateur = Operateur.LIKE)
+    @FXML
+    private TextField code;
+    
+    /**
+     * Initializes the controller class.
+     */
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        // TODO
+    }    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ValidateurSearchFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ValidateurSearchFormController.java
new file mode 100644
index 0000000..863c3a0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/search/ValidateurSearchFormController.java
@@ -0,0 +1,99 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.search;
+
+import com.megatimfx.common.annontations.Search;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.enums.Operateur;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurSearchFormController implements Initializable {
+
+    @Search(fieldName = "codeTypeFichier", operateur = Operateur.LIKE)
+    @FXML
+    private TextField codeTypeFichierTextfield;
+
+    @FXML
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectionItem;
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        typeFichierAbstractSelectionItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectionItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectionItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        typeFichierAbstractSelectionItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue == null) {
+                codeTypeFichierTextfield.setText("");
+            } else {
+                codeTypeFichierTextfield.setText(newValue.getCode());
+            }
+
+        });
+
+        initElements();
+    }
+
+    public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectionItem() {
+        return typeFichierAbstractSelectionItem;
+    }
+
+    public TextField getCodeTypeFichierTextfield() {
+        return codeTypeFichierTextfield;
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectionItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/AlphaNumeriqueFieldTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/AlphaNumeriqueFieldTable.java
new file mode 100644
index 0000000..f29fbc3
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/AlphaNumeriqueFieldTable.java
@@ -0,0 +1,67 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AlphaNumeriqueFieldTable {
+
+    private AlphaNumeriqueFieldTable() {
+
+    }
+
+    public static TableColumn<AlphaNumeriqueField, String> codeTypeFichierColumn() {
+        TableColumn<AlphaNumeriqueField, String> column = new TableColumn("Typefichier");
+        column.setCellValueFactory(new PropertyValueFactory("codeTypefichier"));
+        return column;
+    }
+
+    public static TableColumn<AlphaNumeriqueField, String> codeColonneColumn() {
+        TableColumn<AlphaNumeriqueField, String> column = new TableColumn("Code du Champ");
+        column.setCellValueFactory(e -> {
+            return new SimpleStringProperty(e.getValue().getCodeColonne());
+        });
+        return column;
+    }
+
+    public static TableColumn<AlphaNumeriqueField, Boolean> shouldBeTruncatedColumn() {
+        TableColumn<AlphaNumeriqueField, Boolean> column = new TableColumn("Peut être tronqué");
+        column.setCellValueFactory(new PropertyValueFactory("shouldBeTruncated"));
+        return column;
+    }
+
+    public static TableColumn<AlphaNumeriqueField, Integer> tailleColumn() {
+        TableColumn<AlphaNumeriqueField, Integer> column = new TableColumn("Taille du champ");
+        column.setCellValueFactory(new PropertyValueFactory("taille"));
+        return column;
+    }
+    
+    public static TableColumn<AlphaNumeriqueField, Integer> indexColumn() {
+        TableColumn<AlphaNumeriqueField, Integer> column = new TableColumn("Index de début du champ");
+        column.setCellValueFactory(new PropertyValueFactory("index"));
+        return column;
+    }
+    
+     public static TableColumn<AlphaNumeriqueField, String> dateCreationColumn() {
+        TableColumn<AlphaNumeriqueField, String> column = new TableColumn("Date de creation");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+            
+            return new SimpleStringProperty(date != null ? ""+ date.format(formatter) : "");
+        });
+        return column;
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ConversionModelTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ConversionModelTable.java
new file mode 100644
index 0000000..38b9738
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ConversionModelTable.java
@@ -0,0 +1,141 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelTable {
+
+    private ConversionModelTable() {
+
+    }
+
+    public static TableColumn<ConversionModel, String> typeFichierColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Type Fichier");
+        column.setCellValueFactory(c -> {
+            TypeFichier typeFichier = c.getValue().getTypeFichier();
+            return new SimpleStringProperty(typeFichier.getCode());
+        });
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> dataTypeColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Type de données");
+        column.setCellValueFactory(c -> {
+            DataType dataType = c.getValue().getDataType();
+            return new SimpleStringProperty(dataType.toString());
+        });
+
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> delimiteurLigneColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Dél. ligne");
+        column.setCellValueFactory(c -> {
+            String codeDelimiteurLigne = c.getValue().getCodeDelimiteurLigne();
+
+            if (App.DELIMITEURS_LIGNE.containsKey(codeDelimiteurLigne)) {
+
+                return new SimpleStringProperty(App.DELIMITEURS_LIGNE.get(codeDelimiteurLigne).toString());
+            } else {
+                return new SimpleStringProperty("");
+            }
+        });
+
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> delimiteurColonneColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Dél. colonne");
+        column.setCellValueFactory(c -> {
+            String codeDelimiteurColonne = c.getValue().getCodeDelimiteurColonne();
+
+            if (App.DELIMITEURS_COLONNE.containsKey(codeDelimiteurColonne)) {
+
+                return new SimpleStringProperty(App.DELIMITEURS_COLONNE.get(codeDelimiteurColonne).toString());
+            } else {
+                return new SimpleStringProperty("");
+            }
+
+        });
+
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> repertoireSourceColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Rép. Source");
+        column.setCellValueFactory(new PropertyValueFactory("repertoireSource"));
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> repertoireDestinationColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Rép. Destination");
+        column.setCellValueFactory(new PropertyValueFactory("repertoireDestination"));
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> repertoireErreurColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Rép. Erreur");
+        column.setCellValueFactory(new PropertyValueFactory("repertoireErreur"));
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> libelleColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Libellé");
+        column.setCellValueFactory(new PropertyValueFactory("libelle"));
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> headerPresentColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Entête présente ?");
+
+        column.setCellValueFactory(c -> {
+
+            boolean headerPresent = c.getValue().isHeaderPresent();
+            String value = headerPresent ? "Oui" : "Non";
+
+            return new SimpleStringProperty(value);
+        });
+
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> strictValidationColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Validation Stricte ?");
+        column.setCellValueFactory(c -> {
+
+            boolean strictValidation = c.getValue().isStrictValidation();
+            String value = strictValidation ? "Oui" : "Non";
+
+            return new SimpleStringProperty(value);
+        });
+
+        return column;
+    }
+
+    public static TableColumn<ConversionModel, String> dateCreationColumn() {
+        TableColumn<ConversionModel, String> column = new TableColumn("Date de création");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+
+            return new SimpleStringProperty(date != null ? "" + date.format(formatter) : "");
+        });
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/JournalTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/JournalTable.java
new file mode 100644
index 0000000..7d08885
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/JournalTable.java
@@ -0,0 +1,61 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.enums.JournalStatut;
+import com.megatim.fdxconvert.model.Journal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalTable {
+    private JournalTable() {
+        
+    }
+    
+    public static TableColumn<Journal, String> typeFichierColumn() {
+        TableColumn<Journal, String> column = new TableColumn("Typefichier");
+        column.setCellValueFactory(new PropertyValueFactory("codeTypefichier"));
+        return column;
+    }
+    
+    public static TableColumn<Journal, String> sourceFileNameColumn() {
+        TableColumn<Journal, String> column = new TableColumn("Fichier source");
+        column.setCellValueFactory(new PropertyValueFactory("sourceFileName"));
+        return column;
+    }
+    public static TableColumn<Journal, String> destinationFileNameColumn() {
+        TableColumn<Journal, String> column = new TableColumn("Fichier de destination");
+        column.setCellValueFactory(new PropertyValueFactory("destinationFileName"));
+        return column;
+    }
+
+    public static TableColumn<Journal, String> statutColumn() {
+        TableColumn<Journal, String> column = new TableColumn("Statut");
+        column.setCellValueFactory(c -> {
+            JournalStatut staut = c.getValue().getStatut();
+            return new SimpleStringProperty(staut.getDescription());
+        });
+        return column;
+    }
+    
+    public static TableColumn<Journal, String> dateColumn() {
+        TableColumn<Journal, String> column = new TableColumn("Date de l'action");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateAction();
+            
+            return new SimpleStringProperty(""+ date.format(formatter));
+        });
+        return column;
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueFieldTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueFieldTable.java
new file mode 100644
index 0000000..56d3287
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueFieldTable.java
@@ -0,0 +1,40 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MetaAlphaNumeriqueFieldTable {
+
+    private MetaAlphaNumeriqueFieldTable() {
+
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, String> alphaNumeriqueFieldColumn() {
+        TableColumn<MetaAlphaNumeriqueField, String> column = new TableColumn("Code du Champ");
+        column.setCellValueFactory(new PropertyValueFactory("alphaNumeriqueField"));
+        return column;
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, String> dateCreationColumn() {
+        TableColumn<MetaAlphaNumeriqueField, String> column = new TableColumn("Date de creation");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+
+            return new SimpleStringProperty(date != null ? "" + date.format(formatter) : "");
+        });
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueTable.java
new file mode 100644
index 0000000..31fb289
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/MetaAlphaNumeriqueTable.java
@@ -0,0 +1,75 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Tache;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleIntegerProperty;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MetaAlphaNumeriqueTable {
+
+    private MetaAlphaNumeriqueTable() {
+
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, String> codeColonneColumn() {
+        TableColumn<MetaAlphaNumeriqueField, String> column = new TableColumn("Code");
+        column.setCellValueFactory(e -> {
+            return new SimpleStringProperty(e.getValue().getAlphaNumeriqueField().getCodeColonne());
+        });
+        return column;
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, Integer> tailleColonneColumn() {
+        TableColumn<MetaAlphaNumeriqueField, Integer> column = new TableColumn("Taille");
+        column.setCellValueFactory(e -> {
+            return new SimpleIntegerProperty(e.getValue().getAlphaNumeriqueField().getTaille()).asObject();
+        });
+        return column;
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, Integer> indexColonneColumn() {
+        TableColumn<MetaAlphaNumeriqueField, Integer> column = new TableColumn("Index de début");
+        column.setCellValueFactory(e -> {
+            return new SimpleIntegerProperty(e.getValue().getAlphaNumeriqueField().getIndex()).asObject();
+        });
+        return column;
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, String> typeFichierColumn() {
+        TableColumn<MetaAlphaNumeriqueField, String> column = new TableColumn("TypeFichier");
+        column.setCellValueFactory(e -> {
+            return new SimpleStringProperty(e.getValue().getAlphaNumeriqueField().getValidateur().getCodeTypeFichier());
+        });
+        return column;
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, String> typeDonneeColumn() {
+        TableColumn<MetaAlphaNumeriqueField, String> column = new TableColumn("Type de données");
+        column.setCellValueFactory(e -> {
+            return new SimpleStringProperty(e.getValue().getAlphaNumeriqueField().getTypeDonnee());
+        });
+        return column;
+    }
+
+    public static TableColumn<MetaAlphaNumeriqueField, String> dateCreationColumn() {
+        TableColumn<MetaAlphaNumeriqueField, String> column = new TableColumn("Date de creation");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+
+            return new SimpleStringProperty(date != null ? "" + date.format(formatter) : "");
+        });
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ModeleJsonTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ModeleJsonTable.java
new file mode 100644
index 0000000..407273e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ModeleJsonTable.java
@@ -0,0 +1,25 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.ModeleJson;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonTable {
+    private ModeleJsonTable() {
+        
+    }
+    
+    public static TableColumn<ModeleJson, String> objectNameColumn() {
+        TableColumn<ModeleJson, String> column = new TableColumn("Libellé de la structure");
+        column.setCellValueFactory(new PropertyValueFactory("objectName"));
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/StructureChampJsonTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/StructureChampJsonTable.java
new file mode 100644
index 0000000..3656576
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/StructureChampJsonTable.java
@@ -0,0 +1,54 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class StructureChampJsonTable {
+
+    private StructureChampJsonTable() {
+
+    }
+
+    public static TableColumn<StructureChampJson, String> codeColumn() {
+        TableColumn<StructureChampJson, String> column = new TableColumn("Libellé");
+        column.setCellValueFactory(new PropertyValueFactory("libelle"));
+        return column;
+    }
+
+    public static TableColumn<StructureChampJson, String> typeDonneeColumn() {
+        TableColumn<StructureChampJson, String> column = new TableColumn("Type de données");
+
+        column.setCellValueFactory(c -> {
+            if (c.getValue().getTypeDonnee().equals(TypeDonnee.OBJET)) {
+                return new SimpleStringProperty("Objet : " + c.getValue().getTypeOfSubObject().getSubObjectName());
+            } else {
+                return new SimpleStringProperty(c.getValue().getTypeDonnee().toString());
+            }
+        });
+        return column;
+    }
+
+    public static TableColumn<StructureChampJson, String> simpleOrListeColumn() {
+        TableColumn<StructureChampJson, String> column = new TableColumn("Liste ?");
+        column.setCellValueFactory(c -> {
+            if (c.getValue().isListe()) {
+                return new SimpleStringProperty("Oui");
+            } else {
+                return new SimpleStringProperty("Non");
+            }
+        });
+
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/SubObjectTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/SubObjectTable.java
new file mode 100644
index 0000000..dd0d612
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/SubObjectTable.java
@@ -0,0 +1,26 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.SubObject;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SubObjectTable {
+    private SubObjectTable() {
+        
+    }
+    
+     public static TableColumn<SubObject, String> subObjectNameColumn() {
+        TableColumn<SubObject, String> column = new TableColumn("Nom de l'objet");
+        column.setCellValueFactory(new PropertyValueFactory("subObjectName"));
+        return column;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TacheTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TacheTable.java
new file mode 100644
index 0000000..26adf13
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TacheTable.java
@@ -0,0 +1,71 @@
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class TacheTable {
+
+    private TacheTable() {
+    }
+
+    public static TableColumn<Tache, String> libelleColumn() {
+        TableColumn<Tache, String> column = new TableColumn<>("Libellé");
+        column.setCellValueFactory(new PropertyValueFactory<>("libelle"));
+        return column;
+    }
+
+    public static TableColumn<Tache, String> descriptionColumn() {
+        TableColumn<Tache, String> column = new TableColumn<>("Description");
+        column.setCellValueFactory(c -> {
+            //
+            return new SimpleStringProperty(c.getValue().getLibelle());
+        });
+        return column;
+    }
+    
+    public static TableColumn<Tache, String> typeFichierColumn() {
+        TableColumn<Tache, String> column = new TableColumn<>("Type Fichier");
+        column.setCellValueFactory( c -> {
+            TypeFichier typeFichier = c.getValue().getTypeFichier();
+            return new SimpleStringProperty(typeFichier.getCode());
+        });
+        return column;
+    }
+
+    public static TableColumn<Tache, String> schedulerColumn() {
+        TableColumn<Tache, String> column = new TableColumn<>("Plannification");
+        column.setCellValueFactory(new PropertyValueFactory<>("scheduler"));
+        return column;
+    }
+    
+     public static TableColumn<Tache, String> dateCreationColumn() {
+        TableColumn<Tache, String> column = new TableColumn<>("Date création");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+            
+            return new SimpleStringProperty(date != null ? date.format(formatter) : "");
+        });
+        return column;
+    }
+     
+     public static TableColumn<Tache, String> dateMiseAJourColumn() {
+        TableColumn<Tache, String> column = new TableColumn<>("Date dernière modification");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateMiseAJour();
+            
+            return new SimpleStringProperty(date != null ? date.format(formatter) : "");
+        });
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TruncatedElementTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TruncatedElementTable.java
new file mode 100644
index 0000000..3e1071d
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TruncatedElementTable.java
@@ -0,0 +1,76 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.Journal;
+import com.megatim.fdxconvert.model.TruncatedElement;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TruncatedElementTable {
+    
+    private TruncatedElementTable() {
+        
+    }
+    
+      public static TableColumn<TruncatedElement, String> codeTypeFichierColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Code du type fichier");
+        column.setCellValueFactory(new PropertyValueFactory("codeTypeFichier"));
+        return column;
+    }
+      
+      public static TableColumn<TruncatedElement, String> codeColonneColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Code de la colonne");
+        column.setCellValueFactory(new PropertyValueFactory("codeColonne"));
+        return column;
+    }
+      
+      public static TableColumn<TruncatedElement, String> initialDataColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Donnée initiale");
+        column.setCellValueFactory(new PropertyValueFactory("initialData"));
+        return column;
+    }
+      
+      public static TableColumn<TruncatedElement, String> finalDataColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Donnée finale");
+        column.setCellValueFactory(new PropertyValueFactory("finalData"));
+        return column;
+    }
+      
+      public static TableColumn<TruncatedElement, String> fileNameColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Nom du fichier");
+        column.setCellValueFactory(new PropertyValueFactory("fileName"));
+        return column;
+    }
+      
+      public static TableColumn<TruncatedElement, String> dateColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Date de l'action");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateAction();
+            
+            return new SimpleStringProperty(date != null ? ""+ date.format(formatter) : "");
+        });
+        return column;
+    }
+      
+       public static TableColumn<TruncatedElement, String> dateCreationColumn() {
+        TableColumn<TruncatedElement, String> column = new TableColumn("Date de creation");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+            
+            return new SimpleStringProperty(date != null ? ""+ date.format(formatter) : "");
+        });
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TypeFichierTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TypeFichierTable.java
new file mode 100644
index 0000000..14d8ff2
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/TypeFichierTable.java
@@ -0,0 +1,53 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierTable {
+    
+     private TypeFichierTable() {
+
+    }
+
+    public static TableColumn<TypeFichier, String> codeColumn() {
+        TableColumn<TypeFichier, String> column = new TableColumn("Code");
+        column.setCellValueFactory(new PropertyValueFactory("code"));
+        return column;
+    }
+
+    public static TableColumn<TypeFichier, String> libelleColumn() {
+        TableColumn<TypeFichier, String> column = new TableColumn("Libellé");
+        column.setCellValueFactory(new PropertyValueFactory("libelle"));
+        return column;
+    }
+    
+    public static TableColumn<TypeFichier, String> participantColumn() {
+        TableColumn<TypeFichier, String> column = new TableColumn("Participant");
+        column.setCellValueFactory(new PropertyValueFactory("codeParticipant"));
+        return column;
+    }
+   
+     public static TableColumn<TypeFichier, String> dateCreationColumn() {
+        TableColumn<TypeFichier, String> column = new TableColumn("Date de creation");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+            
+            return new SimpleStringProperty(date != null ? ""+ date.format(formatter) : "");
+        });
+        return column;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ValidateurTable.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ValidateurTable.java
new file mode 100644
index 0000000..b3bef90
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/table/ValidateurTable.java
@@ -0,0 +1,53 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller.table;
+
+import com.megatim.fdxconvert.model.Validateur;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.cell.PropertyValueFactory;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@NoArgsConstructor
+public class ValidateurTable {
+
+    public static TableColumn<Validateur, String> typeFichierColumn() {
+        TableColumn<Validateur, String> column = new TableColumn("Code du TypeFichier");
+        column.setCellValueFactory(new PropertyValueFactory("codeTypeFichier"));
+        return column;
+    }
+
+    public static TableColumn<Validateur, String> dateCreationColumn() {
+        TableColumn<Validateur, String> column = new TableColumn("Date de l'importation");
+        column.setCellValueFactory(c -> {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime date = c.getValue().getDateCreation();
+
+            return new SimpleStringProperty(date != null ? "" + date.format(formatter) : "");
+        });
+        return column;
+    }
+
+    public static TableColumn<Validateur, String> dataConversionColumn() {
+        TableColumn<Validateur, String> column = new TableColumn("Conversion des données\nen TXT avant validation ?");
+        column.setCellValueFactory(c -> {
+            return new SimpleStringProperty(c.getValue().isConvertDataBeforeValidation() ? "Oui" : "Non");
+        });
+        return column;
+    }
+
+    public static TableColumn<Validateur, Integer> keyLengthColumn() {
+        TableColumn<Validateur, Integer> column = new TableColumn("Taille clé");
+        column.setCellValueFactory(new PropertyValueFactory("keyLength"));
+        return column;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/converter/DataTypeConverter.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/converter/DataTypeConverter.java
new file mode 100644
index 0000000..d099e8a
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/converter/DataTypeConverter.java
@@ -0,0 +1,36 @@
+package com.megatim.fdxconvert.converter;
+
+import com.megatim.fdxconvert.enums.DataType;
+import java.util.stream.Stream;
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Converter(autoApply = true)
+public class DataTypeConverter implements AttributeConverter<DataType, String> {
+
+    @Override
+    public String convertToDatabaseColumn(DataType dataType) {
+        if (dataType == null) {
+            return null;
+        }
+
+        return dataType.getDataType();
+    }
+
+    @Override
+    public DataType convertToEntityAttribute(String dataType) {
+        if (dataType == null) {
+            return null;
+        }
+
+        return Stream.of(DataType.values())
+                .filter(c -> c.getDataType().equals(dataType))
+                .findFirst()
+                .orElseThrow(IllegalArgumentException::new);
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AbstractDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AbstractDAO.java
new file mode 100644
index 0000000..041943b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AbstractDAO.java
@@ -0,0 +1,295 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.lang.reflect.Field;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.Session;
+
+/**
+ *
+ * @author mela
+ */
+@Getter
+@Setter
+public class AbstractDAO<T> {
+
+    private Class<T> clazz;
+    private PaginationElts pagination;
+
+    public AbstractDAO(Class<T> clas) {
+        clazz = clas;
+        pagination = new PaginationElts();
+    }
+
+    public <T> T add(T element) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            session.beginTransaction();
+            session.persist(element);
+            session.getTransaction().commit();
+            session.refresh(element);
+
+            return element;
+        }
+    }
+
+    public <T> T edit(T element) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            session.beginTransaction();
+            session.update(element);
+            session.getTransaction().commit();
+            session.refresh(element);
+
+            return element;
+        }
+    }
+
+    public void delete(T element) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            session.beginTransaction();
+            session.delete(element);
+            session.getTransaction().commit();
+        }
+    }
+
+    public void deleteAll(String tableName) {
+        List<T> liste = getAll(tableName);
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            session.beginTransaction();
+            liste.forEach(t -> session.delete(t));
+            session.getTransaction().commit();
+        }
+    }
+
+    public <Optional> T find(Object element) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            return session.find(clazz, element);
+        }
+    }
+
+    public List<T> getAll(String tableName) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            List<T> liste = session.createQuery("from " + tableName).getResultList();
+
+            return liste;
+
+        }
+
+    }
+
+    public List<T> getAllByPage(int indexDebut, int numberOfElt, List<SearchCriteria> searchCriterias) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
+            CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(clazz);
+            Root<T> root = criteriaQuery.from(clazz);
+            List<Predicate> predicates = createPedicates(searchCriterias, criteriaBuilder, root);
+
+            CriteriaQuery<T> cq = criteriaQuery.select(root);
+
+            cq = cq.select(root).where(predicates.toArray(new Predicate[predicates.size()]));
+
+            TypedQuery<T> typedQuery = session.createQuery(cq);
+
+            typedQuery.setFirstResult(indexDebut);
+            typedQuery.setMaxResults(numberOfElt);
+            List<T> liste = typedQuery.getResultList();
+
+            return liste;
+        }
+    }
+
+    private long count(List<SearchCriteria> searchCriterias) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            CriteriaBuilder qb = session.getCriteriaBuilder();
+            CriteriaQuery<Long> cq = qb.createQuery(Long.class);
+            Root<T> root = cq.from(clazz);
+            List<Predicate> predicates = createPedicates(searchCriterias, qb, root);
+
+            cq.select(qb.count(root));
+            cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+            return (long) session.createQuery(cq).getSingleResult();
+        }
+    }
+
+    public PaginationElts initPaginationElts(int pageNumber, List<SearchCriteria> searchCriterias) {
+        int indexDebut = pageNumber * pagination.getNbEltsPerPage();
+        pagination.setListe(getAllByPage(indexDebut, pagination.getNbEltsPerPage(), searchCriterias));
+        pagination.setTotalElts(count(searchCriterias));
+        pagination.setPage(pageNumber);
+
+        if (pageNumber == 0) {
+            pagination.setNumberOfElts(pagination.getListe().size());
+        } else {
+            pagination.setNumberOfElts(pageNumber * pagination.getNbEltsPerPage() + pagination.getListe().size());
+        }
+
+        pagination.setNumberOfPage((pagination.getTotalElts() % pagination.getNbEltsPerPage() == 0) ? (pagination.getTotalElts() / pagination.getNbEltsPerPage())
+                : (pagination.getTotalElts() / pagination.getNbEltsPerPage()) + 1);
+
+        return pagination;
+    }
+
+    /**
+     * Méthode qui retounre la liste des champs de la classe clazz
+     *
+     * @return
+     */
+    private Map<String, Field> getClassFields() {
+        Field[] fields = clazz.getDeclaredFields();
+        Map<String, Field> mapOfFields = new HashMap<>();
+        for (Field field : fields) {
+            mapOfFields.put(field.getName(), field);
+        }
+
+        return mapOfFields;
+    }
+
+    /**
+     * Méthode qui vérifie que le champ "fieldValue" de l'objet searchCriteria
+     * est du même type que le champ "fieldName" dans la classe clazz
+     *
+     * @param field : contient les informations sur le champ correspondant
+     * @param value : valeur dont on veut vérifier le type
+     * @return : retourne vrai sivalue est du même type que celui renseigné dans
+     * field
+     */
+    private boolean isFieldAndValueOfSameType(Field field, Object value) {
+        boolean result = true;
+        try {
+            field.getType().cast(value);
+        } catch (ClassCastException ex) {
+            result = false;
+        }
+        return result;
+        //String className = field.getType().getName();
+    }
+
+    /**
+     * Méthode qui filtre la liste des critères afin de ne garder que ceux qui
+     * respectent le type du champ correspondant dans la classe et ceux dont le
+     * fieldName correspond à un champ de la classe clazz
+     *
+     * @param searchCriterias
+     * @return
+     */
+    private List<SearchCriteria> verifySearchCriteria(List<SearchCriteria> searchCriterias) {
+        Map<String, Field> mapOfFields = getClassFields();
+
+        //Retire les critères dont le fieldName ne correspond à aucun champ de la classe clazz
+        for (SearchCriteria criteria : searchCriterias) {
+            if (!mapOfFields.containsKey(criteria.getFieldName())) {
+                searchCriterias.remove(criteria);
+//                continue;
+            }
+
+//            Retire les critères dont le type de fieldValue ne correspond pas au type du champ dans la classe clazz
+//            if(!isFieldAndValueOfSameType(mapOfFields.get(criteria.getFieldName()),criteria.getFieldValue())){
+//                searchCriterias.remove(criteria);
+//            }
+        }
+        return searchCriterias;
+    }
+
+    /**
+     * Méthode qui les prédicats à partir des critères de recherche
+     *
+     * @param searchCriterias
+     * @param cb
+     * @return
+     */
+    private List<Predicate> createPedicates(List<SearchCriteria> searchCriterias, CriteriaBuilder cb, Root<T> root) {
+        List<Predicate> predicates = new ArrayList<>();
+
+        searchCriterias = verifySearchCriteria(searchCriterias);
+        searchCriterias.parallelStream().forEach(s -> {
+            Predicate predicate = null;
+            switch (s.getOperateur()) {
+                case EQUALS:
+                    predicate = cb.equal(root.get(s.getFieldName()), s.getFieldValue());
+                    predicates.add(predicate);
+                    break;
+
+                case NOT_EQUALS:
+                    predicate = cb.notEqual(root.get(s.getFieldName()), s.getFieldValue());
+                    predicates.add(predicate);
+                    break;
+
+                case LIKE:
+                    if (s.getFieldValue() instanceof String) {
+                        predicate = cb.like(root.get(s.getFieldName()), "%" + s.getFieldValue().toString() + "%");
+                        predicates.add(predicate);
+                    }
+                    break;
+
+                case GREATER_THAN:
+                    if (s.getFieldValue() instanceof Number) {
+                        predicate = cb.gt(root.get(s.getFieldName()), (Number) s.getFieldValue());
+                        predicates.add(predicate);
+
+                    } else if (s.getFieldValue() instanceof LocalDate) {
+                        predicate = cb.greaterThan(root.get(s.getFieldName()), (LocalDate) s.getFieldValue());
+                        predicates.add(predicate);
+                    } 
+                    break;
+
+                case GREATER_OR_EQUALS_THAN:
+                    if (s.getFieldValue() instanceof Number) {
+                        predicate = cb.ge(root.get(s.getFieldName()), (Number) s.getFieldValue());
+                        predicates.add(predicate);
+                    } else if (s.getFieldValue() instanceof LocalDate) {
+                        predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), (LocalDate) s.getFieldValue());
+                        predicates.add(predicate);
+                    }
+                    break;
+
+                case LESS_THAN:
+                    if (s.getFieldValue() instanceof Number) {
+                        predicate = cb.lt(root.get(s.getFieldName()), (Number) s.getFieldValue());
+                        predicates.add(predicate);
+                    } else if (s.getFieldValue() instanceof LocalDate) {
+                        predicate = cb.lessThan(root.get(s.getFieldName()), (LocalDate)s.getFieldValue());
+                        predicates.add(predicate);
+                    }
+                    break;
+
+                case _LESS_OR_EQUALS_THAN:
+                    if (s.getFieldValue() instanceof Number) {
+                        predicate = cb.le(root.get(s.getFieldName()), (Number) s.getFieldValue());
+                        predicates.add(predicate);
+                    } else if (s.getFieldValue() instanceof LocalDate) {
+                        predicate = cb.lessThanOrEqualTo(root.get(s.getFieldName()), (LocalDate)s.getFieldValue());
+                        predicates.add(predicate);
+                    }
+                    break;
+                case IN:
+                    if (s.getFieldValue() instanceof java.util.Collection) {
+                        predicate = root.get(s.getFieldName()).in(s.getFieldValue());
+                        predicates.add(predicate);
+                    }
+                    break;
+                default:
+
+            }
+        });
+
+        return predicates;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AlphaNumeriqueFieldDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AlphaNumeriqueFieldDAO.java
new file mode 100644
index 0000000..b363859
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/AlphaNumeriqueFieldDAO.java
@@ -0,0 +1,42 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import java.util.List;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AlphaNumeriqueFieldDAO {
+    
+    private AlphaNumeriqueFieldDAO() {
+        
+    }
+    
+     public static List<AlphaNumeriqueField> findByCodeTypeFichier(String code) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("from AlphaNumeriqueField where codeTypeFichier= :code");
+            query.setParameter("code", code);
+            return query.getResultList();
+        }
+    }
+     
+     public static void updateCodeTypeFichier(String oldValue, String newValue) {
+          try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("update AlphaNumeriqueField set codeTypeFichier =:newValue where codeTypeFichier = :oldValue");
+            query.setParameter("oldValue", oldValue);
+            query.setParameter("newValue", newValue);
+            
+            session.beginTransaction();
+            query.executeUpdate();
+            session.getTransaction().commit();
+        }
+     }
+     
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ConversionModelDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ConversionModelDAO.java
new file mode 100644
index 0000000..1809e90
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ConversionModelDAO.java
@@ -0,0 +1,33 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.util.List;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelDAO {
+
+    private ConversionModelDAO() {
+
+    }
+    
+    public static List<ConversionModel> findByTypeFichier(TypeFichier typeFichier) {
+        
+         try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select c from ConversionModel c where c.typeFichier.code = :codeTypeFichier");
+            query.setParameter("codeTypeFichier",typeFichier.getCode());
+            
+            return query.getResultList();
+        }
+     }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/HibernateUtil.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/HibernateUtil.java
new file mode 100644
index 0000000..b80fa14
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/HibernateUtil.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistry;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+
+/**
+ *
+ * @author mela
+ */
+public class HibernateUtil {
+
+    private static SessionFactory sessionFactory;
+
+    private HibernateUtil() {
+        
+    }
+    public static synchronized SessionFactory getSessionFactory() {
+        try {
+            if (sessionFactory == null) {
+                StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
+//                        .configure("hibernate.cfg.xml").build();
+                 .configure("file:hibernate.cfg.xml").build();
+
+                Metadata metaData = new MetadataSources(standardRegistry)
+                        .getMetadataBuilder()
+                        .build();
+
+                sessionFactory = metaData.getSessionFactoryBuilder().build();
+            }
+            return sessionFactory;
+        } catch (Throwable ex) {
+            throw new ExceptionInInitializerError(ex);
+        }
+    }
+
+
+    public static void shutdown() {
+        if(sessionFactory != null) 
+            sessionFactory.close();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/JsonStructureDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/JsonStructureDAO.java
new file mode 100644
index 0000000..793e184
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/JsonStructureDAO.java
@@ -0,0 +1,43 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.JsonStructure;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Query;
+import org.hibernate.Session;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonStructureDAO {
+
+    private JsonStructureDAO() {
+
+    }
+
+    public static JsonStructure loadSubJsonStructure(JsonStructure jsonStructure) {
+        List<JsonStructure> children = getChildren(jsonStructure.getId());
+        List<JsonStructure> subJsonStructure = new ArrayList<>();
+
+        for (JsonStructure j : children) {
+            subJsonStructure.add(loadSubJsonStructure(j));
+        }
+        jsonStructure.setFields(subJsonStructure);
+
+        return jsonStructure;
+    }
+
+    private static List<JsonStructure> getChildren(Long id) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("SELECT c from JsonStructure c where c.parent.id = :id ");
+            query.setParameter("id", id);
+
+            return (List<JsonStructure>) query.getResultList();
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/MetaAlphaNumeriqueFieldDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/MetaAlphaNumeriqueFieldDAO.java
new file mode 100644
index 0000000..7126e67
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/MetaAlphaNumeriqueFieldDAO.java
@@ -0,0 +1,31 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MetaAlphaNumeriqueFieldDAO {
+    
+    private MetaAlphaNumeriqueFieldDAO() {
+        
+    }
+    
+    public static void deleteByAlphaNumeriqueField(AlphaNumeriqueField alphaNumeriqueField) {
+          try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("delete from MetaAlphaNumeriqueField t where t.alphaNumeriqueField.id = :alphaNumeriqueFieldId");
+            query.setParameter("alphaNumeriqueFieldId", alphaNumeriqueField.getId());
+            
+            session.beginTransaction();
+            query.executeUpdate();
+            session.getTransaction().commit();
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ModeleJsonDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ModeleJsonDAO.java
new file mode 100644
index 0000000..177f86f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ModeleJsonDAO.java
@@ -0,0 +1,32 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.util.Optional;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonDAO {
+    private ModeleJsonDAO() {
+        
+    }
+    
+     public static Optional<ModeleJson> findByCodeTypeFichier(TypeFichier typeFichier) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from ModeleJson where typeFichier.code = :code");
+            query.setParameter("code", typeFichier.getCode());
+
+            return query.uniqueResultOptional();
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TacheDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TacheDAO.java
new file mode 100644
index 0000000..6c0f436
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TacheDAO.java
@@ -0,0 +1,43 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import java.util.List;
+import java.util.Optional;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TacheDAO {
+
+    private TacheDAO() {
+
+    }
+
+    public static Optional<Tache> getTacheByLibelle(String libelle) {
+        
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from Tache t where t.libelle = :libelle");
+            query.setParameter("libelle", libelle);
+            
+            return query.uniqueResultOptional();
+        }
+    }
+
+    public static List<Tache> getTacheByTypeFichier(TypeFichier typeFichier) {
+        
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from Tache t where t.typeFichier.code = :codeTypeFichier");
+            query.setParameter("codeTypeFichier", typeFichier.getCode());
+            
+            return query.getResultList();
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierDAO.java
new file mode 100644
index 0000000..ca67879
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierDAO.java
@@ -0,0 +1,104 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.model.Validateur;
+import java.util.List;
+import java.util.Optional;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierDAO {
+
+    private TypeFichierDAO() {
+
+    }
+
+    public static List<TypeFichier> getAllTypeFichWithoutValidateur() {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from TypeFichier t where t.code not in"
+                    + "(select t from TypeFichier t, Validateur v  where t.code = v.codeTypeFichier)");
+            return query.getResultList();
+        }
+    }
+
+    public static Optional<TypeFichier> findByCode(TypeFichier t) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from TypeFichier t where t.code = :code");
+            query.setParameter("code", t.getCode());
+            return query.uniqueResultOptional();
+        }
+    }
+
+    public static Optional<TypeFichier> findByCode(String codeTypeFichier) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from TypeFichier t where t.code = :code");
+            query.setParameter("code", codeTypeFichier);
+            return query.uniqueResultOptional();
+        }
+    }
+
+    public static List<TypeFichier> getAllTypeFichWithoutParaAuto() {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from TypeFichier t where t.code not in"
+                    + "(select t from TypeFichier t, ParametreAutomatique p  where t.code = p.codeTypeFichier)");
+            return query.getResultList();
+        }
+    }
+
+    public static List<TypeFichier> getAllTypeFichierWithValidateur() {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from TypeFichier t, Validateur v where v.codeTypeFichier = t.code");
+            return query.getResultList();
+        }
+    }
+    
+    public static List<TypeFichier> getAllTypeFichierWithModelJson() {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("select t from TypeFichier t, ModeleJson m where t.code = m.typeFichier.code");
+            return query.getResultList();
+        }
+    }
+
+    public static void delete(TypeFichier typeFichier) throws Exception {
+        List<ConversionModel> conversionModels = ConversionModelDAO.findByTypeFichier(typeFichier);
+        Optional<Validateur> opt = ValidateurDAO.findByCodeTypeFichier(typeFichier.getCode());
+        List<Tache> taches = TacheDAO.getTacheByTypeFichier(typeFichier);
+        List<AlphaNumeriqueField> alphaFields = AlphaNumeriqueFieldDAO.findByCodeTypeFichier(typeFichier.getCode());
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            session.beginTransaction();
+
+            for (ConversionModel model : conversionModels) {
+                session.delete(model);
+            }
+
+            for(AlphaNumeriqueField field : alphaFields) {
+                session.delete(field);
+            }
+            
+            if (opt.isPresent()) {
+                session.delete(opt.get());
+            }
+
+            for (Tache tache : taches) {
+                session.delete(tache);
+            }
+            
+            session.delete(typeFichier);
+
+            session.getTransaction().commit();
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierJsonDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierJsonDAO.java
new file mode 100644
index 0000000..9e82b8f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/TypeFichierJsonDAO.java
@@ -0,0 +1,40 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import java.util.List;
+import java.util.Optional;
+import javax.persistence.Query;
+import org.hibernate.Session;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierJsonDAO {
+
+    private TypeFichierJsonDAO() {
+    }
+
+    public static TypeFichierJson getByTypeFichier(String codeTypeFichier) {
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            Query query = session.createQuery("SELECT t from TypeFichierJson t where t.typeFichier.code = :code ");
+            query.setParameter("code", codeTypeFichier);
+
+            Optional<TypeFichierJson> optTypeFichierJson = ((List<TypeFichierJson>) query.getResultList()).stream().findFirst();
+
+            if (!optTypeFichierJson.isPresent()) {
+                return null;
+            }
+            TypeFichierJson typeFichierJson = optTypeFichierJson.get();
+            JsonStructure jsonStructure = JsonStructureDAO.loadSubJsonStructure(typeFichierJson.getJsonStructure());
+            typeFichierJson.setJsonStructure(jsonStructure);
+            
+            return typeFichierJson;
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ValidateurDAO.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ValidateurDAO.java
new file mode 100644
index 0000000..ca63c0f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/dao/ValidateurDAO.java
@@ -0,0 +1,101 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.dao;
+
+import com.megatim.typefichier.validator.model.enums.TypeDonnee;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.util.ParserUtils;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurDAO {
+
+    private ValidateurDAO() {
+
+    }
+
+    public static Optional<Validateur> findByCodeTypeFichier(String code) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from Validateur where codeTypeFichier= :code");
+            query.setParameter("code", code);
+
+            return query.uniqueResultOptional();
+        }
+    }
+
+    public static void delete(Validateur t) {
+        List<AlphaNumeriqueField> alphaFields = AlphaNumeriqueFieldDAO.findByCodeTypeFichier(t.getCodeTypeFichier());
+
+        alphaFields.forEach(a -> {
+            MetaAlphaNumeriqueFieldDAO.deleteByAlphaNumeriqueField(a);
+        });
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+            session.beginTransaction();
+
+            for (AlphaNumeriqueField field : alphaFields) {
+                Query query = session.createQuery("delete from MetaAlphaNumeriqueField t where t.alphaNumeriqueField.id = :alphaNumeriqueFieldId");
+                query.setParameter("alphaNumeriqueFieldId", field.getId());
+
+                query.executeUpdate();
+                
+                session.delete(field);
+            }
+
+            session.delete(t);
+            session.getTransaction().commit();
+        }
+    }
+
+    /**
+     * Méthode qui extrait les champs alphanumériques dont la taille est
+     * supérieure à 255, pour un éventuel troncage
+     *
+     * @param validateur
+     * @return
+     * @throws Exception
+     */
+    private List<AlphaNumeriqueField> getAplphaNumeriqueFields(Validateur validateur) throws Exception {
+        Map<Integer, Map> mapElements = ParserUtils.getValidateurElements(validateur);
+
+        List<Map<String, String>> paramsList = Arrays.asList(mapElements.values().toArray(new Map[mapElements.size()]));
+
+        List<Map> alphanumMap = paramsList.stream()
+                .filter(m -> m.containsKey("typeDonnee")
+                && m.get("typeDonnee").equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())
+                )
+                .collect(Collectors.toList());
+
+        List<AlphaNumeriqueField> alphaNumeriqueFields = new ArrayList<>();
+
+        alphanumMap.stream().forEach(m -> {
+
+            String errorCode = (String) m.get("error-code");
+            String codeTypeFichier = validateur.getCodeTypeFichier();
+            int taille = Integer.parseInt((String) m.get("taille"));
+            int index = Integer.parseInt((String) m.get("index"));
+
+            //Dans le validateur xml, error-code = codeTypeFichier + codeColonne
+            String codeColonne = errorCode.substring(codeTypeFichier.length());
+
+            alphaNumeriqueFields.add(new AlphaNumeriqueField(validateur, TypeDonnee.ALPHANUMERIQUE.getValue(), codeColonne, taille, index));
+        });
+
+        return alphaNumeriqueFields;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/DataType.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/DataType.java
new file mode 100644
index 0000000..6400197
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/DataType.java
@@ -0,0 +1,38 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxconvert.enums;
+
+import java.util.stream.Stream;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public enum DataType {
+    
+    CSV("CSV"), XLSX("Excel-XLSX"), XLS("Excel-XLS"), TXT("Texte(TXT)"),JSON("JSON");
+
+    private final String  dataType;
+
+    private DataType(String dataType) {
+        this.dataType = dataType;
+    }
+
+     public static DataType of(String dataType) {
+        return Stream.of(DataType.values())
+          .filter(p -> p.getDataType().equals(dataType))
+          .findFirst()
+          .orElseThrow(IllegalArgumentException::new);
+    }
+     
+    public String getDataType() {
+        return dataType;
+    }
+            
+    @Override
+    public String toString() {
+        return dataType;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/JournalStatut.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/JournalStatut.java
new file mode 100644
index 0000000..d247f3d
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/JournalStatut.java
@@ -0,0 +1,50 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxconvert.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum JournalStatut {
+    SUCCES("Succès de la validation"), 
+    SUCCES_GEN_TXT("Succès génération du fichier texte"), 
+    ECHEC_REPERTOIRE("Echec, car Répertoires non configurés"), 
+    ECHEC_VALIDATEUR("Echec, car Validateur non trouvé"), 
+    ECHEC_GEN_TXT("Echec génération du fichier texte"), 
+    ECHEC_MODELE_JSON("Echec de la validation, car Modèle JSON non trouvé"),
+    ECHEC("Echec de la validation");
+    
+    private final String description;
+    
+    private static final Map<String, JournalStatut> BY_DESCRIPTION = new HashMap<>();
+    
+    static {
+        for(JournalStatut js : values()) {
+            BY_DESCRIPTION.put(js.getDescription(), js);
+        }
+    }
+    
+    JournalStatut(String desc) {
+        description = desc;
+    }
+    
+     public static JournalStatut valueOfDescription(String desc) {
+        return BY_DESCRIPTION.get(desc);
+    }
+     
+    public String getDescription() {
+        return description;
+    }
+    
+    @Override
+    public String toString() {
+        return this.description;
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/StatutConverter.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/StatutConverter.java
new file mode 100644
index 0000000..a9aeeac
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/enums/StatutConverter.java
@@ -0,0 +1,38 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.enums;
+
+import java.util.stream.Stream;
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Converter(autoApply = true)
+public class StatutConverter implements AttributeConverter<JournalStatut, String> {
+
+    @Override
+    public String convertToDatabaseColumn(JournalStatut js) {
+        if(js == null) {
+            return null;
+        }
+        return js.getDescription();
+    }
+
+    @Override
+    public JournalStatut convertToEntityAttribute(String description) {
+         if (description == null) {
+            return null;
+        }
+
+        return Stream.of(JournalStatut.values())
+          .filter(c -> c.getDescription().equals(description))
+          .findFirst()
+          .orElseThrow(IllegalArgumentException::new);
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/AttributeFormatException.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/AttributeFormatException.java
new file mode 100644
index 0000000..4b587c2
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/AttributeFormatException.java
@@ -0,0 +1,23 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.exceptions;
+
+/**
+ *
+ * @author mela
+ */
+public class AttributeFormatException extends RuntimeException {
+     public AttributeFormatException(String message) {
+        super(message);
+    }
+
+    public AttributeFormatException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public AttributeFormatException(Throwable cause) {
+        super(cause);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ConfigException.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ConfigException.java
new file mode 100644
index 0000000..27ee0c1
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ConfigException.java
@@ -0,0 +1,24 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.exceptions;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ConfigException extends RuntimeException {
+    public ConfigException(String message) {
+        super(message);
+    }
+    
+    public ConfigException(String message, Throwable cause) {
+        super(message, cause);
+    }
+    
+    public ConfigException(Throwable cause) {
+        super(cause);
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ValidatorException.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ValidatorException.java
new file mode 100644
index 0000000..75a599b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/exceptions/ValidatorException.java
@@ -0,0 +1,26 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.exceptions;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidatorException extends RuntimeException {
+    
+    public ValidatorException(String message) {
+        super(message);
+        
+    }
+    
+    public ValidatorException(Throwable cause) {
+        super(cause);
+    }
+    
+    public ValidatorException(String message,Throwable cause) {
+        super(message, cause);
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/AproposEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/AproposEditFormController.java
new file mode 100644
index 0000000..b25a800
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/AproposEditFormController.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.Node;
+import javafx.scene.input.MouseEvent;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class AproposEditFormController implements Initializable {
+    
+    private double x, y;
+    
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        
+    }
+     
+//    @FXML
+//    public void close(ActionEvent e) {
+//        //Fermeture de la console
+//        ((Stage) ((Node) e.getSource()).getScene().getWindow()).close();
+//    }
+
+    @FXML
+    void mouseDraggedTitleBar(MouseEvent event) {
+        Stage currentStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
+        currentStage.setX(event.getScreenX() - x);
+        currentStage.setY(event.getScreenY() - y);
+    }
+
+    @FXML
+    void mousePressedTitleBar(MouseEvent event) {
+        //Stage currentStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
+        x = event.getSceneX();
+        y = event.getSceneY();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConfigEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConfigEditFormController.java
new file mode 100644
index 0000000..0a764f7
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConfigEditFormController.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/javafx/FXMLController.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.CustomDirectoryChooser;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+
+/**
+ * FXML Controller class
+ *
+ * @author mela
+ */
+public class ConfigEditFormController implements Initializable {
+
+    @Champ(mappedBy = "errorDir")
+    @FXML
+    private CustomDirectoryChooser errorDirectoryChooser;
+
+    @Champ(mappedBy = "validatorsDir")
+    @FXML
+    private CustomDirectoryChooser validatorsDirectoryChooser;
+
+    @Champ(mappedBy = "datasDir")
+    @FXML
+    private CustomDirectoryChooser datasDirectoryChooser;
+
+    @Champ(mappedBy = "outputDir")
+    @FXML
+    private CustomDirectoryChooser outputDirectoryChooser;
+    
+    @Champ(mappedBy = "archivesDir")
+    @FXML
+    private CustomDirectoryChooser archivesDirectoryChooser;
+
+    /**
+     * Initializes the controller class.
+     *
+     * @param url
+     * @param rb
+     */
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConversionModelEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConversionModelEditFormController.java
new file mode 100644
index 0000000..fe2697f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ConversionModelEditFormController.java
@@ -0,0 +1,218 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractNestedEntityTable;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customcontrols.CustomDirectoryChooser;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.controller.table.MetaAlphaNumeriqueTable;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TabPane;
+import javafx.scene.control.TextField;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurLigne", type = Delimiteur.class)
+    private ComboBox<Delimiteur> delimiteurLigne;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurColonne", type = Delimiteur.class)
+    private ComboBox<Delimiteur> delimiteurColonne;
+
+    @FXML
+    @Champ(mappedBy = "dataType", type = DataType.class)
+    private ComboBox<DataType> dataTypeComboBox;
+    
+    @FXML
+    @Champ(mappedBy = "repertoireSource")
+    private CustomDirectoryChooser repertoireSource;
+
+    @FXML
+    @Champ(mappedBy = "repertoireDestination")
+    private CustomDirectoryChooser repertoireDestination;
+
+    @FXML
+    @Champ(mappedBy = "repertoireErreur")
+    private CustomDirectoryChooser repertoireErreur;
+
+    @FXML
+    @Champ(mappedBy = "strictValidation", type = Boolean.class)
+    private CheckBox strictValidationCheckbox;
+
+    @FXML
+    @Champ(mappedBy = "headerPresent", type = Boolean.class)
+    private CheckBox headerPresentCheckbox;
+
+    @FXML
+    private CheckBox saisieAlphaNumeriqueFieldChecBox;
+    
+    @FXML
+    @Champ(mappedBy = "libelle")
+    private TextField libelleTextField;
+
+    @FXML
+    @Champ(mappedBy = "metaAlphaNumeriqueFields", type = MetaAlphaNumeriqueField.class, update = true)
+    private AbstractNestedEntityTable<MetaAlphaNumeriqueField, ConversionModel> metaAlphaNumeriqueFieldAbstractTable;
+    
+    @FXML
+    private TabPane tabPane;
+
+    private final MetaAlphaNumeriqueFieldService metaAlphaNumeriqueFieldService = MetaAlphaNumeriqueFieldService.getInstance();
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        
+        tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
+
+        metaAlphaNumeriqueFieldAbstractTable.setParentFieldName("configurationConversion");
+        saisieAlphaNumeriqueFieldChecBox.setDisable(true);
+        metaAlphaNumeriqueFieldAbstractTable.setDisable(true);
+
+        delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurColonne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_COLONNE.values()
+        ));
+
+        delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurLigne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_LIGNE.values()
+        ));
+
+        dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+
+        dataTypeComboBox.setItems(FXCollections.observableArrayList(
+                DataType.values()
+        ));
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        metaAlphaNumeriqueFieldAbstractTable.setClazz(MetaAlphaNumeriqueField.class);
+        metaAlphaNumeriqueFieldAbstractTable.setColums(Arrays.asList(
+                MetaAlphaNumeriqueTable.typeFichierColumn(),MetaAlphaNumeriqueTable.typeDonneeColumn(),
+                MetaAlphaNumeriqueTable.codeColonneColumn(),
+                MetaAlphaNumeriqueTable.tailleColonneColumn(),
+                MetaAlphaNumeriqueTable.indexColonneColumn()
+        ));
+
+        metaAlphaNumeriqueFieldAbstractTable.setGenericCrudService(metaAlphaNumeriqueFieldService);
+
+        saisieAlphaNumeriqueFieldChecBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue) {
+                typeFichierAbstractSelectItem.setDisable(true);
+                saisieAlphaNumeriqueFieldChecBox.setDisable(true);
+            }
+        });
+
+        typeFichierAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+            if (newValue != null) {
+                saisieAlphaNumeriqueFieldChecBox.setDisable(typeFichierAbstractSelectItem == null);
+            }
+        });
+
+        initElements();
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+        return typeFichierAbstractSelectItem;
+    }
+
+    public CheckBox getSaisieAlphaNumeriqueFieldChecBox() {
+        return saisieAlphaNumeriqueFieldChecBox;
+    }
+
+    public AbstractNestedEntityTable<MetaAlphaNumeriqueField, ConversionModel> getMetaAlphaNumeriqueFieldAbstractTable() {
+        return metaAlphaNumeriqueFieldAbstractTable;
+    }
+
+    public CheckBox getStrictValidationCheckbox() {
+        return strictValidationCheckbox;
+    }
+
+    public ComboBox<Delimiteur> getDelimiteurLigne() {
+        return delimiteurLigne;
+    }
+
+    public ComboBox<Delimiteur> getDelimiteurColonne() {
+        return delimiteurColonne;
+    }
+
+    public ComboBox<DataType> getDataTypeComboBox() {
+        return dataTypeComboBox;
+    }
+
+    public CheckBox getHeaderPresentCheckbox() {
+        return headerPresentCheckbox;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DataFileToJsonFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DataFileToJsonFormController.java
new file mode 100644
index 0000000..fb24850
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DataFileToJsonFormController.java
@@ -0,0 +1,136 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customcontrols.CustomFileChooser;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DataFileToJsonFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "fileToConvertPath")
+    private CustomFileChooser fileToConvertFileChooser;
+
+    @FXML
+    @Champ(mappedBy = "validateurPath")
+    private CustomFileChooser validateurFileChooser;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurLigne")
+    private ComboBox<Delimiteur> delimiteurLigne;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurColonne")
+    private ComboBox<Delimiteur> delimiteurColonne;
+
+    @FXML
+    @Champ(mappedBy = "dataType")
+    private ComboBox<DataType> dataTypeComboBox;
+
+    @FXML
+    @Champ(mappedBy = "headerPresent", type = Boolean.class)
+    private CheckBox headerPresentCheckbox;
+
+    private final TypeFichierService typeFichierService = TypeFichierService.getInstance();
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurColonne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_COLONNE.values()
+        ));
+
+        delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurLigne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_LIGNE.values()
+        ));
+
+        delimiteurColonne.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull()
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+        );
+        delimiteurLigne.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull()
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+        );
+        headerPresentCheckbox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON));
+
+        dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+
+        dataTypeComboBox.setItems(FXCollections.observableArrayList(
+                DataType.values()
+        ));
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        initElements();
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(typeFichierService.getAll());
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DecryptageAESEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DecryptageAESEditFormController.java
new file mode 100644
index 0000000..29a67b0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/DecryptageAESEditFormController.java
@@ -0,0 +1,76 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.CustomDirectoryChooser;
+import com.megatimfx.common.customcontrols.CustomFileChooser;
+import com.megatim.fdxconvert.App;
+import java.io.File;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseEvent;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class DecryptageAESEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "filePath")
+    private CustomFileChooser fileToDecrypt;
+
+    @FXML
+    @Champ(mappedBy = "keyToDecrypt")
+    private PasswordField keyToDecryptField;
+
+    @FXML
+    @Champ(mappedBy = "keyConfirmation")
+    private PasswordField keyConfirmationField;
+
+    @FXML
+    @Champ(mappedBy = "outputDir")
+    private CustomDirectoryChooser outputDir;
+
+    @FXML
+    private TextField showKeyTextField;
+
+    @FXML
+    private ImageView eyeImageView;
+
+    private boolean passwordVisible;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+
+        keyToDecryptWithEye();
+    }
+
+    @FXML
+    void eyeOnMousePressed(MouseEvent event) {
+        if (passwordVisible) {
+            showKeyTextField.setVisible(false);
+            keyToDecryptField.setVisible(true);
+            passwordVisible = false;
+        } else {
+            keyToDecryptField.setVisible(false);
+            showKeyTextField.setVisible(true);
+            passwordVisible = true;
+        }
+    }
+
+    private void keyToDecryptWithEye() {
+        passwordVisible = false;
+        keyToDecryptField.textProperty().bindBidirectional(showKeyTextField.textProperty());
+        showKeyTextField.setVisible(false);
+        keyToDecryptField.setVisible(true);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/FileToValidateEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/FileToValidateEditFormController.java
new file mode 100644
index 0000000..c3189ec
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/FileToValidateEditFormController.java
@@ -0,0 +1,305 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractNestedEntityTable;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customcontrols.CustomFileChooser;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.controller.table.ConversionModelTable;
+import com.megatim.fdxconvert.controller.table.MetaAlphaNumeriqueTable;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.dao.TypeFichierDAO;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.ConversionModelService;
+import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TabPane;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class FileToValidateEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    private AbstractSelectionItem<ConversionModel> conversionModelAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurLigne")
+    private ComboBox<Delimiteur> delimiteurLigne;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurColonne")
+    private ComboBox<Delimiteur> delimiteurColonne;
+
+    @FXML
+    @Champ(mappedBy = "dataType")
+    private ComboBox<DataType> dataTypeComboBox;
+
+    @FXML
+    @Champ(mappedBy = "strictValidation", type = Boolean.class)
+    private CheckBox strictValidationCheckbox;
+
+    @FXML
+    @Champ(mappedBy = "headerPresent", type = Boolean.class)
+    private CheckBox headerPresentCheckbox;
+
+    @FXML
+    private CheckBox saisieAlphaNumeriqueFieldChecBox;
+    
+    @FXML
+    @Champ(mappedBy = "filePath")
+    private CustomFileChooser fileToValidateFileChooser;
+
+    @FXML
+    @Champ(mappedBy = "metaAlphaNumeriqueFields", type = MetaAlphaNumeriqueField.class, update = true)
+    private AbstractNestedEntityTable<MetaAlphaNumeriqueField, FileToValidate> metaAlphaNumeriqueFieldAbstractTable;
+
+    @FXML
+    private TabPane tabPane;
+    
+    @FXML
+    private CheckBox useExistingConversionModelCheckBox;
+
+    private final MetaAlphaNumeriqueFieldService metaAlphaNumeriqueFieldService = MetaAlphaNumeriqueFieldService.getInstance();
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+    private final Set<ConversionModel> conversionModelSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
+
+        saisieAlphaNumeriqueFieldChecBox.setDisable(true);
+        metaAlphaNumeriqueFieldAbstractTable.setDisable(true);
+
+        delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurColonne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_COLONNE.values()
+        ));
+
+        delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurLigne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_LIGNE.values()
+        ));
+
+        delimiteurColonne.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull()
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+        );
+        
+        delimiteurLigne.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull()
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+        );
+        
+        strictValidationCheckbox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull()
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.TXT))
+                .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON))
+        );
+
+        useExistingConversionModelCheckBox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON));
+        conversionModelAbstractSelectItem.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON));
+        headerPresentCheckbox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON));
+        
+        dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+
+        dataTypeComboBox.setItems(FXCollections.observableArrayList(
+                DataType.values()
+        ));
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        conversionModelAbstractSelectItem.setTitle("Choix du modèle de conversion");
+        conversionModelAbstractSelectItem.setColumns(Arrays.asList(
+                ConversionModelTable.libelleColumn(),
+                ConversionModelTable.typeFichierColumn(), ConversionModelTable.dataTypeColumn(),
+                ConversionModelTable.headerPresentColumn(), ConversionModelTable.strictValidationColumn(),
+                ConversionModelTable.delimiteurLigneColumn(),
+                ConversionModelTable.delimiteurColonneColumn()
+        ));
+        conversionModelAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        metaAlphaNumeriqueFieldAbstractTable.setClazz(MetaAlphaNumeriqueField.class);
+        metaAlphaNumeriqueFieldAbstractTable.setColums(Arrays.asList(
+                MetaAlphaNumeriqueTable.typeFichierColumn(),MetaAlphaNumeriqueTable.typeDonneeColumn(),
+                MetaAlphaNumeriqueTable.codeColonneColumn(),
+                MetaAlphaNumeriqueTable.tailleColonneColumn(),
+                MetaAlphaNumeriqueTable.indexColonneColumn()
+        ));
+
+        metaAlphaNumeriqueFieldAbstractTable.setGenericCrudService(metaAlphaNumeriqueFieldService);
+
+        saisieAlphaNumeriqueFieldChecBox.setOnAction(event -> {
+            typeFichierAbstractSelectItem.setDisable(saisieAlphaNumeriqueFieldChecBox.isSelected());
+        });
+
+        saisieAlphaNumeriqueFieldChecBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue) {
+                typeFichierAbstractSelectItem.setDisable(true);
+                saisieAlphaNumeriqueFieldChecBox.setDisable(true);
+            }
+        });
+
+        typeFichierAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+            if (newValue != null) {
+                saisieAlphaNumeriqueFieldChecBox.setDisable(typeFichierAbstractSelectItem == null);
+            }
+        });
+
+        conversionModelAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue != null) {
+                dataTypeComboBox.setValue(newValue.getDataType());
+                
+                if (newValue.getCodeDelimiteurColonne()!= null) {
+                    delimiteurColonne.setValue(App.DELIMITEURS_COLONNE.get(newValue.getCodeDelimiteurColonne()));
+                }
+
+                if (newValue.getCodeDelimiteurLigne()!= null) {
+                    delimiteurLigne.setValue(App.DELIMITEURS_LIGNE.get(newValue.getCodeDelimiteurLigne()));
+                }
+
+                strictValidationCheckbox.setSelected(newValue.isStrictValidation());
+
+                headerPresentCheckbox.setSelected(newValue.isHeaderPresent());
+
+                metaAlphaNumeriqueFieldAbstractTable.setElements(newValue.getMetaAlphaNumeriqueFields());
+
+                typeFichierAbstractSelectItem.setOldElement(newValue.getTypeFichier());
+            }
+        });
+        
+        conversionModelAbstractSelectItem.disableProperty().bind(useExistingConversionModelCheckBox.selectedProperty().not());
+
+        initElements();
+    }
+
+    public ComboBox<DataType> getDataTypeComboBox() {
+        return dataTypeComboBox;
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierDAO.getAllTypeFichierWithValidateur());
+                typeFichierSet.addAll(TypeFichierDAO.getAllTypeFichierWithModelJson());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+
+        Task<Void> task1 = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                conversionModelSet.clear();
+                conversionModelSet.addAll(ConversionModelService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task1.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task1.setOnSucceeded(e -> {
+            conversionModelAbstractSelectItem.setElements(conversionModelSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task1.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task1.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread1 = new Thread(task1);
+        thread1.setDaemon(true);
+        thread1.start();
+
+    }
+
+    public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+        return typeFichierAbstractSelectItem;
+    }
+
+    public CheckBox getSaisieAlphaNumeriqueFieldChecBox() {
+        return saisieAlphaNumeriqueFieldChecBox;
+    }
+
+    public void setSaisieAlphaNumeriqueFieldChecBox(CheckBox saisieAlphaNumeriqueFieldChecBox) {
+        this.saisieAlphaNumeriqueFieldChecBox = saisieAlphaNumeriqueFieldChecBox;
+    }
+
+    public void setTypeFichierAbstractSelectItem(AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem) {
+        this.typeFichierAbstractSelectItem = typeFichierAbstractSelectItem;
+    }
+
+    public AbstractNestedEntityTable<MetaAlphaNumeriqueField, FileToValidate> getMetaAlphaNumeriqueFieldAbstractTable() {
+        return metaAlphaNumeriqueFieldAbstractTable;
+    }
+
+    public void setMetaAlphaNumeriqueFieldAbstractTable(AbstractNestedEntityTable<MetaAlphaNumeriqueField, FileToValidate> metaAlphaNumeriqueFieldAbstractTable) {
+        this.metaAlphaNumeriqueFieldAbstractTable = metaAlphaNumeriqueFieldAbstractTable;
+    }
+
+    public CheckBox getStrictValidationCheckbox() {
+        return strictValidationCheckbox;
+    }
+
+    public void setStrictValidationCheckbox(CheckBox strictValidationCheckbox) {
+        this.strictValidationCheckbox = strictValidationCheckbox;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ImportTypeFichierEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ImportTypeFichierEditFormController.java
new file mode 100644
index 0000000..3730775
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ImportTypeFichierEditFormController.java
@@ -0,0 +1,50 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.CustomFileChooser;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ImportTypeFichierEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "delimiteurLigne")
+    private ComboBox<Delimiteur> delimiteurLigne;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurColonne")
+    private ComboBox<Delimiteur> delimiteurColonne;
+
+    @FXML
+    @Champ(mappedBy = "filePath")
+    private CustomFileChooser fileToImportCustomFile;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurColonne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_COLONNE.values()
+        ));
+
+        delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurLigne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_LIGNE.values()
+        ));
+
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/JournalEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/JournalEditFormController.java
new file mode 100644
index 0000000..5477fc4
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/JournalEditFormController.java
@@ -0,0 +1,80 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatim.fdxconvert.enums.JournalStatut;
+import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ResourceBundle;
+import java.util.function.UnaryOperator;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextField;
+import javafx.scene.control.TextFormatter;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "dateAction", type = java.time.LocalDateTime.class)
+    private TextField dateActionTextfield;
+
+    @FXML
+    @Champ(mappedBy = "statut", type = JournalStatut.class)
+    private TextField statutActionTextfield;
+
+    @FXML
+    @Champ(mappedBy = "codeTypefichier", type = String.class)
+    private TextField typefichierfichierTextfield;
+
+    @FXML
+    @Champ(mappedBy = "sourceDirectory")
+    private TextField sourceDirectoryTextfield;
+
+    @FXML
+    @Champ(mappedBy = "sourceFileName")
+    private TextField sourceFileNameTextfield;
+
+    @FXML
+    private TextField nombreLignesTextfield;
+
+    @FXML
+    @Champ(mappedBy = "destinationDirectory")
+    private TextField destinationDirectoryTextfield;
+
+    @FXML
+    @Champ(mappedBy = "destinationFileName")
+    private TextField destinationFileNameTextfield;
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        UnaryOperator<TextFormatter.Change> filterDate = change -> {
+            
+            if (change.getControlNewText() != null && !change.getControlNewText().isEmpty()) {
+
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                LocalDateTime dateTime = LocalDateTime.parse(change.getControlNewText());
+                change.setText(dateTime.format(formatter));
+
+                return change;
+            } else {
+                return null;
+            }
+        };
+        TextFormatter<String> dateFormatter = new TextFormatter<>(filterDate);
+        dateActionTextfield.setTextFormatter(dateFormatter);
+
+    }
+
+    public TextField getNombreLignesTextfield() {
+        return nombreLignesTextfield;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/MetaAlphaNumeriqueFieldEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/MetaAlphaNumeriqueFieldEditFormController.java
new file mode 100644
index 0000000..a66c6ef
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/MetaAlphaNumeriqueFieldEditFormController.java
@@ -0,0 +1,95 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.AlphaNumeriqueFieldTable;
+import com.megatim.fdxconvert.dao.AlphaNumeriqueFieldDAO;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.AlphaNumeriqueFieldService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MetaAlphaNumeriqueFieldEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "alphaNumeriqueField", type = AlphaNumeriqueField.class, update = false)
+    private AbstractSelectionItem<AlphaNumeriqueField> alphaNumeriqueFieldAbstractSelectItem;
+
+    private AlphaNumeriqueFieldService alphaNumeriqueFieldService = AlphaNumeriqueFieldService.getInstance();
+
+    private TypeFichier typeFichier;
+
+    private final Set<AlphaNumeriqueField> alphaNumeriqueFieldSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        alphaNumeriqueFieldAbstractSelectItem.setTitle("Choix des colonnes à tronquer");
+        alphaNumeriqueFieldAbstractSelectItem.setColumns(Arrays.asList(
+                AlphaNumeriqueFieldTable.codeColonneColumn(),
+                AlphaNumeriqueFieldTable.tailleColumn(),
+                AlphaNumeriqueFieldTable.indexColumn()
+        ));
+        alphaNumeriqueFieldAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("codeColonne", "Code du champ"),
+                new Pair<>("taille", "Taille du champ"),
+                new Pair<>("index", "Index du champ")
+        ));
+
+        initElements();
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+
+                alphaNumeriqueFieldSet.clear();
+                
+                alphaNumeriqueFieldSet.addAll(AlphaNumeriqueFieldDAO.findByCodeTypeFichier(typeFichier.getCode()));
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            alphaNumeriqueFieldAbstractSelectItem.setElements(alphaNumeriqueFieldSet);
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    public TypeFichier getTypeFichier() {
+        return typeFichier;
+    }
+
+    public void setTypeFichier(TypeFichier typeFichier) {
+        this.typeFichier = typeFichier;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ModeleJsonEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ModeleJsonEditFormController.java
new file mode 100644
index 0000000..ab121f8
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ModeleJsonEditFormController.java
@@ -0,0 +1,254 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractNestedEntityTable;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.context.AbstractViewContext;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatim.fdxconvert.controller.MainController;
+import com.megatim.fdxconvert.controller.SubObjectEditDialogController;
+import com.megatim.fdxconvert.controller.table.StructureChampJsonTable;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.beans.property.Property;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.concurrent.Task;
+import javafx.event.Event;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Node;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableRow;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "objectName", type = String.class, update = false)
+    private TextField objectNameTextField;
+
+    @FXML
+    @Champ(mappedBy = "listeStructureJson", type = StructureChampJson.class, update = true)
+    private AbstractNestedEntityTable<StructureChampJson, ModeleJson> structureChampAbstractTable;
+
+    @FXML
+    private Button subTypeAddButton;
+
+    @FXML
+    private Button subTypeUpdateButton;
+
+    @FXML
+    private Button subTypeDeleteButton;
+
+    @FXML
+    private TableView subObjetsTableView;
+
+    @FXML
+    private TableColumn subObjectTableColumn;
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    private ObservableList<SubObject> subObjectListe = FXCollections.observableArrayList();
+    private Property<ObservableList<SubObject>> subModeleJsonListeProperty = new SimpleObjectProperty<>(subObjectListe);
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+
+        initSubObjetsTableView();
+
+        objectNameTextField.setText("");
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        structureChampAbstractTable.setClazz(StructureChampJson.class);
+        structureChampAbstractTable.setParentFieldName("modeleJson");
+        structureChampAbstractTable.setColums(Arrays.asList(
+                StructureChampJsonTable.codeColumn(),
+                StructureChampJsonTable.typeDonneeColumn(),
+                StructureChampJsonTable.simpleOrListeColumn()
+        ));
+
+        subTypeAddButton.setOnAction(event -> {
+            openSubObjectDialog(event, new SubObject(), TypeOperation.ADD);
+        });
+
+         subTypeUpdateButton.setOnMouseClicked(event -> {
+            updateSubObject(event);
+        });
+
+        subObjetsTableView.setRowFactory(rf -> {
+
+            TableRow<SubObject> row = new TableRow<>();
+            row.setOnMouseClicked(event -> {
+                if (event.getClickCount() == 2 && (!row.isEmpty())) {
+                    SubObject rowData = row.getItem();
+                    openSubObjectDialog(event, rowData, TypeOperation.VIEW);
+                }
+            });
+
+            return row;
+        });
+
+        initElements();
+    }
+
+    public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+        return typeFichierAbstractSelectItem;
+    }
+
+    public TextField getObjectNameTextField() {
+        return objectNameTextField;
+    }
+
+    public AbstractNestedEntityTable<StructureChampJson, ModeleJson> getStructureChampAbstractTable() {
+        return structureChampAbstractTable;
+    }
+
+    public ObservableList<SubObject> getSubObjectListe() {
+        return subObjectListe;
+    }
+
+    public Button getSubTypeAddButton() {
+        return subTypeAddButton;
+    }
+
+    public Button getSubTypeUpdateButton() {
+        return subTypeUpdateButton;
+    }
+
+    public Button getSubTypeDeleteButton() {
+        return subTypeDeleteButton;
+    }
+
+    public TableView getSubObjetsTableView() {
+        return subObjetsTableView;
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    private void initSubObjetsTableView() {
+
+        subObjetsTableView.itemsProperty().bind(subModeleJsonListeProperty);
+        subObjectTableColumn.setCellValueFactory(new PropertyValueFactory<SubObject, String>("subObjectName"));
+    }
+
+    private void openSubObjectDialog(Event event, SubObject subObject, TypeOperation typeOperation) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            SubObjectEditDialogController controller = new SubObjectEditDialogController();
+            controller.setModeleJsonEditFormController(this);
+            controller.setSubObjectsList(subObjectListe);
+
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Node source = (Node) event.getSource();
+
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            controller.initData(parentStage, typeOperation, subObject, null,
+                    subObjectListe, true);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+    
+     private void updateSubObject(Event event) {
+        Object selectedItem = subObjetsTableView.getSelectionModel().getSelectedItem();
+
+        if (selectedItem != null) {
+
+            SubObject subObjectToBeUpdated = (SubObject) selectedItem;
+            
+            openSubObjectDialog(event, subObjectToBeUpdated, TypeOperation.UPDATE);
+        }
+    }
+
+    private void setStage(Parent root) {
+        Scene scene = new Scene(root);
+        Stage stage = new Stage();
+
+        stage.setScene(scene);
+        stage.initStyle(StageStyle.UNDECORATED);
+        stage.initModality(Modality.APPLICATION_MODAL);
+        stage.show();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/StructureChampJsonEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/StructureChampJsonEditFormController.java
new file mode 100644
index 0000000..2a7262c
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/StructureChampJsonEditFormController.java
@@ -0,0 +1,88 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatimfx.common.annontations.Champ;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.model.SubObject;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author ASUS
+ */
+public class StructureChampJsonEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "typeDonnee", type = TypeDonnee.class)
+    private ComboBox<TypeDonnee> typeDonneeComboBox;
+
+    @FXML
+    @Champ(mappedBy = "typeOfSubObject", type = SubObject.class)
+    private ComboBox<SubObject> typeObjetComboBox;
+
+    @FXML
+    @Champ(mappedBy = "libelle", type = String.class)
+    private TextField libelleTextField;
+
+    @FXML
+    @Champ(mappedBy = "formatDate", type = String.class)
+    private ComboBox<String> formatDateComboBox;
+
+    @FXML
+    @Champ(mappedBy = "liste", type = Boolean.class)
+    private CheckBox listeCheckBox;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurDate", type = Delimiteur.class)
+    private ComboBox<Delimiteur> delimiteurDateComboBox;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        formatDateComboBox.setPromptText("Sélectionnez un élément dans la liste");
+        formatDateComboBox.setItems(FXCollections.observableArrayList(
+                App.FORMATS_DATE
+        ));
+
+        delimiteurDateComboBox.setDisable(true);
+        formatDateComboBox.setDisable(true);
+        
+        delimiteurDateComboBox.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurDateComboBox.setItems(FXCollections.observableArrayList(
+                App.SEPARATEURS_DATE.values()
+        ));
+
+        typeDonneeComboBox.setItems(FXCollections.observableArrayList(TypeDonnee.values()));
+
+        typeDonneeComboBox.setOnAction(event -> {
+
+            boolean isObjet = typeDonneeComboBox.getValue() != null && typeDonneeComboBox.getValue().equals(TypeDonnee.OBJET);
+            typeObjetComboBox.setDisable(!isObjet);
+            
+            boolean isDate = typeDonneeComboBox.getValue() != null && typeDonneeComboBox.getValue().equals(TypeDonnee.DATE);
+            formatDateComboBox.setDisable(!isDate);
+            delimiteurDateComboBox.setDisable(!isDate);
+        });
+
+    }
+
+    public TextField getLibelleTextField() {
+        return libelleTextField;
+    }
+
+    public ComboBox<SubObject> getTypeObjetComboBox() {
+        return typeObjetComboBox;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/SubObjectEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/SubObjectEditFormController.java
new file mode 100644
index 0000000..638a80b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/SubObjectEditFormController.java
@@ -0,0 +1,206 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.context.AbstractViewContext;
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatim.fdxconvert.controller.MainController;
+import com.megatim.fdxconvert.controller.StructureChampJsonEditDialogController;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.beans.property.Property;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.Event;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Node;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableRow;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SubObjectEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "subObjectName")
+    private TextField subObjectNameTextField;
+
+    @FXML
+    private Button addFieldButton;
+
+    @FXML
+    private Button updateFieldButton;
+
+    @FXML
+    private Button deleteFieldButton;
+
+    @FXML
+    private TableColumn<StructureChampJson, String> fieldNameTableColumn;
+
+    @FXML
+    private TableColumn<StructureChampJson, String> dataTypeTableColumn;
+
+    @FXML
+    private TableColumn<StructureChampJson, String> isListeTableColumn;
+
+    @FXML
+    private TableColumn<StructureChampJson, String> formatDateTableColumn;
+
+    @FXML
+    private TableColumn<StructureChampJson, String> separateurDateTableColumn;
+
+    @FXML
+    private TableView subObjectsFieldsTableView;
+
+    private ObservableList<StructureChampJson> subStructureJsonListe = FXCollections.observableArrayList();
+
+    private Property<ObservableList<StructureChampJson>> subChampListeProperty = new SimpleObjectProperty<>(subStructureJsonListe);
+
+    private ObservableList<SubObject> currentSubObjectsListe;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        initSubObjectsFieldsTableView();
+
+        subObjectNameTextField.setText("");
+
+        addFieldButton.setOnMouseClicked(event -> {
+            openStructureChampJsonDialog(event, new StructureChampJson(), TypeOperation.ADD);
+        });
+
+        updateFieldButton.setOnMouseClicked(event -> {
+            updateStructureJson(event);
+        });
+
+        subObjectsFieldsTableView.setRowFactory(rf -> {
+
+            TableRow<StructureChampJson> row = new TableRow<>();
+            row.setOnMouseClicked(event -> {
+                if (event.getClickCount() == 2 && (!row.isEmpty())) {
+                    StructureChampJson rowData = row.getItem();
+                    openStructureChampJsonDialog(event, rowData, TypeOperation.VIEW);
+                }
+            });
+
+            return row;
+        });
+    }
+
+    public ObservableList<StructureChampJson> getSubStructureJsonListe() {
+        return subStructureJsonListe;
+    }
+
+    public void setCurrentSubObjectsListe(ObservableList<SubObject> currentSubObjectsListe) {
+        this.currentSubObjectsListe = currentSubObjectsListe;
+    }
+
+    public TextField getSubObjectNameTextField() {
+        return subObjectNameTextField;
+    }
+
+    public Button getAddFieldButton() {
+        return addFieldButton;
+    }
+
+    public Button getUpdateFieldButton() {
+        return updateFieldButton;
+    }
+
+    public Button getDeleteFieldButton() {
+        return deleteFieldButton;
+    }
+
+    public TableView getSubObjectsFieldsTableView() {
+        return subObjectsFieldsTableView;
+    }
+
+    private void initSubObjectsFieldsTableView() {
+        subObjectsFieldsTableView.itemsProperty().bind(subChampListeProperty);
+
+        separateurDateTableColumn.setCellValueFactory(new PropertyValueFactory("delimiteurDate"));
+        formatDateTableColumn.setCellValueFactory(new PropertyValueFactory("formatDate"));
+        isListeTableColumn.setCellValueFactory(c -> {
+            if (c.getValue().isListe()) {
+                return new SimpleStringProperty("Oui");
+            } else {
+                return new SimpleStringProperty("Non");
+            }
+        });
+        dataTypeTableColumn.setCellValueFactory(new PropertyValueFactory("typeDonnee"));
+        fieldNameTableColumn.setCellValueFactory(new PropertyValueFactory("libelle"));
+
+    }
+
+
+    private void updateStructureJson(Event event) {
+        Object selectedItem = subObjectsFieldsTableView.getSelectionModel().getSelectedItem();
+
+        if (selectedItem != null) {
+
+            StructureChampJson structureToBeUpdated = (StructureChampJson) selectedItem;
+            openStructureChampJsonDialog(event, structureToBeUpdated, TypeOperation.UPDATE);
+        }
+    }
+
+    private void openStructureChampJsonDialog(Event event, StructureChampJson structureJson, TypeOperation typeOperation) {
+        try {
+
+            FXMLLoader loader = new FXMLLoader(
+                    (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null)
+                    ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml")
+                    : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL()
+            );
+            StructureChampJsonEditDialogController controller = new StructureChampJsonEditDialogController();
+            controller.setSubObjectEditFormController(this);
+            controller.setSubObjectsList(currentSubObjectsListe);
+
+            loader.setControllerFactory(param -> controller);
+
+            Parent root = loader.load();
+            Node source = (Node) event.getSource();
+
+            Stage parentStage = (Stage) source.getScene().getWindow();
+
+            controller.initData(parentStage, typeOperation, structureJson, null,
+                    subStructureJsonListe, true);
+
+            setStage(root);
+        } catch (IOException ex) {
+            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    private void setStage(Parent root) {
+        Scene scene = new Scene(root);
+        Stage stage = new Stage();
+
+        stage.setScene(scene);
+        stage.initStyle(StageStyle.UNDECORATED);
+        stage.initModality(Modality.APPLICATION_MODAL);
+        stage.show();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TacheEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TacheEditFormController.java
new file mode 100644
index 0000000..ca890e2
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TacheEditFormController.java
@@ -0,0 +1,411 @@
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractNestedEntityTable;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customcontrols.CustomDirectoryChooser;
+import com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.controller.table.ConversionModelTable;
+import com.megatim.fdxconvert.controller.table.MetaAlphaNumeriqueTable;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.ConversionModelService;
+import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.beans.value.ObservableValue;
+import javafx.collections.FXCollections;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TabPane;
+import javafx.scene.control.TabPane.TabClosingPolicy;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class TacheEditFormController implements Initializable {
+
+    @FXML
+    private VBox paneContainer;
+
+    @FXML
+    private HBox sourceHBox;
+
+    @FXML
+    private HBox destinationHBox;
+
+    @FXML
+    private AbstractSelectionItem<ConversionModel> conversionModelAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "patternSuppression")
+    private TextField patternSuppression;
+
+    @FXML
+    @Champ(mappedBy = "repertoireSource")
+    private CustomDirectoryChooser repertoireSource;
+
+    @FXML
+    @Champ(mappedBy = "repertoireDestination")
+    private CustomDirectoryChooser repertoireDestination;
+
+    @FXML
+    @Champ(mappedBy = "repertoireErreur")
+    private CustomDirectoryChooser repertoireErreur;
+
+    //OLD ELEMENTS
+    @Champ(mappedBy = "libelle", type = String.class, update = false)
+    @FXML
+    private TextField libelleTextField;
+
+    @FXML
+    @Champ(mappedBy = "heureTache", type = Integer.class)
+    private TextField heureTextField;
+
+    @FXML
+    @Champ(mappedBy = "minuteTache", type = Integer.class)
+    private TextField minuteTextField;
+
+    @Champ(mappedBy = "monday", type = Boolean.class)
+    @FXML
+    private CheckBox lundiCheckbox;
+
+    @Champ(mappedBy = "tuesday", type = Boolean.class)
+    @FXML
+    private CheckBox mardiCheckbox;
+
+    @Champ(mappedBy = "wednesday", type = Boolean.class)
+    @FXML
+    private CheckBox mercrediCheckbox;
+
+    @Champ(mappedBy = "thursday", type = Boolean.class)
+    @FXML
+    private CheckBox jeudiCheckbox;
+
+    @Champ(mappedBy = "friday", type = Boolean.class)
+    @FXML
+    private CheckBox vendrediCheckbox;
+
+    @Champ(mappedBy = "saturday", type = Boolean.class)
+    @FXML
+    private CheckBox samediCheckbox;
+
+    @Champ(mappedBy = "sunday", type = Boolean.class)
+    @FXML
+    private CheckBox dimancheCheckbox;
+
+    @FXML
+    @Champ(mappedBy = "strictValidation", type = Boolean.class)
+    private CheckBox strictValidationCheckbox;
+
+    @FXML
+    private CheckBox useExistingConversionModelCheckBox;
+
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class)
+    @FXML
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurLigne", type = Delimiteur.class)
+    private ComboBox<Delimiteur> delimiteurLigne;
+
+    @FXML
+    @Champ(mappedBy = "delimiteurColonne", type = Delimiteur.class)
+    private ComboBox<Delimiteur> delimiteurColonne;
+
+    @FXML
+    @Champ(mappedBy = "withHeader", type = Boolean.class)
+    private CheckBox withHeader;
+
+    @FXML
+    @Champ(mappedBy = "active", type = Boolean.class)
+    private CheckBox active;
+
+    @FXML
+    @Champ(mappedBy = "dataType", type = DataType.class)
+    private ComboBox<DataType> dataTypeComboBox;
+
+    @FXML
+    @Champ(mappedBy = "withoutInterval", type = Boolean.class)
+    private CheckBox withoutInterval;
+
+    @FXML
+    @Champ(mappedBy = "intervalleTache", type = Integer.class)
+    private TextField intervalleTache;
+
+    @FXML
+    private CheckBox saisieAlphaNumeriqueFieldChecBox;
+
+    @FXML
+    @Champ(mappedBy = "metaAlphaNumeriqueFields", type = MetaAlphaNumeriqueField.class, update = true)
+    private AbstractNestedEntityTable<MetaAlphaNumeriqueField, Tache> metaAlphaNumeriqueFieldAbstractTable;
+
+    @FXML
+    private TabPane tabPane;
+
+    private MetaAlphaNumeriqueFieldService metaAlphaNumeriqueFieldService = MetaAlphaNumeriqueFieldService.getInstance();
+
+    private Set<TypeFichier> TypeFichierSet = new HashSet<>();
+
+    private Set<ConversionModel> configurationConversionSet = new HashSet<>();
+
+    /**
+     * Initializes the controller class.
+     */
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+
+        tabPane.setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE);
+
+        saisieAlphaNumeriqueFieldChecBox.setDisable(true);
+
+        withoutInterval.setOnAction(e -> {
+
+            if (withoutInterval.isSelected()) {
+
+                intervalleTache.setDisable(true);
+
+            } else {
+
+                intervalleTache.setDisable(false);
+
+            }
+
+        });
+
+        intervalleTache.disableProperty().bind(withoutInterval.selectedProperty());
+        intervalleTache.textProperty().addListener((observable, oldValue, newValue) -> {
+            if (!newValue.matches("\\d+") || (Integer.parseInt(newValue) > 59) || (Integer.parseInt(newValue) < 0)) {
+                heureTextField.setText(oldValue);
+            }
+        });
+
+        heureTextField.textProperty().addListener((observable, oldValue, newValue) -> {
+            if (!newValue.matches("\\d*") || (Integer.parseInt(newValue) > 23) || (Integer.parseInt(newValue) < 0)) {
+                heureTextField.setText(oldValue);
+            }
+        });
+
+        minuteTextField.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
+            if (!newValue.matches("\\d*") || (Integer.parseInt(newValue) > 59) || (Integer.parseInt(newValue) < 0)) {
+                minuteTextField.setText(oldValue);
+            }
+        });
+
+        delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurColonne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_COLONNE.values()
+        ));
+
+        delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste");
+        delimiteurLigne.setItems(FXCollections.observableArrayList(
+                App.DELIMITEURS_LIGNE.values()
+        ));
+
+        dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste");
+        dataTypeComboBox.setItems(FXCollections.observableArrayList(
+                DataType.values()
+        ));
+
+        metaAlphaNumeriqueFieldAbstractTable.setClazz(MetaAlphaNumeriqueField.class);
+        metaAlphaNumeriqueFieldAbstractTable.setParentFieldName("tache");
+        metaAlphaNumeriqueFieldAbstractTable.setColums(Arrays.asList(
+                MetaAlphaNumeriqueTable.codeColonneColumn(),
+                MetaAlphaNumeriqueTable.tailleColonneColumn(),
+                MetaAlphaNumeriqueTable.indexColonneColumn()
+        ));
+
+        metaAlphaNumeriqueFieldAbstractTable.setGenericCrudService(metaAlphaNumeriqueFieldService);
+
+        saisieAlphaNumeriqueFieldChecBox.setOnAction(event -> {
+            typeFichierAbstractSelectItem.setDisable(saisieAlphaNumeriqueFieldChecBox.isSelected());
+        });
+
+        saisieAlphaNumeriqueFieldChecBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue) {
+                typeFichierAbstractSelectItem.setDisable(true);
+                saisieAlphaNumeriqueFieldChecBox.setDisable(true);
+            }
+        });
+
+        typeFichierAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+            if (newValue != null) {
+                saisieAlphaNumeriqueFieldChecBox.setDisable(typeFichierAbstractSelectItem == null);
+            }
+        });
+
+        conversionModelAbstractSelectItem.disableProperty().bind(useExistingConversionModelCheckBox.selectedProperty().not());
+
+        intitTypeFichiers();
+        initConversionModel();
+    }
+
+    public void intitTypeFichiers() {
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier de la tâche");
+
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn(),
+                TypeFichierTable.participantColumn()
+        ));
+
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                TypeFichierSet.clear();
+                TypeFichierSet.addAll(TypeFichierService.getInstance().getAll());
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            typeFichierAbstractSelectItem.setElements(TypeFichierSet);
+
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+
+    }
+
+    public CheckBox getSaisieAlphaNumeriqueFieldChecBox() {
+        return saisieAlphaNumeriqueFieldChecBox;
+    }
+
+    public AbstractSelectionItem<TypeFichier> getTypeFichierAbstractSelectItem() {
+        return typeFichierAbstractSelectItem;
+    }
+
+    public AbstractNestedEntityTable<MetaAlphaNumeriqueField, Tache> getMetaAlphaNumeriqueFieldAbstractTable() {
+        return metaAlphaNumeriqueFieldAbstractTable;
+    }
+
+    public CheckBox getStrictValidationCheckbox() {
+        return strictValidationCheckbox;
+    }
+
+    public ComboBox<Delimiteur> getDelimiteurLigne() {
+        return delimiteurLigne;
+    }
+
+    public ComboBox<Delimiteur> getDelimiteurColonne() {
+        return delimiteurColonne;
+    }
+
+    public ComboBox<DataType> getDataTypeComboBox() {
+        return dataTypeComboBox;
+    }
+
+    public CheckBox getUseExistingConversionModelCheckBox() {
+        return useExistingConversionModelCheckBox;
+    }
+
+    public CheckBox getWithHeader() {
+        return withHeader;
+    }
+
+    private void initConversionModel() {
+
+        conversionModelAbstractSelectItem.setTitle("Choix du modèle de conversion");
+        conversionModelAbstractSelectItem.setColumns(Arrays.asList(ConversionModelTable.typeFichierColumn(),
+                ConversionModelTable.dataTypeColumn(), ConversionModelTable.delimiteurLigneColumn(),
+                ConversionModelTable.delimiteurColonneColumn(), ConversionModelTable.repertoireSourceColumn(),
+                ConversionModelTable.repertoireDestinationColumn(), ConversionModelTable.repertoireErreurColumn()
+        ));
+        conversionModelAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("delimiteurLigne", "Délimiteur Ligne"),
+                new Pair<>("delimiteurColonne", "Délimiteur Colonne")
+        ));
+
+        conversionModelAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+            if (newValue != null) {
+                dataTypeComboBox.setValue(newValue.getDataType());
+
+                if (newValue.getCodeDelimiteurColonne() != null) {
+                    delimiteurColonne.setValue(App.DELIMITEURS_COLONNE.get(newValue.getCodeDelimiteurColonne()));
+                }
+
+                if (newValue.getCodeDelimiteurLigne() != null) {
+                    delimiteurLigne.setValue(App.DELIMITEURS_LIGNE.get(newValue.getCodeDelimiteurLigne()));
+                }
+                strictValidationCheckbox.setSelected(newValue.isStrictValidation());
+
+                withHeader.setSelected(newValue.isHeaderPresent());
+
+                typeFichierAbstractSelectItem.setOldElement(newValue.getTypeFichier());
+
+                repertoireDestination.setDirectoryLocation(newValue.getRepertoireDestination());
+
+                repertoireErreur.setDirectoryLocation(newValue.getRepertoireErreur());
+
+                repertoireSource.setDirectoryLocation(newValue.getRepertoireSource());
+
+                //MetaAlalphanumériqueField provenant de la BD
+                Set<MetaAlphaNumeriqueField> metasFromBd = newValue.getMetaAlphaNumeriqueFields();
+
+                metasFromBd.stream().forEach(m -> {
+
+                    //Création de nouveaux MetaAlalphanumériqueField avec uniquement le champ alphaNumerique
+                    metaAlphaNumeriqueFieldAbstractTable.getElementObservableList().add(new MetaAlphaNumeriqueField(m.getAlphaNumeriqueField()));
+                });
+            }
+        });
+
+        Task<Void> task1 = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                configurationConversionSet.clear();
+                configurationConversionSet.addAll(ConversionModelService.getInstance().getAll());
+
+                return null;
+            }
+        };
+        task1.setOnRunning(e -> com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task1.setOnSucceeded(e -> {
+            conversionModelAbstractSelectItem.setElements(configurationConversionSet);
+            com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+
+        });
+        task1.setOnFailed(e -> {
+            com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task1.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread1 = new Thread(task1);
+        thread1.setDaemon(true);
+        thread1.start();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TruncatedElementEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TruncatedElementEditFormController.java
new file mode 100644
index 0000000..f542dd8
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TruncatedElementEditFormController.java
@@ -0,0 +1,50 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.TextArea;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TruncatedElementEditFormController implements Initializable {
+    
+    @FXML
+    @Champ(mappedBy = "codeTypeFichier")
+    private TextField codeTypeFichierTextfield;
+            
+    @FXML
+    @Champ(mappedBy = "codeColonne")
+    private TextField codeColonneTexfield;
+            
+    @FXML
+    @Champ(mappedBy = "initialData")
+    private TextArea initialDataTextArea;
+            
+    @FXML
+    @Champ(mappedBy = "finalData")
+    private TextArea finalDataTextArea;
+            
+    @FXML
+    @Champ(mappedBy = "fileName")
+    private TextField fileNameTextfield;
+            
+    @FXML
+    @Champ(mappedBy = "displayDate")
+    private TextField dateActionTextfield;
+            
+            
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TxtFileToValidateEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TxtFileToValidateEditFormController.java
new file mode 100644
index 0000000..f1340f8
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TxtFileToValidateEditFormController.java
@@ -0,0 +1,83 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customcontrols.CustomFileChooser;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TxtFileToValidateEditFormController implements Initializable{
+    @FXML
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "txtFilePath")
+    private CustomFileChooser fileToValidate;
+
+    private final TypeFichierService typeFichierService = TypeFichierService.getInstance();
+    
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+    
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+        initElements();
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(typeFichierService.getAll());
+                return null;
+            }
+        };
+        task.setOnRunning(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show();
+        });
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TypeFichierEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TypeFichierEditFormController.java
new file mode 100644
index 0000000..e8b48e7
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/TypeFichierEditFormController.java
@@ -0,0 +1,43 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatim.fdxconvert.enums.DataType;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TextField;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierEditFormController  implements Initializable{
+    @Champ(mappedBy = "code", type = String.class)
+    @FXML
+    private TextField codeTextField;
+    
+    @Champ(mappedBy = "libelle")
+    @FXML
+    private TextField libelleTextField;
+    
+    @Champ(mappedBy = "codeParticipant")
+    @FXML
+    private TextField codeParticipantTextField;
+    
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        // TODO
+    }
+
+    public TextField getCodeTextField() {
+        return codeTextField;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurEditFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurEditFormController.java
new file mode 100644
index 0000000..498c9c1
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurEditFormController.java
@@ -0,0 +1,147 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.annontations.Champ;
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatimfx.common.customcontrols.CustomFileChooser;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.ResourceBundle;
+import java.util.Set;
+import javafx.concurrent.Task;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseEvent;
+import javafx.util.Pair;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurEditFormController implements Initializable {
+
+    @FXML
+    @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false)
+    private AbstractSelectionItem<TypeFichier> typeFichierAbstractSelectItem;
+
+    @FXML
+    @Champ(mappedBy = "filePath")
+    private CustomFileChooser FileToImport;
+
+    @FXML
+    @Champ(mappedBy = "keyToDecrypt")
+    private PasswordField keyToDecryptField;
+
+    @FXML
+    @Champ(mappedBy = "keyConfirmation")
+    private PasswordField keyConfirmationField;
+
+    @FXML
+    private TextField showKeyTextField;
+
+    @FXML
+    private ImageView eyeImageView;
+
+    @FXML
+    @Champ(mappedBy = "protege", type = Boolean.class)
+    private CheckBox protegeCheckBox;
+
+    private boolean passwordVisible;
+
+    private final TypeFichierService typeFichierService = TypeFichierService.getInstance();
+
+    private final Set<TypeFichier> typeFichierSet = new HashSet<>();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+        keyToDecryptWithEye();
+        keyToDecryptField.setEditable(false);
+        keyConfirmationField.setEditable(false);
+        showKeyTextField.setEditable(false);
+
+        protegeCheckBox.selectedProperty().bindBidirectional(keyToDecryptField.editableProperty());
+        protegeCheckBox.selectedProperty().bindBidirectional(keyConfirmationField.editableProperty());
+        protegeCheckBox.selectedProperty().bindBidirectional(showKeyTextField.editableProperty());
+
+        typeFichierAbstractSelectItem.setTitle("Choix du type de fichier");
+        typeFichierAbstractSelectItem.setColumns(Arrays.asList(
+                TypeFichierTable.codeColumn(),
+                TypeFichierTable.libelleColumn()
+        ));
+        typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList(
+                new Pair<>("code", "Code"),
+                new Pair<>("libelle", "Libellé")
+        ));
+        initElements();
+    }
+
+    @FXML
+    void eyeOnMousePressed(MouseEvent event) {
+        if (passwordVisible) {
+            showKeyTextField.setVisible(false);
+            keyToDecryptField.setVisible(true);
+            passwordVisible = false;
+        } else {
+            keyToDecryptField.setVisible(false);
+            showKeyTextField.setVisible(true);
+            passwordVisible = true;
+        }
+    }
+
+    private void keyToDecryptWithEye() {
+        passwordVisible = false;
+        keyToDecryptField.textProperty().bindBidirectional(showKeyTextField.textProperty());
+        showKeyTextField.setVisible(false);
+        keyToDecryptField.setVisible(true);
+    }
+
+    private void initElements() {
+        Task<Void> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                typeFichierSet.clear();
+                typeFichierSet.addAll(typeFichierService.getAllTypeFichWithoutValidateur());
+                return null;
+            }
+        };
+        task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+        task.setOnSucceeded(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            typeFichierAbstractSelectItem.setElements(typeFichierSet);
+        });
+        task.setOnFailed(e -> {
+            LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+            AlertMessageUtil.showAlertException(task.getException(),
+                    "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    public PasswordField getKeyToDecryptField() {
+        return keyToDecryptField;
+    }
+
+    public PasswordField getKeyConfirmationField() {
+        return keyConfirmationField;
+    }
+
+    public CheckBox getProtegeCheckBox() {
+        return protegeCheckBox;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurListFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurListFormController.java
new file mode 100644
index 0000000..30ba5f2
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/forms/ValidateurListFormController.java
@@ -0,0 +1,237 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.forms;
+
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.abstracts.AbstractMainDialogController;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.controller.ValidateurEditDialogController;
+import com.megatim.fdxconvert.controller.search.ValidateurSearchFormController;
+import com.megatim.fdxconvert.controller.table.ValidateurTable;
+import com.megatim.fdxconvert.exceptions.ConfigException;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import com.megatim.fdxconvert.service.ValidateurService;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.concurrent.Task;
+import javafx.event.Event;
+import javafx.fxml.FXML;
+import javafx.scene.Node;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.TableColumn;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+import org.apache.commons.io.FileUtils;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurListFormController extends AbstractMainDialogController<Validateur, Validateur> {
+
+    private ValidateurSearchFormController validateurSearchFormController;
+
+    private double dx, dy;
+
+    @FXML
+    private Button btnPrintValidator;
+
+    @FXML
+    private Label btnPrintValidatorLabel;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        validateurSearchFormController = new ValidateurSearchFormController();
+        setPrintButtonRemoved(true);
+        setEditButtonRemoved(true);
+
+        btnPrintValidator.setOnAction(e -> {
+            exportValidatorFile(e);
+        });
+        btnPrintValidatorLabel.setOnMouseClicked(e -> {
+            exportValidatorFile(e);
+        });
+        super.initialize(url, rb);
+    }
+
+    @Override
+    public GenericCrudService<Validateur> getGenericCrudService() {
+        return ValidateurService.getInstance();
+    }
+
+    @Override
+    public String getTitle() {
+        return "Importations des formats de validation";
+    }
+
+    @Override
+    public Class<Validateur> getElementClazz() {
+        return Validateur.class;
+    }
+
+    @Override
+    public List<TableColumn> getElementTableColumns() {
+        return Arrays.asList(ValidateurTable.typeFichierColumn(), ValidateurTable.dataConversionColumn(), ValidateurTable.dateCreationColumn(), ValidateurTable.keyLengthColumn());
+    }
+
+    @Override
+    public AbstractEditDialogController<Validateur> getAbstractEditDialogController() {
+        return new ValidateurEditDialogController();
+    }
+
+    @Override
+    public List<SearchCriteria> getPermanentSearchCriterias() {
+        List<SearchCriteria> liste = new ArrayList<>();
+
+        return liste;
+    }
+
+    @Override
+    public Object getSearchFormController() {
+        return validateurSearchFormController;
+    }
+
+    @Override
+    public void resetFormFields(Object searchController, Object advancedSearchController) {
+
+        if (searchController instanceof ValidateurSearchFormController) {
+            ValidateurSearchFormController controller = (ValidateurSearchFormController) searchController;
+            controller.getTypeFichierAbstractSelectionItem().setOldElement(null);
+        }
+    }
+
+    @Override
+    public Pane getSearchFormPane() throws IOException {
+        return ViewLoaderUtil.getPaneFromFxmlFile(validateurSearchFormController.getClass().getResource("ValidateurSearchForm.fxml"), validateurSearchFormController);
+    }
+
+    @FXML
+    public void titleBarMousePressed(MouseEvent event) {
+        Scene scene = ((Node) event.getSource()).getScene();
+        Stage stage = (Stage) scene.getWindow();
+
+        dx = stage.getX() - event.getScreenX();
+        dy = stage.getY() - event.getScreenY();
+    }
+
+    @FXML
+    public void titleBarMouseDragged(MouseEvent event) {
+        Scene scene = ((Node) event.getSource()).getScene();
+        Stage stage = (Stage) scene.getWindow();
+
+        stage.setX(event.getScreenX() + dx);
+        stage.setY(event.getScreenY() + dy);
+    }
+
+    private void exportValidatorFile(Event event) {
+        Node node = (Node) event.getSource();
+        Stage parentStage = (Stage) node.getScene().getWindow();
+        Validateur validateur = getElementTable().getSelectionModel().getSelectedItem();
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss");
+
+        try {
+            Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+
+            if (config == null) {
+                throw new ConfigException("Répertoires non configurés");
+            }
+
+            if (validateur != null) {
+
+                exportOneFile(validateur.getCodeTypeFichier(), config.getValidatorsDir(), dtf, validateur.getContent());
+
+                NotificationDialog notificationDialog = new NotificationDialog(
+                        "Succès de l'exportation, consulter le répertoire '" + config.getValidatorsDir() + "' pour voir le fichier validateur du typefichier " + validateur.getCodeTypeFichier(),
+                        NotificationType.SUCCESS,
+                        parentStage
+                );
+                notificationDialog.showNotification();
+
+            } else {
+                List<Validateur> validateurs = ValidateurService.getInstance().getAll();
+                Task<Void> task = new Task<Void>() {
+                    @Override
+                    protected Void call() throws Exception {
+
+                        for (Validateur v : validateurs) {
+                            exportOneFile(v.getCodeTypeFichier(), config.getValidatorsDir(), dtf, v.getContent());
+                        }
+                        return null;
+                    }
+
+                };
+                task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show());
+                task.setOnSucceeded(e -> {
+                    String message = "";
+
+                    if (validateurs.isEmpty()) {
+                        message = "Aucun validateur à exporter";
+                    } else {
+                        message = "Tous les validateurs ont été exporté dans le répertoire " + config.getValidatorsDir();
+                    }
+                    LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+                    NotificationDialog notificationDialog = new NotificationDialog(
+                            message, NotificationType.INFO, parentStage
+                    );
+                    notificationDialog.showNotification();
+                });
+                task.setOnFailed(e -> {
+                    LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
+                    NotificationDialog notificationDialog = new NotificationDialog(
+                            "Echec de l'exportation, une erreur est survenue ",
+                            NotificationType.ERROR,
+                            parentStage
+                    );
+                    notificationDialog.showNotification();
+                });
+
+                Thread thread1 = new Thread(task);
+                thread1.setDaemon(true);
+                thread1.start();
+            }
+        } catch (ConfigException ex) {
+            NotificationDialog notificationDialog = new NotificationDialog(
+                    "Echec de l'exportation, Veuillez configurer les répertoires avant d'exécuter cette opération",
+                    NotificationType.WARNING,
+                    parentStage
+            );
+            notificationDialog.showNotification();
+
+        } catch (Exception ex) {
+
+            NotificationDialog notificationDialog = new NotificationDialog(
+                    "Echec de l'exportation, une erreur est survenue ",
+                    NotificationType.ERROR,
+                    parentStage
+            );
+            notificationDialog.showNotification();
+            Logger.getLogger(ValidateurListFormController.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private void exportOneFile(String codeTypeFichier, String validatorsDir, DateTimeFormatter dtf, byte[] content) throws IOException {
+        File file = new File(validatorsDir, "Fdx-Validateur" + codeTypeFichier + "-" + dtf.format(LocalDateTime.now()) + ".xml");
+        FileUtils.writeByteArrayToFile(file, content, false);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/AlphaNumeriqueField.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/AlphaNumeriqueField.java
new file mode 100644
index 0000000..99a274d
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/AlphaNumeriqueField.java
@@ -0,0 +1,102 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@Table(uniqueConstraints = {
+    @UniqueConstraint(name = "UniquecodeColonneAndCodeTypeFichier", columnNames = {"codeColonne", "codeTypeFichier"})})
+public class AlphaNumeriqueField implements Serializable {
+
+    @GeneratedValue
+    @Id
+    private Long id;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "codeTypeFichier")
+    private Validateur validateur;
+
+    private String codeColonne;
+
+    private int taille;
+
+    private int index;
+
+    private String typeDonnee;
+
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+
+    @UpdateTimestamp
+    private LocalDateTime dateMiseAJour;
+
+    @OneToMany(mappedBy = "alphaNumeriqueField")
+    private Set<MetaAlphaNumeriqueField> metaAlphaNumeriqueFields;
+
+    public AlphaNumeriqueField(Validateur validateur, String type, String codeColonne, int taille, int index) {
+        this.validateur = validateur;
+        this.codeColonne = codeColonne;
+        this.taille = taille;
+        this.index = index;
+        this.typeDonnee = type;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 31 * hash + Objects.hashCode(this.validateur.getCodeTypeFichier());
+        hash = 31 * hash + Objects.hashCode(this.codeColonne);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final AlphaNumeriqueField other = (AlphaNumeriqueField) obj;
+        if (!Objects.equals(this.validateur.getCodeTypeFichier(), other.getValidateur().getCodeTypeFichier())) {
+            return false;
+        }
+        return Objects.equals(this.codeColonne, other.codeColonne);
+    }
+
+    @Override
+    public String toString() {
+        return validateur.getCodeTypeFichier() + " - " + codeColonne;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Configuration.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Configuration.java
new file mode 100644
index 0000000..ca859f7
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Configuration.java
@@ -0,0 +1,55 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.model.constraint.ErrorDirConstraint;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.validation.constraints.NotEmpty;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Entity
+@Getter
+@Setter
+@ErrorDirConstraint(groups = {ViewFormValidationGroup.class})
+public class Configuration implements Serializable {
+    
+    @Id
+    @GeneratedValue
+    private Long id;
+    
+    @NotEmpty(message="Le répertoire des erreurs est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String errorDir;
+    
+    @NotEmpty(message="Le répertoire d'exportation des validateurs est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String validatorsDir;
+    
+    @NotEmpty(message="Le répertoire des données est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String datasDir;
+    
+    @NotEmpty(message="Le répertoire de sortie est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String outputDir;
+    
+    @NotEmpty(message="Le répertoire d'archivage est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String archivesDir;
+    
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+    
+    @UpdateTimestamp
+    private LocalDateTime dateMiseAJour;
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/ConversionModel.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/ConversionModel.java
new file mode 100644
index 0000000..1b2274f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/ConversionModel.java
@@ -0,0 +1,90 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.constraint.ConfigurationConversionDelimiterConstraint;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@ConfigurationConversionDelimiterConstraint(groups = {ViewFormValidationGroup.class})
+public class ConversionModel implements Serializable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+    
+    @NotEmpty(message = "Le libellé est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String libelle;
+    
+    @ManyToOne
+    @JoinColumn(name = "typefichier_code")
+    @NotNull(message = "Le typefichier est obligatoire", groups = {ViewFormValidationGroup.class})
+    private TypeFichier typeFichier;
+
+    @Enumerated(EnumType.STRING)
+    @NotNull(message = "Le format du fichier de données est obligatoire", groups = {ViewFormValidationGroup.class})
+    private DataType dataType;
+
+    @Transient
+    private Delimiteur delimiteurLigne;
+
+    @Transient
+    private Delimiteur delimiteurColonne;
+    
+    private String codeDelimiteurLigne;
+    
+    private String codeDelimiteurColonne;
+
+    private boolean headerPresent;
+
+    private boolean strictValidation;
+
+    private String repertoireSource;
+
+    private String repertoireDestination;
+
+    private String repertoireErreur;
+    
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+    
+    @OneToMany(mappedBy = "configurationConversion",  fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+    private Set<MetaAlphaNumeriqueField> metaAlphaNumeriqueFields = new HashSet<>();
+    
+    @Override
+    public String toString() {
+        return this.getTypeFichier() +" : "+ this.getDataType().toString();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Journal.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Journal.java
new file mode 100644
index 0000000..83937bb
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Journal.java
@@ -0,0 +1,58 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatim.fdxconvert.enums.JournalStatut;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class Journal implements Serializable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private LocalDateTime dateAction;
+
+    private String sourceFileName;
+
+    private String sourceDirectory;
+    
+    private String destinationDirectory;
+    
+    private String destinationFileName;
+
+    @Enumerated(EnumType.STRING)
+    private JournalStatut statut;
+
+    private LocalDate localDateAction;
+
+    private String codeTypefichier;
+
+    private long nombreLignes;
+
+    public Journal(LocalDateTime dateAction,JournalStatut statut, String codeTypefichier) {
+        this.dateAction = dateAction;
+        this.statut = statut;
+        this.codeTypefichier = codeTypefichier;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/JsonStructure.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/JsonStructure.java
new file mode 100644
index 0000000..0b9db1d
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/JsonStructure.java
@@ -0,0 +1,82 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.*;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class JsonStructure implements Serializable {
+
+    @Id
+    @SequenceGenerator(name = "SEQ_TYPE_FICHIER_JSON", sequenceName = "SEQ_TYPE_FICHIER_JSON", allocationSize = 1, initialValue = 1)
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TYPE_FICHIER_JSON")
+    @XmlTransient
+    private Long id;
+
+    @NotNull(message = "Le type de données est obligatoire")
+    @Enumerated(EnumType.STRING)
+    @XmlAttribute
+    private TypeDonnee typeDonnee;
+
+    @NotNull(message = "Le nom est obligatoire")
+    @XmlAttribute
+    private String name;
+
+    @Min(value = 1, message = "La taille doit être supérieure à 0")
+    @XmlAttribute
+    private int lengthh;
+
+    @XmlAttribute
+    private boolean required;
+
+    @XmlAttribute
+    private boolean collection;
+
+    @XmlAttribute
+    private String formatDate;
+
+    @Transient
+    @XmlTransient
+    private Delimiteur delimiteurDate;
+
+    @XmlAttribute
+    private String codeDelimiteurDate;
+
+    @OneToOne
+    @XmlTransient
+    private TypeFichierJson typeFichierJson;
+
+    @ManyToOne
+    @XmlTransient
+    private JsonStructure parent;
+
+    @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
+    @XmlElement(name = "jsonStructure") 
+    private List<JsonStructure> fields = new ArrayList<>();
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/MetaAlphaNumeriqueField.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/MetaAlphaNumeriqueField.java
new file mode 100644
index 0000000..3e5b5af
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/MetaAlphaNumeriqueField.java
@@ -0,0 +1,66 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Transient;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class MetaAlphaNumeriqueField implements Serializable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    @ManyToOne
+    @JoinColumn(name = "alphaNumeriqueField_id")
+    private AlphaNumeriqueField alphaNumeriqueField;
+
+    @Transient
+    @ManyToOne
+    private FileToValidate fileToValidate;
+
+    @ManyToOne
+    @JoinColumn(name = "tache_id")
+    private Tache tache;
+
+    @ManyToOne
+    @JoinColumn(name = "configuration_conversion_id")
+    private ConversionModel configurationConversion;
+    
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+    
+    @UpdateTimestamp
+    private LocalDateTime dateMiseAJour;
+
+    public MetaAlphaNumeriqueField(AlphaNumeriqueField field) {
+        this.alphaNumeriqueField = field;
+    }
+    
+    @Override
+    public String toString() {
+        return alphaNumeriqueField.getCodeColonne();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/ModeleJson.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/ModeleJson.java
new file mode 100644
index 0000000..8f27e18
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/ModeleJson.java
@@ -0,0 +1,84 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+public class ModeleJson implements Serializable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    @OneToOne(cascade = CascadeType.MERGE)
+    @JoinColumn(name = "type_fichier_code")
+//    @NotNull(message = "Le code du type de fichier est obligatoire" , groups = {ViewFormValidationGroup.class})
+    private TypeFichier typeFichier;
+
+//     @NotEmpty(message = "Le nom de l'objet est obligatoire" , groups = {ViewFormValidationGroup.class})
+    private String objectName;
+
+    @OneToMany(mappedBy = "modeleJson", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+    private Set<StructureChampJson> listeStructureJson = new HashSet<>();
+    
+    @OneToMany(mappedBy = "modeleJson", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+    private Set<SubObject> subObjects  = new HashSet<>();
+    
+    private LocalDateTime dateCreation;
+    
+    public ModeleJson() {
+         dateCreation = LocalDateTime.now();
+    }
+
+    @Override
+    public String toString() {
+        return "ModeleJson{" + "typeFichier=" + typeFichier + ", objectName=" + objectName + ", listeStructureJson=" + listeStructureJson + '}';
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 79 * hash + Objects.hashCode(this.dateCreation);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final ModeleJson other = (ModeleJson) obj;
+        return Objects.equals(this.dateCreation, other.dateCreation);
+    }
+    
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/StructureChampJson.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/StructureChampJson.java
new file mode 100644
index 0000000..62fa187
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/StructureChampJson.java
@@ -0,0 +1,96 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+public class StructureChampJson implements Serializable {
+    
+    @Id
+    @GeneratedValue
+    private Long id;
+    
+    private String libelle;
+    
+    @NotNull(message = "Le type de données est obligatoire")
+    private TypeDonnee typeDonnee;
+    
+    @ManyToOne(cascade = CascadeType.MERGE)
+    @JoinColumn(name = "field_of_subobject")
+    private SubObject fieldOfSubObject; //subObject;
+    
+    @ManyToOne(cascade = CascadeType.MERGE)
+    @JoinColumn(name = "type_of_subobject")
+    private SubObject typeOfSubObject;
+    
+    private boolean liste ;
+    
+    private String formatDate;
+    
+    @ManyToOne
+    @JoinColumn(name = "modele_json_id")
+    private ModeleJson modeleJson;
+    
+    @Transient
+    private Delimiteur delimiteurDate;
+    
+    private String codeDelimiteurDate;
+    
+    private LocalDateTime dateCreation;
+
+    public StructureChampJson() {
+        dateCreation = LocalDateTime.now();
+    }
+    
+    @Override
+    public String toString() {
+        return "StructureChampJson{" + "libellé=" + libelle + ", typeDonnee=" + typeDonnee + ", liste=" + liste + ", formatDate=" + formatDate + ", delimiteurDate=" + delimiteurDate + '}';
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final StructureChampJson other = (StructureChampJson) obj;
+        return Objects.equals(this.dateCreation, other.dateCreation);
+    }
+
+    
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/SubObject.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/SubObject.java
new file mode 100644
index 0000000..0743fca
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/SubObject.java
@@ -0,0 +1,81 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+public class SubObject implements Serializable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    @NotNull(message = "Le nom de l'objet à définir est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String subObjectName;
+
+    @OneToMany(mappedBy = "fieldOfSubObject", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+    private Set<StructureChampJson> listeStructureJson = new HashSet<>();
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "modele_json_id")
+    private ModeleJson modeleJson;
+
+    private LocalDateTime dateCreation;
+
+    public SubObject() {
+        dateCreation = LocalDateTime.now();
+    }
+
+    @Override
+    public String toString() {
+        return subObjectName;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 97 * hash + Objects.hashCode(this.dateCreation);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final SubObject other = (SubObject) obj;
+        return Objects.equals(this.dateCreation, other.dateCreation);
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Tache.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Tache.java
new file mode 100644
index 0000000..68c194e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Tache.java
@@ -0,0 +1,130 @@
+package com.megatim.fdxconvert.model;
+
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.constraint.DelimiterConstraint;
+import com.megatim.fdxconvert.model.constraint.SchedulerConstraint;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+@Entity
+@Table(name = "CONVERT_TACHE")
+@Getter
+@Setter
+@SchedulerConstraint(groups = {ViewFormValidationGroup.class})
+@DelimiterConstraint(groups = {ViewFormValidationGroup.class})
+public class Tache implements Serializable {
+
+    @Id
+    @NotEmpty(message = "Le libelle est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String libelle;
+
+    private boolean active;
+
+    //PLANNICATION
+    private int heureTache = 0;
+    private int minuteTache = 0;
+    private int intervalleTache = 0;
+
+    private boolean withoutInterval;
+
+    private boolean monday;
+    private boolean tuesday;
+    private boolean wednesday;
+    private boolean thursday;
+    private boolean friday;
+    private boolean saturday;
+    private boolean sunday;
+
+    private int intervalleExecution;
+
+    private boolean executeOnce;
+
+    @NotEmpty(message = "Le repertoire source est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String repertoireSource;
+
+    @NotEmpty(message = "Le repertoire de destination est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String repertoireDestination;
+
+    @NotEmpty(message = "Le repertoire des erreurs est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String repertoireErreur;
+
+    @ManyToOne
+    @JoinColumn(name = "typefichier_code")
+    @NotNull(message = "Le typefichier est obligatoire", groups = {ViewFormValidationGroup.class})
+    private TypeFichier typeFichier;
+
+    private boolean withHeader;
+
+    private boolean strictValidation;
+
+    @Transient
+    private Delimiteur delimiteurLigne;
+    
+    @Transient
+    private Delimiteur delimiteurColonne;
+    
+    private String rowDeliminter;
+
+    private String colDeliminter;
+
+    @NotNull(message = "Le format de fichier de données est obligatoire", groups = {ViewFormValidationGroup.class})
+    private DataType dataType;
+    
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+    
+    @UpdateTimestamp
+    private LocalDateTime dateMiseAJour;
+
+    @OneToMany(mappedBy = "tache", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+    private Set<MetaAlphaNumeriqueField> metaAlphaNumeriqueFields = new HashSet<>();
+
+    @Override
+    public String toString() {
+        return libelle;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        
+        if (this == obj) {
+            return true;
+        }
+        
+        if (obj == null) {
+            return false;
+        }
+        
+        if (!(obj instanceof Tache)) {
+            return false;
+        }
+        
+        final Tache other = (Tache) obj;
+        
+        if (this.getLibelle() != null && !this.getLibelle().equals(other.getLibelle())) {
+            return false;
+        }
+        
+        return true;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TruncatedElement.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TruncatedElement.java
new file mode 100644
index 0000000..55d08c1
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TruncatedElement.java
@@ -0,0 +1,84 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Transient;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class TruncatedElement implements Serializable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private String codeTypeFichier;
+
+    private String codeColonne;
+
+    @Column(length = 1000)
+    private String initialData;
+
+    @Column(length = 1000)
+    private String finalData;
+    
+    private int tailleAttendue;
+    
+    private int tailleTrouvee;
+    
+    private String fileName;
+
+    private int lineNumber;
+
+    private LocalDateTime dateAction;
+
+    private LocalDate localDateAction;
+
+    @Transient
+    private String displayDate;
+
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+
+    @UpdateTimestamp
+    private LocalDateTime dateMiseAJour;
+
+    public TruncatedElement(String codeTypeFichier, String codeColonne, String initialData, String finalData, String fileName,
+            LocalDateTime dateAction,int ligne,int tailleA,int tailleT) {
+
+        this.codeTypeFichier = codeTypeFichier;
+        this.codeColonne = codeColonne;
+        this.initialData = initialData;
+        this.finalData = finalData;
+        this.fileName = fileName;
+        this.dateAction = dateAction;
+        this.lineNumber = ligne;
+        this.tailleAttendue = tailleA;
+        this.tailleTrouvee = tailleT;
+
+    }
+
+    @Override
+    public String toString() {
+        return "TruncatedElement{" + "codeTypeFichier=" + codeTypeFichier + ", codeColonne=" + codeColonne + ", initialData=" + initialData + ", finalData=" + finalData + ", fileName=" + fileName + '}';
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichier.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichier.java
new file mode 100644
index 0000000..0b23a81
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichier.java
@@ -0,0 +1,94 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Entity
+@Getter
+@Setter
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class TypeFichier implements Serializable {
+
+    @Id
+    @NotEmpty(message = "Le code du type de fichier est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String code;
+
+    @NotEmpty(message = "Le libellé du type de fichier est obligatoire", groups = {ViewFormValidationGroup.class})
+    @XmlTransient
+    private String libelle;
+
+    @NotEmpty(message = "Le code du participant est obligatoire", groups = {ViewFormValidationGroup.class})
+    @XmlTransient
+    private String codeParticipant;
+
+    @OneToOne(mappedBy = "typeFichier", cascade = CascadeType.REMOVE)
+    @XmlTransient
+    private TypeFichierJson typeFichierJson;
+
+    @CreationTimestamp
+    @XmlTransient
+    private LocalDateTime dateCreation;
+
+    @UpdateTimestamp
+    @XmlTransient
+    private LocalDateTime dateMiseAJour;
+
+    @Override
+    public String toString() {
+        return this.getCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+
+        if (this == obj) {
+            return true;
+        }
+
+        if (obj == null) {
+            return false;
+        }
+        if (!(obj instanceof TypeFichier)) {
+            return false;
+        }
+        final TypeFichier other = (TypeFichier) obj;
+
+        if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 73 * hash + Objects.hashCode(this.code);
+        hash = 73 * hash + Objects.hashCode(this.libelle);
+        return hash;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichierJson.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichierJson.java
new file mode 100644
index 0000000..78f2b9e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/TypeFichierJson.java
@@ -0,0 +1,50 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import java.io.Serializable;
+import javax.persistence.*;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@NoArgsConstructor
+@XmlRootElement(name = "typeFichierJson")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class TypeFichierJson implements Serializable {
+
+    @Id
+    @SequenceGenerator(name = "SEQ_TYPE_FICHIER",
+            sequenceName = "SEQ_TYPE_FICHIER",
+            allocationSize = 1,
+            initialValue = 1)
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TYPE_FICHIER")
+    @XmlTransient
+    private Long id;
+
+    @OneToOne(cascade = CascadeType.MERGE)
+    @JoinColumn(name = "type_fichier_code")
+    private TypeFichier typeFichier;
+
+    @OneToOne(cascade = CascadeType.ALL)
+    @JoinColumn(name = "json_structure_id")
+    private JsonStructure jsonStructure;
+
+    public TypeFichierJson(TypeFichier typeFichier, JsonStructure jsonStructure) {
+        this.typeFichier = typeFichier;
+        this.jsonStructure = jsonStructure;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Validateur.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Validateur.java
new file mode 100644
index 0000000..0f42d86
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/Validateur.java
@@ -0,0 +1,69 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model;
+
+import com.megatim.fdxconvert.pojo.Decryptage;
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.model.constraint.KeyToDecryptConstraint;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.OneToMany;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Pattern.Flag;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter
+@Setter
+@Entity
+@KeyToDecryptConstraint(groups = {ViewFormValidationGroup.class})
+@NoArgsConstructor
+public class Validateur extends Decryptage implements Serializable {
+
+    @Id
+    private String codeTypeFichier;
+
+    @Transient
+    @NotNull(message = "Le type fichier est obligatoire", groups = {ViewFormValidationGroup.class})
+    private TypeFichier typeFichier;
+
+    @NotEmpty(message = "Le validateur est obligatoire", groups = {ViewFormValidationGroup.class})
+    @Transient
+    @Pattern(regexp = ".+\\.zip|.+\\.xml", flags = Flag.CASE_INSENSITIVE, message = "Le fichier attendu doit être au format ZIP ou XML", groups = {ViewFormValidationGroup.class})
+    private String filePath;
+
+    @Lob
+    private byte[] content;
+    
+    private boolean convertDataBeforeValidation;
+    
+    @OneToMany(mappedBy = "validateur", cascade = CascadeType.ALL)
+    private List<AlphaNumeriqueField> alphaFields;
+
+    @Transient
+    private int keyLength = 128;
+    
+    @CreationTimestamp
+    private LocalDateTime dateCreation;
+    
+    @UpdateTimestamp
+    private LocalDateTime dateMiseAJour;
+
+    }
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigConstraint.java
new file mode 100644
index 0000000..6cb9979
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = ConfigValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ConfigConstraint {
+    String message() default "Validation impossible, veuillez configurer les répertoires avant d'effectuer cette action";
+    Class<?>[] groups() default {};
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigValidator.java
new file mode 100644
index 0000000..ddd0ac0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigValidator.java
@@ -0,0 +1,28 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ConfigValidator implements  ConstraintValidator<ConfigConstraint, FileToValidate> {
+    
+    @Override
+    public void initialize(ConfigConstraint cons) {
+    }
+    
+    @Override
+    public boolean isValid(FileToValidate val, ConstraintValidatorContext cxt) {
+        Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+        return config != null;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterConstraint.java
new file mode 100644
index 0000000..44dbbf5
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterConstraint.java
@@ -0,0 +1,30 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author ASUS
+ */
+
+@Documented
+@Constraint(validatedBy = ConfigurationConversionDelimiterValidator.class)
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ConfigurationConversionDelimiterConstraint {
+       String message() default "Les délimiteurs de ligne et de colonne sont obligatoires";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterValidator.java
new file mode 100644
index 0000000..f7ad34b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ConfigurationConversionDelimiterValidator.java
@@ -0,0 +1,31 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.model.Tache;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConfigurationConversionDelimiterValidator  implements ConstraintValidator<ConfigurationConversionDelimiterConstraint,ConversionModel> {
+    
+     @Override
+    public boolean isValid(ConversionModel t, ConstraintValidatorContext cvc) {
+
+        if (t.getDataType() != null
+                && (t.getDataType().equals(DataType.CSV) || t.getDataType().equals(DataType.TXT))) {
+
+            return t.getDelimiteurColonne()!= null && t.getDelimiteurLigne()!= null ;
+
+        }
+
+        return true;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeConstraint.java
new file mode 100644
index 0000000..ce8e344
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = DataTypeValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DataTypeConstraint {
+    String message() default "Le fichier à valider et le type de données selectionnés ne sont pas compatibles ";
+    Class<?>[] groups() default {};
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeValidator.java
new file mode 100644
index 0000000..bcc7651
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DataTypeValidator.java
@@ -0,0 +1,26 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class DataTypeValidator implements  ConstraintValidator<DataTypeConstraint, FileToValidate> {
+
+    @Override
+    public boolean isValid(FileToValidate t, ConstraintValidatorContext cvc) {
+        return t.getFilePath().matches(".+\\.csv|.+\\.CSV") && t.getDataType().equals(DataType.CSV)
+                || t.getFilePath().matches(".+\\.xls|.+\\.XLS") && t.getDataType().equals(DataType.XLS)
+                || t.getFilePath().matches(".+\\.xlsx|.+\\.XLSX") && t.getDataType().equals(DataType.XLSX)
+                || t.getFilePath().matches(".+\\.txt|.+\\.TXT") && t.getDataType().equals(DataType.TXT);
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESConstraint.java
new file mode 100644
index 0000000..602dd37
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = DecryptageAESValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DecryptageAESConstraint {
+    String message() default "Le répertoire de dépôt doit être différent du repertoire d'origine du fichier";
+    Class<?>[] groups() default {};
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESValidator.java
new file mode 100644
index 0000000..d54f33a
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DecryptageAESValidator.java
@@ -0,0 +1,24 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.pojo.DecryptageAES;
+import java.io.File;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class DecryptageAESValidator implements  ConstraintValidator<DecryptageAESConstraint,DecryptageAES>{
+
+    @Override
+    public boolean isValid(DecryptageAES t, ConstraintValidatorContext cvc) {
+        String fileName = new File(t.getFilePath()).getName();
+        return !t.getFilePath().equals(new File(t.getOutputDir(),fileName).getAbsolutePath());
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterConstraint.java
new file mode 100644
index 0000000..14f72ff
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterConstraint.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+@Documented
+@Constraint(validatedBy = DelimiterValidator.class)
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DelimiterConstraint {
+
+    String message() default "Les délimiteurs de ligne et de colonne sont obligatoires";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterValidator.java
new file mode 100644
index 0000000..b3ced9b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/DelimiterValidator.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.Tache;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+public class DelimiterValidator implements ConstraintValidator<DelimiterConstraint, Tache> {
+
+    @Override
+    public boolean isValid(Tache t, ConstraintValidatorContext cvc) {
+
+        if (t.getDataType() != null
+                && (t.getDataType().equals(DataType.CSV) || t.getDataType().equals(DataType.TXT))) {
+
+            return t.getDelimiteurColonne()!= null && t.getDelimiteurLigne()!= null ;
+
+        }
+
+        return true;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirConstraint.java
new file mode 100644
index 0000000..9bdf1d0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = ErrorDirValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ErrorDirConstraint {
+    String message() default "Les répertoires doivent être tous différents";
+    Class<?>[] groups() default {};
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirValidator.java
new file mode 100644
index 0000000..5f57cfb
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/ErrorDirValidator.java
@@ -0,0 +1,34 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.model.Configuration;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ErrorDirValidator implements  ConstraintValidator<ErrorDirConstraint, Configuration> {
+    @Override
+    public void initialize(ErrorDirConstraint errDirCons) {
+    }
+
+    @Override
+    public boolean isValid(Configuration conf, ConstraintValidatorContext cxt) {
+        boolean proceed1 = !conf.getErrorDir().equals(conf.getDatasDir()) && !conf.getErrorDir().equals(conf.getValidatorsDir())
+                 && !conf.getErrorDir().equals(conf.getArchivesDir()) && !conf.getErrorDir().equals(conf.getOutputDir());
+        
+        boolean proceed2 = !conf.getDatasDir().equals(conf.getValidatorsDir()) && !conf.getDatasDir().equals(conf.getArchivesDir())
+                && !conf.getDatasDir().equals(conf.getOutputDir());
+        
+        boolean proceed3 = !conf.getValidatorsDir().equals(conf.getArchivesDir()) &&  !conf.getValidatorsDir().equals(conf.getOutputDir());
+        
+        boolean proceed4 = !conf.getArchivesDir().equals(conf.getOutputDir());
+        
+         return proceed1 && proceed2 && proceed3 && proceed4;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterConstraint.java
new file mode 100644
index 0000000..a117606
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterConstraint.java
@@ -0,0 +1,30 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author ASUS
+ */
+@Documented
+@Constraint(validatedBy = FileToValidateDelimiterValidator.class)
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface FileToValidateDelimiterConstraint {
+    
+     String message() default "Les délimiteurs de ligne et de colonne sont obligatoires";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterValidator.java
new file mode 100644
index 0000000..8a64fa3
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/FileToValidateDelimiterValidator.java
@@ -0,0 +1,30 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.pojo.FileToValidate;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FileToValidateDelimiterValidator  implements ConstraintValidator<FileToValidateDelimiterConstraint, FileToValidate> {
+    
+    @Override
+    public boolean isValid(FileToValidate t, ConstraintValidatorContext cvc) {
+
+        if (t.getDataType() != null
+                && (t.getDataType().equals(DataType.CSV) || t.getDataType().equals(DataType.TXT))) {
+
+            return t.getDelimiteurColonne()!= null && t.getDelimiteurLigne()!= null ;
+
+        }
+
+        return true;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptConstraint.java
new file mode 100644
index 0000000..cfe5d99
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/AnnotationType.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Documented
+@Constraint(validatedBy = KeyToDecryptValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface KeyToDecryptConstraint {
+    String message() default "La clé est sa confirmation doivent être non nulles avoir la même valeur";
+    Class<?>[] groups() default {};
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptValidator.java
new file mode 100644
index 0000000..b57686f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/KeyToDecryptValidator.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.pojo.Decryptage;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class KeyToDecryptValidator implements  ConstraintValidator<KeyToDecryptConstraint, Decryptage>{
+
+    @Override
+    public boolean isValid(Decryptage t, ConstraintValidatorContext cvc) {
+        System.out.println("Protege = "+t.isProtege());
+        if(t.isProtege())
+            return t.getKeyToDecrypt()!= null && !t.getKeyToDecrypt().isEmpty() &&
+                    t.getKeyToDecrypt().equals(t.getKeyConfirmation());
+        else return true;
+        
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SChedulerValidator.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SChedulerValidator.java
new file mode 100644
index 0000000..920f20a
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SChedulerValidator.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconvert.model.constraint;
+
+import com.megatim.fdxconvert.model.Tache;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+public class SChedulerValidator implements ConstraintValidator<SchedulerConstraint, Tache> {
+
+    @Override
+    public boolean isValid(Tache t, ConstraintValidatorContext cvc) {
+        return t.isMonday() || t.isTuesday()
+                || t.isWednesday() || t.isThursday()
+                || t.isFriday() || t.isSaturday() || t.isSunday();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SchedulerConstraint.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SchedulerConstraint.java
new file mode 100644
index 0000000..261683e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/constraint/SchedulerConstraint.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconvert.model.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+@Documented
+@Constraint(validatedBy = SChedulerValidator.class)
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SchedulerConstraint {
+
+    String message() default "Vous devez sélectionné au moins un jour de la semaine";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Assertion.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Assertion.java
new file mode 100644
index 0000000..55a4522
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Assertion.java
@@ -0,0 +1,63 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ *
+ * @author ASUS
+ */
+//@XmlRootElement(name = "assertion")
+public class Assertion {
+
+    private String assertName;
+
+    private String errorCode;
+
+    private boolean activate;
+
+    private List<ParamValue> paramValues = new ArrayList<>();
+
+    @XmlAttribute(name = "assert-name")
+    public String getAssertName() {
+        return assertName;
+    }
+
+    public void setAssertName(String assertName) {
+        this.assertName = assertName;
+    }
+
+    @XmlAttribute(name = "error-code")
+    public String getErrorCode() {
+        return errorCode;
+    }
+
+    public void setErrorCode(String errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    @XmlAttribute
+    public boolean isActivate() {
+        return activate;
+    }
+
+    public void setActivate(boolean activate) {
+        this.activate = activate;
+    }
+
+    @XmlElement(name = "param-value")
+    public List<ParamValue> getParamValues() {
+        return paramValues;
+    }
+
+    public void setParamValues(List<ParamValue> paramValues) {
+        this.paramValues = paramValues;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Entity.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Entity.java
new file mode 100644
index 0000000..2e2e815
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Entity.java
@@ -0,0 +1,62 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ *
+ * @author ASUS
+ */
+public class Entity {
+
+    private String name;
+
+    private String errorReportField;
+
+    private boolean activate;
+
+    private List<Validation> validations = new ArrayList<>();
+
+    @XmlAttribute
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @XmlAttribute(name = "error-report-field")
+    public String getErrorReportField() {
+        return errorReportField;
+    }
+
+    public void setErrorReportField(String errorReportField) {
+        this.errorReportField = errorReportField;
+    }
+
+    @XmlAttribute
+    public boolean isActivate() {
+        return activate;
+    }
+
+    public void setActivate(boolean activate) {
+        this.activate = activate;
+    }
+
+    @XmlElement(name = "validation")
+    public List<Validation> getValidations() {
+        return validations;
+    }
+
+    public void setValidations(List<Validation> validations) {
+        this.validations = validations;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/EntityList.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/EntityList.java
new file mode 100644
index 0000000..daebbd5
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/EntityList.java
@@ -0,0 +1,29 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ *
+ * @author ASUS
+ */
+//@XmlRootElement(name = "entities")
+public class EntityList {
+
+    @XmlElement(name = "entity")
+    private List<Entity> entityList = new ArrayList<>();
+
+    public List<Entity> getEntities() {
+        return entityList;
+    }
+
+    public void setEntities(List<Entity> entities) {
+        this.entityList = entities;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/ParamValue.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/ParamValue.java
new file mode 100644
index 0000000..5ca287f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/ParamValue.java
@@ -0,0 +1,49 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+/**
+ *
+ * @author ASUS
+ */
+//@XmlRootElement(name = "param-value")
+public class ParamValue {
+
+    private String name;
+
+    private String value;
+
+    private String field;
+
+    @XmlAttribute
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @XmlAttribute
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @XmlAttribute
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/PredicateConfig.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/PredicateConfig.java
new file mode 100644
index 0000000..ebd6093
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/PredicateConfig.java
@@ -0,0 +1,62 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "predicate-config")
+public class PredicateConfig {
+
+    private String xmlnsXsi;
+
+    private String xsiSchemaLocation;
+
+    private String xmlns;
+
+    private EntityList entityList;
+
+    @XmlAttribute(name = "xmlns:xsi")
+    public String getXmlnsXsi() {
+        return xmlnsXsi;
+    }
+
+    public void setXmlnsXsi(String xmlnsXsi) {
+        this.xmlnsXsi = xmlnsXsi;
+    }
+
+    @XmlAttribute(name = "xsi:schemaLocation")
+    public String getXsiSchemaLocation() {
+        return xsiSchemaLocation;
+    }
+
+    public void setXsiSchemaLocation(String xsiSchemaLocation) {
+        this.xsiSchemaLocation = xsiSchemaLocation;
+    }
+
+    @XmlAttribute(name = "xmlns")
+    public String getXmlns() {
+        return xmlns;
+    }
+
+    public void setXmlns(String xmlns) {
+        this.xmlns = xmlns;
+    }
+
+    @XmlElement(name = "entities")
+    public EntityList getEntityList() {
+        return entityList;
+    }
+
+    public void setEntityList(EntityList entityList) {
+        this.entityList = entityList;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/TypeFichierJsonsList.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/TypeFichierJsonsList.java
new file mode 100644
index 0000000..e139db6
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/TypeFichierJsonsList.java
@@ -0,0 +1,35 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class TypeFichierJsonsList {
+
+    private List<TypeFichierJson> typeFichierJson = new ArrayList<>();
+
+    public TypeFichierJsonsList() {
+    }
+
+    public TypeFichierJsonsList(List<TypeFichierJson> typeFichierJson) {
+        this.typeFichierJson = typeFichierJson;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Validation.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Validation.java
new file mode 100644
index 0000000..fd8b2b5
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/model/jaxb/Validation.java
@@ -0,0 +1,50 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.model.jaxb;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ *
+ * @author ASUS
+ */
+//@XmlRootElement(name = "validation")
+public class Validation {
+
+    private String fieldName;
+
+    private boolean activate;
+
+    private Assertion assertion;
+
+    @XmlAttribute(name = "field-name")
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    @XmlAttribute
+    public boolean isActivate() {
+        return activate;
+    }
+
+    public void setActivate(boolean activate) {
+        this.activate = activate;
+    }
+
+    @XmlElement
+    public Assertion getAssertion() {
+        return assertion;
+    }
+
+    public void setAssertion(Assertion assertion) {
+        this.assertion = assertion;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ColumnDefinition.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ColumnDefinition.java
new file mode 100644
index 0000000..1524e35
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ColumnDefinition.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconvert.pojo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ColumnDefinition {
+
+    private String name;
+
+    private String typeDonnee;
+
+    private int taille;
+
+    private int taillePartieDecimale;
+
+    private String formatDate;
+
+    private String separateurDate;
+
+    private int position;
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataFileToJson.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataFileToJson.java
new file mode 100644
index 0000000..88b3d1a
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataFileToJson.java
@@ -0,0 +1,45 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.TypeFichier;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Pattern.Flag;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class DataFileToJson {
+
+    @NotEmpty(message = "Le fichier à convertir est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String fileToConvertPath;
+
+//    @NotEmpty(message = "Le validateur XML est obligatoire", groups = {ViewFormValidationGroup.class})
+//    @Pattern(regexp = ".+\\.xml", flags = Flag.CASE_INSENSITIVE, message = "Bien vouloir sélectionner un fichier xml", groups = {ViewFormValidationGroup.class})
+    private String validateurPath;
+
+    private byte[] validateurBytes;
+
+    private Delimiteur delimiteurLigne;
+
+    private Delimiteur delimiteurColonne;
+
+    @NotNull(message = "Le format du fichier de données est obligatoire", groups = {ViewFormValidationGroup.class})
+    private DataType dataType;
+
+    private boolean headerPresent;
+
+    @NotNull(message = "Le typefichier ets obligatoire")
+    private TypeFichier typeFichier;
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataToImport.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataToImport.java
new file mode 100644
index 0000000..e2a6be1
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DataToImport.java
@@ -0,0 +1,37 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import java.io.File;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author mela
+ * @param <T>
+ */
+@Getter @Setter
+@NoArgsConstructor @AllArgsConstructor
+public class DataToImport<T> {
+    //Fichier duquel seront extraits les données
+    File file;
+    
+    //délimiteur de ligne
+    String rowDelimiter;
+    
+    //délimiteur de colonne
+    String columnDelimiter;
+    
+    //type des objets qui vont contenir les données extraites
+    Class<T> type;
+    
+    //liste des champs dans leur ordre d'apparition dans le fichier "file"
+    List<String> fields;
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Decryptage.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Decryptage.java
new file mode 100644
index 0000000..a56ef5e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Decryptage.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter @Setter
+@MappedSuperclass
+public class Decryptage {
+    @Transient
+    protected String keyToDecrypt;
+    
+    @Transient
+    protected String keyConfirmation;
+    
+    @Transient
+    protected boolean protege;
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DecryptageAES.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DecryptageAES.java
new file mode 100644
index 0000000..8621733
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/DecryptageAES.java
@@ -0,0 +1,36 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.model.constraint.DecryptageAESConstraint;
+import com.megatim.fdxconvert.model.constraint.KeyToDecryptConstraint;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotEmpty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter @Setter
+@DecryptageAESConstraint(groups = {ViewFormValidationGroup.class})
+public class DecryptageAES {
+    
+    @Transient
+    private String keyToDecrypt;
+    
+    @Transient
+    private String keyConfirmation;
+    
+    @NotEmpty(message= "Le fichier à décrypter est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String filePath;
+    
+    @NotEmpty(message= "Le repertoire de dépôt est obligatoire", groups = {ViewFormValidationGroup.class})
+    private String outputDir;
+    
+    private int keyLength = 128;
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Delimiteur.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Delimiteur.java
new file mode 100644
index 0000000..1a7d193
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/Delimiteur.java
@@ -0,0 +1,28 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+public class Delimiteur {
+
+    private String code;
+
+    private String libelle;
+
+    @Override
+    public String toString() {
+        return this.getLibelle();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidate.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidate.java
new file mode 100644
index 0000000..a78316f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidate.java
@@ -0,0 +1,58 @@
+package com.megatim.fdxconvert.pojo;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.model.constraint.ConfigConstraint;
+import com.megatim.fdxconvert.enums.DataType;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.model.constraint.FileToValidateDelimiterConstraint;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter
+@Setter
+@ConfigConstraint(groups = {ViewFormValidationGroup.class})
+@FileToValidateDelimiterConstraint(groups = {ViewFormValidationGroup.class})
+public class FileToValidate {
+
+    @NotEmpty(message = "Le fichier à valider est obligatoire", groups = {ViewFormValidationGroup.class})
+    //@Pattern(regexp="(.+\\.csv)|(.+\\.xlsx)|(.+\\.xls|.+\\.txt)", flags = Flag.CASE_INSENSITIVE, message="Bien vouloir sélectionner un fichier csv, xlsx, xls ou txt" , groups = {ViewFormValidationGroup.class})
+    private String filePath;
+
+    @NotNull(message = "Le typefichier est obligatoire", groups = {ViewFormValidationGroup.class})
+    private TypeFichier typeFichier;
+
+    private Delimiteur delimiteurLigne;
+
+    private Delimiteur delimiteurColonne;
+
+    private String txtFilePath;
+    
+    private String errorFilePath;
+
+    @NotNull(message = "Le format du fichier de données est obligatoire", groups = {ViewFormValidationGroup.class})
+    private DataType dataType;
+
+    private boolean headerPresent;
+    
+    private boolean strictValidation;
+    
+    @OneToMany(mappedBy = "fileTovalidate", cascade = CascadeType.ALL)
+    private Set<MetaAlphaNumeriqueField> metaAlphaNumeriqueFields = new HashSet<>();
+    
+    @Override
+    public String toString() {
+        return filePath+":"+typeFichier.getCode()+":"+dataType.getDataType();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidateDescription.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidateDescription.java
new file mode 100644
index 0000000..abfff06
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/FileToValidateDescription.java
@@ -0,0 +1,33 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import java.io.File;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * Classe qui sert à importer les données des fichiers à transférer
+ *
+ * @author STEPHANIE
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class FileToValidateDescription {
+
+    //Fichier duquel seront extraits les données
+    File file;
+
+    //délimiteur de ligne
+    String rowDelimiter;
+
+    //délimiteur de colonne
+    String columnDelimiter;
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ImportFile.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ImportFile.java
new file mode 100644
index 0000000..f0a6507
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ImportFile.java
@@ -0,0 +1,43 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.model.TypeFichier;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter @Setter
+public class ImportFile<T> {
+    
+    @NotEmpty(message = "Le fichier à importer est obligatoire" , groups = {ViewFormValidationGroup.class})
+    @Pattern(regexp=".+\\.csv", flags = Pattern.Flag.CASE_INSENSITIVE, message="Bien vouloir sélectionner un fichier csv" , groups = {ViewFormValidationGroup.class})
+    private String filePath;
+    
+//    @NotEmpty(message = "Le format du fichier est obligatoire" , groups = {ViewFormValidationGroup.class})
+//    private String formatFichier;
+    
+    @NotNull(message = "Le délimiteur de ligne est obligatoire" , groups = {ViewFormValidationGroup.class})
+    private Delimiteur delimiteurLigne;
+    
+    @NotNull(message = "Le délimiteur de colonne est obligatoire" , groups = {ViewFormValidationGroup.class})
+    private Delimiteur delimiteurColonne;
+    
+    //type des objets qui vont contenir les données extraites
+    Class<T> type;
+    
+    //Typefichier du fichier à importer
+    private TypeFichier typeFichier;
+    
+    //Chemin vers le repertoire où sera crée le fichier txt
+    private String outputDirPath;
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ResultFileParsing.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ResultFileParsing.java
new file mode 100644
index 0000000..15c31c8
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/ResultFileParsing.java
@@ -0,0 +1,21 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class ResultFileParsing {
+    private String[] finalColumnsTableLine;
+    private boolean columnTruncated;
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/TxtFileToValidate.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/TxtFileToValidate.java
new file mode 100644
index 0000000..e5efdd9
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/pojo/TxtFileToValidate.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.pojo;
+
+import com.megatimfx.common.validationgroups.ViewFormValidationGroup;
+import com.megatim.fdxconvert.model.TypeFichier;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+@Getter @Setter
+public class TxtFileToValidate {
+    
+    @NotEmpty(message = "Le fichier à valider est obligatoire" , groups = {ViewFormValidationGroup.class})
+    private String txtFilePath;
+    
+    //Type du fichier à valider
+    @NotNull(message = "Le typefichier est obligatoire" , groups = {ViewFormValidationGroup.class})
+    private TypeFichier typeFichier;
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/AlphaNumeriqueFieldService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/AlphaNumeriqueFieldService.java
new file mode 100644
index 0000000..a3ad841
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/AlphaNumeriqueFieldService.java
@@ -0,0 +1,53 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AlphaNumeriqueFieldService implements GenericCrudService<AlphaNumeriqueField> {
+    
+    private static AlphaNumeriqueFieldService alphaNumeriqueFieldService;
+    private static AbstractDAO<AlphaNumeriqueField> dao;
+    
+    private AlphaNumeriqueFieldService() {
+        
+    }
+    
+     public static synchronized AlphaNumeriqueFieldService getInstance() {
+        if (alphaNumeriqueFieldService == null) {
+            alphaNumeriqueFieldService = new AlphaNumeriqueFieldService();
+            dao = new AbstractDAO<>(AlphaNumeriqueField.class);
+        }
+        return alphaNumeriqueFieldService;
+    }
+
+    @Override
+    public AlphaNumeriqueField add(AlphaNumeriqueField t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public AlphaNumeriqueField edit(AlphaNumeriqueField t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<AlphaNumeriqueField> getAll() throws Exception {
+        return dao.getAll("AlphaNumeriqueField");
+    }
+
+    @Override
+    public void delete(AlphaNumeriqueField t) throws Exception {
+        dao.delete(t);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConfigurationService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConfigurationService.java
new file mode 100644
index 0000000..6621bc0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConfigurationService.java
@@ -0,0 +1,63 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.Configuration;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author mela
+ */
+public class ConfigurationService implements GenericCrudService<Configuration> {
+    private static ConfigurationService configurationService;
+    private static AbstractDAO<Configuration> dao;
+    
+    private ConfigurationService() {
+        
+    }
+    
+    public static synchronized ConfigurationService getInstance() {
+        if (configurationService == null) {
+            configurationService = new ConfigurationService();
+            dao = new AbstractDAO<>(Configuration.class);
+        }
+        return configurationService;
+    }
+    
+    @Override
+    public Configuration add(Configuration t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public Configuration edit(Configuration t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<Configuration> getAll() throws Exception {
+        return dao.getAll("Configuration");
+    }
+
+    @Override
+    public void delete(Configuration t) throws Exception {
+        dao.delete(t);
+    }
+    
+    public Configuration getCurrentConfig(){
+        try {
+            return getAll().stream().findFirst().orElse(null);
+        } catch (Exception ex) {
+            Logger.getLogger(ConfigurationService.class.getName()).log(Level.SEVERE, null, ex);
+            return null;
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConversionModelService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConversionModelService.java
new file mode 100644
index 0000000..ba5d504
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ConversionModelService.java
@@ -0,0 +1,96 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.ConversionModel;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConversionModelService implements GenericCrudService<ConversionModel> {
+    
+    private static ConversionModelService conversionModelService;
+    private static AbstractDAO<ConversionModel> dao;
+    private PaginationElts<ConversionModel> pagination;
+
+    private ConversionModelService() {
+        
+    }
+    
+    public static synchronized ConversionModelService getInstance() {
+        if (conversionModelService == null) {
+            conversionModelService = new ConversionModelService();
+            dao = new AbstractDAO<>(ConversionModel.class);
+        }
+        return conversionModelService;
+    }
+    
+    @Override
+    public ConversionModel add(ConversionModel t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public ConversionModel edit(ConversionModel t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<ConversionModel> getAll() throws Exception {
+        return dao.getAll("ConversionModel");
+    }
+
+    @Override
+    public void delete(ConversionModel t) throws Exception {
+        dao.delete(t);
+    }
+    
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<ConversionModel> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+         pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+    
+    public  AbstractDAO<ConversionModel> getDao() {
+        return dao;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/DecryptageAESService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/DecryptageAESService.java
new file mode 100644
index 0000000..94f8695
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/DecryptageAESService.java
@@ -0,0 +1,50 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.pojo.DecryptageAES;
+import java.util.List;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class DecryptageAESService  implements GenericCrudService<DecryptageAES>{
+
+    private static DecryptageAESService decryptageAESService;
+    
+    private DecryptageAESService() {
+        
+    }
+    
+    public static synchronized DecryptageAESService getInstance() {
+        if (decryptageAESService == null) {
+            decryptageAESService = new DecryptageAESService();
+        }
+        return decryptageAESService;
+    }
+    
+    @Override
+    public DecryptageAES add(DecryptageAES t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public DecryptageAES edit(DecryptageAES t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public List<DecryptageAES> getAll() throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public void delete(DecryptageAES t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ImportFileService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ImportFileService.java
new file mode 100644
index 0000000..6b2fa3b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ImportFileService.java
@@ -0,0 +1,88 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.dao.TypeFichierDAO;
+import com.megatim.fdxconvert.pojo.ImportFile;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.pojo.DataToImport;
+import com.megatim.fdxconvert.util.ImportData;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * structLigne : id, code,format_date, position, taille, type_donnee,
+ * validateur_fichier_id ValidateurFichier : id, nombre_position,
+ * type_fichier_code
+ *
+ * @author STEPHANIE
+ */
+public class ImportFileService implements GenericCrudService<ImportFile> {
+
+    private static ImportFileService importFileService;
+    private PaginationElts<TypeFichier> pagination;
+
+    private ImportFileService() {
+        
+    }
+    
+    public static synchronized ImportFileService getInstance() {
+        if (importFileService == null) {
+            importFileService = new ImportFileService();
+        }
+        return importFileService;
+    }
+
+    @Override
+    public ImportFile add(ImportFile t) throws Exception {
+        importDataFromFile(t);
+        return t;
+    }
+
+    @Override
+    public ImportFile edit(ImportFile t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public List<ImportFile> getAll() throws Exception {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void delete(ImportFile t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    private void importDataFromFile(ImportFile im) throws Exception{
+        List<String> fields = new ArrayList<>();
+
+        if (im != null && im.getType() != null) {
+            if (im.getType().equals(TypeFichier.class)) {
+                fields.add("code");
+                fields.add("libelle");
+                fields.add("codeParticipant");
+            }
+        }
+        DataToImport datIm = new DataToImport(new File(im.getFilePath()), im.getDelimiteurLigne().getCode(), im.getDelimiteurColonne().getCode(), im.getType(), fields);
+        List<Object> datas = ImportData.importDataFromCsvFile(datIm);
+        if (im.getType().equals(TypeFichier.class)) {
+            AbstractDAO<TypeFichier> dao = new AbstractDAO<>(TypeFichier.class);
+            
+            datas.forEach(d -> {
+                TypeFichier t = (TypeFichier) d;
+                Optional<TypeFichier> opt = TypeFichierDAO.findByCode(t);
+                if(!opt.isPresent())
+                     dao.add(t);
+            });
+        }
+    }
+}
+//{}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/JournalService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/JournalService.java
new file mode 100644
index 0000000..f6edc2e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/JournalService.java
@@ -0,0 +1,97 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.Journal;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JournalService implements GenericCrudService<Journal> {
+    private static JournalService journalService;
+    private static AbstractDAO<Journal> dao;
+    private PaginationElts<Journal> pagination;
+    
+    private JournalService() {
+        
+    }
+    
+    public static synchronized JournalService getInstance() {
+        if (journalService == null) {
+            journalService = new JournalService();
+            dao = new AbstractDAO<>(Journal.class);
+        }
+        return journalService;
+    }
+    
+     @Override
+    public Journal add(Journal t) throws Exception {
+        
+        if(t.getDateAction() != null) {
+            t.setLocalDateAction(t.getDateAction().toLocalDate());
+        }
+        
+        return dao.add(t);
+    }
+
+    @Override
+    public Journal edit(Journal t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<Journal> getAll() throws Exception {
+        return dao.getAll("Journal");
+    }
+
+    @Override
+    public void delete(Journal t) throws Exception {
+        dao.delete(t);
+    }
+    
+     //PAGINATION BLOCK
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<Journal> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/JsonStructureService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/JsonStructureService.java
new file mode 100644
index 0000000..27c1956
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/JsonStructureService.java
@@ -0,0 +1,95 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonStructureService implements GenericCrudService<JsonStructure> {
+
+    private static JsonStructureService jsonStructureService;
+    private static AbstractDAO<JsonStructure> dao;
+    private PaginationElts<JsonStructure> pagination;
+
+    private JsonStructureService() {
+    }
+
+    public static synchronized JsonStructureService getInstance() {
+        if (jsonStructureService == null) {
+            jsonStructureService = new JsonStructureService();
+            dao = new AbstractDAO<>(JsonStructure.class);
+        }
+        return jsonStructureService;
+    }
+
+    @Override
+    public JsonStructure add(JsonStructure t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public JsonStructure edit(JsonStructure t) throws Exception {
+        return dao.edit(t);
+    }
+
+    @Override
+    public List<JsonStructure> getAll() throws Exception {
+        return dao.getAll("JsonStructure");
+    }
+
+    @Override
+    public void delete(JsonStructure t) throws Exception {
+        dao.delete(t);
+    }
+
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<JsonStructure> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+
+    public AbstractDAO<JsonStructure> getDao() {
+        return dao;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/MetaAlphaNumeriqueFieldService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/MetaAlphaNumeriqueFieldService.java
new file mode 100644
index 0000000..47b616f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/MetaAlphaNumeriqueFieldService.java
@@ -0,0 +1,52 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MetaAlphaNumeriqueFieldService implements GenericCrudService<MetaAlphaNumeriqueField>{
+    private static MetaAlphaNumeriqueFieldService metaAlphaNumeriqueFieldService;
+    private static AbstractDAO<MetaAlphaNumeriqueField> dao;
+    
+    private MetaAlphaNumeriqueFieldService() {
+        
+    }
+    
+    public static synchronized MetaAlphaNumeriqueFieldService getInstance() {
+        if (metaAlphaNumeriqueFieldService == null) {
+            metaAlphaNumeriqueFieldService = new MetaAlphaNumeriqueFieldService();
+            dao = new AbstractDAO<>(MetaAlphaNumeriqueField.class);
+        }
+        return metaAlphaNumeriqueFieldService;
+    }
+    
+     @Override
+    public MetaAlphaNumeriqueField add(MetaAlphaNumeriqueField t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public MetaAlphaNumeriqueField edit(MetaAlphaNumeriqueField t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<MetaAlphaNumeriqueField> getAll() throws Exception {
+        return dao.getAll("MetaAlphaNumeriqueField");
+    }
+
+    @Override
+    public void delete(MetaAlphaNumeriqueField t) throws Exception {
+        dao.delete(t);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ModeleJsonService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ModeleJsonService.java
new file mode 100644
index 0000000..bf5c027
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ModeleJsonService.java
@@ -0,0 +1,96 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonService implements GenericCrudService<ModeleJson> {
+
+    private static ModeleJsonService modeleJsonService;
+    private static AbstractDAO<ModeleJson> dao;
+    private PaginationElts<ModeleJson> pagination;
+
+    private ModeleJsonService() {
+
+    }
+
+    public static synchronized ModeleJsonService getInstance() {
+        if (modeleJsonService == null) {
+            modeleJsonService = new ModeleJsonService();
+            dao = new AbstractDAO<>(ModeleJson.class);
+        }
+        return modeleJsonService;
+    }
+    
+    @Override
+    public ModeleJson add(ModeleJson t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public ModeleJson edit(ModeleJson t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<ModeleJson> getAll() throws Exception {
+        return dao.getAll("ModeleJson");
+    }
+
+    @Override
+    public void delete(ModeleJson t) throws Exception {
+        dao.delete(t);
+    }
+    
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<ModeleJson> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+         pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+    
+    public  AbstractDAO<ModeleJson> getDao() {
+        return dao;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/StructureChampJsonService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/StructureChampJsonService.java
new file mode 100644
index 0000000..5e7e0d4
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/StructureChampJsonService.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class StructureChampJsonService implements GenericCrudService<StructureChampJson> {
+
+    private static StructureChampJsonService structureChampJsonService;
+    private static AbstractDAO<StructureChampJson> dao;
+    
+    public static synchronized StructureChampJsonService getInstance() {
+        
+        if(structureChampJsonService == null) {
+            structureChampJsonService = new StructureChampJsonService();
+            dao = new AbstractDAO<>(StructureChampJson.class);
+        }
+        
+        return structureChampJsonService;
+    }
+
+    @Override
+    public StructureChampJson add(StructureChampJson t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public StructureChampJson edit(StructureChampJson t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public List<StructureChampJson> getAll() throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public void delete(StructureChampJson t) throws Exception {
+        dao.delete(t);
+    }
+    
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/SubObjectService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/SubObjectService.java
new file mode 100644
index 0000000..47b2de3
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/SubObjectService.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.SubObject;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SubObjectService implements GenericCrudService<SubObject> {
+
+    private static SubObjectService subObjectService;
+    private static AbstractDAO<SubObject> dao;
+    
+    public static synchronized SubObjectService getInstance() {
+        
+        if(subObjectService == null) {
+            subObjectService = new SubObjectService();
+             dao = new AbstractDAO<>(SubObject.class);
+        }
+        
+        return subObjectService;
+    }
+
+    @Override
+    public SubObject add(SubObject t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public SubObject edit(SubObject t) throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public List<SubObject> getAll() throws Exception {
+        throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+    }
+
+    @Override
+    public void delete(SubObject t) throws Exception {
+        dao.delete(t);
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJob.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJob.java
new file mode 100644
index 0000000..370285a
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJob.java
@@ -0,0 +1,281 @@
+package com.megatim.fdxconvert.service;
+
+import com.megatim.typefichier.validator.Validator;
+import com.megatim.typefichier.validator.model.ConfigJsonValidator;
+import com.megatim.typefichier.validator.model.ConfigStreamValidator;
+import static com.megatim.typefichier.validator.utilities.Utilities.getCharset;
+import com.megatim.fdxconvert.controller.FileToValidateEditDialogController;
+import com.megatim.fdxconvert.dao.TypeFichierJsonDAO;
+import com.megatim.fdxconvert.dao.ValidateurDAO;
+import com.megatim.fdxconvert.enums.DataType;
+import static com.megatim.fdxconvert.enums.DataType.CSV;
+import static com.megatim.fdxconvert.enums.DataType.TXT;
+import static com.megatim.fdxconvert.enums.DataType.XLS;
+import static com.megatim.fdxconvert.enums.DataType.XLSX;
+import com.megatim.fdxconvert.enums.JournalStatut;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Configuration;
+import com.megatim.fdxconvert.model.Journal;
+import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.util.ImportData;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import com.megatim.fdxconvert.util.TypeFichierJsonConverter;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Random;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.io.IOUtils;
+import org.quartz.Job;
+import org.quartz.JobDataMap;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class TacheJob implements Job  {
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+
+        JobDataMap dataMap = context.getJobDetail().getJobDataMap();
+
+        Tache tache = TacheService.getInstance().findByTacheId(dataMap.getString("tacheId"));
+
+        //On peut concrètement exploitater la tâche ici !!
+        File sourceDirectory = new File(tache.getRepertoireSource());
+
+        if (sourceDirectory.exists() && sourceDirectory.isDirectory()) {
+
+            Configuration config = ConfigurationService.getInstance().getCurrentConfig();
+
+            for (File file : sourceDirectory.listFiles()) {
+
+                if (file.isFile()) {
+
+                    try {
+
+                        if (tache.getDataType().equals(DataType.JSON)) {
+                            validateJsonFile(tache, file, config);
+
+                        } else {
+                            //On converti le fichier à valider en fichier
+                            generateAndParseTxtFile(tache, file, config);
+                        }
+
+                    } catch (Exception ex) {
+                        Logger.getLogger(TacheJob.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+                    }
+
+                }
+
+            }
+
+        }
+
+    }
+
+    private void generateAndParseTxtFile(Tache tache, File fileToValidate, Configuration config) throws Exception {
+        Charset charset = getCharset(fileToValidate);
+        long lignes = numberOfLines(fileToValidate, charset);
+
+        if (config == null) {
+            saveJournal(fileToValidate.getName(), Integer.parseInt("" + lignes), JournalStatut.ECHEC_REPERTOIRE, tache.getTypeFichier().getCode(), fileToValidate.getParent());
+            return;
+        }
+
+        Optional<Validateur> validateur = ValidateurDAO.findByCodeTypeFichier(tache.getTypeFichier().getCode());
+
+        if (!validateur.isPresent()) {
+            saveJournal(fileToValidate.getName(), Integer.parseInt("" + lignes), JournalStatut.ECHEC_VALIDATEUR, tache.getTypeFichier().getCode(), fileToValidate.getParent());
+            return;
+        }
+
+        String fileName = tache.getTypeFichier().getCode() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + generateTierce() + ".txt";
+
+        File outputFile = new File(config.getDatasDir(), fileName);
+
+        if (!outputFile.exists()) {
+
+            //Creation du fichier
+            outputFile.createNewFile();
+        }
+
+        FileToValidateDescription raw;
+
+        Set<MetaAlphaNumeriqueField> metaAlphaFields = tache.getMetaAlphaNumeriqueFields();
+        Set<AlphaNumeriqueField> alphaFields = new HashSet<>();
+
+        metaAlphaFields.stream().forEach(m -> {
+            alphaFields.add(m.getAlphaNumeriqueField());
+        });
+
+        switch (tache.getDataType()) {
+
+            case TXT:
+
+                raw = new FileToValidateDescription(fileToValidate, tache.getRowDeliminter(), tache.getColDeliminter());
+
+                if (tache.isStrictValidation()) {
+
+                    ImportData.parseFileByFieldLength(raw, validateur.get(), outputFile, tache.isWithHeader());
+
+                } else {
+
+                    ImportData.parseFileCharacterByCharacter(raw, validateur.get(), outputFile, tache.isWithHeader(), alphaFields);
+                }
+
+                break;
+
+            case CSV:
+
+                raw = new FileToValidateDescription(fileToValidate, tache.getRowDeliminter(), tache.getColDeliminter());
+                ImportData.parseCsvFile(raw, validateur.get(), outputFile, tache.isWithHeader(), alphaFields);
+
+                break;
+
+            case XLS:
+                ImportData.parseXlsFile(fileToValidate.getAbsolutePath(), tache.isWithHeader(), outputFile, validateur.get(), alphaFields);
+                break;
+            case XLSX:
+
+                ImportData.parseXlsxFile(fileToValidate.getAbsolutePath(), tache.isWithHeader(), outputFile, validateur.get(), alphaFields);
+                break;
+
+            default:
+                break;
+        }
+        saveJournal(fileToValidate.getName(), Integer.parseInt("" + lignes), JournalStatut.SUCCES_GEN_TXT, tache.getTypeFichier().getCode(), fileToValidate.getParent());
+        validate(tache, outputFile, fileToValidate, config);
+
+    }
+
+    private void validateJsonFile(Tache tache, File fileToValidate, Configuration config) throws Exception {
+        Path errorPath = Paths.get(tache.getRepertoireErreur(),
+                tache.getTypeFichier().getCode() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + generateTierce() + "_JSON.txt");
+        Charset charset = getCharset(fileToValidate);
+        int lignes = numberOfLines(fileToValidate, charset);
+
+        if (config == null) {
+            saveJournal(fileToValidate.getName(), lignes, JournalStatut.ECHEC_REPERTOIRE, tache.getTypeFichier().getCode(), fileToValidate.getParent());
+            return;
+        }
+        TypeFichierJson typefichierJson = TypeFichierJsonDAO.getByTypeFichier(tache.getTypeFichier().getCode());
+
+        if (typefichierJson == null) {
+            saveJournal(fileToValidate.getName(), lignes, JournalStatut.ECHEC_MODELE_JSON, tache.getTypeFichier().getCode(), fileToValidate.getParent());
+            return;
+        }
+        Validator validator = new Validator();
+        ConfigJsonValidator configJson = new ConfigJsonValidator(
+                errorPath.toString(),
+                tache.getRepertoireDestination(),
+                fileToValidate,
+                new TypeFichierJsonConverter(typefichierJson).convert());
+
+        boolean result = validator.validate(configJson, "", true, true, Utilities.getNbThreads());
+
+        if (result) {
+            saveJournal(fileToValidate.getName(), lignes, JournalStatut.SUCCES, tache.getTypeFichier().getCode(), tache.getRepertoireDestination());
+
+        } else {
+            saveJournal(fileToValidate.getName(), lignes, JournalStatut.ECHEC, tache.getTypeFichier().getCode(), tache.getRepertoireErreur());
+        }
+
+    }
+
+    private void saveJournal(String fileName, int lignes, JournalStatut statut, String codeTypeFichier, String sourceDirectory) throws Exception {
+        Journal journal = new Journal(LocalDateTime.now(), statut, codeTypeFichier);
+        journal.setSourceDirectory(sourceDirectory);
+        journal.setSourceFileName(fileName);
+        journal.setNombreLignes(lignes);
+
+        JournalService.getInstance().add(journal);
+    }
+
+    /**
+     *
+     * @param tache
+     * @param fileToValidate : Fichier contenant les données normalisées
+     * @param originalFile : Fichier d'origine contenant les données brutes
+     * @param config
+     * @throws Exception
+     */
+    private void validate(Tache tache, File outputFile, File originalFile, Configuration config) throws Exception {
+
+        Charset charset = getCharset(outputFile);
+        final int lignes = numberOfLines(outputFile, charset);
+
+        if (config == null) {
+            saveJournal(outputFile.getName(), lignes, JournalStatut.ECHEC_REPERTOIRE, tache.getTypeFichier().getCode(), outputFile.getParent());
+            return;
+        }
+
+        Optional<Validateur> validateur = ValidateurDAO.findByCodeTypeFichier(tache.getTypeFichier().getCode());
+
+        if (!validateur.isPresent()) {
+            saveJournal(outputFile.getName(), lignes, JournalStatut.ECHEC_VALIDATEUR, tache.getTypeFichier().getCode(), outputFile.getParent());
+            return;
+        }
+
+        byte[] targetArray = IOUtils.toByteArray(FileToValidateEditDialogController.class.getClassLoader().getResourceAsStream("predicatelogic-engine.xml"));
+
+        ConfigStreamValidator configValidator
+                = new ConfigStreamValidator(targetArray, validateur.get().getContent(), tache.getRepertoireErreur(),
+                        tache.getRepertoireDestination(), outputFile, originalFile);
+
+        Validator validator = new Validator();
+
+        boolean result = validator.validate(configValidator, Boolean.TRUE, Boolean.TRUE, Utilities.getNbThreads());
+
+        if (result) {
+            saveJournal(outputFile.getName(), lignes, JournalStatut.SUCCES, tache.getTypeFichier().getCode(), tache.getRepertoireDestination());
+
+        } else {
+            saveJournal(outputFile.getName(), lignes, JournalStatut.ECHEC, tache.getTypeFichier().getCode(), tache.getRepertoireErreur());
+        }
+
+    }
+
+    private String generateTierce() {
+
+        // Instance of random class
+        Random rand = new Random();
+        int upperbound = 60;
+        int random = rand.nextInt(upperbound);
+
+        return String.format("%02d", random);
+
+    }
+
+    private int numberOfLines(File file, Charset charset) {
+        int nb = 0;
+
+        try ( FileInputStream fis = new FileInputStream(file);  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+
+            while (reader.readLine() != null) {
+                nb++;
+            }
+        } catch (IOException ex) {
+            Logger.getLogger(TacheJob.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+        return nb;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJobService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJobService.java
new file mode 100644
index 0000000..56fb3d5
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheJobService.java
@@ -0,0 +1,91 @@
+package com.megatim.fdxconvert.service;
+
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.service.util.SchedulerUtil;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.quartz.JobBuilder;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.impl.StdSchedulerFactory;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class TacheJobService {
+
+    private TacheJobService() {
+    }
+
+    private static Scheduler scheduler;
+
+    private static TacheJobService tacheJobService;
+
+    public static TacheJobService getInstance() {
+
+        if (tacheJobService == null) {
+
+            try {
+
+                scheduler = StdSchedulerFactory.getDefaultScheduler();
+                tacheJobService = new TacheJobService();
+
+            } catch (SchedulerException ex) {
+            }
+        }
+
+        return tacheJobService;
+    }
+
+    public void startJobs() {
+
+        try {
+
+            scheduler.start();
+
+            List<Tache> taches = TacheService.getInstance().getAll();
+
+            taches.forEach(t -> {
+
+                if (t.isActive()) {
+
+                    //Creation concrète du Job (un Job concrèt se matérialise via la classe JobDetail)
+                    JobDetail job = JobBuilder
+                            .newJob(TacheJob.class)
+                            .withIdentity(t.getLibelle())
+                            .usingJobData("tacheId", t.getLibelle()).build();
+
+                    //Ajout du Job crée dans l'ordonnanceur
+                    try {
+                        scheduler.scheduleJob(job, SchedulerUtil.buildTriggerForTache(t));
+                    } catch (SchedulerException ex) {
+                        Logger.getLogger(TacheJobService.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+
+                }
+
+            });
+
+        } catch (Exception ex) {
+            Logger.getLogger(TacheJobService.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+    public void restartJob() {
+
+        try {
+
+            scheduler.clear();
+            this.startJobs();
+
+        } catch (SchedulerException ex) {
+            Logger.getLogger(TacheJobService.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheService.java
new file mode 100644
index 0000000..ffa4133
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TacheService.java
@@ -0,0 +1,156 @@
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.dao.HibernateUtil;
+import com.megatim.fdxconvert.model.Tache;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+import org.hibernate.Session;
+import org.hibernate.query.Query;
+
+/**
+ *
+ * @author lenovo
+ */
+public class TacheService implements GenericCrudService<Tache> {
+
+    private static TacheService service;
+
+    private static AbstractDAO<Tache> dao;
+
+    private PaginationElts<Tache> pagination;
+
+    public static synchronized TacheService getInstance() {
+        if (service == null) {
+            service = new TacheService();
+            dao = new AbstractDAO<>(Tache.class);
+        }
+        return service;
+    }
+
+    @Override
+    public Tache add(Tache t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public Tache edit(Tache t) throws Exception {
+        return dao.edit(t);
+    }
+
+    @Override
+    public List<Tache> getAll() throws Exception {
+        return dao.getAll("Tache");
+    }
+
+    @Override
+    public void delete(Tache t) throws Exception {
+        dao.delete(t);
+        Thread th = new Thread(() -> {
+            TacheJobService.getInstance().restartJob();
+        });
+
+        th.setDaemon(true);
+        th.start();
+    }
+
+    public Tache findByTacheId(String tacheId) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from Tache where libelle = :tacheId");
+            query.setParameter("tacheId", tacheId);
+            return (Tache) query.uniqueResult();
+
+        }
+
+    }
+
+    public Tache findByTypefichier(TypeFichier typeFichier) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from Tache where typeFichier = :typeFichier");
+            query.setParameter("typeFichier", typeFichier);
+            return (Tache) query.uniqueResult();
+
+        }
+
+    }
+
+    public Tache findByRepertoireSource(String repertoireSource) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from Tache where repertoireSource = :repertoireSource");
+            query.setParameter("repertoireSource", repertoireSource);
+            return (Tache) query.uniqueResult();
+
+        }
+
+    }
+
+    public Tache findByRepertoireDestination(String repertoireDestination) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from Tache where repertoireDestination = :repertoireDestination");
+            query.setParameter("repertoireDestination", repertoireDestination);
+            return (Tache) query.uniqueResult();
+
+        }
+
+    }
+
+    public Tache findByRepertoireErreur(String repertoireErreur) {
+
+        try ( Session session = HibernateUtil.getSessionFactory().openSession()) {
+
+            Query query = session.createQuery("from Tache where repertoireErreur = :repertoireErreur");
+            query.setParameter("repertoireErreur", repertoireErreur);
+            return (Tache) query.uniqueResult();
+
+        }
+
+    }
+
+    //PAGINATION BLOCK
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<Tache> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TruncatedElementService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TruncatedElementService.java
new file mode 100644
index 0000000..b46741b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TruncatedElementService.java
@@ -0,0 +1,98 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.TruncatedElement;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TruncatedElementService implements GenericCrudService<TruncatedElement> {
+
+    private static TruncatedElementService truncatedElementService;
+    private static AbstractDAO<TruncatedElement> dao;
+    private PaginationElts<TruncatedElement> pagination;
+
+    private TruncatedElementService() {
+
+    }
+
+    public static synchronized TruncatedElementService getInstance() {
+        if (truncatedElementService == null) {
+            truncatedElementService = new TruncatedElementService();
+            dao = new AbstractDAO<>(TruncatedElement.class);
+        }
+        return truncatedElementService;
+    }
+
+    @Override
+    public TruncatedElement add(TruncatedElement t) throws Exception {
+        
+        if(t.getDateAction() != null) {
+            t.setLocalDateAction(t.getDateAction().toLocalDate());
+        }
+        
+        return dao.add(t);
+    }
+
+    @Override
+    public TruncatedElement edit(TruncatedElement t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<TruncatedElement> getAll() throws Exception {
+        return dao.getAll("TruncatedElement");
+    }
+
+    @Override
+    public void delete(TruncatedElement t) throws Exception {
+        dao.delete(t);
+    }
+
+    //PAGINATION BLOCK
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<TruncatedElement> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierJsonService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierJsonService.java
new file mode 100644
index 0000000..b356d69
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierJsonService.java
@@ -0,0 +1,92 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+
+import java.util.List;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierJsonService implements GenericCrudService<TypeFichierJson> {
+
+    private static TypeFichierJsonService typeFichierService;
+    private static AbstractDAO<TypeFichierJson> dao;
+    private PaginationElts<TypeFichierJson> pagination;
+
+    private TypeFichierJsonService() {
+    }
+
+    public static synchronized TypeFichierJsonService getInstance() {
+        if (typeFichierService == null) {
+            typeFichierService = new TypeFichierJsonService();
+            dao = new AbstractDAO<>(TypeFichierJson.class);
+        }
+        return typeFichierService;
+    }
+
+    @Override
+    public TypeFichierJson add(TypeFichierJson t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public TypeFichierJson edit(TypeFichierJson t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<TypeFichierJson> getAll() throws Exception {
+        return dao.getAll("TypeFichierJson");
+    }
+
+    @Override
+    public void delete(TypeFichierJson t) throws Exception {
+        dao.delete(t);
+    }
+
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<TypeFichierJson> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierService.java
new file mode 100644
index 0000000..324d7d0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/TypeFichierService.java
@@ -0,0 +1,108 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.dao.TypeFichierDAO;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import java.util.List;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class TypeFichierService implements GenericCrudService<TypeFichier> {
+
+    private static TypeFichierService typeFichierService;
+    private static AbstractDAO<TypeFichier> dao;
+    private PaginationElts<TypeFichier> pagination;
+
+    private TypeFichierService() {
+
+    }
+
+    public static synchronized TypeFichierService getInstance() {
+        if (typeFichierService == null) {
+            typeFichierService = new TypeFichierService();
+            dao = new AbstractDAO<>(TypeFichier.class);
+        }
+        return typeFichierService;
+    }
+
+    @Override
+    public TypeFichier add(TypeFichier t) throws Exception {
+        return dao.add(t);
+    }
+
+    @Override
+    public TypeFichier edit(TypeFichier t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<TypeFichier> getAll() throws Exception {
+        return dao.getAll("TypeFichier");
+    }
+
+    public List<TypeFichier> getAllTypeFichWithoutValidateur() throws Exception {
+        return TypeFichierDAO.getAllTypeFichWithoutValidateur();
+    }
+
+    public List<TypeFichier> getAllTypeFichWithoutParaAuto() throws Exception {
+        return TypeFichierDAO.getAllTypeFichWithoutParaAuto();
+    }
+
+    @Override
+    public void delete(TypeFichier t) throws Exception {
+        TypeFichierDAO.delete(t);
+        Thread th = new Thread(() -> {
+            TacheJobService.getInstance().restartJob();
+        });
+
+        th.setDaemon(true);
+        th.start();
+    }
+
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<TypeFichier> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+
+        return pagination.getListe();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ValidateurService.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ValidateurService.java
new file mode 100644
index 0000000..2c4df91
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/ValidateurService.java
@@ -0,0 +1,152 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service;
+
+import com.megatim.typefichier.validator.model.enums.TypeDonnee;
+import com.megatimfx.common.pojo.SearchCriteria;
+import com.megatimfx.common.service.GenericCrudService;
+import com.megatim.fdxconvert.dao.AbstractDAO;
+import com.megatim.fdxconvert.dao.ValidateurDAO;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.service.pojo.PaginationElts;
+import com.megatim.fdxconvert.util.ParserUtils;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public class ValidateurService implements GenericCrudService<Validateur> {
+
+    private static ValidateurService validateurService;
+    private static AbstractDAO<Validateur> dao;
+    private PaginationElts<Validateur> pagination;
+
+    private ValidateurService() {
+
+    }
+
+    public static synchronized ValidateurService getInstance() {
+        if (validateurService == null) {
+            validateurService = new ValidateurService();
+            dao = new AbstractDAO<>(Validateur.class);
+        }
+        return validateurService;
+    }
+
+    @Override
+    public Validateur add(Validateur t) throws Exception {
+
+        List<AlphaNumeriqueField> fields = getAlphaNumeriqueFields(t);
+        t.setAlphaFields(fields);
+
+        return dao.add(t);
+    }
+
+    @Override
+    public Validateur edit(Validateur t) throws Exception {
+        return dao.edit(t);
+
+    }
+
+    @Override
+    public List<Validateur> getAll() throws Exception {
+        return dao.getAll("Validateur");
+    }
+
+    @Override
+    public void delete(Validateur t) throws Exception {
+        ValidateurDAO.delete(t);
+    }
+
+    @Override
+    public boolean isLast() {
+        return pagination.isLast();
+    }
+
+    @Override
+    public boolean isFirst() {
+        return pagination.isFirst();
+    }
+
+    @Override
+    public int getCurrentPage() {
+        return pagination.getPage();
+    }
+
+    @Override
+    public int getNumberOfElements() {
+        return pagination.getNumberOfElts();
+    }
+
+    @Override
+    public int getNumberPerPage() {
+        return pagination.getNbEltsPerPage();
+    }
+
+    @Override
+    public Long getTotalElements() {
+        return pagination.getTotalElts();
+    }
+
+    @Override
+    public List<Validateur> getAllByPage(int pageNumber, List<SearchCriteria> searchCriterias) {
+        pagination = dao.initPaginationElts(pageNumber, searchCriterias);
+        return pagination.getListe();
+    }
+
+    public AbstractDAO<Validateur> getDao() {
+        return dao;
+    }
+
+    /**
+     * Méthode qui extrait les champs alphanumériques dont la taille est
+     * supérieure à 255, pour un éventuel troncage
+     *
+     * @param validateur
+     * @return
+     * @throws Exception
+     */
+    private List<AlphaNumeriqueField> getAlphaNumeriqueFields(Validateur validateur) throws Exception {
+        Map<Integer, Map> mapElements = ParserUtils.getValidateurElements(validateur);
+
+        List<Map<String, String>> paramsList = Arrays.asList(mapElements.values().toArray(new Map[mapElements.size()]));
+
+        List<Map> alphanumMap = paramsList.stream()
+                .filter(m -> m.containsKey("typeDonnee")
+                && m.get("typeDonnee").equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())
+                )
+                .collect(Collectors.toList());
+
+        List<AlphaNumeriqueField> alphaNumeriqueFields = new ArrayList<>();
+
+        alphanumMap.stream().forEach(m -> {
+            String errorCode = (String) m.get("error-code");
+            int taille = 0;
+            int index = 0;
+
+            if (validateur.isConvertDataBeforeValidation()) {
+                taille = Integer.parseInt((String) m.get("taille"));
+                index = Integer.parseInt((String) m.get("index"));
+            }
+
+            /**
+             * Dans le validateur xml, error-code = codeTypeFichier +
+             * codeColonne String codeColonne =
+             * errorCode.substring(codeTypeFichier.length());*
+             */
+            String codeColonne = errorCode;
+
+            alphaNumeriqueFields.add(new AlphaNumeriqueField(validateur, TypeDonnee.ALPHANUMERIQUE.getValue(), codeColonne, taille, index));
+        });
+
+        return alphaNumeriqueFields;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/pojo/PaginationElts.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/pojo/PaginationElts.java
new file mode 100644
index 0000000..cddc6d4
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/pojo/PaginationElts.java
@@ -0,0 +1,49 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.service.pojo;
+
+import java.util.List;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author mela
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class PaginationElts<T> {
+    
+    //Numéro de page courante
+    private int page = 0;
+    
+    //Nombre de pages 
+    private long numberOfPage = 0;
+    
+    //Nombre d'éléments à afficher par page
+    private int nbEltsPerPage = 10;
+    
+    //Nombre d'éléments total à afficher
+    private long totalElts = 0;
+    
+    //Nombre délémnts sur une pages quelconque : peut être inférieure ou égale à nbEltsPerPage
+    private int numberOfElts = 0;
+    private  List<T> liste;
+    
+    public PaginationElts(int nbEltsPerPage){
+        this.nbEltsPerPage = nbEltsPerPage;
+    }
+    
+    public boolean isLast() {
+        return page == (numberOfPage == 0 ? numberOfPage : numberOfPage - 1);
+    }
+
+    public boolean isFirst() {
+        return page == 0;
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/service/util/SchedulerUtil.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/util/SchedulerUtil.java
new file mode 100644
index 0000000..af4c99a
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/service/util/SchedulerUtil.java
@@ -0,0 +1,298 @@
+package com.megatim.fdxconvert.service.util;
+
+import com.megatim.fdxconvert.model.Tache;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.CronTrigger;
+import org.quartz.TriggerBuilder;
+
+/**
+ *
+ * @author MGT_DEV3
+ */
+public class SchedulerUtil {
+
+    private SchedulerUtil() {
+    }
+    
+    public static CronTrigger buildTriggerForTache(Tache tache) {
+
+        return TriggerBuilder.newTrigger()
+                .startNow()
+                .withSchedule(CronScheduleBuilder.cronSchedule(getPlanification(tache))) //"0/20 * * * * ?"
+                .build();
+    }
+
+    //Prend une tâche en entrée et renvoie l'expression cron de sa planifaction
+    public static String getPlanification(Tache tache) {
+
+        LocalDate localDate = LocalDate.now();
+
+        boolean isActual = (tache.isMonday() && localDate.getDayOfWeek() == DayOfWeek.MONDAY)
+                || (tache.isTuesday() && localDate.getDayOfWeek() == DayOfWeek.TUESDAY)
+                || (tache.isWednesday() && localDate.getDayOfWeek() == DayOfWeek.WEDNESDAY)
+                || (tache.isThursday() && localDate.getDayOfWeek() == DayOfWeek.THURSDAY)
+                || (tache.isFriday() && localDate.getDayOfWeek() == DayOfWeek.FRIDAY)
+                || (tache.isSaturday() && localDate.getDayOfWeek() == DayOfWeek.SATURDAY)
+                || (tache.isSunday() && localDate.getDayOfWeek() == DayOfWeek.SUNDAY);
+
+        int heureTache = tache.getHeureTache();
+
+        int minuteTache = tache.getMinuteTache();
+
+        LocalTime tacheTime = LocalTime.parse(String.format("%02d", heureTache) + ":" + String.format("%02d", minuteTache) + ":00");
+
+        LocalTime actualTime = LocalTime.now();
+
+        if (isActual && !tache.isWithoutInterval() && actualTime.isAfter(tacheTime)) {
+
+            heureTache = actualTime.getHour();
+
+            minuteTache = actualTime.getMinute();
+
+        }
+
+        StringBuilder strBuilder = new StringBuilder();
+
+        strBuilder.append("0 ");
+
+        if (tache.isWithoutInterval()) {
+
+            strBuilder.append(minuteTache).append(" ");
+
+            strBuilder.append(heureTache).append(" ");
+
+        } else {
+
+            strBuilder.append(minuteTache).append("/").append(tache.getIntervalleTache()).append(" ");
+
+            if (heureTache == 0) {
+
+                strBuilder.append("*").append(" ");
+
+            } else {
+
+                strBuilder.append(heureTache).append("-").append("0").append(" ");
+
+            }
+        }
+
+        strBuilder.append("? * ");
+
+        StringBuilder strBuilderJour = new StringBuilder();
+
+        if (tache.isMonday()) {
+
+            strBuilderJour.append("2");
+
+        }
+
+        if (tache.isTuesday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("3");
+
+            } else {
+
+                strBuilderJour.append(",3");
+
+            }
+        }
+
+        if (tache.isWednesday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("4");
+
+            } else {
+
+                strBuilderJour.append(",4");
+
+            }
+        }
+
+        if (tache.isThursday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("5");
+
+            } else {
+
+                strBuilderJour.append(",5");
+
+            }
+        }
+
+        if (tache.isFriday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("6");
+
+            } else {
+
+                strBuilderJour.append(",6");
+
+            }
+
+        }
+
+        if (tache.isSaturday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("7");
+
+            } else {
+
+                strBuilderJour.append(",7");
+
+            }
+        }
+
+        if (tache.isSunday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("1");
+
+            } else {
+
+                strBuilderJour.append(",1");
+
+            }
+        }
+
+        //Ajout de l'expression énumérant les jours construite
+        strBuilder.append(strBuilderJour.toString());
+
+        return strBuilder.toString();
+    }
+    
+    //Prend une tâche du protocol fdx en paramêtre et contruit en fonction des information de celle-ci le déclencheur approprié
+    /*public static CronTrigger buildTriggerForTache(Tache tache) {
+
+        System.out.println("LA PLANIFICATION SPECIFIEE EST : " + getPlanification(tache));
+
+        return TriggerBuilder.newTrigger()
+                .startNow()
+                .withSchedule(CronScheduleBuilder.cronSchedule(getPlanification(tache))) //"0/20 * * * * ?"
+                .withIdentity(tache.getLibelle())
+                .build();
+    }
+
+    //Prend une tâche en entrée et renvoie l'expression cron de sa planifaction
+    public static String getPlanification(Tache tache) {
+
+        StringBuilder strBuilder = new StringBuilder();
+
+        strBuilder.append("0 ");
+        strBuilder.append(tache.getMinuteTache()).append(" ");
+        strBuilder.append(tache.getHeureTache()).append(" ");
+
+        strBuilder.append("? * ");
+
+        StringBuilder strBuilderJour = new StringBuilder();
+
+        if (tache.isMonday()) {
+
+            strBuilderJour.append("2");
+
+        }
+
+        if (tache.isTuesday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("3");
+
+            } else {
+
+                strBuilderJour.append(",3");
+
+            }
+
+        }
+
+        if (tache.isWednesday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("4");
+
+            } else {
+
+                strBuilderJour.append(",4");
+
+            }
+
+        }
+
+        if (tache.isThursday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("5");
+
+            } else {
+
+                strBuilderJour.append(",5");
+
+            }
+
+        }
+
+        if (tache.isFriday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("6");
+
+            } else {
+
+                strBuilderJour.append(",6");
+
+            }
+
+        }
+
+        if (tache.isSaturday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("7");
+
+            } else {
+
+                strBuilderJour.append(",7");
+
+            }
+
+        }
+
+        if (tache.isSunday()) {
+
+            if (strBuilderJour.toString().isEmpty()) {
+
+                strBuilderJour.append("1");
+
+            } else {
+
+                strBuilderJour.append(",1");
+
+            }
+
+        }
+
+        //Ajout de l'expression énumérant les jours construite
+        strBuilder.append(strBuilderJour.toString());
+
+        return strBuilder.toString();
+    }*/
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java
new file mode 100644
index 0000000..726d4df
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java
@@ -0,0 +1,158 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import static com.megatim.typefichier.validator.utilities.Utilities.getCharset;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ *
+ * @author ASUS
+ */
+public class Count {
+
+    public static int countEltsOfTextFile(FileToValidateDescription fileDesc, boolean headerPresent) throws Exception {
+        int nbElts = 0;
+
+        if (fileDesc != null) {
+            Charset charset = getCharset(fileDesc.getFile());
+
+            //Lecture des lignes du fichier et chargement dans une liste
+            try ( FileInputStream fis = new FileInputStream(fileDesc.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+
+                boolean withHeader = headerPresent;
+                int c = 0;
+                boolean carriageReaded = false; //Indique si on a lu un retour chariot
+                char lastCharacter = '\u0000';
+
+                while ((c = reader.read()) != -1) {
+
+                    char characterRead = (char) c;
+
+                    if (characterRead == '\r') {
+
+                        if (carriageReaded) { //On a lu le retour chariot deux fois consécutives donc on a pas de séparateur de ligne au sens windows
+
+                            carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+                        } else { // Première lecture du retour chariot
+
+                            carriageReaded = true; // On marque que nous avons lu un retour chariot
+
+                        }
+
+                    } else {
+
+                        if (carriageReaded) { // Le caractère précédemment lu c'est le retour chariot
+
+                            if (characterRead == '\n') { // Si le nouveau caractère lu est un saut de ligne c'est que nous venons de lire une nouvelle ligne
+
+                                if (!withHeader) {
+
+                                    if (fileDesc.getColumnDelimiter().equals("\\t")) {
+                                        nbElts++;
+
+                                    } else if (fileDesc.getColumnDelimiter().isEmpty()) {
+                                        nbElts++;
+                                    } else {
+                                        nbElts++;
+                                    }
+                                } else {
+                                    withHeader = false;
+                                }
+                                carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+                            } else {
+                            }
+                        } else {
+                            if (characterRead == '\n') {
+                                if (lastCharacter != '\n') {
+                                }
+                            } else {
+
+                            }
+                        }
+                    }
+                    lastCharacter = characterRead;
+                }
+            }
+        }
+        return nbElts;
+    }
+
+    public static int countEltsOfCsvFile(FileToValidateDescription fileDesc, boolean headerPresent) throws Exception {
+        int nbElts = 0;
+
+        Charset charset = getCharset(fileDesc.getFile());
+        AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+        try ( FileInputStream fis = new FileInputStream(fileDesc.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+            CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT.builder()
+                    .setSkipHeaderRecord(headerPresent)
+                    .setIgnoreSurroundingSpaces(true)
+                    .setTrim(true)
+                    .setDelimiter(fileDesc.getColumnDelimiter())
+                    .setRecordSeparator(fileDesc.getRowDelimiter())
+                    .build());
+
+            for (CSVRecord record : parser) {
+
+                if (!withHeader.get()) {
+                    nbElts++;
+                } else {
+                    withHeader.set(false);
+                }
+            }
+        } catch (Exception e) {
+            Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+        }
+        return nbElts;
+    }
+
+    public static int countEltsOfparseXlsxFile(File file, int sheetNumber, boolean headerPresent) throws Exception {
+        try ( InputStream is = new FileInputStream(file);  Workbook wb = new XSSFWorkbook(is)) {
+            return countEltsOfExcelFile(wb, sheetNumber, headerPresent);
+        }
+    }
+
+    public static int countEltsOfXlsFile(File file, int sheetNumber, boolean headerPresent) throws Exception {
+        try ( InputStream is = new FileInputStream(file);  Workbook wb = new HSSFWorkbook(is)) {
+            return countEltsOfExcelFile(wb, sheetNumber, headerPresent);
+        }
+
+    }
+
+    private static int countEltsOfExcelFile(Workbook wb, int sheetNumber, boolean headerPresent) {
+        int nbElts = 0;
+        Sheet sheet = wb.getSheetAt(sheetNumber);
+        AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+        for (Row r : sheet) {
+            if (!withHeader.get()) {
+                nbElts++;
+            } else {
+                withHeader.set(false);
+            }
+        }
+        return nbElts;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java
new file mode 100644
index 0000000..ec72875
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java
@@ -0,0 +1,242 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.typefichier.validator.utilities.ParserUtils;
+import static com.megatim.typefichier.validator.utilities.Utilities.getCharset;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import com.megatim.fdxconvert.pojo.ColumnDefinition;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ExportToJson {
+
+    public static void parseFileByColumnLength(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs) throws Exception {
+        final int nbElts = Count.countEltsOfTextFile(fileDesc, false);
+        int index = 1;
+        Collections.sort(colDefs, (c1, c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+
+        if (fileDesc != null) {
+
+            Charset charset = getCharset(fileDesc.getFile());
+
+            //Lecture des lignes du fichier et chargement dans une liste
+            try ( FileInputStream fis = new FileInputStream(fileDesc.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+                if (outputFile.exists()) {
+                    outputFile.delete();
+                }
+                //Initialisation du writer pour ecrire chaque objet json
+                try ( BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);) {
+                    bufferWriter.write("[");
+                    String line;
+
+                    while ((line = reader.readLine()) != null) {
+                        String json = createJson(colDefs, line);
+                        bufferWriter.write(json);
+
+                        if (index < nbElts) {
+                            bufferWriter.write(",");
+                            index++;
+                        }
+                    }
+                    bufferWriter.write("]");
+                }
+            }
+        }
+    }
+
+    public static void parseCsvFile(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws Exception {
+        final int nbElts = Count.countEltsOfCsvFile(fileDesc, headerPresent);
+        int index = 0;
+
+        if (fileDesc != null) {
+            Charset charset = getCharset(fileDesc.getFile());
+            AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+            if (outputFile.exists()) {
+                outputFile.delete();
+            }
+
+            try ( FileInputStream fis = new FileInputStream(fileDesc.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+                //Initialisation du writer pour ecrire chaque objet json
+                try ( BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+                    CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT.builder()
+                            .setSkipHeaderRecord(headerPresent)
+                            .setIgnoreSurroundingSpaces(true)
+                            .setTrim(true)
+                            .setDelimiter(fileDesc.getColumnDelimiter())
+                            .setRecordSeparator(fileDesc.getRowDelimiter())
+                            .build());
+
+                    bufferWriter.write("[");
+
+                    for (CSVRecord record : parser) {
+                        String[] columnsTableLine = new String[colDefs.size()];
+                        AtomicInteger i = new AtomicInteger(0);
+
+                        if (!withHeader.get()) {
+                            record.forEach(column -> {
+                                columnsTableLine[i.getAndIncrement()] = column != null ? column.replaceAll(" {2,}", " ").replaceAll("\r", "").replaceAll("\n", "").replaceAll("\t", "") : "";
+                            });
+                            String json = createJson(colDefs, columnsTableLine);
+                            bufferWriter.write(json);
+
+                            if (index < nbElts) {
+                                bufferWriter.write(",");
+                                index++;
+                            }
+                        } else {
+                            withHeader.set(false);
+                        }
+                    }
+                    bufferWriter.write("]");
+                }
+            } catch (Exception e) {
+                Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            }
+        }
+    }
+
+    public static void parseXlsFile(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws Exception {
+        try ( InputStream is = new FileInputStream(fileDesc.getFile());  Workbook wb = new HSSFWorkbook(is)) {
+            parseExcelFile(fileDesc, wb, outputFile, colDefs, headerPresent);
+        }
+    }
+
+    public static void parseXlsxFile(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws Exception {
+        try ( InputStream is = new FileInputStream(fileDesc.getFile());  Workbook wb = new XSSFWorkbook(is)) {
+            parseExcelFile(fileDesc, wb, outputFile, colDefs, headerPresent);
+        }
+    }
+
+    private static Path filePath(File file, int sheetNumber) {
+        int extensionIndex = file.getName().lastIndexOf(".");
+        return Paths.get(file.getParent(),
+                file.getName().substring(0, extensionIndex) + sheetNumber + file.getName().substring(extensionIndex + 1));
+    }
+
+    private static void parseExcelFile(FileToValidateDescription fileDesc, Workbook wb, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws IOException, Exception {
+        Charset charset = getCharset(fileDesc.getFile());
+        AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+        for (int i = 0; i < wb.getNumberOfSheets(); i++) {
+            Sheet sheet = wb.getSheetAt(i);
+            final int nbElts = Count.countEltsOfXlsFile(fileDesc.getFile(), i, headerPresent);
+            AtomicInteger position = new AtomicInteger(1);
+
+            if (outputFile.exists()) {
+                outputFile.delete();
+            }
+
+            //Initialisation du writer pour ecrire chaque objet json
+            try ( BufferedWriter bufferWriter = Files.newBufferedWriter(filePath(outputFile, i), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);) {
+                bufferWriter.write("[");
+                for (org.apache.poi.ss.usermodel.Row r : sheet) {
+                    if (!withHeader.get()) {
+                        //Représente les colonnes extraites de chaque ligne du  fichier
+                        String[] columnsTableLine = new String[colDefs.size()];
+                        AtomicInteger index = new AtomicInteger(0);
+
+                        r.forEach(c -> {
+                            columnsTableLine[index.get()] = ParserUtils.getXlxsCellValue(c,
+                                    wb,
+                                    colDefs.get(index.get()).getTypeDonnee(),
+                                    colDefs.get(index.get()).getFormatDate(),
+                                    colDefs.get(index.get()).getSeparateurDate(),
+                                    colDefs.get(index.get()).getName()
+                            );
+                            index.incrementAndGet();
+                        });
+                        String json = createJson(colDefs, columnsTableLine);
+                        bufferWriter.write(json);
+
+                        if (position.get() < nbElts) {
+                            bufferWriter.write(",");
+                            position.incrementAndGet();
+                        }
+                    } else {
+                        withHeader.set(false);
+                    }
+                }
+                bufferWriter.write("]");
+            }
+
+        }
+    }
+
+    private static String createJson(List<ColumnDefinition> colDefs, String[] columnsTableLine) throws Exception {
+        StringBuilder json = new StringBuilder();
+        System.out.println("----------------- colDefs.size() = " + colDefs.size());
+        System.out.println("---------------- columnsTableLine.length = " + columnsTableLine.length);
+        if (colDefs.size() != columnsTableLine.length) {
+            throw new Exception("Existence des lignes mal formattées");
+        }
+
+        json.append("\t{\n");
+        int i = 0;
+
+        for (ColumnDefinition c : colDefs) {
+            String str = "\"" + c.getName() + "\" : " + "\"" + columnsTableLine[i].trim() + "\"";
+
+            if (i < colDefs.size() - 1) {
+                str += ",";
+            } else {
+                str += "\n";
+            }
+            json.append(str);
+            i++;
+        }
+        json.append("\t}\n");
+        return json.toString();
+    }
+
+    private static String createJson(List<ColumnDefinition> colDefs, String line) {
+        StringBuilder json = new StringBuilder();
+        json.append("\t{");
+        int i = 0;
+        int count = 0;
+
+        for (ColumnDefinition c : colDefs) {
+            String str = "\"" + c.getName() + "\" : " + "\"" + line.substring(i, i + c.getTaille()).trim() + "\"";
+
+            if (count < colDefs.size() - 1) {
+                str += ",";
+            }
+            json.append(str);
+            i += c.getTaille();
+            count++;
+        }
+        json.append("\t}\n");
+        return json.toString();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ImportData.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ImportData.java
new file mode 100644
index 0000000..b928edd
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ImportData.java
@@ -0,0 +1,1138 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.typefichier.validator.utilities.Constantes;
+import com.megatim.fdxconvert.pojo.DataToImport;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import com.megatim.fdxconvert.exceptions.AttributeFormatException;
+import static com.megatim.typefichier.validator.utilities.Utilities.getCharset;
+import com.megatim.fdxconvert.model.AlphaNumeriqueField;
+import com.megatim.fdxconvert.model.TruncatedElement;
+import com.megatim.fdxconvert.model.Validateur;
+import com.megatim.fdxconvert.pojo.ResultFileParsing;
+import com.megatim.fdxconvert.service.ConfigurationService;
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.LinkOption;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.text.Normalizer;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ *
+ * @author mela
+ */
+public class ImportData {
+
+    /**
+     * Méthode qui parse le fichier csv et en extrait les données
+     *
+     * @param <T>
+     * @param datIm
+     * @return
+     * @throws java.lang.Exception
+     */
+    public static <T> List<T> importDataFromCsvFile(DataToImport<T> datIm) throws Exception {
+
+//        FileReader reader = null;
+        List<String[]> datas = new ArrayList<>();
+
+        List<T> listeToReturn = new ArrayList<>();
+
+        if (datIm != null) {
+
+            try ( FileInputStream fis = new FileInputStream(datIm.getFile());  InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);  BufferedReader reader = new BufferedReader(isr)) {
+
+                String line = "";
+
+                while ((line = reader.readLine()) != null) {
+
+                    String[] row = line.split(datIm.getRowDelimiter());
+
+                    for (String r : row) {
+
+                        String[] values = new String[datIm.getFields().size()];
+
+                        String[] columns = r.split(datIm.getColumnDelimiter());
+
+                        int ss = 0;
+
+                        while (ss < datIm.getFields().size() && ss < columns.length) {
+
+                            values[ss] = columns[ss];
+
+                            ss++;
+                        }
+
+                        datas.add(values);
+
+                    }
+
+                }
+
+            } catch (FileNotFoundException ex) {
+
+                Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+
+            } catch (IOException ex) {
+
+                Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+
+            }
+
+            if (!datas.isEmpty()) {
+
+                //tous les champs du type paramétré
+                Field[] fields = datIm.getType().getDeclaredFields();
+
+                // mettre les champs du type paramétré dans une map afin de faciliter leur accès
+                Map<String, Field> fieldsToMap = fieldsToMap(fields);
+
+                datas.forEach(d -> {
+
+                    try {
+
+                        T obj = datIm.getType().newInstance();
+
+                        Map<String, String> map = tabToMap(datIm.getFields(), d);
+
+                        for (Field field : fields) {
+
+                            String fieldName = field.getName();
+
+                            if (map.containsKey(fieldName) && fieldsToMap.containsKey(fieldName)) {
+
+                                try {
+
+                                    Object converted = convertToPrimitive(field, map.get(fieldName));
+                                    Method method = new PropertyDescriptor(fieldName, datIm.getType()).getWriteMethod();
+                                    method.invoke(obj, converted);
+
+                                } catch (IntrospectionException | IllegalAccessException | InvocationTargetException ex) {
+
+                                    Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+
+                                } catch (IllegalArgumentException | ClassCastException ex) {
+
+                                    throw new AttributeFormatException("Erreur de type sur le champ " + fieldName);
+
+                                }
+
+                            }
+
+                        }
+
+                        listeToReturn.add(obj);
+
+                    } catch (InstantiationException | IllegalAccessException ex) {
+
+                        Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+
+                    }
+
+                });
+
+            }
+
+        }
+
+        return listeToReturn;
+
+    }
+
+    /**
+     * Méthode qui extrait les données d'un fichier csv et les normalise
+     *
+     * @param rawCsvData : objet contenant les informations de validationdonnées
+     * @param validateur : Validateur du type fichier auquel appartient le
+     * fichier à valider
+     * @param outputFile : fichier texte généré en sortie
+     * @param headerPresent : renseigne si le fichier a une ligne d'entête
+     * @param alphaNumeriqueToBeTruncated : liste des champs à tronquer
+     * @throws Exception
+     */
+    public static void parseCsvFile(FileToValidateDescription rawCsvData, Validateur validateur, File outputFile, boolean headerPresent, Set<AlphaNumeriqueField> alphaNumeriqueToBeTruncated) throws Exception {
+
+        Map<Integer, Map> mapParams = ParserUtils.getValidateurElements(validateur);
+        AtomicInteger numeroLigne = new AtomicInteger(0);
+        AtomicBoolean columnTruncated = new AtomicBoolean();
+        int lineNumber = 1;
+
+        if (rawCsvData != null) {
+            Charset charset = getCharset(rawCsvData.getFile());
+
+            AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+            Path pathOfTruncatedElts = createTruncatedEltsPath(validateur, rawCsvData.getFile());
+
+            try ( FileInputStream fis = new FileInputStream(rawCsvData.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+                try ( BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);  BufferedWriter truncateWriter = Files.newBufferedWriter(pathOfTruncatedElts, StandardCharsets.UTF_8, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+
+                    CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT.builder()
+                            .setSkipHeaderRecord(headerPresent)
+                            .setIgnoreSurroundingSpaces(true)
+                            .setTrim(true)
+                            .setDelimiter(StringEscapeUtils.unescapeJava(rawCsvData.getColumnDelimiter()))
+                            .setRecordSeparator(StringEscapeUtils.unescapeJava(rawCsvData.getRowDelimiter()))
+                            .build());
+
+                    for (CSVRecord record : parser) {
+
+                        String[] columnsTableLine = new String[record.size()];
+                        AtomicInteger i = new AtomicInteger(0);
+
+                        if (!withHeader.get()) {
+
+                            record.forEach(column -> {
+                                columnsTableLine[i.get()] = column != null ? column.replaceAll(" {2,}", " ").replaceAll("\r", "").replaceAll("\n", "").replaceAll("\t", "").trim() : "";
+                                i.set(i.get() + 1);
+                            });
+
+                            //Nettoyage d'une colonne de chaque ligne
+                            ResultFileParsing resultFileParsing = buildFinalColumnsTableLine(outputFile, columnsTableLine, mapParams, alphaNumeriqueToBeTruncated, numeroLigne.incrementAndGet(), truncateWriter);
+                            String[] finalColumnsTableLine = resultFileParsing.getFinalColumnsTableLine();
+                            columnTruncated.set(resultFileParsing.isColumnTruncated());
+
+                            String[] encodedStrings = ParserUtils.encodeStrings(finalColumnsTableLine, charset);
+                            ParserUtils.writeToFile(encodedStrings, bufferWriter);
+
+                            lineNumber++;
+                        } else {
+                            withHeader.set(false);
+                        }
+
+                    }
+
+                } catch (Exception e) {
+                    Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+                }
+
+                //Si au moins une colonne a été tronqué, alors copier le fichier dont les lignes ont été tronqué dans le répertoire d'archivage
+                if (columnTruncated.get()) {
+                    Path originalFilePathInArchiveFolder = createOriginalFileInArchive(validateur, rawCsvData.getFile());
+
+                    //Copie du fichier dont les colonnes ont été tronqués vers le répertoire archivage 
+                    if (rawCsvData.getFile().exists()) {
+                        Files.copy(rawCsvData.getFile().toPath(), originalFilePathInArchiveFolder);
+                    }
+
+                } else {//Sinon supprimer le fichier des éléments tronqués, car il est vide
+                    Files.deleteIfExists(pathOfTruncatedElts);
+                }
+            }
+        }
+    }
+
+    /**
+     * Méthode qui extrait les données dans un fichier txt en respectant
+     * scrupuleusement la taille de chaque colonne
+     *
+     * @param rawCsvData : objet contenant les informations de validationdonnées
+     * @param validateur : Validateur du type fichier auquel appartient le
+     * fichier à valider
+     * @param outputFile : fichier texte généré en sortie
+     * @param headerPresent : renseigne si le fichier a une ligne d'entête
+     * @throws Exception
+     */
+    public static void parseFileByFieldLength(FileToValidateDescription rawCsvData, Validateur validateur, File outputFile, boolean headerPresent) throws Exception {
+        System.out.println("----------------------In parseFileByFieldLength------------------");
+        Map<Integer, Map> mapParams = ParserUtils.getValidateurElements(validateur);
+        //boolean result = true;
+        int nbLine = 0;
+
+        if (rawCsvData != null) {
+
+            Charset charset = getCharset(rawCsvData.getFile());
+
+            //Lecture des lignes du fichier et chargment dans une liste
+            try ( FileInputStream fis = new FileInputStream(rawCsvData.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+
+                try ( //Initialisation du write pour traiter chaque ligne du fichier
+                         BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);) {
+
+                    boolean withHeader = headerPresent;
+
+                    StringBuilder line = new StringBuilder();
+
+                    int c = 0;
+
+                    boolean carriageReaded = false; //Indique si on a lu un retour chariot
+
+                    char lastCharacter = '\u0000';
+
+                    while ((c = reader.read()) != -1) {
+
+                        char characterRead = (char) c;
+
+                        if (characterRead == '\r') {
+
+                            if (carriageReaded) { //On a lu le retour chariot deux fois consécutives donc on a pas de séparateur de ligne au sens windows
+
+                                //On ajoute les deux caractère à la chaîne que nous construisons
+                                line.append('\r').append(characterRead);
+
+                                carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+                            } else { // Première lecture du retour chariot
+
+                                carriageReaded = true; // On marque que nous avons lu un retour chariot
+
+                            }
+
+                        } else {
+
+                            if (carriageReaded) { // Le caractère précédemment lu c'est le retour chariot
+
+                                if (characterRead == '\n') { // Si le nouveau caractère lu est un saut de ligne c'est que nous venons de lire une nouvelle ligne
+
+                                    //On effectue les traitements propres à la ligne
+                                    String newLine = line.toString();
+                                    nbLine++;
+
+                                    if (!withHeader) {
+
+                                        parseLineUsingFieldLength(newLine, mapParams, rawCsvData.getColumnDelimiter(), bufferWriter, charset);
+
+                                    } else {
+
+                                        withHeader = false;
+
+                                    }
+
+                                    line = new StringBuilder(); //On réinitialise notre constructeur de ligne
+
+                                    carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+                                } else {
+
+                                    line.append(' '); //On change le saut de ligne par un espace 
+
+                                }
+
+                            } else {
+
+                                if (characterRead == '\n') {
+
+                                    if (lastCharacter != '\n') {
+
+                                        line.append(' ');
+
+                                    }
+
+                                } else {
+
+                                    line.append(characterRead);
+
+                                }
+
+                            }
+
+                        }
+
+                        lastCharacter = characterRead;
+                    }
+
+                } //Fermeture du writer
+
+            }
+
+        }
+
+    }
+
+    /**
+     * Méthode qui parcours un fichier txt caractère par caractère afin d'en
+     * extraire les données et de les normaliser
+     *
+     * @param rawCsvData : objet contenant les informations de validationdonnées
+     * @param validateur : Validateur du type fichier auquel appartient le
+     * fichier à valider
+     * @param outputFile : fichier texte généré en sortie
+     * @param headerPresent : renseigne si le fichier a une ligne d'entête
+     * @param alphaNumeriqueToBeTruncated : liste des champs à tronquer
+     * @throws Exception
+     */
+    public static void parseFileCharacterByCharacter(FileToValidateDescription rawCsvData, Validateur validateur, File outputFile, boolean headerPresent, Set<AlphaNumeriqueField> alphaNumeriqueToBeTruncated) throws Exception {
+
+        Map<Integer, Map> mapParams = ParserUtils.getValidateurElements(validateur);
+        AtomicInteger numeroLigne = new AtomicInteger(0);
+        AtomicBoolean columnTruncated = new AtomicBoolean();
+
+        if (rawCsvData != null) {
+
+            Charset charset = getCharset(rawCsvData.getFile());
+            Path pathOfTruncatedElts = createTruncatedEltsPath(validateur, rawCsvData.getFile());
+
+            //Lecture des lignes du fichier et chargement dans une liste
+            try ( FileInputStream fis = new FileInputStream(rawCsvData.getFile());  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+
+                try ( //Initialisation du write pour traiter chaque ligne du fichier
+                         BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);  BufferedWriter truncateWriter = Files.newBufferedWriter(pathOfTruncatedElts, StandardCharsets.UTF_8, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+
+                    boolean withHeader = headerPresent;
+
+                    StringBuilder line = new StringBuilder();
+
+                    int c = 0;
+
+                    boolean carriageReaded = false; //Indique si on a lu un retour chariot
+
+                    char lastCharacter = '\u0000';
+
+                    while ((c = reader.read()) != -1) {
+
+                        char characterRead = (char) c;
+
+                        if (characterRead == '\r') {
+
+                            if (carriageReaded) { //On a lu le retour chariot deux fois consécutives donc on a pas de séparateur de ligne au sens windows
+
+                                //On ajoute les deux caractère à la chaîne que nous construisons
+                                line.append('\r').append(characterRead);
+
+                                carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+                            } else { // Première lecture du retour chariot
+
+                                carriageReaded = true; // On marque que nous avons lu un retour chariot
+
+                            }
+
+                        } else {
+
+                            if (carriageReaded) { // Le caractère précédemment lu c'est le retour chariot
+
+                                if (characterRead == '\n') { // Si le nouveau caractère lu est un saut de ligne c'est que nous venons de lire une nouvelle ligne
+
+                                    //On effectue les traitements propres à la ligne
+                                    String newLine = line.toString();
+
+                                    if (ParserUtils.characterOfDelimiteur(rawCsvData.getColumnDelimiter()) != '\0') {
+                                        newLine = newLine.replaceAll(" {2,}", " ");
+                                    }
+
+                                    if (!withHeader) {
+
+                                        //Représente les colonnes extraites de chaque ligne du  fichier
+                                        //String[] columnsTableLine = newLine.split(rawCsvData.getColumnDelimiter());
+                                        String[] columnsTableLine;
+
+                                        if (rawCsvData.getColumnDelimiter().equals("\\t")) {
+
+                                            columnsTableLine = ParserUtils.splitIntoColumns(newLine, '\t');
+                                            ResultFileParsing resultFileParsing = buildFinalColumnsTableLine(outputFile, columnsTableLine, mapParams, alphaNumeriqueToBeTruncated, numeroLigne.incrementAndGet(), truncateWriter);
+                                            String[] finalColumnsTableLine = resultFileParsing.getFinalColumnsTableLine();
+                                            columnTruncated.set(resultFileParsing.isColumnTruncated());
+
+                                            String[] encodedStrings = ParserUtils.encodeStrings(finalColumnsTableLine, charset);
+                                            ParserUtils.writeToFile(encodedStrings, bufferWriter);
+
+                                        } else if (rawCsvData.getColumnDelimiter().isEmpty()) {
+                                            parseLineUsingFieldLength(newLine, mapParams, rawCsvData.getColumnDelimiter(), bufferWriter, charset);
+                                        } else {
+
+                                            columnsTableLine = (newLine).split(rawCsvData.getColumnDelimiter());
+                                            ResultFileParsing resultFileParsing = buildFinalColumnsTableLine(outputFile, columnsTableLine, mapParams, alphaNumeriqueToBeTruncated, numeroLigne.incrementAndGet(), truncateWriter);
+                                            String[] finalColumnsTableLine = resultFileParsing.getFinalColumnsTableLine();
+
+                                            if (!columnTruncated.get()) {
+                                                columnTruncated.set(resultFileParsing.isColumnTruncated());
+                                            }
+
+                                            String[] encodedStrings = ParserUtils.encodeStrings(finalColumnsTableLine, charset);
+                                            ParserUtils.writeToFile(encodedStrings, bufferWriter);
+
+                                        }
+
+                                        //Nettoyage d'une colonne de chaque ligne
+                                    } else {
+
+                                        withHeader = false;
+
+                                    }
+
+                                    line = new StringBuilder(); //On réinitialise notre constructeur de ligne
+
+                                    carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+                                } else {
+
+                                    line.append(' '); //On change le saut de ligne par un espace 
+
+                                }
+
+                            } else {
+
+                                if (characterRead == '\n') {
+
+                                    if (lastCharacter != '\n') {
+
+                                        line.append(' ');
+
+                                    }
+
+                                } else {
+
+                                    line.append(characterRead);
+
+                                }
+
+                            }
+
+                        }
+
+                        lastCharacter = characterRead;
+                    }
+
+                } //Fermeture du writer
+
+            }
+
+            //Si au moins une colonne a été tronqué, alors copier le fichier dont les lignes ont été tronqué dans le répertoire d'archivage
+            if (columnTruncated.get()) {
+                Path originalFilePathInArchiveFolder = createOriginalFileInArchive(validateur, rawCsvData.getFile());
+
+                //Copie du fichier dont les colonnes ont été tronqués vers le répertoire archivage 
+                if (rawCsvData.getFile().exists()) {
+                    Files.copy(rawCsvData.getFile().toPath(), originalFilePathInArchiveFolder);
+                }
+
+            } else {//Sinon supprimer le fichier des éléments tronqués, car il est vide
+                Files.deleteIfExists(pathOfTruncatedElts);
+            }
+        }
+
+    }
+
+    /**
+     * Méthode qui extrait les données d'un fichier xlsx et les normalise
+     *
+     * @param validateur : Validateur du type fichier auquel appartient le
+     * fichier à valider
+     * @param outputFile : fichier texte généré en sortie
+     * @param headerPresent : renseigne si le fichier a une ligne d'entête
+     * @param alphaNumeriqueToBeTruncated : liste des champs à tronquer
+     * @param filePath : Fichier qui contient les données à extraire
+     * @throws IOException
+     * @throws Exception
+     */
+    public static void parseXlsxFile(String filePath, boolean headerPresent, File outputFile, Validateur validateur, Set<AlphaNumeriqueField> alphaNumeriqueToBeTruncated) throws Exception {
+        AtomicBoolean columnTruncated = new AtomicBoolean();
+        Path pathOfTruncatedElts = createTruncatedEltsPath(validateur, new File(filePath));
+
+        try ( InputStream is = new FileInputStream(filePath);  Workbook wb = new XSSFWorkbook(is)) {
+            parseExcelFile(filePath, wb, headerPresent, outputFile, validateur, alphaNumeriqueToBeTruncated, pathOfTruncatedElts);
+        }
+        treatTruncatedElements(filePath, pathOfTruncatedElts, validateur, columnTruncated);
+
+    }
+
+    public static void parseXlsFile(String filePath, boolean headerPresent, File outputFile, Validateur validateur, Set<AlphaNumeriqueField> alphaNumeriqueToBeTruncated) throws Exception {
+        AtomicBoolean columnTruncated = new AtomicBoolean();
+        Path pathOfTruncatedElts = createTruncatedEltsPath(validateur, new File(filePath));
+
+        try ( InputStream is = new FileInputStream(filePath);  Workbook wb = new HSSFWorkbook(is)) {
+            parseExcelFile(filePath, wb, headerPresent, outputFile, validateur, alphaNumeriqueToBeTruncated, pathOfTruncatedElts);
+        }
+        treatTruncatedElements(filePath, pathOfTruncatedElts, validateur, columnTruncated);
+
+    }
+
+    private static void parseExcelFile(String filePath, Workbook wb, boolean headerPresent, File outputFile, Validateur validateur, Set<AlphaNumeriqueField> alphaNumeriqueToBeTruncated, Path pathOfTruncatedElts) throws IOException, Exception {
+        Map<Integer, Map> mapParams = ParserUtils.getValidateurElements(validateur);
+        final int maxPosition = Collections.max(mapParams.keySet());
+        AtomicInteger numeroLigne = new AtomicInteger(0);
+        AtomicBoolean columnTruncated = new AtomicBoolean();
+        Charset charset = getCharset(new File(filePath));
+
+        try ( BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);  BufferedWriter truncateWriter = Files.newBufferedWriter(pathOfTruncatedElts, Charset.defaultCharset(), StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+
+            for (int i = 0; i < wb.getNumberOfSheets(); i++) {
+                Sheet sheet = wb.getSheetAt(i);
+                AtomicInteger numberOfColumns = new AtomicInteger(0);
+                AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+                AtomicInteger lineNumber = new AtomicInteger(1);
+
+                for (org.apache.poi.ss.usermodel.Row r : sheet) {
+
+                    if (!withHeader.get()) {
+                        for (int cn = 0; cn < r.getLastCellNum(); cn++) {
+                            numberOfColumns.incrementAndGet();
+                        }
+                        //Représente les colonnes extraites de chaque ligne du  fichier
+                        String[] columnsTableLine = new String[numberOfColumns.get()];
+                        AtomicInteger index = new AtomicInteger(0);
+
+                        for (int cn = 0; cn < r.getLastCellNum(); cn++) {
+                            if (cn < maxPosition) {
+                                Map<String, String> map = mapParams.get(index.get() + 1);
+
+                                //Prendre aussi les cellules vides en considération
+                                org.apache.poi.ss.usermodel.Cell c = r.getCell(cn, org.apache.poi.ss.usermodel.Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
+                                String value = com.megatim.typefichier.validator.utilities.ParserUtils.getXlxsCellValue(c,
+                                        wb,
+                                        map.get(Constantes.LIBELLE_TYPE_DONNEE),
+                                        map.get(Constantes.LIBELLE_FORMAT_DATE),
+                                        map.get(Constantes.LIBELLE_SEPARATEUR_DATE),
+                                        map.get(Constantes.ERROR_CODE));
+                                columnsTableLine[index.get()] = value;
+                                index.incrementAndGet();
+                            } else {
+                                break;
+                            }
+                        }
+
+                        try {
+                            //Nettoyage d'une colonne de chaque ligne
+                            ResultFileParsing resultFileParsing = buildFinalColumnsTableLine(outputFile, columnsTableLine, mapParams, alphaNumeriqueToBeTruncated, numeroLigne.incrementAndGet(), truncateWriter);
+                            String[] finalColumnsTableLine = resultFileParsing.getFinalColumnsTableLine();
+                            columnTruncated.set(resultFileParsing.isColumnTruncated());
+
+                            ParserUtils.writeToFile(finalColumnsTableLine, bufferWriter);
+
+                        } catch (Exception ex) {
+                            Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+                        }
+                    } else {
+                        withHeader.set(false);
+                    }
+                    lineNumber.incrementAndGet();
+                }
+            }
+
+        }
+    }
+
+    private static void treatTruncatedElements(String filePath, Path pathOfTruncatedElts, Validateur validateur, AtomicBoolean columnTruncated) throws IOException {
+        //Si au moins une colonne a été tronqué, alors copier le fichier dont les lignes ont été tronqué dans le répertoire d'archivage
+        if (columnTruncated.get()) {
+            Path pathoriginalFilePath = Paths.get(filePath);
+            Path originalFilePathInArchiveFolder = createOriginalFileInArchive(validateur, new File(filePath));
+
+            //Copie du fichier dont les colonnes ont été tronqués vers le répertoire archivage 
+            if (Files.exists(pathoriginalFilePath, LinkOption.NOFOLLOW_LINKS)) {
+                Files.copy(pathoriginalFilePath, originalFilePathInArchiveFolder);
+            }
+
+        } else {//Sinon supprimer le fichier des éléments tronqués, car il est vide
+            Files.deleteIfExists(pathOfTruncatedElts);
+        }
+    }
+
+    /**
+     * Méthode qui met les libellés des colonnes et leurs valeurs
+     * correspondantes dans une map
+     *
+     * @param titles : ensemble des noms de colonnes
+     * @param values : ensemble des données
+     * @return : rentourne une map (clé,valeur) = (nom_de_la_colonne,
+     * valeur_colonne)
+     */
+    private static Map<String, String> tabToMap(List<String> titles, String[] values) {
+        Map<String, String> map = new HashMap<>();
+        for (int i = 0; i < titles.size(); i++) {
+            map.put(titles.get(i), values[i]);
+        }
+
+        return map;
+    }
+
+    /**
+     * Méthode qui met un tableau de Field dans une
+     * map<nom_du_champ,objet représentant_le_champ>
+     * afin de faciliter leur accès
+     *
+     * @param fields
+     * @return
+     */
+    private static Map<String, Field> fieldsToMap(Field[] fields) {
+        Map<String, Field> map = new HashMap<>();
+        for (Field f : fields) {
+            map.put(f.getName(), f);
+        }
+
+        return map;
+    }
+
+    /**
+     * Méthode qui fait la conversion de la donnée extraite vers un type
+     * primitif
+     *
+     * @param field : objet contenant les informations sur le type auquel
+     * appartient le champ de la donnée extraite
+     * @param value : donnée à convertir
+     * @return : retourne un String si le type du champ ne figure pas dans la
+     * liste ci-dessus
+     */
+    private static Object convertToPrimitive(Field field, String value) {
+        Object obj = value;
+
+        if (field.getType().isAssignableFrom(Integer.class)
+                || field.getType().isAssignableFrom(int.class)) {
+            obj = Integer.valueOf(value);
+        } else if (field.getType().isAssignableFrom(Double.class)
+                || field.getType().isAssignableFrom(double.class)) {
+            obj = Double.valueOf(value);
+        } else if (field.getType().isAssignableFrom(java.math.BigDecimal.class)) {
+            obj = new java.math.BigDecimal(value);
+        } else if (field.getType().isAssignableFrom(Float.class)
+                || field.getType().isAssignableFrom(float.class)) {
+            obj = Float.valueOf(value);
+        } else if (field.getType().isAssignableFrom(Long.class)
+                || field.getType().isAssignableFrom(long.class)) {
+            obj = Long.valueOf(value);
+        } else if (field.getType().isAssignableFrom(Boolean.class)
+                || field.getType().isAssignableFrom(boolean.class)) {
+            Boolean.valueOf(value);
+        }
+
+        return obj;
+    }
+
+    /**
+     * Méthode permettant de construire la donnée finale à écrire dans le
+     * fichier texte
+     *
+     * @param outputFile
+     * @param initialColumnsTableLine
+     * @param mapParams
+     * @param fieldsToBeTruncated
+     * @param numeroLigne
+     * @param truncateWriter
+     * @return
+     * @throws Exception
+     */
+    private static ResultFileParsing buildFinalColumnsTableLine(File outputFile, String[] initialColumnsTableLine, Map<Integer, Map> mapParams, Set<AlphaNumeriqueField> fieldsToBeTruncated, int numeroLigne, BufferedWriter truncateWriter) throws Exception {
+
+        String[] finalColumnsTableLine = new String[mapParams.size() - 1];
+        String[] columnsTableLine = new String[mapParams.size() - 1];
+
+        //On copie les éléments à normaliser dans un nouveau tableau
+        for (int j = 0; j < finalColumnsTableLine.length; j++) {
+
+            //Arreter la copie si on atteint la fin du tableau initial
+            if (j == initialColumnsTableLine.length) {
+                j = finalColumnsTableLine.length;
+            } else {
+                final String result = initialColumnsTableLine[j] != null && !initialColumnsTableLine[j].isEmpty()
+                        ? Normalizer
+                                .normalize(initialColumnsTableLine[j], Normalizer.Form.NFD) //Retrait des caractères accentués
+                                .replaceAll("\\p{M}+", "")
+                        : "";
+                columnsTableLine[j] = result;
+            }
+        }
+
+        //Type de données utilisé pour retourner le résultat de la construction des lignes de données
+        ResultFileParsing resultFileParsing = new ResultFileParsing();
+
+        int index = 0;
+
+        for (String str : columnsTableLine) {
+
+            String columnTableLine = str != null ? str.trim() : "";
+
+            if (index < mapParams.size() - 1) {
+
+                Map<String, String> map = mapParams.get(index + 1);
+
+                final int taille = Integer.parseInt(map.get(Constantes.LIBELLE_TAILLE));
+                String typeDonnee = map.get(Constantes.LIBELLE_TYPE_DONNEE);
+
+                //Traitement d'une donnée de type décimal
+                if (typeDonnee.equalsIgnoreCase(Constantes.LIBELLE_DECIMAL)) {
+                    finalColumnsTableLine[index] = normalizeDecimal(columnTableLine, map);
+
+                    //Traitement d'une donnée de type DATE
+                } else if (typeDonnee.equalsIgnoreCase(Constantes.LIBELLE_DATE)) {
+
+                    if (columnTableLine.length() < taille) {
+                        finalColumnsTableLine[index] = generateUnknown(taille - columnTableLine.length(), " ") + columnTableLine;
+
+                    } else if (columnTableLine.length() == taille) {
+                        finalColumnsTableLine[index] = columnTableLine;
+
+                    } else {
+                        finalColumnsTableLine[index] = columnTableLine.substring(0, taille);
+                    }
+
+                    //Traitement d'une donnée de type NUMERIQUE
+                } else if (typeDonnee.equalsIgnoreCase(Constantes.LIBELLE_NUMERIQUE)) {
+                    finalColumnsTableLine[index] = normalizeNumber(columnTableLine, taille);
+//                  
+                } else if (typeDonnee.equalsIgnoreCase(Constantes.LIBELLE_ALPHANUMERIQUE)) {   //Traitement d'une donnée de type ALPHANUMERIQUE
+
+                    if (columnTableLine.length() < taille) {
+
+                        finalColumnsTableLine[index] = generateUnknown(taille - columnTableLine.length(), " ") + columnTableLine;
+
+                    } else if (columnTableLine.length() == taille) {
+
+                        finalColumnsTableLine[index] = columnTableLine;
+
+                    } else {
+
+                        if (!fieldsToBeTruncated.isEmpty()) {
+
+                            //Récupérer l'index de début du champ en cours de traitement
+                            int indexDebutChamp = Integer.parseInt(map.get(Constantes.LIBELLE_INDEX));
+
+                            //Mettre les champs à tronquer dans une liste afin d'y rechercher le champ en cours de traitement
+                            List<AlphaNumeriqueField> liste = Arrays.asList(fieldsToBeTruncated.toArray(new AlphaNumeriqueField[0]))
+                                    .stream().filter(a -> {
+
+                                        // ici on vérifie si l'index de début du champ en cours de traitement correspond à l'index d'un des champs à tronquer
+                                        //Car si 2 champs ont le même index, alors il s'agit d'un seul champ
+                                        return a.getIndex() == indexDebutChamp;
+                                    }).collect(Collectors.toList());
+
+                            // Si on a trouvé un champ à tronquer qui a le même index que le champ courant alors, tronquer le champ
+                            boolean found = (liste.size() == 1);
+
+                            if (found) {
+
+                                AlphaNumeriqueField alphaField = liste.get(0);
+
+                                String finalData = columnTableLine.substring(0, taille);
+
+                                TruncatedElement truncatedElement = new TruncatedElement(alphaField.getValidateur().getCodeTypeFichier(),
+                                        alphaField.getCodeColonne(), columnTableLine, finalData,
+                                        outputFile.getName(), LocalDateTime.now(), numeroLigne, taille, columnTableLine.length());
+
+//                                Journalisation du champs tronqués
+                                writeTruncatedElementsToFile(truncatedElement, truncateWriter);
+
+                                resultFileParsing.setColumnTruncated(true);
+
+                                finalColumnsTableLine[index] = finalData;
+                            } else {
+                                finalColumnsTableLine[index] = columnTableLine;
+                            }
+
+                        } else {
+                            finalColumnsTableLine[index] = columnTableLine;
+                        }
+                    }
+                } else {
+                    finalColumnsTableLine[index] = columnTableLine;
+                }
+            }
+
+            index++;
+
+        }
+
+        resultFileParsing.setFinalColumnsTableLine(finalColumnsTableLine);
+        return resultFileParsing;
+    }
+
+    /**
+     * Méthode qui normalise un nombre en ajoutant des zéros à gauche
+     *
+     * @param value
+     * @param taille
+     * @return
+     */
+    private static String normalizeNumber(String value, int taille) {
+        String newValue = value
+                .trim()
+                .replaceAll("\\s+", "")
+                .replaceAll("\\u00A0", "")//nbsp
+                .replaceAll("&nbsp;", "")//nbsp
+                .replaceAll("\\p{Z}", "")
+                .replaceAll("\t", "")
+                .replaceAll("\r", "")
+                .replaceAll("\n", "");
+
+        try {
+            if (!newValue.matches("\\d+")) {
+                newValue = new BigDecimal(newValue.replace(',', '.')).longValue() + "";//Remplacer la virgule par le point
+            }
+        } catch (Exception ex) {
+        }
+        return generateUnknown(taille - newValue.length(), " ") + newValue;
+    }
+
+    /**
+     * Méthode qui normalise les nombres décimaux conformat aux tailles, en
+     * ajoutant éventuellement des zéros à gauche de la partie entière et à
+     * droite de la partie décimale renseignés dans le validateur
+     *
+     * @param value : chaîne à normaliser
+     * @param map : map contenant les infos sur les parties entire et décimale
+     * @return
+     */
+    private static String normalizeDecimal(String value, Map<String, String> map) {
+
+        //Taille totale du nombre décimal
+        int taille = Integer.parseInt(map.get(Constantes.LIBELLE_TAILLE));
+        int taillePartieDecimale = Integer.parseInt(map.get(Constantes.LIBELLE_TAILLE_PARTIE_DECIMALE));
+        String separateurDecimal = map.get(Constantes.LIBELLE_SEPARATEUR_DECIMAL);
+        int tailleReelle = taille + taillePartieDecimale + separateurDecimal.trim().length();
+
+        String newValue = value.trim()
+                .replaceAll("\\s+", "")
+                .replaceAll("\\u00A0", "")//nbsp
+                .replaceAll("&nbsp;", "")//nbsp
+                .replaceAll("\\p{Z}", "")
+                .replaceAll("\t", "")
+                .replaceAll("\r", "")
+                .replaceAll("\n", "");
+
+        if (newValue.length() >= tailleReelle) {
+            return newValue;
+        }
+        if (newValue.matches("^\\d+[,.]?\\d+$")
+                || newValue.matches("[-+]?\\d+(\\.\\d+)?[eE][-+]?\\d+")
+                || newValue.matches("^\\d{1,3},\\d+E[+-]?\\d+$")) {//Notation scientifique
+            try {
+                newValue = new BigDecimal(newValue.replace(',', '.')).toPlainString();//Remplacer la virgule par le point
+            } catch (Exception ex) {
+            }
+        }
+        return generateUnknown(tailleReelle - newValue.length(), " ") + newValue;
+    }
+
+    /**
+     * Méthode qui génère un nombre précis d'un quelconque caractère
+     *
+     * @param nbOfCharacter : nombre de fois à générer le caractère
+     * @param character : caractère à générer
+     * @return
+     */
+    private static String generateUnknown(int nbOfCharacter, String character) {
+        String str = "";
+
+        for (int i = 0; i < nbOfCharacter; i++) {
+            str += character;
+        }
+        return str;
+    }
+
+    /**
+     * Méthode qui extrait les données en se basant sur la taille des champs
+     * définis dans le validateur
+     */
+    private static void parseLineUsingFieldLength(String line, Map<Integer, Map> mapParams, String delimiteurColonne, BufferedWriter bufferWriter, Charset charset) throws IOException {
+
+        String[] columnsTableLine = new String[mapParams.size() - 1];
+
+        try {
+            int index = 0;
+            int i = 1;
+
+            while (i < mapParams.size()) {
+                Map<String, String> map = mapParams.get(i);
+
+                int taille = Integer.parseInt(map.get(Constantes.LIBELLE_TAILLE));
+
+                if (i == mapParams.size() - 1) {
+                    columnsTableLine[i - 1] = line.substring(index);
+                } else {
+                    columnsTableLine[i - 1] = line.substring(index, index + taille);
+                }
+
+                index = index + taille;
+
+                //recupérer le charactère correspondant au delimiteur
+                char character = ParserUtils.characterOfDelimiteur(delimiteurColonne);
+
+                //Si le démimiteur n'est pas la chaîne vide
+                if (character != '\0') {
+
+                    //Si on ne trouve pas le délimiteur après avoir lu le champ précédent, on arrete le traitement de cette ligne car fichier mal formaté
+                    if ((i < mapParams.size() - 1) && (line.charAt(index) != character)) {
+
+                        //Interrompre l'extraction des données en remplissant la condition de sortie de laboucle
+                        i = mapParams.size();
+                    } else {
+
+                        //Incrementer l'index un afin de traverser le séparateur
+                        index = index + 1;
+                    }
+
+                }
+                i++;
+            }
+
+            String[] encodedStrings = ParserUtils.encodeStrings(columnsTableLine, charset);
+            ParserUtils.writeToFile(encodedStrings, bufferWriter);
+
+        } catch (Exception ex) {
+            Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+
+    }
+
+    /**
+     * Méthode qui écrit les informations sur les éléments tronqués dans un
+     * fichier
+     *
+     * @param t
+     * @param bufferWriter
+     * @throws IOException
+     */
+    private static void writeTruncatedElementsToFile(TruncatedElement t, final BufferedWriter bufferWriter) throws IOException {
+
+        //Ecriture dans le fichier output
+        StringBuilder safeLineBuilder = new StringBuilder(0);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime date = t.getDateAction();
+
+        safeLineBuilder.append("Fichier:").append(t.getFileName()).append("|");
+        safeLineBuilder.append("Date:").append(date.format(formatter)).append("|");
+        safeLineBuilder.append("Ligne:").append(t.getLineNumber()).append("|");
+        safeLineBuilder.append("Colonne:").append(t.getCodeColonne()).append("|");
+        safeLineBuilder.append("Taille attendue:").append(t.getTailleAttendue()).append("|");
+        safeLineBuilder.append("Donnée finale:").append(t.getFinalData()).append("|");
+        safeLineBuilder.append("Taille trouvée:").append(t.getTailleTrouvee()).append("|");
+        safeLineBuilder.append("Donnée initiale:").append(t.getInitialData());
+
+        String safeLine = safeLineBuilder.toString();
+
+        if (safeLine.length() > 0) {
+
+            bufferWriter.write(safeLine + System.lineSeparator());
+
+        }
+    }
+
+    /**
+     * Méthode qui retourne le nom fichier sans extension
+     *
+     * @param file
+     * @return
+     */
+    private static String fileNameWithoutExtension(File file) {
+        int index = file.getName().lastIndexOf(".");
+
+        if (index > 0) {
+
+            return file.getName().substring(0, index);
+        } else {
+            return file.getName();
+        }
+    }
+
+    /**
+     * Méthode qui construit le chemin du fichier qui va contenit les logs des
+     * éléments tronqués
+     *
+     * @param validateur
+     * @param outputFile
+     * @return
+     * @throws IOException
+     */
+    private static Path createTruncatedEltsPath(Validateur validateur, File outputFile) throws IOException {
+        final String arhivageDirectory = ConfigurationService.getInstance().getCurrentConfig().getArchivesDir();
+        final String today = LocalDate.now().toString();
+
+        Path logDir = Paths.get(arhivageDirectory, today, validateur.getCodeTypeFichier(), "logs");
+
+        if (!Files.exists(logDir, LinkOption.NOFOLLOW_LINKS)) {
+            Files.createDirectories(logDir);
+        }
+
+        Path pathOfTruncatedElts = Paths.get(arhivageDirectory, today, validateur.getCodeTypeFichier(), "logs", fileNameWithoutExtension(outputFile) + "_truncated_elements.txt");
+
+        return pathOfTruncatedElts;
+
+    }
+
+    /**
+     * méthode permettant de construire le chemin du fichier d'origine dans le
+     * répertoire d'archivages
+     *
+     * @param validateur
+     * @param originalFile
+     * @return
+     * @throws IOException
+     */
+    private static Path createOriginalFileInArchive(Validateur validateur, File originalFile) throws IOException {
+        final String arhivageDirectory = ConfigurationService.getInstance().getCurrentConfig().getArchivesDir();
+        final String today = LocalDate.now().toString();
+
+        Path originalFilesDir = Paths.get(arhivageDirectory, today, validateur.getCodeTypeFichier(), "fichiers");
+
+        if (!Files.exists(originalFilesDir, LinkOption.NOFOLLOW_LINKS)) {
+            Files.createDirectories(originalFilesDir);
+        }
+
+        Path originalFilePath = Paths.get(arhivageDirectory, today, validateur.getCodeTypeFichier(), "fichiers", originalFile.getName());
+        final String fileNameWithoutExtension = fileNameWithoutExtension(originalFile);
+
+        //Si le fichier existe dans le répertoire d'archivages, alors ajouter un numero d'ordre dans son nom
+        if (Files.exists(originalFilePath, LinkOption.NOFOLLOW_LINKS)) {
+            List<Path> existingFiles = Files.list(originalFilesDir).filter(p
+                    -> p.toString().contains(fileNameWithoutExtension)).collect(Collectors.toList());
+
+            int nbFiles = existingFiles.size();
+
+            if (nbFiles > 0) {
+                originalFilePath = Paths.get(arhivageDirectory, today, validateur.getCodeTypeFichier(), "fichiers",
+                        fileNameWithoutExtension + "(" + nbFiles + ")" + getFileExtension(originalFile));
+            }
+        }
+
+        return originalFilePath;
+    }
+
+    /**
+     * Méthode qui retourne l'extension d'un fichier
+     *
+     * @param file
+     * @return
+     */
+    private static String getFileExtension(File file) {
+        int index = file.getName().lastIndexOf(".");
+
+        if (index <= 0) {
+            return "";
+
+        } else {
+            return file.getName().substring(index);
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/JsonDataTypeUtil.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/JsonDataTypeUtil.java
new file mode 100644
index 0000000..5e1a4b7
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/JsonDataTypeUtil.java
@@ -0,0 +1,102 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.dynamicjsonparser.pojo.JsonDataType;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonDataTypeUtil {
+
+    public static List<JsonDataType> constructJsonDataType(ModeleJson modeleJson) {
+        List<JsonDataType> jsonDataTypes = new ArrayList<>();
+
+        modeleJson.getListeStructureJson().forEach(s -> {
+
+            if (s.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+
+                jsonDataTypes.add(new JsonDataType(s.getLibelle(), contructSubJsonDataType(s.getTypeOfSubObject()), modeleJson.getObjectName(), s.isListe()));
+
+            } else {
+                JsonDataType json = new JsonDataType(s.getLibelle(), s.getTypeDonnee(), modeleJson.getObjectName(), s.isListe());
+
+                if (s.getTypeDonnee().equals(TypeDonnee.DATE)) {
+
+                    json.setFormatDate(s.getFormatDate());
+                    json.setSeparateurDate(s.getCodeDelimiteurDate());
+                }
+
+                jsonDataTypes.add(json);
+            }
+
+        });
+
+        return jsonDataTypes;
+    }
+
+    public static List<JsonDataType> constructJsonDataType(JsonStructure jsonStructure) {
+        List<JsonDataType> jsonDataTypes = new ArrayList<>();
+
+        jsonStructure.getFields().forEach(s -> {
+
+            if (s.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+
+                jsonDataTypes.add(new JsonDataType(s.getName(), constructJsonDataType(s), s.getName(), s.isRequired(), s.isCollection()));
+
+            } else {
+                JsonDataType json = new JsonDataType(s.getName(), s.getTypeDonnee(), jsonStructure.getName(), s.isRequired(), s.isCollection());
+
+                if (s.getTypeDonnee().equals(TypeDonnee.DATE)) {
+
+                    json.setFormatDate(s.getFormatDate());
+                    json.setSeparateurDate(s.getCodeDelimiteurDate());
+                }
+
+                jsonDataTypes.add(json);
+            }
+
+        });
+
+        return jsonDataTypes;
+    }
+
+    private static List<JsonDataType> contructSubJsonDataType(SubObject subObject) {
+        List<JsonDataType> liste = new ArrayList<>();
+
+        //Filtrer afin de ne garder que les champs des sous-objets
+        List<StructureChampJson> structures = subObject.getListeStructureJson().stream().filter(s -> s.getModeleJson() == null).collect(Collectors.toList());
+
+        structures.forEach(c -> {
+
+            if (c.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+
+                liste.add(new JsonDataType(c.getLibelle(), contructSubJsonDataType(c.getTypeOfSubObject()), c.getFieldOfSubObject().getSubObjectName(), c.isListe()));
+
+            } else {
+
+                JsonDataType json = new JsonDataType(c.getLibelle(), c.getTypeDonnee(), subObject.getSubObjectName(), c.isListe());
+
+                if (c.getTypeDonnee().equals(TypeDonnee.DATE)) {
+
+                    json.setFormatDate(c.getFormatDate());
+                    json.setSeparateurDate(c.getCodeDelimiteurDate());
+                }
+                liste.add(json);
+            }
+        });
+
+        return liste;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ParserUtils.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ParserUtils.java
new file mode 100644
index 0000000..43f660e
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ParserUtils.java
@@ -0,0 +1,246 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.typefichier.validator.model.enums.FileExtension;
+import com.megatim.typefichier.validator.utilities.Constantes;
+import com.megatim.fdxconvert.exceptions.ValidatorException;
+import com.megatim.fdxconvert.model.Validateur;
+import java.io.BufferedWriter;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.Map;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ParserUtils {
+
+    private ParserUtils() {
+
+    }
+
+    public static boolean isConvertDataBeforeValidation(File file) throws Exception {
+        String extension = null;
+        boolean result = true;
+        Document doc = intialize(file);
+        NodeList entityList = doc.getElementsByTagName("entity"); //Liste des noeud <entity>
+
+        //Le validateur XML doit avoir au moins deux balises <entity> pour être conforme
+        if (entityList.getLength() >= 2) {
+            NamedNodeMap attributes = entityList.item(1).getAttributes();
+
+            for (int i = 0; i < attributes.getLength(); i++) {
+                String assertionAttributeName = attributes.item(i).getNodeName();
+                String assertionAttributeValue = attributes.item(i).getNodeValue();
+
+                if (assertionAttributeName.equalsIgnoreCase(Constantes.EXTENSION)) {
+                    extension = assertionAttributeValue;
+
+                    if (extension != null
+                            && (extension.equalsIgnoreCase(FileExtension.CSV.name())
+                            || extension.equalsIgnoreCase(FileExtension.XLS.name())
+                            || extension.equalsIgnoreCase(FileExtension.XLSX.name()))) {
+                        result = false;
+                        break;
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Méthode qui extrait les informations de validation d'un fichier xml et
+     * les renvoie dans une map
+     *
+     * @param validateur : Validateur dont on veut extraire les infos
+     * @return : retourne une map de la forme
+     * <position_colonne_dans_une_ligne_de_donnee, informations_sur_la_colonne>
+     * @throws Exception
+     */
+    public static Map<Integer, Map> getValidateurElements(Validateur validateur) throws Exception {
+        return com.megatim.typefichier.validator.utilities.ParserUtils.getValidateurElements(validateur.getContent());
+    }
+
+    /**
+     * Méthode qui retire le caractère retour charriot dans une chaîne
+     *
+     * @param str
+     * @return
+     */
+//    public static String removeReturnCharriot(String str) {
+//        String result = str;
+//
+//        if (str != null && !str.isEmpty()) {
+//            String[] tab = str.split("\n");
+//            result = "";
+//
+//            for (String s : tab) {
+//                result += s;
+//            }
+//        }
+//        return result;
+//    }
+    /**
+     * Méthode utilitaire pour extraire les données dans un fichier xml
+     *
+     * @param array
+     * @return
+     * @throws Exception
+     */
+    private static Document intialize(byte[] array) throws Exception {
+
+        /**
+         * Défini un factory qui aide à obtenir un parseur qui produit un arbre
+         * d'objets DOM à partir d'un docuent XML.
+         */
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+        /**
+         * création d'un objet du builder pour parser le fichier XML.
+         */
+        DocumentBuilder db = dbf.newDocumentBuilder();
+
+        Document doc = db.parse(new ByteArrayInputStream(array));
+
+        doc.getDocumentElement().normalize();
+
+        return doc;
+    }
+
+    private static Document intialize(File file) throws Exception {
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        DocumentBuilder db = dbf.newDocumentBuilder();
+        Document doc = db.parse(file);
+        doc.getDocumentElement().normalize();
+
+        return doc;
+    }
+
+    /**
+     * Méthode pour obtenir l'objet de typr char correspondant à chaque
+     * délimiteur
+     *
+     * @param delimiteur
+     * @return
+     */
+    public static char characterOfDelimiteur(String delimiteur) {
+        char character;
+
+        switch (delimiteur) {
+            case "\\t":
+                character = '\t';
+                break;
+            case "\\n":
+                character = '\n';
+                break;
+            case "":
+                character = '\0';
+                break;
+            default:
+                character = delimiteur.charAt(0);
+        }
+
+        return character;
+    }
+
+    /**
+     * Méthode permettant d'encoder une chaîne de caractères
+     *
+     * @param datas : tableau de String à encoder
+     * @param charset : encodage à utiliser
+     * @return
+     */
+    public static String[] encodeStrings(String[] datas, Charset charset) {
+        String[] encodedStrings = new String[datas.length];
+
+        for (int i = 0; i < encodedStrings.length; i++) {
+            byte[] bytesOfString = datas[i].getBytes();
+            encodedStrings[i] = new String(bytesOfString, charset);
+
+        }
+        return encodedStrings;
+    }
+
+    /**
+     * Méthode qui extrait une sous-chaîne dans une chaîne de caractères en
+     * utilisant un délimiteur
+     *
+     * @param line : chaîne mère à séparer
+     * @param character : délimiteur de chaîne
+     * @return : retourne un tableau contenant les châines extraites
+     */
+    public static String[] splitIntoColumns(String line, char character) {
+
+        int count = 0;
+
+        for (int i = 0; i < line.length(); i++) {
+
+            if (line.charAt(i) == character) {
+                count++;
+            }
+
+        }
+
+        String[] columns = new String[count + 1];
+
+        StringBuilder builder = new StringBuilder(0);
+
+        count = 0;
+
+        for (int i = 0; i < line.length(); i++) {
+
+            if (line.charAt(i) == character) {
+
+                columns[count] = builder.toString();
+
+                builder = new StringBuilder(0);
+
+                count++;
+
+            } else {
+
+                builder.append(line.charAt(i));
+            }
+
+        }
+
+        columns[count] = builder.toString();
+
+        return columns;
+    }
+
+    /**
+     * Méthode qui écrit dans un fichier
+     *
+     * @param finalColumnsTableLine : liste des châines à écrire dans le fichier
+     * @param bufferWriter : ressource permettant d'écrire dans le fichier
+     */
+    public static void writeToFile(String[] finalColumnsTableLine, final BufferedWriter bufferWriter) throws IOException {
+
+        //Ecriture dans le fichier output
+        StringBuilder safeLineBuilder = new StringBuilder(0);
+
+        for (String s : finalColumnsTableLine) {
+            safeLineBuilder.append(s);
+        }
+
+        String safeLine = safeLineBuilder.toString();
+
+        if (safeLine.length() > 0) {
+            bufferWriter.write(safeLine + System.lineSeparator());
+
+        }
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonConverter.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonConverter.java
new file mode 100644
index 0000000..2a98da4
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonConverter.java
@@ -0,0 +1,83 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import static com.megatim.dynamicjsonparser.enums.TypeDonnee.ALPHANUMERIQUE;
+import static com.megatim.dynamicjsonparser.enums.TypeDonnee.DATE;
+import static com.megatim.dynamicjsonparser.enums.TypeDonnee.DECIMAL;
+import static com.megatim.dynamicjsonparser.enums.TypeDonnee.NUMERIQUE;
+import com.megatim.dynamicjsonparser.pojo.JsonField;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TypeFichierJsonConverter {
+
+    private final TypeFichierJson typeFichierJson;
+
+    public TypeFichierJsonConverter(TypeFichierJson typeFichierJson) {
+        this.typeFichierJson = typeFichierJson;
+    }
+
+    public List<JsonField> convert() {
+        return convert(typeFichierJson.getJsonStructure().getFields());
+    }
+
+    private List<JsonField> convert(List<JsonStructure> jsonStructs) {
+        List<JsonField> fields = new ArrayList<>();
+
+        jsonStructs.forEach(j -> {
+            if (j.getTypeDonnee() != null) {
+                if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+                    if (j.getFields() != null && !j.getFields().isEmpty()) {
+                        fields.add(new JsonField(j.getName(), convert(j.getFields()), j.getName(),j.getLengthh(), j.isRequired(), j.isCollection()));
+                    }
+                } else {
+                    fields.add(convert(j, j.getParent().getName()));
+                }
+            }
+        });
+        return fields;
+    }
+
+    private JsonField convert(JsonStructure js, String className) {
+        Class<?> clazz;
+
+        switch (js.getTypeDonnee()) {
+
+            case ALPHANUMERIQUE:
+                clazz = String.class;
+                break;
+
+            case NUMERIQUE:
+                clazz = Long.class;
+                break;
+
+            case DATE:
+                clazz = LocalDate.class;
+                break;
+
+            case DECIMAL:
+                clazz = BigDecimal.class;
+                break;
+
+            default:
+                clazz = String.class;
+        }
+        JsonField dynamicField = new JsonField(clazz, js.getName(), className, js.getLengthh(), js.isRequired(), js.isCollection());
+        dynamicField.setFormatDate(js.getFormatDate());
+        dynamicField.setSeparateurDate(js.getCodeDelimiteurDate());
+
+        return dynamicField;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonMarshaller.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonMarshaller.java
new file mode 100644
index 0000000..2343102
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/TypeFichierJsonMarshaller.java
@@ -0,0 +1,81 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.model.jaxb.TypeFichierJsonsList;
+import java.io.File;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TypeFichierJsonMarshaller {
+
+    public static void marshall(List<TypeFichierJson> typeFichierJsons, String destinationDir) throws JAXBException {
+
+        if (typeFichierJsons == null) {
+            typeFichierJsons = new ArrayList<>();
+        }
+        JAXBContext context = JAXBContext.newInstance(TypeFichierJsonsList.class);
+        Marshaller marshaller = context.createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        String date = formatter.format(LocalDateTime.now());
+        marshaller.marshal(new TypeFichierJsonsList(typeFichierJsons), new File(destinationDir, "typeFichierJsons" + date + ".xml"));
+    }
+
+    public static void marshall(String destinationDir, TypeFichierJson typeFichierJson) throws JAXBException {
+
+        if (typeFichierJson == null) {
+            return;
+        }
+        JAXBContext context = JAXBContext.newInstance(TypeFichierJson.class);
+        Marshaller marshaller = context.createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        String date = formatter.format(LocalDateTime.now());
+
+        marshaller.marshal(typeFichierJson, new File(destinationDir, typeFichierJson.getTypeFichier().getCode() + date + ".xml"));
+    }
+
+    public static TypeFichierJsonsList unMarshall(String filePath) throws JAXBException {
+        JAXBContext context = JAXBContext.newInstance(TypeFichierJsonsList.class);
+        Unmarshaller unmarshaller = context.createUnmarshaller();
+
+        TypeFichierJsonsList typeFichierJsonsList = (TypeFichierJsonsList) unmarshaller.unmarshal(new File(filePath));
+        typeFichierJsonsList.getTypeFichierJson().forEach(t -> setParent(t.getJsonStructure()));
+
+        return typeFichierJsonsList;
+    }
+
+    public static TypeFichierJson unMarshallOne(String filePath) throws JAXBException {
+        JAXBContext context = JAXBContext.newInstance(TypeFichierJson.class);
+        Unmarshaller unmarshaller = context.createUnmarshaller();
+
+        TypeFichierJson typeFichierJson = (TypeFichierJson) unmarshaller.unmarshal(new File(filePath));
+        setParent(typeFichierJson.getJsonStructure());
+
+        return typeFichierJson;
+    }
+
+    private static void setParent(JsonStructure jsonStruct) {
+        jsonStruct.getFields().forEach(f -> {
+            f.setParent(jsonStruct);
+            setParent(f);
+        });
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Utilities.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Utilities.java
new file mode 100644
index 0000000..3263143
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Utilities.java
@@ -0,0 +1,61 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.fdxconvert.App;
+import java.io.FileInputStream;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ASUS
+ */
+public class Utilities {
+
+    private Utilities() {
+    }
+
+    //Mots reservés de Java
+    private final static Set<String> reservedWords = new HashSet<>(Arrays.asList("abstract", "assert", "boolean", "break", "byte", "case", "catch", "char",
+            "class", "continue", "const", "default", "do", "double", "else", "enum", "exports", "extends", "final", "finally",
+            "false", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "module", "native",
+            "new", "null", "package", "private", "protected", "public", "requires", "return", "short", "static", "strictfp", "super", "switch",
+            "synchronized", "this", "throw", "throws", "transient", "true", "try", "var", "void", "volatile", "while"));
+
+    public static StringBuilder validateName(String name, String libelle) {
+        StringBuilder message = new StringBuilder("");
+
+        if (reservedWords.contains(name)) {
+            message.append("\"").append(name).append("\"").append(" est un mot reservé\n");
+        }
+
+        if (!name.matches("^([a-zA-Z]|_|\\$)(\\w|\\$)*$")) {
+            message.append(libelle).append(" doit commencer par une lettre [a-zA-Z], par le signe dollar( $ ) "
+                    + "ou par un trait de soulignement( _ ) et ne doit pas contenir d'espace\n");
+
+        }
+
+        return message;
+    }
+
+    public static int getNbThreads() {
+
+        Properties appProps = new Properties();
+        int nbThreads = 1;
+
+        try {
+            appProps.load(new FileInputStream("./app.properties"));
+            nbThreads = Integer.parseInt(appProps.getProperty("nbThreads"));
+        } catch (Exception ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return nbThreads;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ValidateurParser.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ValidateurParser.java
new file mode 100644
index 0000000..9b55b5f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ValidateurParser.java
@@ -0,0 +1,289 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.typefichier.validator.utilities.Constantes;
+import com.megatim.fdxconvert.exceptions.ValidatorException;
+import com.megatim.fdxconvert.pojo.ColumnDefinition;
+import java.io.File;
+import java.text.Normalizer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ValidateurParser {
+
+    /**
+     * Méthode permettant d'extraire les éléments du validateur XML
+     *
+     * @param file : Fichier du validateur
+     * @param codeTypeFichier
+     * @return
+     * @throws Exception
+     */
+    public static List<ColumnDefinition> retrieveFieldsFromValidator(File file, String codeTypeFichier) throws Exception {
+
+        Document doc = intialize(file);
+
+        NodeList entityList = doc.getElementsByTagName("entity"); //Liste des noeud <entity>
+
+        //Map qui stocke le champ à une position, ainsi que les caractéristiques de champ(typeDonnee, taille, index de debut d'extraction)
+        Map<Integer, Map<String, String>> mapParams = new HashMap<>();
+
+        int position = 1;
+
+        //Le validateur XML doit avoir au moins deux balises <entity> pour être conforme
+        if (entityList.getLength() >= 2) {
+
+            //Liste des noeud de type <validation> du deuxième Noeud <entity>
+            NodeList entityFileLineChildren = entityList.item(1).getChildNodes();
+
+            //Map qui contient champ set son nombe d'occurrence dans le fichier en cours de traitement
+            Map<String, Integer> mapFieldName = new HashMap<>();
+
+            //parcours de la balise <entity> pour récupérer ses enfants
+            for (int i = 0; i < entityFileLineChildren.getLength(); i++) {
+
+                if (entityFileLineChildren.item(i) != null && entityFileLineChildren.item(i).getAttributes() != null) {
+
+                    //balise <validation>
+                    Node validation = entityFileLineChildren.item(i);
+
+                    if (validation != null) {
+                        Map<String, String> mapAttributes = new HashMap<>();
+
+                        //Liste des assertions de la balise <validation>
+                        NodeList assertions = validation.getChildNodes();
+
+                        for (int r = 0; r < assertions.getLength(); r++) {
+
+                            Node assertion = assertions.item(r);
+
+                            if (assertion != null && assertion.getAttributes() != null) {
+                                NamedNodeMap assertionAttributes = assertion.getAttributes();
+
+                                for (int q = 0; q < assertionAttributes.getLength(); q++) {
+                                    String assertionAttributeName = assertionAttributes.item(q).getNodeName();
+                                    String assertionAttributeValue = assertionAttributes.item(q).getNodeValue();
+
+                                    if (assertionAttributeName.equalsIgnoreCase(Constantes.ERROR_CODE)) {
+                                        String fieldName = constructFieldName(assertionAttributeValue, codeTypeFichier);
+
+                                        //Stocker le nbre d'occurrences trouvés dans la map
+                                        if (mapFieldName.containsKey(fieldName)) {
+                                            Integer nbOccurrences = mapFieldName.get(fieldName);
+                                            mapFieldName.replace(fieldName, nbOccurrences + 1);
+
+                                        } else {
+                                            mapFieldName.put(fieldName, 1);
+                                        }
+                                        Integer nbOccurrences = mapFieldName.get(fieldName);
+                                        String finalFieldName = nbOccurrences == 1 ? fieldName : fieldName + (nbOccurrences - 1);
+
+                                        mapAttributes.put(Constantes.FIELD_NAME, finalFieldName);
+                                        break;
+                                    }
+                                }
+                                //Liste des balises <param-value> de la balise <assertion>
+                                NodeList params = assertion.getChildNodes();
+
+                                for (int j = 0; j < params.getLength(); j++) {
+
+                                    if (params.item(j) != null && params.item(j).getAttributes() != null) {
+
+                                        //Les attributs de la balise <param-value>
+                                        NamedNodeMap attributesParamValue = params.item(j).getAttributes();
+                                        Integer positionAttribute = null;
+
+                                        for (int k = 0; k < attributesParamValue.getLength(); k++) {
+
+                                            String nodeValue = attributesParamValue.item(k).getNodeValue();
+                                            String nextNodeValue = attributesParamValue.item(++k).getNodeValue();
+                                            mapAttributes.put(nodeValue, nextNodeValue);
+
+                                            if (nodeValue.equals(Constantes.LIBELLE_TAILLE) && !nextNodeValue.equalsIgnoreCase(Constantes.EQUAL_PARAM)) {
+                                                mapAttributes.put(nodeValue, nextNodeValue);
+
+                                            } else if (nodeValue.equals(Constantes.LIBELLE_TYPE_DONNEE)) {
+                                                mapAttributes.put(nodeValue, nextNodeValue);
+                                            } else if (nodeValue.equals(Constantes.LIBELLE_POSITION)) {
+                                                positionAttribute = Integer.valueOf(nextNodeValue);
+                                            }
+                                        }
+                                        mapParams.put(positionAttribute != null ? positionAttribute : position, mapAttributes);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    position++;
+                }
+
+            }
+
+        }
+
+//        mapParams.remove(mapParams.size());
+        List<ColumnDefinition> columnsDefinition = getColumnsDefinition(mapParams);
+
+        return columnsDefinition;
+
+    }
+
+    /**
+     * Méthode utilitaire pour extraire les données dans un fichier xml
+     *
+     * @param array
+     * @return
+     * @throws Exception
+     */
+    private static Document intialize(File file) throws Exception {
+
+        /**
+         * Défini un factory qui aide à obtenir un parseur qui produit un arbre
+         * d'objets DOM à partir d'un document XML.
+         */
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+        /**
+         * création d'un objet du builder pour parser le fichier XML.
+         */
+        DocumentBuilder db = dbf.newDocumentBuilder();
+
+        Document doc = db.parse(file);
+
+        doc.getDocumentElement().normalize();
+
+        return doc;
+    }
+
+    /**
+     * Méthode qui met les informations du validateur dans un ColumnDefinition
+     * pour utilisation future
+     *
+     * @param mapStructure
+     * @return
+     */
+    private static List<ColumnDefinition> getColumnsDefinition(Map<Integer, Map<String, String>> mapStructure) throws ValidatorException {
+        List<ColumnDefinition> columns = new ArrayList<>();
+
+        for (Integer key : mapStructure.keySet()) {
+            ColumnDefinition column = new ColumnDefinition();
+            Map<String, String> value = mapStructure.get(key);
+            column.setPosition(key);
+
+            if (value.get(Constantes.LIBELLE_TAILLE) != null) {
+                column.setTaille(Integer.parseInt(value.get(Constantes.LIBELLE_TAILLE)));
+            }
+            column.setName(value.get(Constantes.FIELD_NAME));
+            column.setTypeDonnee(TypeDonnee.fromValeur(value.get(Constantes.LIBELLE_TYPE_DONNEE)).getValue());
+
+            if (column.getTypeDonnee().equalsIgnoreCase(TypeDonnee.DECIMAL.toString())) {
+
+                if (value.get(Constantes.LIBELLE_TAILLE_PARTIE_DECIMALE) != null) {
+                    column.setTaillePartieDecimale(Integer.parseInt(value.get(Constantes.LIBELLE_TAILLE_PARTIE_DECIMALE)));
+                }
+
+            } else if (column.getTypeDonnee().equalsIgnoreCase(TypeDonnee.DATE.toString())) {
+                String separateurDate = value.get(Constantes.LIBELLE_SEPARATEUR_DATE);
+                String formatDate = value.get(Constantes.LIBELLE_FORMAT_DATE);
+
+                if (formatDate != null && !formatDate.isEmpty()) {
+
+                    if (separateurDate != null && !separateurDate.isEmpty()) {
+
+                        if (separateurDate.equals("-") || separateurDate.equals("/")) {
+                            formatDate = addSeparateurToDateFormat(formatDate, separateurDate, column.getName());
+
+                        } else {
+                            throw new ValidatorException("Le séparateur de date du champ " + column.getName() + " ne peut être " + separateurDate);
+                        }
+                    }
+                    column.setFormatDate(formatDate);
+                    column.setSeparateurDate(separateurDate);
+                } else {
+                    throw new ValidatorException("Le format date du champ " + column.getName() + " est absent");
+                }
+            }
+
+            columns.add(column);
+        }
+
+        return columns;
+    }
+
+    /**
+     * Méthode qui ajoute le séparateur renseigné dans le validateur au format
+     *
+     * @param formatDate
+     * @param separateurDate
+     * @param columnName
+     * @return
+     */
+    public static String addSeparateurToDateFormat(String formatDate, String separateurDate, String columnName) {
+        StringBuilder dateValue = new StringBuilder();
+
+        switch (formatDate) {
+            case "ddMMyyyy":
+                dateValue.append("dd").append(separateurDate).append("MM").append(separateurDate).append("yyyy");
+                break;
+            case "ddyyyyMM":
+                dateValue.append("dd").append(separateurDate).append("yyyy").append(separateurDate).append("MM");
+                break;
+            case "MMddyyyy":
+                dateValue.append("MM").append(separateurDate).append("dd").append(separateurDate).append("yyyy");
+                break;
+            case "MMyyyydd":
+                dateValue.append("MM").append(separateurDate).append("yyyy").append(separateurDate).append("dd");
+                break;
+            case "yyyyddMM":
+                dateValue.append("yyyy").append(separateurDate).append("dd").append(separateurDate).append("MM");
+                break;
+            case "yyyyMMdd":
+                dateValue.append("yyyy").append(separateurDate).append("MM").append(separateurDate).append("dd");
+                break;
+            case "yyyy":
+                dateValue.append("yyyy");
+                break;
+            case "yyyyMM":
+                dateValue.append("yyyy").append(separateurDate).append("MM");
+            case "MMyyyy":
+                dateValue.append("MM").append(separateurDate).append("yyyy");
+                break;
+            default:
+                throw new ValidatorException("Le format date " + formatDate + " du champ" + columnName + " n'est pas acceptable ");
+        }
+
+        return dateValue.toString();
+    }
+
+    private static String constructFieldName(String fieldName, String codeTypeFichier) {
+
+        fieldName = fieldName.startsWith(codeTypeFichier)
+                ? fieldName.substring(6)
+                : fieldName;
+        fieldName = fieldName.equalsIgnoreCase("int") ? "_" + fieldName : fieldName;
+        return removeAccents(fieldName.replaceAll(" ", "_"));
+    }
+
+    private static String removeAccents(String input) {
+        // Normalize to decomposed form (NFD): é → e + ´, è → e + `
+        String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
+        // Remove all diacritical marks (accents)
+        return normalized.replaceAll("\\p{M}", "");
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/XmlUtils.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/XmlUtils.java
new file mode 100644
index 0000000..3bd0b9f
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/XmlUtils.java
@@ -0,0 +1,34 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ *
+ * @author ASUS
+ */
+public class XmlUtils {
+
+    private XmlUtils() {
+    }
+
+    public static Object unMarshal(File xmlFile, Class<?> classe) throws JAXBException, FileNotFoundException, XMLStreamException {
+        XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
+        XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new FileInputStream(xmlFile));
+
+        JAXBContext jaxbContext = JAXBContext.newInstance(classe);
+        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
+        return jaxbUnmarshaller.unmarshal(xmlStreamReader);
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureFormViewModel.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureFormViewModel.java
new file mode 100644
index 0000000..0b8bf10
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureFormViewModel.java
@@ -0,0 +1,115 @@
+package com.megatim.fdxconvert.viewmodel;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.service.TypeFichierJsonService;
+import com.megatim.fdxconvert.service.TypeFichierService;
+import com.megatim.fdxconvert.views.jsonstructure.NestedJsonStructure;
+import javafx.beans.property.*;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.concurrent.Task;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class JsonStructureFormViewModel {
+
+    private final ObservableList<TypeFichier> typeFichiers = FXCollections.observableArrayList();
+    private final BooleanProperty loading = new SimpleBooleanProperty(false);
+    private final ObjectProperty<TypeFichier> selectedTypeFichier;
+    private final ObjectProperty<TypeFichierJson> result = new SimpleObjectProperty<>(null);
+    private final TypeFichierJson typeFichierJson;
+
+    public JsonStructureFormViewModel(TypeFichierJson typeFichierJson) {
+        this.typeFichierJson = typeFichierJson != null ? typeFichierJson : new TypeFichierJson();
+        selectedTypeFichier = new SimpleObjectProperty<>(typeFichierJson != null ? typeFichierJson.getTypeFichier() : null);
+    }
+
+    public void init() {
+        loadTypeFichiersFromDB();
+    }
+
+    private void loadTypeFichiersFromDB() {
+        Task<Set<TypeFichier>> task = new Task() {
+            @Override
+            protected Object call() throws Exception {
+                return TypeFichierService.getInstance().getAll();
+            }
+        };
+        task.setOnRunning(e -> loading.set(true));
+        task.setOnSucceeded(e -> {
+            loading.set(false);
+            typeFichiers.clear();
+            typeFichiers.setAll(task.getValue());
+        });
+        task.setOnFailed(e -> {
+            loading.set(false);
+            AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    public void createTypeFichierJSON(NestedJsonStructure nestedJsonStructure) {
+        Task<TypeFichierJson> task = new Task() {
+            @Override
+            protected TypeFichierJson call() throws Exception {
+                typeFichierJson.setJsonStructure(jsonStructure(nestedJsonStructure, null));
+                if(typeFichierJson.getId() == null) {
+                    typeFichierJson.setTypeFichier(selectedTypeFichier.get());
+                    return TypeFichierJsonService.getInstance().add(typeFichierJson);
+                }
+                return TypeFichierJsonService.getInstance().edit(typeFichierJson);
+            }
+        };
+        task.setOnRunning(e -> loading.set(true));
+        task.setOnSucceeded(e -> {
+            loading.set(false);
+            result.set(typeFichierJson);
+        });
+        task.setOnFailed(e -> {
+            loading.set(false);
+            AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant le traitement", "Erreur");
+        });
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+
+    private JsonStructure jsonStructure(NestedJsonStructure nestedJsonStructure, JsonStructure parent) {
+        JsonStructure jsonStructure = new JsonStructure();
+        jsonStructure.setName(nestedJsonStructure.name());
+        jsonStructure.setFormatDate(nestedJsonStructure.format());
+        jsonStructure.setTypeDonnee(nestedJsonStructure.typeDonnee());
+        jsonStructure.setLengthh(nestedJsonStructure.taille());
+        jsonStructure.setRequired(nestedJsonStructure.isRequired());
+        jsonStructure.setCollection(nestedJsonStructure.isCollection());
+
+        if (nestedJsonStructure.typeDonnee().equals(TypeDonnee.DATE)) {
+            jsonStructure.setCodeDelimiteurDate(nestedJsonStructure.delimiteur().getCode());
+        }
+
+        jsonStructure.setParent(parent);
+
+        jsonStructure.setFields(nestedJsonStructure.children().stream().map(nJ -> jsonStructure(nJ, jsonStructure)).collect(Collectors.toList()));
+
+        return jsonStructure;
+    }
+
+    public ObjectProperty<TypeFichierJson> resultProperty() {
+        return result;
+    }
+
+    public ObjectProperty<TypeFichier> selectedTypeFichierProperty() {
+        return selectedTypeFichier;
+    }
+
+    public ObservableList<TypeFichier> getTypeFichiers() {
+        return typeFichiers;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java
new file mode 100644
index 0000000..4519209
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java
@@ -0,0 +1,171 @@
+package com.megatim.fdxconvert.viewmodel;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.dao.JsonStructureDAO;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.service.TypeFichierJsonService;
+import javafx.application.Platform;
+import javafx.beans.binding.Bindings;
+import javafx.beans.binding.StringBinding;
+import javafx.beans.property.*;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.concurrent.Task;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+
+public class JsonStructureTableViewModel {
+    
+    private final ObservableList<TypeFichierJson> data = FXCollections.observableArrayList();
+    private final ObjectProperty<TypeFichierJson> selectedItem = new SimpleObjectProperty<>(null);
+    
+    private final BooleanProperty loading = new SimpleBooleanProperty(false);
+    private final IntegerProperty pageNumber = new SimpleIntegerProperty(0);
+    private final LongProperty totalElements = new SimpleLongProperty(0);
+    private final LongProperty numberPerPage = new SimpleLongProperty(0);
+    private final BooleanProperty last = new SimpleBooleanProperty(false);
+    private final BooleanProperty first = new SimpleBooleanProperty(false);
+    
+    private final StringBinding paginationNumberInfo = Bindings.createStringBinding(() -> evalString(), pageNumber, numberPerPage, totalElements);
+    
+    public void init() {
+        loadData(pageNumber.get());
+        pageNumber.addListener((observable, oldValue, newValue) -> {
+            loadData(newValue.intValue());
+        });
+    }
+    
+    public void reloadData() {
+        loadData(pageNumber.get());
+    }
+    
+    public void loadSelectedItemChildren(Consumer<TypeFichierJson> consumer) {
+        Task<JsonStructure> task = new Task<JsonStructure>() {
+            @Override
+            protected JsonStructure call() throws Exception {
+                loading.set(true);
+                JsonStructure jsonStructure = JsonStructureDAO.loadSubJsonStructure(selectedItem.get().getJsonStructure());
+                setDelimiteurDate(jsonStructure.getFields());
+                return jsonStructure;
+            }
+        };
+        task.setOnSucceeded(e -> {
+            loading.set(false);
+            selectedItem.get().setJsonStructure(task.getValue());
+            consumer.accept(selectedItem.get());
+        });
+        task.setOnFailed(e -> loading.set(false));
+        task.setOnCancelled(e -> loading.set(false));
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+    
+    public void deleteSelectedItem() {
+        Task<Void> task = new Task<Void>() {
+            @Override
+            protected Void call() throws Exception {
+                loading.set(true);
+                TypeFichierJsonService.getInstance().delete(selectedItem.get());
+                return null;
+            }
+        };
+        task.setOnSucceeded(e -> {
+            loading.set(false);
+            pageNumber.set(0);
+            loadData(pageNumber.get());
+        });
+        task.setOnFailed(e -> loading.set(false));
+        task.setOnCancelled(e -> loading.set(false));
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+    }
+    
+    public void nextPage() {
+        if (!last.get()) {
+            pageNumber.set(pageNumber.get() + 1);
+        }
+    }
+    
+    public void previousPage() {
+        if (!first.get()) {
+            pageNumber.set(pageNumber.get() - 1);
+        }
+    }
+    
+    private void setDelimiteurDate(List<JsonStructure> jsonStructures) {
+        jsonStructures.stream().forEach(j -> {
+            if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+                setDelimiteurDate(j.getFields());
+            } else if (j.getTypeDonnee().equals(TypeDonnee.DATE) && j.getCodeDelimiteurDate() != null) {
+                j.setDelimiteurDate(App.SEPARATEURS_DATE.get(j.getCodeDelimiteurDate()));
+            }
+        });
+    }
+    
+    private void loadData(int page) {
+        
+        Task<Void> task = new Task<Void>() {
+            @Override
+            protected Void call() throws Exception {
+                
+                loading.set(true);
+                
+                List<TypeFichierJson> typeFichierJsons = TypeFichierJsonService.getInstance().getAllByPage(page, Arrays.asList());
+                
+                Platform.runLater(() -> {
+                    data.clear();
+                    data.addAll(typeFichierJsons);
+                    totalElements.set(TypeFichierJsonService.getInstance().getTotalElements());
+                    numberPerPage.set(TypeFichierJsonService.getInstance().getNumberPerPage());
+                    last.set(TypeFichierJsonService.getInstance().isLast());
+                    first.set(TypeFichierJsonService.getInstance().isFirst());
+                });
+                
+                return null;
+            }
+        };
+        
+        task.setOnSucceeded(e -> loading.set(false));
+        task.setOnFailed(e -> loading.set(false));
+        task.setOnCancelled(e -> loading.set(false));
+        Thread thread = new Thread(task);
+        thread.setDaemon(true);
+        thread.start();
+        
+    }
+    
+    public ObservableList<TypeFichierJson> getData() {
+        return data;
+    }
+    
+    public BooleanProperty getLoadingProperty() {
+        return loading;
+    }
+    
+    public StringBinding getPaginationNumberInfo() {
+        return paginationNumberInfo;
+    }
+    
+    public BooleanProperty getLastProperty() {
+        return last;
+    }
+    
+    public BooleanProperty getFirstProperty() {
+        return first;
+    }
+    
+    public ObjectProperty<TypeFichierJson> selectedItemProperty() {
+        return selectedItem;
+    }
+    
+    private String evalString() {
+        long currentNumber = (pageNumber.get() + 1) * numberPerPage.get();
+        return (currentNumber < totalElements.get() ? currentNumber : totalElements.get()) + "/" + totalElements.get();
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java
new file mode 100644
index 0000000..65ad037
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureViewModel.java
@@ -0,0 +1,177 @@
+package com.megatim.fdxconvert.viewmodel;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.views.jsonstructure.DefaultNestedJsonStructure;
+import com.megatim.fdxconvert.views.jsonstructure.NestedJsonStructure;
+import javafx.beans.Observable;
+import javafx.beans.binding.Bindings;
+import javafx.beans.property.*;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+
+import java.util.UUID;
+
+public class JsonStructureViewModel {
+
+    private final String id;
+    private final boolean root;
+    private final int level;
+
+    private final StringProperty name = new SimpleStringProperty();
+    private final ObjectProperty<TypeDonnee> type = new SimpleObjectProperty(TypeDonnee.ALPHANUMERIQUE);
+    private final StringProperty format = new SimpleStringProperty();
+    private final ObjectProperty<Delimiteur> delimitor = new SimpleObjectProperty<>(null);
+    private final IntegerProperty taille = new SimpleIntegerProperty(1);
+    private final BooleanProperty required = new SimpleBooleanProperty(false);
+    private final BooleanProperty collection = new SimpleBooleanProperty(false);
+
+    private final BooleanProperty valid = new SimpleBooleanProperty(false);
+    private final BooleanProperty validName = new SimpleBooleanProperty(false);
+    private final BooleanProperty validType = new SimpleBooleanProperty(false);
+    private final BooleanProperty validFormat = new SimpleBooleanProperty(false);
+    private final BooleanProperty validDelimitor = new SimpleBooleanProperty(false);
+    private final BooleanProperty validTaille = new SimpleBooleanProperty(false);
+
+    private final BooleanProperty hasChild = new SimpleBooleanProperty(false);
+    private final BooleanProperty hasDateType = new SimpleBooleanProperty(false);
+    private final BooleanProperty hasSquareBracket = new SimpleBooleanProperty(false);
+    private final BooleanProperty hasObjectSquareBracket = new SimpleBooleanProperty(false);
+
+    private final ObservableList<JsonStructureViewModel> children = FXCollections.observableArrayList(vm -> new Observable[]{vm.validProperty()});
+
+    public JsonStructureViewModel(boolean root, int level, NestedJsonStructure nestedJsonStructure) {
+
+        this.root = root;
+        this.level = level;
+        id = UUID.randomUUID().toString();
+
+        if (nestedJsonStructure != null) {
+
+            name.set(nestedJsonStructure.name());
+            type.set(nestedJsonStructure.typeDonnee());
+            format.set(nestedJsonStructure.format());
+            delimitor.set(nestedJsonStructure.delimiteur());
+            taille.set(nestedJsonStructure.taille());
+            required.set(nestedJsonStructure.isRequired());
+            collection.set(nestedJsonStructure.isCollection());
+
+            nestedJsonStructure.children().forEach(nS -> {
+                children.add(new JsonStructureViewModel(false, level + 1, nS));
+            });
+        }
+    }
+
+    public void init() {
+
+        hasChild.bind(Bindings.createBooleanBinding(() -> isObjectType(), type));
+        hasDateType.bind(Bindings.createBooleanBinding(() -> isDateType(), type));
+        hasSquareBracket.bind(Bindings.createBooleanBinding(() -> !isObjectType() && collection.get(), type, collection));
+        hasObjectSquareBracket.bind(Bindings.createBooleanBinding(() -> isObjectType() && collection.get(), type, collection));
+        if (root) {
+            this.required.set(true);
+            this.collection.set(true);
+            this.type.set(TypeDonnee.OBJET);
+        }
+
+        validName.bind(Bindings.createBooleanBinding(() -> name.get() != null && name.get().length() > 0, name));
+        validType.bind(Bindings.createBooleanBinding(() -> type.get() != null && (!root || type.get().equals(TypeDonnee.OBJET)), type));
+        validFormat.bind(Bindings.createBooleanBinding(() -> !TypeDonnee.DATE.equals(type.get()) || (format.get() != null && format.get().length() > 0), type, format));
+        validDelimitor.bind(Bindings.createBooleanBinding(() -> !TypeDonnee.DATE.equals(type.get()) || (delimitor.get() != null), type, delimitor));
+        validTaille.bind(Bindings.createBooleanBinding(() -> TypeDonnee.OBJET.equals(type.get()) || taille.get() > 0, type, taille));
+
+        valid.bind(Bindings.createBooleanBinding(() -> (validName.get() && validType.get() && validFormat.get() && validDelimitor.get() && validTaille.get()
+                        && (!TypeDonnee.OBJET.equals(type.get()) || (!children.isEmpty() && children.stream().map(c -> c.validProperty()).allMatch(c -> c.get())))),
+                validName, validType, validFormat, validDelimitor, validTaille, type, children)
+        );
+    }
+
+    public NestedJsonStructure nestedJsonStructure() {
+        return new DefaultNestedJsonStructure(this);
+    }
+
+    public void addNewChild() {
+        JsonStructureViewModel newChild = new JsonStructureViewModel(false, level + 1, null);
+        children.add(newChild);
+    }
+
+    public void removeChild(String id) {
+        children.removeIf(item -> item.id == id);
+    }
+
+    public void removeAllChild() {
+        children.removeIf(item -> true);
+    }
+
+    public ObservableList<JsonStructureViewModel> getChildren() {
+        return children;
+    }
+
+    public StringProperty nameProperty() {
+        return name;
+    }
+
+    public ObjectProperty<TypeDonnee> typeProperty() {
+        return type;
+    }
+
+    public IntegerProperty tailleProperty() {
+        return taille;
+    }
+
+    public StringProperty formatProperty() {
+        return format;
+    }
+
+    public ObjectProperty<Delimiteur> delimitorProperty() {
+        return delimitor;
+    }
+
+    public BooleanProperty requiredProperty() {
+        return required;
+    }
+
+    public BooleanProperty collectionProperty() {
+        return collection;
+    }
+
+    public BooleanProperty hasChildProperty() {
+        return hasChild;
+    }
+
+    public BooleanProperty hasDateTypeProperty() {
+        return hasDateType;
+    }
+
+    public BooleanProperty hasSquareBracketProperty() {
+        return hasSquareBracket;
+    }
+
+    public BooleanProperty hasObjectSquareBracketProperty() {
+        return hasObjectSquareBracket;
+    }
+
+    public BooleanProperty validProperty() {
+        return valid;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public boolean isRoot() {
+        return root;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    private boolean isDateType() {
+        return type.get() != null && type.get() == TypeDonnee.DATE;
+    }
+
+    private boolean isObjectType() {
+        return type.get() != null && type.get() == TypeDonnee.OBJET;
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureFormController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureFormController.java
new file mode 100644
index 0000000..5620da6
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureFormController.java
@@ -0,0 +1,133 @@
+package com.megatim.fdxconvert.views;
+
+import com.megatimfx.common.customcontrols.AbstractSelectionItem;
+import com.megatim.fdxconvert.controller.table.TypeFichierTable;
+import com.megatim.fdxconvert.model.TypeFichier;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.viewmodel.JsonStructureFormViewModel;
+import com.megatim.fdxconvert.viewmodel.JsonStructureViewModel;
+import com.megatim.fdxconvert.views.jsonstructure.JsonStructureController;
+import com.megatim.fdxconvert.views.jsonstructure.NestedJsonStructure;
+import com.megatim.fdxconvert.views.jsonstructure.NestedJsonStructureFromJsonStructure;
+import javafx.application.Platform;
+import javafx.beans.property.ObjectProperty;
+import javafx.collections.ListChangeListener;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Parent;
+import javafx.scene.control.Button;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+import javafx.util.Pair;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+
+public class JsonStructureFormController implements Initializable {
+
+    @FXML
+    private VBox mainContainer;
+
+    @FXML
+    private AbstractSelectionItem<TypeFichier> typeFichierField;
+
+    @FXML
+    private HBox bottomContainer;
+
+    @FXML
+    private Button cancelButton;
+
+    @FXML
+    private Button editButton;
+
+    private final JsonStructureFormViewModel viewModel;
+
+    private final JsonStructureController jsonStructureController;
+
+    public JsonStructureFormController(TypeFichierJson typeFichierJson) {
+        NestedJsonStructure nestedJsonStructure = (typeFichierJson != null) ? new NestedJsonStructureFromJsonStructure(typeFichierJson.getJsonStructure()) : null;
+        jsonStructureController = new JsonStructureController(new JsonStructureViewModel(true, 1, nestedJsonStructure));
+        viewModel = new JsonStructureFormViewModel(typeFichierJson);
+    }
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        viewModel.init();
+
+        //On ferme la fenêtre si un résultat vient d'être évalué
+        viewModel.resultProperty().addListener((observable, oldValue, newValue) -> {
+            if(newValue != null) {
+                close();
+            }
+        });
+
+        initTypeFichierField();
+        loadRootJsonStructureView();
+
+        editButton.disableProperty().bind(jsonStructureController.validProperty().not());
+        editButton.setOnAction(event -> { viewModel.createTypeFichierJSON(jsonStructureController.nestedJsonStructure()); });
+
+    }
+
+    public ObjectProperty<TypeFichierJson> resultProperty() {
+        return viewModel.resultProperty();
+    }
+
+    public void close() {
+        ((Stage) mainContainer.getScene().getWindow()).close();
+    }
+
+    public void mouseDraggedTitleBar(MouseEvent mouseEvent) {
+    }
+
+    public void mousePressedTitleBar(MouseEvent mouseEvent) {
+    }
+
+    public void minimize(ActionEvent actionEvent) {
+    }
+
+    public void maximize(ActionEvent actionEvent) {
+    }
+
+    private void initTypeFichierField() {
+
+        typeFichierField.setTitle("Choix du type de fichier de la tâche");
+        typeFichierField.setColumns(Arrays.asList(TypeFichierTable.codeColumn(), TypeFichierTable.libelleColumn(), TypeFichierTable.participantColumn()));
+        typeFichierField.setSearchFieldPairs(Arrays.asList(new Pair<>("code", "Code"), new Pair<>("libelle", "Libellé")));
+
+        typeFichierField.setOldElement(viewModel.selectedTypeFichierProperty().get());
+        typeFichierField.selectedElementProperty().bindBidirectional(viewModel.selectedTypeFichierProperty());
+
+        typeFichierField.selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+            jsonStructureController.setRootStructureName((newValue != null) ? newValue.getCode() : "");
+        });
+
+        typeFichierField.setElements(viewModel.getTypeFichiers().stream().collect(Collectors.toSet()));
+        viewModel.getTypeFichiers().addListener((ListChangeListener<TypeFichier>) c -> {
+            while (c.next()) {
+                Platform.runLater(() -> typeFichierField.setElements(viewModel.getTypeFichiers().stream().collect(Collectors.toSet())));
+            }
+        });
+
+    }
+
+    private void loadRootJsonStructureView() {
+        try {
+            FXMLLoader loader = new FXMLLoader(jsonStructureController.getClass().getResource("JsonStructureView.fxml"));
+            loader.setController(jsonStructureController);
+            Parent root = loader.load();
+            mainContainer.getChildren().add(root);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureTableViewController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureTableViewController.java
new file mode 100644
index 0000000..e36cc33
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/JsonStructureTableViewController.java
@@ -0,0 +1,167 @@
+package com.megatim.fdxconvert.views;
+
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.viewmodel.JsonStructureTableViewModel;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class JsonStructureTableViewController implements Initializable {
+
+    @FXML
+    private BorderPane searchPane;
+
+    @FXML
+    private Button btnSearch;
+
+    @FXML
+    private Button btnReset;
+
+    @FXML
+    private CheckBox advancedCheckBox;
+
+    @FXML
+    private VBox normalSearchContainer;
+
+    @FXML
+    private VBox advancedSearchContainer;
+
+    @FXML
+    private HBox buttonContainer;
+
+    @FXML
+    private Button btnAdd;
+
+    @FXML
+    private Button btnEdit;
+
+    @FXML
+    private Button btnDelete;
+
+    @FXML
+    private TableView<TypeFichierJson> elementTable;
+
+    @FXML
+    private Button btnPrevious;
+
+    @FXML
+    private Button btnNext;
+
+    @FXML
+    private Label paginationNumberInfo;
+
+    @FXML
+    private Button btnClose;
+
+    private final JsonStructureTableViewModel viewModel = new JsonStructureTableViewModel();
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        viewModel.init();
+
+        initTable();
+
+        btnNext.setOnAction(event -> viewModel.nextPage());
+        btnPrevious.setOnAction(event -> viewModel.previousPage());
+        btnAdd.setOnAction(event -> openFormDialog(null));
+        btnEdit.setOnAction(event ->  viewModel.loadSelectedItemChildren(selectedItem -> openFormDialog(selectedItem)));
+        btnDelete.setOnAction(event -> viewModel.deleteSelectedItem());
+
+        viewModel.selectedItemProperty().bind(elementTable.getSelectionModel().selectedItemProperty());
+
+        paginationNumberInfo.textProperty().bind(viewModel.getPaginationNumberInfo());
+        btnEdit.disableProperty().bind(elementTable.getSelectionModel().selectedItemProperty().isNull());
+        btnDelete.disableProperty().bind(elementTable.getSelectionModel().selectedItemProperty().isNull());
+        btnNext.disableProperty().bind(viewModel.getLastProperty());
+        btnPrevious.disableProperty().bind(viewModel.getFirstProperty());
+
+    }
+
+    private void initTable() {
+
+        TableColumn<TypeFichierJson, String> codeTypeFichierColumn = new TableColumn("Code type fichier");
+        codeTypeFichierColumn.setCellValueFactory(c -> {
+            return new SimpleStringProperty(c.getValue().getTypeFichier() != null ? c.getValue().getTypeFichier().getCode() : "");
+        });
+
+        TableColumn<TypeFichierJson, String> libelleTypeFichierColumn = new TableColumn("Libellé type fichier");
+        libelleTypeFichierColumn.setCellValueFactory(c -> {
+            return new SimpleStringProperty(c.getValue().getTypeFichier() != null ? c.getValue().getTypeFichier().getLibelle() : "");
+        });
+
+        elementTable.getColumns().addAll(Arrays.asList(codeTypeFichierColumn, libelleTypeFichierColumn));
+
+        this.elementTable.setPlaceholder(new Label("Pas de données"));
+
+        elementTable.setItems(viewModel.getData());
+    }
+
+    @FXML
+    public void close(ActionEvent event) {
+        ((Stage) elementTable.getScene().getWindow()).close();
+    }
+
+    @FXML
+    public void maximize(ActionEvent event) {
+    }
+
+    @FXML
+    public void minimize(ActionEvent event) {
+    }
+
+    @FXML
+    public void mouseDraggedTitleBar(MouseEvent event) {
+    }
+
+    @FXML
+    public void mousePressedTitleBar(MouseEvent event) {
+    }
+
+    private void openFormDialog(TypeFichierJson typeFichierJson) {
+        try {
+            JsonStructureFormController jsonStructureFormController = new JsonStructureFormController(typeFichierJson);
+            FXMLLoader loader = new FXMLLoader(JsonStructureFormController.class.getResource("JsonStructureFormView.fxml"));
+            loader.setController(jsonStructureFormController);
+            Parent root = loader.load();
+            setStage(root);
+
+            jsonStructureFormController.resultProperty().addListener((observable, oldValue, newValue) -> {
+                viewModel.reloadData();
+            });
+
+        } catch (IOException ex) {
+            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    private void setStage(Parent root) {
+        Scene scene = new Scene(root);
+        Stage stage = new Stage();
+
+        stage.setScene(scene);
+        stage.initStyle(StageStyle.UNDECORATED);
+        stage.initModality(Modality.APPLICATION_MODAL);
+        stage.show();
+    }
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/DefaultNestedJsonStructure.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/DefaultNestedJsonStructure.java
new file mode 100644
index 0000000..1530429
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/DefaultNestedJsonStructure.java
@@ -0,0 +1,57 @@
+package com.megatim.fdxconvert.views.jsonstructure;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.viewmodel.JsonStructureViewModel;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class DefaultNestedJsonStructure implements NestedJsonStructure {
+
+    private final JsonStructureViewModel viewModel;
+
+    public DefaultNestedJsonStructure(JsonStructureViewModel viewModel) {
+        this.viewModel = viewModel;
+    }
+
+    @Override
+    public String name() {
+        return viewModel.nameProperty().get();
+    }
+
+    @Override
+    public TypeDonnee typeDonnee() {
+        return viewModel.typeProperty().get();
+    }
+
+    @Override
+    public String format() {
+        return viewModel.formatProperty().get();
+    }
+
+    @Override
+    public Delimiteur delimiteur() {
+        return viewModel.delimitorProperty().get();
+    }
+
+    @Override
+    public int taille() {
+        return viewModel.tailleProperty().get();
+    }
+
+    @Override
+    public boolean isRequired() {
+        return viewModel.requiredProperty().get();
+    }
+
+    @Override
+    public boolean isCollection() {
+        return viewModel.collectionProperty().get();
+    }
+
+    @Override
+    public List<NestedJsonStructure> children() {
+        return viewModel.getChildren().stream().map(DefaultNestedJsonStructure::new).collect(Collectors.toList());
+    }
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/JsonStructureController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/JsonStructureController.java
new file mode 100644
index 0000000..2ea01d0
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/JsonStructureController.java
@@ -0,0 +1,277 @@
+package com.megatim.fdxconvert.views.jsonstructure;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+import com.megatim.fdxconvert.viewmodel.JsonStructureViewModel;
+import javafx.application.Platform;
+import javafx.beans.property.BooleanProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ListChangeListener;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.geometry.Pos;
+import javafx.scene.Parent;
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.util.converter.NumberStringConverter;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+
+public class JsonStructureController implements Initializable {
+
+    @FXML
+    private VBox mainContainer;
+
+    @FXML
+    private HBox fieldContainer;
+
+    @FXML
+    private HBox formatFieldContainer;
+
+    @FXML
+    private HBox delimitorFieldContainer;
+
+    @FXML
+    private TextField nameField;
+
+    @FXML
+    private ComboBox<TypeDonnee> typeField;
+
+    @FXML
+    private ComboBox<String> formatField;
+
+    @FXML
+    private ComboBox<Delimiteur> delimitorField;
+
+    @FXML
+    private CheckBox requiredField;
+
+    @FXML
+    private CheckBox collectionField;
+
+    @FXML
+    private TextField tailleField;
+
+    @FXML
+    private Button removeBtn;
+
+    @FXML
+    private VBox objectContainer;
+
+    @FXML
+    private HBox objectContainerleft;
+
+    @FXML
+    private HBox objectContainerRight;
+
+    @FXML
+    private Label objectSquareBracketLeft;
+
+    @FXML
+    private Label objectSquareBracketRight;
+
+    @FXML
+    private HBox formFieldContainer;
+
+    @FXML
+    private Label squareBracketLeft;
+
+    @FXML
+    private Label squareBracketRight;
+
+    @FXML
+    private Button addButton;
+
+    @FXML
+    private VBox nestedContainer;
+
+    private final JsonStructureViewModel viewModel;
+
+    public JsonStructureController(JsonStructureViewModel viewModel) {
+        this.viewModel = viewModel;
+    }
+
+    @Override
+    public void initialize(URL location, ResourceBundle resources) {
+
+        viewModel.init();
+
+        typeField.setItems(FXCollections.observableArrayList(TypeDonnee.values()));
+
+        tailleField.textProperty().addListener((observable, oldValue, newValue) -> {
+            if (!newValue.matches("\\d*")) {
+                tailleField.setText(newValue.replaceAll("[^\\d]", ""));
+            }
+        });
+
+        formatField.setPromptText("Sélectionnez le format de la date");
+        formatField.setItems(FXCollections.observableArrayList(App.FORMATS_DATE));
+
+        delimitorField.setPromptText("Sélectionnez le délimiteur de la date");
+        delimitorField.setItems(FXCollections.observableArrayList(App.SEPARATEURS_DATE.values()));
+
+        nameField.textProperty().bindBidirectional(viewModel.nameProperty());
+        typeField.valueProperty().bindBidirectional(viewModel.typeProperty());
+        formatField.valueProperty().bindBidirectional(viewModel.formatProperty());
+        delimitorField.valueProperty().bindBidirectional(viewModel.delimitorProperty());
+        requiredField.selectedProperty().bindBidirectional(viewModel.requiredProperty());
+        collectionField.selectedProperty().bindBidirectional(viewModel.collectionProperty());
+        tailleField.textProperty().bindBidirectional(viewModel.tailleProperty(), new NumberStringConverter());
+
+        nameField.setDisable(viewModel.isRoot());
+        tailleField.setDisable(viewModel.isRoot());
+        collectionField.setDisable(viewModel.isRoot());
+        requiredField.setDisable(viewModel.isRoot());
+        typeField.setDisable(viewModel.isRoot());
+
+        tailleField.disableProperty().bind(viewModel.hasChildProperty());
+
+        toggleObjectContainer(viewModel.hasChildProperty().get());
+        viewModel.hasChildProperty().addListener((observable, oldValue, newValue) -> {
+            toggleObjectContainer(newValue);
+        });
+
+        toggleDateFieldContainers(viewModel.hasDateTypeProperty().get());
+        viewModel.hasDateTypeProperty().addListener((observable, oldValue, newValue) -> {
+            toggleDateFieldContainers(newValue);
+        });
+
+        toggleSquareBrackets(viewModel.hasSquareBracketProperty().get());
+        viewModel.hasSquareBracketProperty().addListener((observable, oldValue, newValue) -> {
+            toggleSquareBrackets(newValue);
+        });
+
+        toggleObjectSquareBrackets(viewModel.hasObjectSquareBracketProperty().get());
+        viewModel.hasObjectSquareBracketProperty().addListener((observable, oldValue, newValue) -> {
+            toggleObjectSquareBrackets(newValue);
+        });
+
+        addButton.setOnAction(event -> {
+            viewModel.addNewChild();
+        });
+
+        addChildrenViews(viewModel.getChildren());
+        viewModel.getChildren().addListener((ListChangeListener<JsonStructureViewModel>) c -> {
+            while (c.next()) {
+                if (c.wasAdded()) {
+                    Platform.runLater(() -> {
+                        addChildrenViews(c.getAddedSubList().stream().collect(Collectors.toList()));
+                    });
+                }
+                if (c.wasRemoved()) {
+                    Platform.runLater(() -> {
+                        for (JsonStructureViewModel child : c.getRemoved()) {
+                            nestedContainer.getChildren().removeIf(node -> node.getId().equals(child.getId()));
+                        }
+                    });
+                }
+            }
+        });
+
+    }
+
+    public BooleanProperty validProperty() {
+        return viewModel.validProperty();
+    }
+
+    public NestedJsonStructure nestedJsonStructure() {
+        return viewModel.nestedJsonStructure();
+    }
+
+    public void setRootStructureName(String name) {
+        if (viewModel.isRoot()) {
+            viewModel.nameProperty().setValue(name);
+        }
+    }
+
+    private void addChildrenViews(List<JsonStructureViewModel> children) {
+        for (JsonStructureViewModel child : children) {
+            addChildView(child);
+        }
+    }
+
+    private void addChildView(JsonStructureViewModel child) {
+
+        try {
+
+            FXMLLoader loader = new FXMLLoader(JsonStructureController.class.getResource("JsonStructureView.fxml"));
+            loader.setController(new JsonStructureController(child));
+            Parent root = loader.load();
+
+            Button removeButton = new Button("-");
+            HBox hbox = new HBox(removeButton, root);
+            hbox.setId(child.getId());
+            hbox.setSpacing(15);
+            hbox.setAlignment(Pos.TOP_LEFT);
+
+            nestedContainer.getChildren().add(hbox);
+            removeButton.setOnAction(event1 -> viewModel.removeChild(child.getId()));
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    private void toggleObjectContainer(Boolean hasChild) {
+        if (hasChild) {
+            if (!mainContainer.getChildren().contains(objectContainer)) {
+                mainContainer.getChildren().add(objectContainer);
+            }
+        } else {
+            viewModel.removeAllChild();
+            mainContainer.getChildren().remove(objectContainer);
+        }
+    }
+
+    private void toggleDateFieldContainers(Boolean hasDateType) {
+        if (hasDateType) {
+            if (!fieldContainer.getChildren().contains(formatFieldContainer)) {
+                fieldContainer.getChildren().add(2, formatFieldContainer);
+            }
+            if (!fieldContainer.getChildren().contains(delimitorFieldContainer)) {
+                fieldContainer.getChildren().add(3, delimitorFieldContainer);
+            }
+        } else {
+            fieldContainer.getChildren().remove(formatFieldContainer);
+            fieldContainer.getChildren().remove(delimitorFieldContainer);
+        }
+    }
+
+    private void toggleSquareBrackets(Boolean hasSquareBracket) {
+        if (hasSquareBracket) {
+            if (!formFieldContainer.getChildren().contains(squareBracketLeft)) {
+                formFieldContainer.getChildren().add(0, squareBracketLeft);
+            }
+            if (!formFieldContainer.getChildren().contains(squareBracketRight)) {
+                formFieldContainer.getChildren().add(squareBracketRight);
+            }
+        } else {
+            formFieldContainer.getChildren().remove(squareBracketLeft);
+            formFieldContainer.getChildren().remove(squareBracketRight);
+        }
+    }
+
+    private void toggleObjectSquareBrackets(Boolean hasObjectSquareBracket) {
+        if (hasObjectSquareBracket) {
+            if (!objectContainerleft.getChildren().contains(objectSquareBracketLeft)) {
+                objectContainerleft.getChildren().add(0, objectSquareBracketLeft);
+            }
+            if (!objectContainerRight.getChildren().contains(objectSquareBracketRight)) {
+                objectContainerRight.getChildren().add(objectSquareBracketRight);
+            }
+        } else {
+            objectContainerleft.getChildren().remove(objectSquareBracketLeft);
+            objectContainerRight.getChildren().remove(objectSquareBracketRight);
+        }
+    }
+
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructure.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructure.java
new file mode 100644
index 0000000..1171974
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructure.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxconvert.views.jsonstructure;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+
+import java.util.List;
+
+public interface NestedJsonStructure {
+
+    String name();
+
+    TypeDonnee typeDonnee();
+
+    String format();
+
+    Delimiteur delimiteur();
+
+    int taille();
+
+    boolean isRequired();
+
+    boolean isCollection();
+
+    List<NestedJsonStructure> children();
+
+}
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructureFromJsonStructure.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructureFromJsonStructure.java
new file mode 100644
index 0000000..8b0112b
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/views/jsonstructure/NestedJsonStructureFromJsonStructure.java
@@ -0,0 +1,57 @@
+package com.megatim.fdxconvert.views.jsonstructure;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.pojo.Delimiteur;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class NestedJsonStructureFromJsonStructure implements NestedJsonStructure {
+
+    private final JsonStructure jsonStructure;
+
+    public NestedJsonStructureFromJsonStructure(JsonStructure jsonStructure) {
+        this.jsonStructure = jsonStructure;
+    }
+
+    @Override
+    public String name() {
+        return jsonStructure.getName();
+    }
+
+    @Override
+    public TypeDonnee typeDonnee() {
+        return jsonStructure.getTypeDonnee();
+    }
+
+    @Override
+    public String format() {
+        return jsonStructure.getFormatDate();
+    }
+
+    @Override
+    public Delimiteur delimiteur() {
+        return jsonStructure.getDelimiteurDate();
+    }
+
+    @Override
+    public int taille() {
+        return jsonStructure.getLengthh();
+    }
+
+    @Override
+    public boolean isRequired() {
+        return jsonStructure.isRequired();
+    }
+
+    @Override
+    public boolean isCollection() {
+        return jsonStructure.isCollection();
+    }
+
+    @Override
+    public List<NestedJsonStructure> children() {
+        return jsonStructure.getFields().stream().map(NestedJsonStructureFromJsonStructure::new).collect(Collectors.toList());
+    }
+}
diff --git a/fdx_convert/src/main/resources/app.properties b/fdx_convert/src/main/resources/app.properties
new file mode 100644
index 0000000..1c1375b
--- /dev/null
+++ b/fdx_convert/src/main/resources/app.properties
@@ -0,0 +1 @@
+nbThreads = 10
\ No newline at end of file
diff --git a/fdx_convert/src/main/resources/fonts/LICENSE.txt b/fdx_convert/src/main/resources/fonts/LICENSE.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/LICENSE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Black.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Black.ttf
new file mode 100644
index 0000000..2d45238
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Black.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-BlackItalic.ttf b/fdx_convert/src/main/resources/fonts/Roboto-BlackItalic.ttf
new file mode 100644
index 0000000..29a4359
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-BlackItalic.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Bold.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Bold.ttf
new file mode 100644
index 0000000..d998cf5
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Bold.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-BoldItalic.ttf b/fdx_convert/src/main/resources/fonts/Roboto-BoldItalic.ttf
new file mode 100644
index 0000000..b4e2210
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-BoldItalic.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Italic.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Italic.ttf
new file mode 100644
index 0000000..5b390ff
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Italic.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Light.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Light.ttf
new file mode 100644
index 0000000..3526798
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Light.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-LightItalic.ttf b/fdx_convert/src/main/resources/fonts/Roboto-LightItalic.ttf
new file mode 100644
index 0000000..46e9bf7
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-LightItalic.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Medium.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Medium.ttf
new file mode 100644
index 0000000..f714a51
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Medium.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-MediumItalic.ttf b/fdx_convert/src/main/resources/fonts/Roboto-MediumItalic.ttf
new file mode 100644
index 0000000..5dc6a2d
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-MediumItalic.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Regular.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Regular.ttf
new file mode 100644
index 0000000..2b6392f
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Regular.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-Thin.ttf b/fdx_convert/src/main/resources/fonts/Roboto-Thin.ttf
new file mode 100644
index 0000000..4e797cf
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-Thin.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/fonts/Roboto-ThinItalic.ttf b/fdx_convert/src/main/resources/fonts/Roboto-ThinItalic.ttf
new file mode 100644
index 0000000..eea836f
--- /dev/null
+++ b/fdx_convert/src/main/resources/fonts/Roboto-ThinItalic.ttf
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/143-01.png b/fdx_convert/src/main/resources/images/143-01.png
new file mode 100644
index 0000000..84f2182
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/143-01.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/143-02.png b/fdx_convert/src/main/resources/images/143-02.png
new file mode 100644
index 0000000..ad7888f
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/143-02.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/143-03.png b/fdx_convert/src/main/resources/images/143-03.png
new file mode 100644
index 0000000..4f9314e
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/143-03.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/143-04.png b/fdx_convert/src/main/resources/images/143-04.png
new file mode 100644
index 0000000..80f3975
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/143-04.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/143-05.png b/fdx_convert/src/main/resources/images/143-05.png
new file mode 100644
index 0000000..195001d
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/143-05.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Accueil.png b/fdx_convert/src/main/resources/images/Accueil.png
new file mode 100644
index 0000000..fd21406
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Accueil.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Accuueil_agent.jpg b/fdx_convert/src/main/resources/images/Accuueil_agent.jpg
new file mode 100644
index 0000000..2863ccc
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Accuueil_agent.jpg
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Apropos.png b/fdx_convert/src/main/resources/images/Apropos.png
new file mode 100644
index 0000000..6913e66
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Apropos.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Barre_outils_hover-01.png b/fdx_convert/src/main/resources/images/Barre_outils_hover-01.png
new file mode 100644
index 0000000..8356c56
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Barre_outils_hover-01.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Barre_outils_hover-02.png b/fdx_convert/src/main/resources/images/Barre_outils_hover-02.png
new file mode 100644
index 0000000..b55e1c6
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Barre_outils_hover-02.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Export.png b/fdx_convert/src/main/resources/images/Export.png
new file mode 100644
index 0000000..3fc521d
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Export.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Fichier.png b/fdx_convert/src/main/resources/images/Fichier.png
new file mode 100644
index 0000000..e390ade
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Fichier.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Logo_FDX_Convert.png b/fdx_convert/src/main/resources/images/Logo_FDX_Convert.png
new file mode 100644
index 0000000..c8216f3
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Logo_FDX_Convert.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Recherche.png b/fdx_convert/src/main/resources/images/Recherche.png
new file mode 100644
index 0000000..c9ca377
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Recherche.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Reset.png b/fdx_convert/src/main/resources/images/Reset.png
new file mode 100644
index 0000000..07ebdb5
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Reset.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/Search.png b/fdx_convert/src/main/resources/images/Search.png
new file mode 100644
index 0000000..dd57502
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/Search.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/add-disabled.png b/fdx_convert/src/main/resources/images/add-disabled.png
new file mode 100644
index 0000000..cffd6f5
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/add-disabled.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/add-new.png b/fdx_convert/src/main/resources/images/add-new.png
new file mode 100644
index 0000000..1900242
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/add-new.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/add-subtype.png b/fdx_convert/src/main/resources/images/add-subtype.png
new file mode 100644
index 0000000..cffd6f5
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/add-subtype.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/add.png b/fdx_convert/src/main/resources/images/add.png
new file mode 100644
index 0000000..ee865fa
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/add.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/agrandir.png b/fdx_convert/src/main/resources/images/agrandir.png
new file mode 100644
index 0000000..6591008
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/agrandir.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/app_icon.png b/fdx_convert/src/main/resources/images/app_icon.png
new file mode 100644
index 0000000..8f328d4
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/app_icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/custom_app_icon.png b/fdx_convert/src/main/resources/images/custom_app_icon.png
new file mode 100644
index 0000000..8f328d4
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/custom_app_icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/custom_close_icon.png b/fdx_convert/src/main/resources/images/custom_close_icon.png
new file mode 100644
index 0000000..8ed54b7
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/custom_close_icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/delete-disabled.png b/fdx_convert/src/main/resources/images/delete-disabled.png
new file mode 100644
index 0000000..ae9f20a
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/delete-disabled.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/delete-new.png b/fdx_convert/src/main/resources/images/delete-new.png
new file mode 100644
index 0000000..cf5877d
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/delete-new.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/delete-subtype.png b/fdx_convert/src/main/resources/images/delete-subtype.png
new file mode 100644
index 0000000..ae9f20a
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/delete-subtype.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/edit-disabled.png b/fdx_convert/src/main/resources/images/edit-disabled.png
new file mode 100644
index 0000000..668bdeb
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/edit-disabled.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/edit-new.png b/fdx_convert/src/main/resources/images/edit-new.png
new file mode 100644
index 0000000..cf0865f
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/edit-new.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/edit.png b/fdx_convert/src/main/resources/images/edit.png
new file mode 100644
index 0000000..72def46
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/edit.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/error-icon.png b/fdx_convert/src/main/resources/images/error-icon.png
new file mode 100644
index 0000000..f06efc4
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/error-icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/exporter.png b/fdx_convert/src/main/resources/images/exporter.png
new file mode 100644
index 0000000..eafe594
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/exporter.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/fermer.png b/fdx_convert/src/main/resources/images/fermer.png
new file mode 100644
index 0000000..93c5144
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/fermer.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/fichiers_generesx.png b/fdx_convert/src/main/resources/images/fichiers_generesx.png
new file mode 100644
index 0000000..253ee53
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/fichiers_generesx.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/icone_ins.png b/fdx_convert/src/main/resources/images/icone_ins.png
new file mode 100644
index 0000000..051c8c4
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/icone_ins.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/intervalle_affichage.png b/fdx_convert/src/main/resources/images/intervalle_affichage.png
new file mode 100644
index 0000000..d7c2c5a
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/intervalle_affichage.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/max-icon.png b/fdx_convert/src/main/resources/images/max-icon.png
new file mode 100644
index 0000000..191f0c2
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/max-icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/max_icon.png b/fdx_convert/src/main/resources/images/max_icon.png
new file mode 100644
index 0000000..987bc8c
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/max_icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/min-icon.png b/fdx_convert/src/main/resources/images/min-icon.png
new file mode 100644
index 0000000..60178dc
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/min-icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/motif-title-bar.jpg b/fdx_convert/src/main/resources/images/motif-title-bar.jpg
new file mode 100644
index 0000000..4754959
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/motif-title-bar.jpg
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/next-img.png b/fdx_convert/src/main/resources/images/next-img.png
new file mode 100644
index 0000000..72e7830
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/next-img.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/oeil.png b/fdx_convert/src/main/resources/images/oeil.png
new file mode 100644
index 0000000..bf5a58d
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/oeil.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/previous-img.png b/fdx_convert/src/main/resources/images/previous-img.png
new file mode 100644
index 0000000..7a34d4b
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/previous-img.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/print-disabled.png b/fdx_convert/src/main/resources/images/print-disabled.png
new file mode 100644
index 0000000..f366643
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/print-disabled.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/print-new.png b/fdx_convert/src/main/resources/images/print-new.png
new file mode 100644
index 0000000..43fbec1
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/print-new.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/print.png b/fdx_convert/src/main/resources/images/print.png
new file mode 100644
index 0000000..2295c0f
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/print.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/reduire.png b/fdx_convert/src/main/resources/images/reduire.png
new file mode 100644
index 0000000..d172335
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/reduire.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/success-icon.png b/fdx_convert/src/main/resources/images/success-icon.png
new file mode 100644
index 0000000..f2e7217
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/success-icon.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/table-plus.png b/fdx_convert/src/main/resources/images/table-plus.png
new file mode 100644
index 0000000..7536085
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/table-plus.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/tache.png b/fdx_convert/src/main/resources/images/tache.png
new file mode 100644
index 0000000..e4cce33
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/tache.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/tache_hover.png b/fdx_convert/src/main/resources/images/tache_hover.png
new file mode 100644
index 0000000..8074d15
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/tache_hover.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/trash.png b/fdx_convert/src/main/resources/images/trash.png
new file mode 100644
index 0000000..1c21ed9
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/trash.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/images/update-subtype.png b/fdx_convert/src/main/resources/images/update-subtype.png
new file mode 100644
index 0000000..668bdeb
--- /dev/null
+++ b/fdx_convert/src/main/resources/images/update-subtype.png
Binary files differ
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractEditDialog.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractEditDialog.fxml
new file mode 100644
index 0000000..1fa7120
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractEditDialog.fxml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane style="-fx-border-color: #969696; -fx-background-color: transparent; -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractEditDialogController">
+   <top>
+      <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Titre de la fenêtre ici">
+                     <font>
+                        <Font name="Arial" size="15.0" />
+                     </font>
+                  </Text>
+               </children>
+               <padding>
+                  <Insets left="20.0" />
+               </padding></HBox>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/reduire.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+                  <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/agrandir.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+                  <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/fermer.png" />
+                           </image>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+               </children></HBox>
+         </children>
+         <padding>
+            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+         </padding>
+      </HBox>
+   </top>
+   <center>
+      <VBox BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" style="-fx-background-color: transparent;" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="47.0" top="10.0" />
+               </padding>
+            </HBox>
+            <BorderPane fx:id="formPanel" style="-fx-background-color: transparent;" VBox.vgrow="ALWAYS">
+               <center>
+                  <VBox BorderPane.alignment="CENTER">
+                     <padding>
+                        <Insets bottom="20.0" left="47.0" right="47.0" top="20.0" />
+                     </padding>
+                     <children>
+                        <VBox fx:id="formContainer" style="-fx-background-color: #F8F8F8; -fx-border-color: #E9E9E9; -fx-border-width: 1;" />
+                     </children>
+                  </VBox>
+               </center></BorderPane>
+            <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="31.0" prefWidth="404.0" spacing="5.0">
+               <children>
+                  <Button fx:id="cancelButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #949599; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+                     <font>
+                        <Font name="System Bold" size="12.0" />
+                     </font>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+                  <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #869447; -fx-background-radius: 0;" text="Enregistrer" textFill="WHITE">
+                     <font>
+                        <Font name="System Bold" size="12.0" />
+                     </font>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+               </children>
+               <padding>
+                  <Insets left="47.0" right="40.0" />
+               </padding>
+            </HBox>
+         </children>
+      </VBox>
+   </center>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+      <URL value="@../../../../styles/custom-main-style.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractMainDialog.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractMainDialog.fxml
new file mode 100644
index 0000000..5898cf7
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/abstracts/AbstractMainDialog.fxml
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="500.0" minWidth="700.0" prefHeight="569.0" prefWidth="982.0" style="-fx-border-color: #969696; -fx-border-width: 1;" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractMainDialogController">
+   <center>
+      <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="12.0" style="-fx-background-color: #44507;" VBox.vgrow="ALWAYS">
+               <children>
+                  <VBox prefHeight="200.0" prefWidth="100.0" spacing="12.0" style="-fx-border-color: #D6D6D6; -fx-border-width: 1.5;" VBox.vgrow="ALWAYS">
+                     <children>
+                        <TitledPane collapsible="false" prefHeight="61.0" prefWidth="1223.0" text="Recherche">
+                           <content>
+                              <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+                                 <right>
+                                    <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+                                       <BorderPane.margin>
+                                          <Insets />
+                                       </BorderPane.margin>
+                                       <children>
+                                          <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor></Button>
+                                          <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="reset">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor></Button>
+                                          <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Recherche avancées">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </CheckBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </right>
+                                 <center>
+                                    <VBox BorderPane.alignment="CENTER">
+                                       <children>
+                                          <VBox fx:id="normalSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                          <VBox fx:id="advancedSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                       </children>
+                                       <BorderPane.margin>
+                                          <Insets top="5.0" />
+                                       </BorderPane.margin>
+                                    </VBox>
+                                 </center>
+                              </BorderPane>
+                           </content>
+                        </TitledPane>
+                        <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+                           <children>
+                              <HBox alignment="CENTER_LEFT" spacing="2.0">
+                                 <children>
+                                    <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" spacing="2.0">
+                                       <children>
+                                          <Button fx:id="btnAdd" mnemonicParsing="false" onAction="#onAddDialog" styleClass="main-btn-add" textFill="#ebf0ee">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnEdit" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" styleClass="main-btn-edit" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnPrint" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" styleClass="main-btn-print" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnDelete" mnemonicParsing="false" onAction="#removeElement" styleClass="main-btn-delete" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                       </children>
+                                    </HBox>
+                                 </children>
+                                 <opaqueInsets>
+                                    <Insets />
+                                 </opaqueInsets>
+                              </HBox>
+                              <VBox prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS">
+                                 <children>
+                                    <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+                                       <columnResizePolicy>
+                                          <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                       </columnResizePolicy>
+                                    </TableView>
+                                    <HBox alignment="CENTER_LEFT" spacing="15.0" style="-fx-background-color: #CECECE;">
+                                       <children>
+                                          <HBox alignment="CENTER" spacing="2.0">
+                                             <children>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Label text="précédent">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                      <Button fx:id="btnPrevious" mnemonicParsing="false" styleClass="previous-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor></Button>
+                                                   </children>
+                                                </HBox>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Button fx:id="btnNext" mnemonicParsing="false" styleClass="next-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor></Button>
+                                                      <Label text="suivant">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                   </children>
+                                                </HBox>
+                                             </children>
+                                          </HBox>
+                                          <Label fx:id="paginationNumberInfo" text="(200/400)">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </Label>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                           </children>
+                        </VBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="12.0" left="12.0" right="12.0" top="12.0" />
+                     </padding>
+                  </VBox>
+                  <HBox alignment="CENTER_RIGHT">
+                     <children>
+                        <Button fx:id="btnClose" mnemonicParsing="false" style="-fx-background-color: #CACACA; -fx-border-color: #A8A8A8;" text="Quitter">
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor></Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="12.0" left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </VBox>
+         </children>
+      </VBox>
+   </center>
+   <top>
+      <HBox alignment="CENTER" onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Titre de la fenêtre">
+                     <font>
+                        <Font name="Roboto" size="15.0" />
+                     </font>
+                  </Text>
+               </children>
+               <padding>
+                  <Insets left="30.0" />
+               </padding></HBox>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/fermer.png" />
+                           </image>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+         </padding>
+      </HBox>
+   </top>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-main-style.css" />
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/main.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/main.fxml
new file mode 100644
index 0000000..ef6039d
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/main.fxml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.image.*?>
+<?import javafx.scene.layout.*?>
+
+<VBox fx:id="mainContainer" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="600.0" prefWidth="1081.0" style="-fx-background-color: transparent;" stylesheets="@../../../../../styles/main_screen.css" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.MainController">
+    <children>
+        <HBox style="-fx-background-color: #f8f8f8;">
+            <children>
+                <HBox alignment="CENTER">
+                    <children>
+                        <ImageView fitHeight="48.0" fitWidth="190.0" pickOnBounds="true" preserveRatio="true">
+                            <image>
+                                <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                            </image>
+                        </ImageView>
+                    </children>
+                    <padding>
+                        <Insets right="30.0" />
+                    </padding>
+                </HBox>
+                <HBox fx:id="myMenuBar">
+                    <children>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Fichier">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/Fichier.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Paramètres">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-02.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <Menu mnemonicParsing="false" text="Type Fichier">
+                                    <items>
+                                        <MenuItem mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+                                        <MenuItem mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+                                    </items>
+                                </Menu>
+                                <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configurer les répertoires" />
+                        <Menu mnemonicParsing="false" text="Enregistrement des formats de validation">
+                          <items>
+                                      <MenuItem mnemonicParsing="false" onAction="#openValidateurDialog" text="Fichiers de données Texte" />
+                            <!--<MenuItem mnemonicParsing="false" onAction="#openJsonToValidateDialog" text="Fichiers de données JSON" />-->
+                          </items>
+                        </Menu>
+                        <!--<MenuItem fx:id="configMenuItem1" mnemonicParsing="false" onAction="#openJsonStructureView" text="Structures JSON" />-->                        
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Conversion">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-03.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                        <MenuItem fx:id="conversionModelMenuItem" mnemonicParsing="false" onAction="#openConversionModelDialog" text="Modèles de conversion" />
+                                <MenuItem fx:id="validationManuelMenuItem" mnemonicParsing="false" onAction="#openFileToValidateDialog" text="Manuelle" />
+                                <Menu mnemonicParsing="false" text="Automatique">
+                                    <items>
+                                        <MenuItem fx:id="paramAutomatiqueMenuItem" mnemonicParsing="false" onAction="#openTacheDialog" text="Tâches" />
+                              <MenuItem fx:id="journalMenuItem" mnemonicParsing="false" onAction="#openJournalDialog" text="Journal des tâches" />
+                                    </items>
+                                </Menu>
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Outils">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-04.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <MenuItem mnemonicParsing="false" onAction="#openDecryptageAESSymDailog" text="Décryptage AES symétrique" />
+                                <MenuItem fx:id="menuTableauDeBord" mnemonicParsing="false" onAction="#openTxtFileToValidateDialog" text="Vérifier format d'un fichier texte" />
+                        <MenuItem fx:id="menuConversionJson" mnemonicParsing="false" onAction="#openTxtFileToJsonDialog" text="Convertir un fichier de données en Json" />
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" disable="true" mnemonicParsing="false" text="Aide">
+                            <graphic>
+                                <ImageView disable="true" fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-05.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <MenuItem mnemonicParsing="false" onAction="#openAproposrDialog" text="A propos" />
+                            </items>
+                        </MenuButton>
+                    </children>
+                </HBox>
+            </children>
+            <padding>
+                <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+            </padding>
+        </HBox>
+        <HBox spacing="10.0" style="-fx-background-color: #fff; -fx-border-color: #dedfe0;">
+            <padding>
+                <Insets bottom="5.0" left="15.0" right="5.0" top="5.0" />
+            </padding>
+            <children>
+                <HBox prefWidth="200.0" spacing="10.0">
+                    <children>
+                        <Button fx:id="btnImportationFormatValidation" mnemonicParsing="false" onAction="#openValidateurDialog" styleClass="receive">
+                            <cursor>
+                                <Cursor fx:constant="HAND" />
+                            </cursor>
+                        </Button>
+                        <Button fx:id="btnConvertionManuelle" mnemonicParsing="false" onAction="#openFileToValidateDialog" styleClass="generate">
+                            <cursor>
+                                <Cursor fx:constant="HAND" />
+                            </cursor>
+                        </Button>
+                        <Button fx:id="btnGestionTachesConvertion" mnemonicParsing="false" onAction="#openTacheDialog" styleClass="treatment">
+                            <cursor>
+                                <Cursor fx:constant="HAND" />
+                            </cursor>
+                        </Button>
+                    </children>
+                </HBox>
+                <HBox alignment="TOP_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+            </children>
+        </HBox>
+        <AnchorPane prefHeight="578.0" prefWidth="800.0" style="-fx-border-color: #F8F8F8; -fx-border-width: 0;" styleClass="main_screen" VBox.vgrow="ALWAYS" />
+    </children>
+</VBox>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml
new file mode 100644
index 0000000..1bfa84a
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="81.0" prefWidth="468.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefWidth="158.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Délimiteur de ligne" />
+                  <StackPane prefHeight="150.0" prefWidth="200.0">
+                     <children>
+                        <TextField fx:id="codeDelimiteurLigneTextField" minWidth="300.0" prefWidth="300.0" visible="false" />
+                        <ComboBox fx:id="delimiteurLigneComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+            <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefHeight="25.0" prefWidth="158.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                  <StackPane prefHeight="150.0" prefWidth="200.0">
+                     <children>
+                        <TextField fx:id="codeDelimiteurColonneTextField" visible="false" />
+                        <ComboBox fx:id="delimiteurColonneComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets top="10.0" />
+         </padding>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml
new file mode 100644
index 0000000..e58cd15
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="69.0" prefWidth="604.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.ConversionModelSearchController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefHeight="25.0" prefWidth="158.0" style="-fx-text-fill: black;" text="Type du fichier à valider" />
+                  <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="418.0" prefHeight="25.0" prefWidth="418.0" />
+               </children>
+            </HBox>
+            <HBox alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefHeight="25.0" prefWidth="158.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Format du fichier de données" />
+                  <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="418.0" prefHeight="25.0" prefWidth="418.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml
new file mode 100644
index 0000000..4854ab6
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.DatePicker?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.ColumnConstraints?>
+<?import javafx.scene.layout.GridPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.RowConstraints?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="120.0" prefWidth="773.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierAdvancedSearchFormController">
+   <children>
+      <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <GridPane hgap="110.0" vgap="20.0">
+              <columnConstraints>
+                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+              </columnConstraints>
+              <rowConstraints>
+                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+              </rowConstraints>
+               <children>
+                  <HBox spacing="10.0">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="94.0" prefHeight="25.0" prefWidth="94.0" style="-fx-text-fill: black;" text="Statut de l'action" />
+                        <ComboBox fx:id="statutActionComboBox" minHeight="25.0" minWidth="260.0" prefHeight="25.0" prefWidth="260.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets bottom="5.0" top="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.rowIndex="1">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="94.0" prefHeight="25.0" prefWidth="94.0" style="-fx-text-fill: black;" text="Date de début" />
+                        <DatePicker fx:id="dateDebutDatePicker" minHeight="25.0" minWidth="260.0" prefHeight="25.0" prefWidth="260.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets bottom="5.0" top="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="115.0" prefHeight="25.0" prefWidth="115.0" style="-fx-text-fill: black;" text="Date de fin" />
+                        <DatePicker fx:id="dateFinDatePicker" minHeight="25.0" minWidth="200.0" prefHeight="25.0" prefWidth="250.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets bottom="5.0" />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets bottom="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.rowIndex="2">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="94.0" prefHeight="25.0" prefWidth="94.0" style="-fx-text-fill: black;" text="Fichier Source" />
+                        <TextField fx:id="sourceFileNameTextField" minWidth="260.0" prefHeight="25.0" prefWidth="260.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets bottom="5.0" />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets top="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="115.0" prefHeight="25.0" prefWidth="115.0" style="-fx-text-fill: black;" text="Fichier Destination" />
+                        <TextField fx:id="destinationFileNameTextField" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets bottom="5.0" />
+                     </GridPane.margin>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+               </padding>
+               <VBox.margin>
+                  <Insets />
+               </VBox.margin>
+            </GridPane>
+         </children>
+      </VBox>
+   </children>
+   <padding>
+      <Insets top="5.0" />
+   </padding>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalSearchForm.fxml
new file mode 100644
index 0000000..e945c6c
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/JournalSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="31.0" prefWidth="346.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="104.0" prefHeight="25.0" prefWidth="104.0" style="-fx-text-fill: black;" text="Type Fichier" />
+                  <StackPane minHeight="25.0" minWidth="260.0" prefHeight="25.0" prefWidth="260.0">
+                     <children>
+                        <TextField fx:id="typeFichierTextField" editable="false" minHeight="25.0" minWidth="250.0" prefHeight="25.0" prefWidth="250.0" style="-fx-background-color: #ffff;" visible="false" />
+                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectionItem" minHeight="25.0" minWidth="250.0" prefHeight="25.0" prefWidth="250.0" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TacheSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TacheSearchForm.fxml
new file mode 100644
index 0000000..96c9fe5
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TacheSearchForm.fxml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="326.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TacheSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox alignment="CENTER" prefHeight="25.0" prefWidth="315.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" contentDisplay="CENTER" minWidth="96.0" prefHeight="18.0" prefWidth="96.0" style="-fx-text-fill: black;" text="Type de Fichier">
+                     <font>
+                        <Font size="14.0" />
+                     </font>
+                  </Label>
+                  <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="100.0" prefHeight="25.0" prefWidth="207.0" HBox.hgrow="ALWAYS" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml
new file mode 100644
index 0000000..ead0875
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.DatePicker?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="67.0" prefWidth="352.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TruncatedElementAdvancedSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="106.0" prefHeight="15.0" prefWidth="106.0" text="Code de la colonne" />
+                  <TextField fx:id="codeColonneTextfield" minHeight="25.0" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+            <HBox spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="106.0" prefHeight="25.0" prefWidth="106.0" text="Date de l'action" />
+                  <DatePicker fx:id="dateActionDatePicker" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml
new file mode 100644
index 0000000..88dac02
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="364.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TruncatedElementSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="106.0" prefHeight="25.0" prefWidth="106.0" text="Type du fichier" />
+                  <StackPane prefHeight="150.0" prefWidth="200.0">
+                     <children>
+                        <TextField fx:id="codeTypeFichierTextfield" editable="false" minHeight="25.0" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" style="-fx-background-radius: 0%;" visible="false" />
+                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectionItem" minWidth="229.0" prefWidth="229.0" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+   <padding>
+      <Insets bottom="10.0" />
+   </padding>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml
new file mode 100644
index 0000000..576260a
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="30.0" prefWidth="600.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierAdvancedSearchFormController">
+   <children>
+      <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox layoutX="10.0" layoutY="45.0" prefHeight="25.0" prefWidth="353.0" spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="58.0" prefWidth="58.0" style="-fx-text-fill: black;" text="Participant">
+                     <HBox.margin>
+                        <Insets />
+                     </HBox.margin></Label>
+                  <TextField fx:id="participant" prefHeight="25.0" prefWidth="120.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+            <HBox spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" prefWidth="57.0" style="-fx-text-fill: black;" text="Libelle" />
+                  <TextField fx:id="libelle" style="-fx-background-radius: 0%;" HBox.hgrow="ALWAYS" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+   <padding>
+      <Insets top="10.0" />
+   </padding>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml
new file mode 100644
index 0000000..1337230
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="251.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="42.0" prefWidth="57.0" style="-fx-text-fill: black;" text="Code" />
+                  <TextField fx:id="code" prefWidth="120.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml
new file mode 100644
index 0000000..736f206
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="358.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.ValidateurSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="323.0" spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="42.0" prefHeight="17.0" prefWidth="89.0" style="-fx-text-fill: black;" text="Type du Fichier" />
+                  <StackPane prefHeight="25.0" prefWidth="264.0">
+                     <children>
+                        <TextField fx:id="codeTypeFichierTextfield" editable="false" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" style="-fx-background-radius: 0%;" visible="false" />
+                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectionItem" minWidth="229.0" prefWidth="229.0" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/About.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/About.fxml
new file mode 100644
index 0000000..07d3f90
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/About.fxml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane style="-fx-border-color: #969696; -fx-background-color: transparent; -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.forms.AproposEditFormController">
+   <center>
+      <VBox BorderPane.alignment="CENTER">
+         <children>
+            <BorderPane fx:id="formPanel" style="-fx-background-color: transparent;" VBox.vgrow="ALWAYS">
+               <center>
+                  <VBox BorderPane.alignment="CENTER">
+                     <padding>
+                        <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" />
+                     </padding>
+                     <children>
+                        <VBox fx:id="formContainer" spacing="15.0" style="-fx-border-color: #E9E9E9; -fx-border-width: 1;" VBox.vgrow="ALWAYS">
+                           <children>
+                              <VBox>
+                                 <children>
+                                    <HBox>
+                                       <children>
+                                          <Label text="Sirius-Sygma">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" />
+                                       </padding>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Version :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="1.0.2" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Build time :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="02 septembre 2022" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Auteur :  ">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="Megatim Ltd (www.megatimgroup.com)" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Mail :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="contact@megatimgroup.com" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Licence d'utilisateur octroyée à la société :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="UBA Cameroon SA" />
+                                       </children>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                              <VBox spacing="10.0">
+                                 <children>
+                                    <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Le logiciel Sirius-Sygma est un intergiciel qui assiste la génération des messages financiers MT103 et MT202, dans le cadre des l'intercommunication du Système d'information et leRTGS de la zone CEMAC dénommé SYGMA." wrappingWidth="496.13671875" />
+                                    <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Il s'agit d'une application ergonomique, facile de prise en main et développée en langage Java avec des technologies éprouvées." wrappingWidth="498.13671875" />
+                                 </children>
+                              </VBox>
+                           </children>
+                           <padding>
+                              <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" />
+                           </padding></VBox>
+                     </children>
+                  </VBox>
+               </center>
+            </BorderPane>
+            <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="0.0" prefWidth="621.0" spacing="5.0">
+               <padding>
+                  <Insets bottom="20.0" left="30.0" right="30.0" />
+               </padding>
+            </HBox>
+         </children>
+      </VBox>
+   </center>
+   <stylesheets>
+      <URL value="@../styles/main-style.css" />
+      <URL value="@../styles/title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml
new file mode 100644
index 0000000..f7888fa
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="105.0" prefWidth="706.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.MetaAlphaNumeriqueFieldEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Champs à tronquer">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" prefWidth="212.0" text="Code du champ à tronquer" />
+                              <AbstractSelectionItem fx:id="alphaNumeriqueFieldAbstractSelectItem" prefWidth="427.0" />
+                                    </children>
+                                </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ConfigEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ConfigEditForm.fxml
new file mode 100644
index 0000000..70bd06b
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ConfigEditForm.fxml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="215.0" prefWidth="708.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConfigEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Informations sur les répertoires">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire des fichiers de données" />
+                              <CustomDirectoryChooser fx:id="datasDirectoryChooser" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire d'exportation des validateurs" />
+                              <CustomDirectoryChooser fx:id="validatorsDirectoryChooser" minHeight="25.0" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire des erreurs" />
+                              <CustomDirectoryChooser fx:id="errorDirectoryChooser" minHeight="25.0" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="116.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire de sortie" />
+                              <CustomDirectoryChooser fx:id="outputDirectoryChooser" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="155.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire d'archivage" />
+                              <CustomDirectoryChooser fx:id="archivesDirectoryChooser" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ConversionModelEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ConversionModelEditForm.fxml
new file mode 100644
index 0000000..3a1db46
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ConversionModelEditForm.fxml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Tab?>
+<?import javafx.scene.control.TabPane?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="562.0" prefWidth="678.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConversionModelEditFormController">
+   <children>
+      <VBox prefHeight="697.0" prefWidth="678.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TabPane fx:id="tabPane" prefHeight="553.0" prefWidth="702.0" stylesheets="@../../../../../styles/CustomFormComponents.css" tabClosingPolicy="UNAVAILABLE">
+              <tabs>
+                <Tab text="Description du fichier de données">
+                     <content>
+                        <VBox prefHeight="574.0" prefWidth="687.0" spacing="15.0">
+                           <children>
+                              <TitledPane collapsible="false" prefHeight="659.0" prefWidth="647.0" style="-fx-text-fill: #fff;" text="Informations générales">
+                                 <content>
+                                    <VBox prefHeight="534.0" prefWidth="643.0" spacing="20.0" style="-fx-background-color: #fff;">
+                                       <children>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="25.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Libellé du modèle" />
+                                                <TextField fx:id="libelleTextField" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Type du fichier à valider" />
+                                                <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="418.0" prefHeight="25.0" prefWidth="418.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="sourceHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire source">
+                                                   <font>
+                                                      <Font size="14.0" />
+                                                   </font>
+                                                </Label>
+                                                <CustomDirectoryChooser fx:id="repertoireSource" minWidth="418.0" prefWidth="418.0" HBox.hgrow="ALWAYS" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="sourceHBox1" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire destination">
+                                                   <font>
+                                                      <Font size="14.0" />
+                                                   </font>
+                                                </Label>
+                                                <CustomDirectoryChooser fx:id="repertoireDestination" minWidth="418.0" prefWidth="418.0" HBox.hgrow="ALWAYS" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="sourceHBox11" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire d'erreur">
+                                                   <font>
+                                                      <Font size="14.0" />
+                                                   </font>
+                                                </Label>
+                                                <CustomDirectoryChooser fx:id="repertoireErreur" minWidth="418.0" prefWidth="418.0" HBox.hgrow="ALWAYS" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="169.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Format du fichier de données" />
+                                                <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Délimiteur de ligne" />
+                                                <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                                <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                                                <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                          <HBox layoutX="25.0" layoutY="244.0" prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Validation stricte des données ?" />
+                                                <CheckBox fx:id="strictValidationCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+                <Tab text="Champs à tronquer">
+                     <content>
+                        <VBox prefHeight="581.0" prefWidth="678.0" spacing="15.0">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Informations sur les champs">
+                                 <content>
+                                    <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                       <children>
+                                          <HBox alignment="CENTER_RIGHT">
+                                             <children>
+                                                <CheckBox fx:id="saisieAlphaNumeriqueFieldChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../../../../../../generation-validateur-typefichier/src/main/resources/styles/style.css" text="Sélectionner les champs à tronquer" />
+                                             </children>
+                                          </HBox>
+                                          <AbstractNestedEntityTable fx:id="metaAlphaNumeriqueFieldAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+              </tabs>
+            </TabPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml
new file mode 100644
index 0000000..e0c358f
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="330.0" prefWidth="624.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.DataFileToJsonFormController">
+    <children>
+        <VBox fillWidth="false" layoutX="-23.0" layoutY="40.0" prefHeight="226.0" prefWidth="698.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #ffffff;" text="Informations sur le fichier à convertir">
+               <content>
+                  <VBox prefHeight="275.0" prefWidth="614.0" spacing="20.0" style="-fx-background-color: #fff;">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="25.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="TypeFichier" />
+                              <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Validateur XML" />
+                              <CustomFileChooser fx:id="validateurFileChooser" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Fichier à convertir" />
+                              <CustomFileChooser fx:id="fileToConvertFileChooser" minWidth="390.0" prefWidth="390.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="169.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Format du fichier de données" />
+                              <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" style="-fx-background-radius: 0%;" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                              <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" style="-fx-background-radius: 0%;" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                              <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" style="-fx-background-radius: 0%;" />
+                           </children>
+                        </HBox>
+                        <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                              <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                     </padding>
+                  </VBox>
+               </content>
+                </TitledPane>
+            </children>
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+         </padding>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/DecryptageAESEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/DecryptageAESEditForm.fxml
new file mode 100644
index 0000000..3b4be41
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/DecryptageAESEditForm.fxml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="235.0" prefWidth="657.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.DecryptageAESEditFormController">
+    <children>
+        <VBox fillWidth="false" layoutX="-23.0" layoutY="40.0" prefHeight="226.0" prefWidth="698.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #ffffff;" text="Informations sur le fichier à décrypter">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #ffffff;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Fichier à décrypter" />
+                              <CustomFileChooser fx:id="fileToDecrypt" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Repertoire de dépôt du fichier décrypté" />
+                              <CustomDirectoryChooser fx:id="outputDir" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Clé de décryptage" />
+                              <StackPane minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0">
+                                 <children>
+                                    <PasswordField fx:id="keyToDecryptField" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                                    <TextField fx:id="showKeyTextField" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                                    <ImageView fx:id="eyeImageView" fitHeight="15.0" fitWidth="15.0" onMousePressed="#eyeOnMousePressed" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER_RIGHT">
+                                       <image>
+                                          <Image url="@../../../../../images/oeil.png" />
+                                       </image>
+                                       <StackPane.margin>
+                                          <Insets right="5.0" />
+                                       </StackPane.margin>
+                                    </ImageView>
+                                 </children>
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </StackPane>
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Confirmation de la clé" />
+                              <PasswordField fx:id="keyConfirmationField" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </PasswordField>
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+         </padding>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/FileToValidateEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/FileToValidateEditForm.fxml
new file mode 100644
index 0000000..277d67d
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/FileToValidateEditForm.fxml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Tab?>
+<?import javafx.scene.control.TabPane?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="503.0" prefWidth="705.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.FileToValidateEditFormController">
+   <children>
+      <VBox prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TabPane fx:id="tabPane" prefHeight="553.0" prefWidth="702.0" stylesheets="@../../../../../styles/CustomFormComponents.css" tabClosingPolicy="UNAVAILABLE">
+              <tabs>
+                <Tab text="Fichier à valider">
+                     <content>
+                        <VBox prefHeight="518.0" prefWidth="645.0" spacing="15.0">
+                           <children>
+                              <TitledPane collapsible="false" prefHeight="496.0" prefWidth="702.0" style="-fx-text-fill: #fff;" text="Informations sur le fichier à valider">
+                                 <content>
+                                    <VBox prefHeight="275.0" prefWidth="614.0" spacing="20.0" style="-fx-background-color: #fff;">
+                                       <children>
+                                          <HBox layoutX="25.0" layoutY="358.0" prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Utiliser un modèle de conversion existant" />
+                                                <CheckBox fx:id="useExistingConversionModelCheckBox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="25.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Modèle de conversion" />
+                                                <AbstractSelectionItem fx:id="conversionModelAbstractSelectItem" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Type du fichier à valider" />
+                                                <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Fichier à valider" />
+                                                <CustomFileChooser fx:id="fileToValidateFileChooser" minWidth="390.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="169.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Format du fichier de données" />
+                                                <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                                                <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                                <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                                                <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                          <HBox layoutX="25.0" layoutY="244.0" prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Validation stricte des données ?" />
+                                                <CheckBox fx:id="strictValidationCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+                <Tab text="Champs à tronquer">
+                     <content>
+                        <VBox prefHeight="200.0" prefWidth="100.0" spacing="15.0">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Informations sur les champs">
+                                 <content>
+                                    <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                       <children>
+                                          <HBox alignment="CENTER_RIGHT">
+                                             <children>
+                                                <CheckBox fx:id="saisieAlphaNumeriqueFieldChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../../../../../../generation-validateur-typefichier/src/main/resources/styles/style.css" text="Sélectionner les champs à tronquer" />
+                                             </children>
+                                          </HBox>
+                                          <AbstractNestedEntityTable fx:id="metaAlphaNumeriqueFieldAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+              </tabs>
+            </TabPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml
new file mode 100644
index 0000000..a2dc749
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="216.0" prefWidth="648.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.RawCsvDataEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" prefHeight="271.0" prefWidth="665.0" spacing="5.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="-6.0" AnchorPane.rightAnchor="-11.0" AnchorPane.topAnchor="7.0">
+            <padding>
+                <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="231.0" prefWidth="598.0" style="-fx-text-fill: #fff;" styleClass="text" text="Informations sur le fichier à importer">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #fff;">
+                            <children>
+<!--                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+                                        <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+                                    </children>
+                                </HBox>-->
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur de ligne" />
+                                        <ComboBox fx:id="delimiteurLigne" prefWidth="150.0" style="-fx-background-radius: 0%; -fx-background-color: #fff; -fx-border-color: #C9C9CC;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur colonne" />
+                                        <ComboBox fx:id="delimiteurColonne" prefWidth="150.0" style="-fx-background-radius: 0%; -fx-background-color: #fff; -fx-border-color: #C9C9CC;" />
+                                    </children>
+                                </HBox>
+<!--                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Type de fichier" />
+                                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefWidth="330.0" />
+                                    </children>
+                                </HBox>-->
+                                <HBox alignment="CENTER_LEFT">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Fichier à importer" />
+                                        <TextField fx:id="fileToImportTextField" prefHeight="25.0" prefWidth="336.0" style="-fx-background-radius: 0%;">
+                                            <HBox.margin>
+                                                <Insets left="10.0" right="2.0" />
+                                            </HBox.margin>
+                                        </TextField>
+                                        <Button fx:id="importButton" maxWidth="25.0" minHeight="28.0" mnemonicParsing="false" onMousePressed="#importButtonOnClicked" prefHeight="28.0" prefWidth="25.0" style="-fx-background-radius: 0%; -fx-font-weight: bold; -fx-background-color: #fff; -fx-border-color: #C9C9CC;" text="...">
+                                            <HBox.margin>
+                                                <Insets right="10.0" />
+                                            </HBox.margin>
+                                        </Button>
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Repertoire de dépôt du fichier txt" />
+                              <TextField fx:id="OutDirTextField" prefHeight="25.0" prefWidth="336.0" style="-fx-background-radius: 0%;">
+                                 <HBox.margin>
+                                    <Insets left="10.0" right="2.0" />
+                                 </HBox.margin>
+                              </TextField>
+                              <Button fx:id="OutButton" maxHeight="28.0" minHeight="28.0" mnemonicParsing="false" onMousePressed="#outButtonOnClicked" prefHeight="28.0" style="-fx-background-radius: 0%; -fx-background-color: #fff; -fx-border-color: #C9C9CC; -fx-font-weight: bold;" text="...">
+                                 <HBox.margin>
+                                    <Insets right="10.0" />
+                                 </HBox.margin>
+                              </Button>
+                           </children>
+                        </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml
new file mode 100644
index 0000000..c1d9f59
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="194.0" prefWidth="555.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ImportTypeFichierEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" prefHeight="223.0" prefWidth="664.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <padding>
+                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="174.0" prefWidth="582.0" style="-fx-text-fill: #FFFFFF;" text="Informations sur le fichier à importer">
+                    <content>
+                        <VBox prefHeight="154.0" prefWidth="605.0" spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+<!--                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+                                        <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+                                    </children>
+                                </HBox>-->
+                                <HBox alignment="CENTER_LEFT" prefHeight="28.0" prefWidth="475.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="116.0" prefHeight="17.0" prefWidth="116.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                                        <ComboBox fx:id="delimiteurLigne" minHeight="25.0" prefHeight="25.0" prefWidth="366.0" style="-fx-background-radius: 0%;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefHeight="17.0" prefWidth="116.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                        <ComboBox fx:id="delimiteurColonne" minHeight="25.0" prefHeight="25.0" prefWidth="366.0" style="-fx-background-radius: 0%;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" prefHeight="29.0" prefWidth="505.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefHeight="17.0" prefWidth="116.0" style="-fx-text-fill: black;" text="Fichier à importer" />
+                              <CustomFileChooser fx:id="fileToImportCustomFile" minHeight="25.0" minWidth="366.0" prefHeight="25.0" prefWidth="366.0" />
+                                    </children>
+                                </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/JournalEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/JournalEditForm.fxml
new file mode 100644
index 0000000..c76074c
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/JournalEditForm.fxml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="249.0" prefWidth="621.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConfigEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Informations sur l'action">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Date" />
+                              <TextField fx:id="dateActionTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="153.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefWidth="120.0" text="Statut" />
+                              <TextField fx:id="statutActionTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="168.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="TypeFichier" />
+                              <TextField fx:id="typefichierfichierTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="153.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefWidth="120.0" text="Répertoire source" />
+                              <TextField fx:id="sourceDirectoryTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="155.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefWidth="120.0" text="Fichier source" />
+                              <TextField fx:id="sourceFileNameTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="290.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Nombre lignes" />
+                              <TextField fx:id="nombreLignesTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="200.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Répertoire destination" />
+                              <TextField fx:id="destinationDirectoryTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="245.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Fichier destination" />
+                              <TextField fx:id="destinationFileNameTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ModeleJsonEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ModeleJsonEditForm.fxml
new file mode 100644
index 0000000..690ddd6
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ModeleJsonEditForm.fxml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableColumn?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="458.0" prefWidth="671.0" stylesheets="@../../../../../styles/custom-main-style.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ModeleJsonEditFormController">
+   <children>
+      <VBox alignment="CENTER" prefHeight="458.0" prefWidth="671.0">
+         <children>
+            <VBox alignment="CENTER" prefHeight="453.0" prefWidth="683.0" spacing="5.0">
+               <padding>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </padding>
+               <children>
+                  <TitledPane collapsible="false" text="Informations sur le fichier JSON">
+                     <content>
+                        <VBox prefHeight="31.0" prefWidth="603.0" spacing="5.0">
+                           <padding>
+                              <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                           </padding>
+                           <children>
+                              <HBox minWidth="400.0" prefHeight="46.0" prefWidth="400.0">
+                                 <children>
+                                    <HBox alignment="CENTER_LEFT" prefHeight="27.0" prefWidth="352.0" spacing="5.0">
+                                       <children>
+                                          <Label alignment="CENTER_RIGHT" minWidth="60.0" text="Type de fichier" />
+                                          <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="100.0" prefWidth="261.0" />
+                                       </children>
+                                    </HBox>
+                                    <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                       <children>
+                                          <Label alignment="CENTER_RIGHT" minWidth="100.0" prefWidth="100.0" text="Nom de l'objet" />
+                                          <TextField fx:id="objectNameTextField" minWidth="100.0" prefHeight="27.0" prefWidth="153.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                                       </children>
+                                    </HBox>
+                                 </children>
+                              </HBox>
+                           </children>
+                        </VBox>
+                     </content>
+                  </TitledPane>
+                  <HBox alignment="CENTER" prefHeight="333.0" prefWidth="631.0" spacing="5.0">
+                     <children>
+                        <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="313.0" prefWidth="356.0" text="Structure des champs">
+                           <content>
+                              <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                 <children>
+                                    <AbstractNestedEntityTable fx:id="structureChampAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                 </children>
+                                 <padding>
+                                    <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                 </padding>
+                              </VBox>
+                           </content>
+                        </TitledPane>
+                        <TitledPane animated="false" collapsible="false" prefHeight="318.0" prefWidth="273.0" text="Liste des sous-types">
+                           <content>
+                              <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0">
+                                 <children>
+                                    <HBox alignment="CENTER" prefHeight="10.0" prefWidth="249.0" />
+                                    <HBox alignment="CENTER" minHeight="25.0" minWidth="249.0" prefHeight="25.0" prefWidth="249.0">
+                                       <children>
+                                          <HBox alignment="CENTER" minWidth="155.0" prefWidth="155.0">
+                                             <HBox.margin>
+                                                <Insets />
+                                             </HBox.margin>
+                                          </HBox>
+                                          <HBox alignment="CENTER">
+                                             <children>
+                                                <Button fx:id="subTypeAddButton" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-add">
+                                                   <HBox.margin>
+                                                      <Insets right="5.0" />
+                                                   </HBox.margin>
+                                                </Button>
+                                                <Button fx:id="subTypeUpdateButton" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-update">
+                                                   <HBox.margin>
+                                                      <Insets right="5.0" />
+                                                   </HBox.margin>
+                                                </Button>
+                                                <Button fx:id="subTypeDeleteButton" disable="true" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-delete">
+                                                   <HBox.margin>
+                                                      <Insets />
+                                                   </HBox.margin>
+                                                </Button>
+                                             </children>
+                                             <HBox.margin>
+                                                <Insets />
+                                             </HBox.margin>
+                                          </HBox>
+                                       </children>
+                                       <VBox.margin>
+                                          <Insets bottom="6.0" />
+                                       </VBox.margin>
+                                    </HBox>
+                                    <HBox alignment="CENTER" minHeight="223.0" minWidth="249.0" prefHeight="223.0" prefWidth="249.0">
+                                       <children>
+                                          <TableView fx:id="subObjetsTableView" minWidth="249.0" prefWidth="249.0">
+                                             <columns>
+                                                <TableColumn fx:id="subObjectTableColumn" editable="false" maxWidth="1.7976931348623157E308" minWidth="249.0" prefWidth="249.0" sortable="false" text="Nom de l'objet" />
+                                             </columns>
+                                          </TableView>
+                                       </children>
+                                       <VBox.margin>
+                                          <Insets />
+                                       </VBox.margin>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                           </content>
+                        </TitledPane>
+                     </children>
+                  </HBox>
+               </children>
+            </VBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml
new file mode 100644
index 0000000..8e0ed8d
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="291.0" prefWidth="396.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.StructureChampJsonEditFormController">
+   <children>
+      <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TitledPane collapsible="false" text="Informations générales sur la structure du champ" VBox.vgrow="ALWAYS">
+               <content>
+                  <VBox fx:id="formFieldContainer" alignment="CENTER" spacing="10.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Libellé" />
+                              <TextField fx:id="libelleTextField" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Type de données" />
+                              <ComboBox fx:id="typeDonneeComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="dateFormatContainer" alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Format date" />
+                               <ComboBox fx:id="formatDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                              <!--<TextField fx:id="formatDateTextField" prefWidth="100.0" />-->
+                           </children>
+                        </HBox>
+                        <HBox fx:id="dateFormatContainer1" alignment="CENTER_LEFT" layoutX="25.0" layoutY="175.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Séparateur de date" />
+                              <ComboBox fx:id="delimiteurDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="dateFormatContainer11" alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Forme du champ" />
+                              <CheckBox fx:id="listeCheckBox" mnemonicParsing="false" text="Liste" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="55.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Type de l'objet" />
+                              <ComboBox fx:id="typeObjetComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                     </padding>
+                  </VBox>
+               </content>
+            </TitledPane>
+         </children>
+         <padding>
+            <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+         </padding>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/SubObjectEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/SubObjectEditForm.fxml
new file mode 100644
index 0000000..c62a3e5
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/SubObjectEditForm.fxml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableColumn?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="458.0" prefWidth="648.0" stylesheets="@../../../../../styles/custom-main-style.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.SubObjectEditFormController">
+   <children>
+      <VBox alignment="CENTER" prefHeight="458.0" prefWidth="648.0" spacing="5.0">
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="20.0" />
+         </padding>
+         <children>
+            <TitledPane collapsible="false" text="Informations sur l'objet">
+               <content>
+                  <VBox alignment="CENTER" prefHeight="0.0" prefWidth="582.0" spacing="5.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="127.0" prefHeight="17.0" prefWidth="127.0" text="Nom de l'objet" />
+                              <TextField fx:id="subObjectNameTextField" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                     </padding>
+                  </VBox>
+               </content>
+            </TitledPane>
+            <TitledPane collapsible="false" prefHeight="322.0" prefWidth="584.0" text="Structure des champs">
+               <content>
+                  <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0">
+                     <children>
+                        <HBox alignment="CENTER" minHeight="25.0" prefHeight="25.0" prefWidth="604.0">
+                           <children>
+                              <HBox alignment="CENTER" prefWidth="543.0" />
+                              <HBox alignment="CENTER" prefHeight="27.0" prefWidth="91.0">
+                                 <children>
+                                    <Button fx:id="addFieldButton" alignment="CENTER" contentDisplay="CENTER" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-add">
+                                       <HBox.margin>
+                                          <Insets right="5.0" />
+                                       </HBox.margin>
+                                    </Button>
+                                    <Button fx:id="updateFieldButton" alignment="CENTER" disable="true" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-update">
+                                       <HBox.margin>
+                                          <Insets right="5.0" />
+                                       </HBox.margin>
+                                    </Button>
+                                    <Button fx:id="deleteFieldButton" alignment="CENTER" disable="true" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-delete">
+                                       <HBox.margin>
+                                          <Insets right="5.0" />
+                                       </HBox.margin>
+                                    </Button>
+                                 </children>
+                              </HBox>
+                           </children>
+                           <VBox.margin>
+                              <Insets />
+                           </VBox.margin>
+                        </HBox>
+                        <HBox alignment="CENTER" prefHeight="237.0" prefWidth="604.0">
+                           <children>
+                              <TableView fx:id="subObjectsFieldsTableView">
+                                 <columns>
+                                    <TableColumn fx:id="fieldNameTableColumn" prefWidth="117.0" text="Libellé" />
+                                    <TableColumn fx:id="dataTypeTableColumn" prefWidth="149.0" text="Type de données" />
+                                    <TableColumn fx:id="isListeTableColumn" prefWidth="70.0" text="Liste ?" />
+                                    <TableColumn fx:id="formatDateTableColumn" prefWidth="138.0" text="Format Date" />
+                                    <TableColumn fx:id="separateurDateTableColumn" prefWidth="131.0" text="Séparateur Date" />
+                                 </columns>
+                              </TableView>
+                           </children>
+                           <padding>
+                              <Insets top="5.0" />
+                           </padding>
+                           <VBox.margin>
+                              <Insets />
+                           </VBox.margin>
+                        </HBox>
+                     </children>
+                  </VBox>
+               </content>
+            </TitledPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/TacheEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TacheEditForm.fxml
new file mode 100644
index 0000000..842dfd3
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TacheEditForm.fxml
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Tab?>
+<?import javafx.scene.control.TabPane?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.ColumnConstraints?>
+<?import javafx.scene.layout.GridPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.RowConstraints?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane prefHeight="551.0" prefWidth="737.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.TacheEditFormController">
+   <children>
+      <VBox AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TabPane fx:id="tabPane" stylesheets="@../../../../../styles/CustomFormComponents.css">
+               <tabs>
+                  <Tab style="-fx-font-size: 14;" text="Informations sur la tâche">
+                     <content>
+                        <VBox prefHeight="604.0" prefWidth="748.0" spacing="15.0" stylesheets="@../../../../../styles/CustomFormComponents.css">
+                        
+                                  <VBox fx:id="paneContainer" spacing="10.0" style="-fx-background-color: white;">
+                                <children>
+                                    <TitledPane animated="false" collapsible="false" prefHeight="82.0" prefWidth="370.0" text="Informations générales">
+                                        <content>
+                                            <VBox spacing="10.0">
+                                                <padding>
+                                                    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                                                </padding>
+                                                <children>
+                                                    <HBox alignment="CENTER" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" contentDisplay="CENTER" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Libellé ">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <TextField fx:id="libelleTextField" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                             <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                                <children>
+                                                   <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Utiliser un modèle de conversion existant" />
+                                                   <CheckBox fx:id="useExistingConversionModelCheckBox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Oui" textFill="#5a5a5a" />
+                                                </children>
+                                             </HBox>
+                                             <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                                <children>
+                                                   <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Modèle de conversion" />
+                                                   <AbstractSelectionItem fx:id="conversionModelAbstractSelectItem" maxWidth="474.0" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" />
+                                                </children>
+                                             </HBox>
+                                                    <HBox alignment="CENTER" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" contentDisplay="CENTER" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Type de fichier">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="sourceHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire source">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <CustomDirectoryChooser fx:id="repertoireSource" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="sourceHBox1" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire destination">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <CustomDirectoryChooser fx:id="repertoireDestination" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="sourceHBox11" alignment="CENTER_LEFT" layoutX="20.0" layoutY="122.0" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire d'erreur">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <CustomDirectoryChooser fx:id="repertoireErreur" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="390.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Format du fichier de données" />
+                                                            <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                                                            <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                                            <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                                                            <CheckBox fx:id="withHeader" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Validation stricte des données ?" />
+                                                            <CheckBox fx:id="strictValidationCheckbox" disable="true" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox alignment="CENTER_RIGHT" spacing="10.0">
+                                                        <children>
+                                                            <CheckBox fx:id="active" minHeight="25.0" mnemonicParsing="false" nodeOrientation="RIGHT_TO_LEFT" prefHeight="25.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Activer" textFill="#5a5a5a">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </CheckBox>
+                                                        </children>
+                                                    </HBox>
+                                                </children>
+                                            </VBox>
+                                        </content>
+                                    </TitledPane>
+                                </children>
+                            </VBox>
+                            <padding>
+                                <Insets bottom="5.0" left="5.0" right="5.0" top="20.0" />
+                            </padding>
+                        </VBox>
+                     </content>
+                  </Tab>
+                  <Tab style="-fx-font-size: 14;" text="Plannification">
+                     <content>
+                        <VBox spacing="5.0" style="-fx-background-color: white;">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" prefHeight="146.0" prefWidth="943.0" text="Configuration de la plannification">
+                                 <content>
+                                    <VBox spacing="5.0">
+                                       <padding>
+                                          <Insets bottom="5.0" left="10.0" right="10.0" top="5.0" />
+                                       </padding>
+                                       <children>
+                                          <VBox spacing="10.0">
+                                             <children>
+                                                <HBox prefHeight="25.0" prefWidth="901.0" spacing="10.0" VBox.vgrow="ALWAYS">
+                                                   <children>
+                                                      <HBox prefHeight="31.0" prefWidth="260.0" spacing="10.0">
+                                                         <children>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <Label contentDisplay="CENTER" style="-fx-text-fill: black;" text="Heure" />
+                                                                  <TextField fx:id="heureTextField" minWidth="70.0" prefWidth="70.0" />
+                                                               </children>
+                                                            </HBox>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <Label style="-fx-text-fill: black;" text="Minute" />
+                                                                  <TextField fx:id="minuteTextField" minWidth="70.0" prefWidth="70.0" />
+                                                               </children>
+                                                            </HBox>
+                                                         </children>
+                                                      </HBox>
+                                                      <HBox alignment="CENTER_RIGHT" prefHeight="25.0" prefWidth="456.0" spacing="15.0" HBox.hgrow="ALWAYS">
+                                                         <children>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <CheckBox fx:id="withoutInterval" mnemonicParsing="false" nodeOrientation="RIGHT_TO_LEFT" prefHeight="16.0" prefWidth="185.0" style="-fx-text-fill: black;" text="Exécuter une seule fois" textFill="#5a5a5a" />
+                                                               </children>
+                                                            </HBox>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <Label prefHeight="15.0" prefWidth="228.0" style="-fx-text-fill: black;" text="Intervalle de répétition (en minutes)" />
+                                                                  <TextField fx:id="intervalleTache" minWidth="70.0" prefWidth="70.0" />
+                                                               </children>
+                                                            </HBox>
+                                                         </children>
+                                                      </HBox>
+                                                   </children>
+                                                </HBox>
+                                                <HBox VBox.vgrow="ALWAYS">
+                                                   <children>
+                                                      <GridPane hgap="15.0" vgap="5.0" HBox.hgrow="ALWAYS">
+                                                         <columnConstraints>
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                         </columnConstraints>
+                                                         <rowConstraints>
+                                                            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                                                            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                                                         </rowConstraints>
+                                                         <children>
+                                                            <CheckBox fx:id="lundiCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Lundi" textFill="#5a5a5a" />
+                                                            <CheckBox fx:id="mardiCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Mardi" textFill="#5a5a5a" GridPane.columnIndex="1" />
+                                                            <CheckBox fx:id="mercrediCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Mercredi" textFill="#5a5a5a" GridPane.columnIndex="2" />
+                                                            <CheckBox fx:id="jeudiCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Jeudi" textFill="#5a5a5a" GridPane.columnIndex="3" />
+                                                            <CheckBox fx:id="vendrediCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Vendredi" textFill="#5a5a5a" GridPane.rowIndex="1" />
+                                                            <CheckBox fx:id="samediCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Samedi" textFill="#5a5a5a" GridPane.columnIndex="1" GridPane.rowIndex="1" />
+                                                            <CheckBox fx:id="dimancheCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Dimanche" textFill="#5a5a5a" GridPane.columnIndex="2" GridPane.rowIndex="1" />
+                                                         </children>
+                                                      </GridPane>
+                                                   </children>
+                                                </HBox>
+                                             </children>
+                                          </VBox>
+                                       </children>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                  </Tab>
+                  <Tab style="-fx-font-size: 14;" text="Champs à tronquer">
+                     <content>
+                        <VBox spacing="15.0">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Informations sur les champs">
+                                 <content>
+                                    <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                       <children>
+                                          <HBox alignment="CENTER_RIGHT">
+                                             <children>
+                                                <CheckBox fx:id="saisieAlphaNumeriqueFieldChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../../../../../../generation-validateur-typefichier/src/main/resources/styles/style.css" text="Sélectionner les champs à tronquer" textFill="#5a5a5a" />
+                                             </children>
+                                          </HBox>
+                                          <AbstractNestedEntityTable fx:id="metaAlphaNumeriqueFieldAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                  </Tab>
+               </tabs>
+            </TabPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/TruncatedElementEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TruncatedElementEditForm.fxml
new file mode 100644
index 0000000..22c2841
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TruncatedElementEditForm.fxml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextArea?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="294.0" prefWidth="679.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConfigEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" prefHeight="254.0" prefWidth="619.0" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Informations sur l'élément tronqué">
+                    <content>
+                        <VBox prefHeight="225.0" prefWidth="492.0" spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" prefHeight="25.0" prefWidth="474.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefHeight="15.0" prefWidth="117.0" text="Code du type fichier" />
+                                        <TextField fx:id="codeTypeFichierTextfield" editable="false" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" style="-fx-background-radius: 0%;">
+                                            <HBox.margin>
+                                                <Insets />
+                                            </HBox.margin>
+                                        </TextField>
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Code de la colonne" />
+                                        <TextField fx:id="codeColonneTexfield" editable="false" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" style="-fx-background-radius: 0%;">
+                                            <HBox.margin>
+                                                <Insets />
+                                            </HBox.margin>
+                                        </TextField>
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" prefHeight="25.0" prefWidth="596.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Donnée initiale" />
+                              <TextArea fx:id="initialDataTextArea" minWidth="500.0" prefHeight="200.0" prefWidth="500.0" wrapText="true" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="116.0" spacing="5.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Donnée finale" />
+                              <TextArea fx:id="finalDataTextArea" minWidth="500.0" prefHeight="200.0" prefWidth="500.0" wrapText="true" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="155.0" spacing="5.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Chemin du fichier" />
+                              <TextField fx:id="fileNameTextfield" editable="false" minWidth="500.0" prefHeight="25.0" prefWidth="500.0" style="-fx-background-radius: 0%;">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </TextField>
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="200.0" spacing="5.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Date de l'action" />
+                              <TextField fx:id="dateActionTextfield" editable="false" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" style="-fx-background-radius: 0%;">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </TextField>
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml
new file mode 100644
index 0000000..79e0d0d
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="136.0" prefWidth="525.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.TxtFileToValidateEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <padding>
+                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="122.0" prefWidth="508.0" style="-fx-text-fill: #FFFFFF;" text="Informations sur le fichier">
+                    <content>
+                        <VBox prefHeight="91.0" prefWidth="364.0" spacing="10.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" prefHeight="28.0" prefWidth="454.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="92.0" prefHeight="25.0" prefWidth="92.0" style="-fx-text-fill: black;" text="Type du fichier" />
+                                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="375.0" prefHeight="25.0" prefWidth="375.0" />
+                                    </children>
+                           <padding>
+                              <Insets top="5.0" />
+                           </padding>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="92.0" prefHeight="25.0" prefWidth="92.0" style="-fx-text-fill: black;" text="Fichier à vérifier" />
+                              <CustomFileChooser fx:id="fileToValidate" minHeight="25.0" minWidth="375.0" prefHeight="25.0" prefWidth="375.0" />
+                                    </children>
+                                </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/TypeFichierEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TypeFichierEditForm.fxml
new file mode 100644
index 0000000..3cf4b1c
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/TypeFichierEditForm.fxml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="178.0" prefWidth="538.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.TypeFichierEditFormController">
+    <children>
+      <VBox alignment="CENTER" prefHeight="231.0" prefWidth="553.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+         </padding>
+         <children>
+            <TitledPane collapsible="false" prefHeight="240.0" prefWidth="620.0" text="Informations générales sur le type fichier">
+               <content>
+                  <VBox spacing="14.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="162.0" prefHeight="25.0" prefWidth="162.0" style="-fx-text-fill: black;" text="Code TypeFichier" />
+                              <TextField fx:id="codeTextField" minHeight="25.0" minWidth="291.0" prefHeight="25.0" prefWidth="291.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="162.0" prefHeight="25.0" prefWidth="162.0" style="-fx-text-fill: black;" text="Libellé" />
+                              <TextField fx:id="libelleTextField" minHeight="25.0" minWidth="291.0" prefHeight="25.0" prefWidth="291.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="162.0" prefHeight="25.0" prefWidth="162.0" style="-fx-text-fill: black;" text="Code Participant" />
+                              <TextField fx:id="codeParticipantTextField" minHeight="25.0" minWidth="291.0" prefHeight="25.0" prefWidth="291.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </TextField>
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                     </padding>
+                  </VBox>
+               </content>
+            </TitledPane>
+         </children>
+      </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurEditForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurEditForm.fxml
new file mode 100644
index 0000000..f23ce5e
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurEditForm.fxml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="232.0" prefWidth="562.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ValidateurEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <padding>
+                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="290.0" prefWidth="595.0" style="-fx-text-fill: #FFFFFF;" text="Informations sur le validateur à importer">
+                    <content>
+                        <VBox spacing="10.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Type du fichier" />
+                                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" style="-fx-background-color: #ffffff;" />
+                                    </children>
+                           <VBox.margin>
+                              <Insets top="5.0" />
+                           </VBox.margin>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Validateur à importer" />
+                              <CustomFileChooser fx:id="FileToImport" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" />
+                                    </children>
+                                </HBox>
+                        <HBox spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Fichier de validation protégé ?" />
+                              <CheckBox fx:id="protegeCheckBox" layoutX="235.0" layoutY="10.0" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </CheckBox>
+                           </children>
+                        </HBox>
+                        <HBox spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Clé de cryptage">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin></Label>
+                              <StackPane minHeight="25.0" minWidth="330.0" prefHeight="26.0" prefWidth="330.0">
+                                 <children>
+                                    <TextField fx:id="showKeyTextField" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" />
+                                    <PasswordField fx:id="keyToDecryptField" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" />
+                                    <ImageView fx:id="eyeImageView" fitHeight="15.0" fitWidth="15.0" onMousePressed="#eyeOnMousePressed" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER_RIGHT">
+                                       <image>
+                                          <Image url="@../../../../../images/oeil.png" />
+                                       </image>
+                                       <StackPane.margin>
+                                          <Insets right="5.0" />
+                                       </StackPane.margin>
+                                    </ImageView>
+                                 </children>
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </StackPane>
+                           </children>
+                        </HBox>
+                        <HBox layoutX="25.0" layoutY="121.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Confirmation de la clé" />
+                              <PasswordField fx:id="keyConfirmationField" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </PasswordField>
+                           </children>
+                        </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurListForm.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurListForm.fxml
new file mode 100644
index 0000000..e66feec
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/forms/ValidateurListForm.fxml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="600.0" minWidth="1000.0" prefHeight="600.0" prefWidth="993.0" style="-fx-border-color: #969696; -fx-border-width: 1; -fx-background-color: white;" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ValidateurListFormController">
+   <center>
+      <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="509.0" prefWidth="949.0" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="37.0" fitWidth="131.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="20.0" style="-fx-background-color: #44507; -fx-border-color: #E7E7E7; -fx-border-width: 2 2 2 2;" VBox.vgrow="ALWAYS">
+               <children>
+                  <TitledPane collapsible="false" text="Recherche">
+                     <content>
+                        <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+                           <right>
+                              <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+                                 <BorderPane.margin>
+                                    <Insets />
+                                 </BorderPane.margin>
+                                 <children>
+                                    <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="reset">
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Recherche avancées">
+                                       <font>
+                                          <Font name="Roboto" size="12.0" />
+                                       </font>
+                                    </CheckBox>
+                                 </children>
+                                 <padding>
+                                    <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                 </padding>
+                              </HBox>
+                           </right>
+                           <center>
+                              <VBox BorderPane.alignment="CENTER">
+                                 <children>
+                                    <VBox fx:id="normalSearchContainer" VBox.vgrow="ALWAYS">
+                                       <padding>
+                                          <Insets right="50.0" />
+                                       </padding>
+                                    </VBox>
+                                    <VBox fx:id="advancedSearchContainer" VBox.vgrow="ALWAYS">
+                                       <padding>
+                                          <Insets right="50.0" />
+                                       </padding>
+                                    </VBox>
+                                 </children>
+                              </VBox>
+                           </center>
+                        </BorderPane>
+                     </content>
+                  </TitledPane>
+                  <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" maxHeight="18.0" minHeight="18.0" prefHeight="30.0" spacing="5.0" style="-fx-background-color: #fff; -fx-border-width: 2 2  0 2; -fx-border-color: #D0D0D0;">
+                           <children>
+                              <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" maxHeight="15.0" minHeight="15.0" prefHeight="15.0">
+                                 <children>
+                                    <Button fx:id="btnAdd" maxHeight="15.0" minHeight="15.0" mnemonicParsing="false" onAction="#onAddDialog" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-add" textFill="#ebf0ee">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnEdit" maxHeight="15.0" minHeight="15.0" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-edit" textFill="#f2eded">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnPrint" maxHeight="15.0" minHeight="15.0" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-print" textFill="#f2eded">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnDelete" maxHeight="15.0" minHeight="15.0" mnemonicParsing="false" onAction="#removeElement" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-delete" textFill="#f2eded">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                 </children>
+                              </HBox>
+                              <HBox prefHeight="25.0" prefWidth="1149.0" />
+                              <HBox alignment="CENTER_RIGHT" maxHeight="15.0" minHeight="15.0" prefHeight="15.0" prefWidth="650.0" spacing="5.0" style="-fx-background-color: #fff;">
+                                 <children>
+                                    <Button fx:id="btnPrintValidator" alignment="BOTTOM_RIGHT" contentDisplay="CENTER" maxHeight="18.0" minHeight="18.0" mnemonicParsing="false" style="-fx-background-color: #fff;" styleClass="main-btn-export">
+                                       <HBox.margin>
+                                          <Insets />
+                                       </HBox.margin>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Label fx:id="btnPrintValidatorLabel" text="Exporter" />
+                                 </children>
+                                 <HBox.margin>
+                                    <Insets right="5.0" />
+                                 </HBox.margin>
+                              </HBox>
+                           </children>
+                           <opaqueInsets>
+                              <Insets />
+                           </opaqueInsets>
+                           <VBox.margin>
+                              <Insets top="5.0" />
+                           </VBox.margin>
+                        </HBox>
+                        <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-border-color: #9B9798;" VBox.vgrow="ALWAYS">
+                           <children>
+                              <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+                                 <columnResizePolicy>
+                                    <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                 </columnResizePolicy>
+                              </TableView>
+                              <HBox alignment="CENTER_RIGHT" spacing="5.0" style="-fx-background-color: #D1D2D4; -fx-border-color: #9B9798; -fx-border-width: 1 0 0 0;">
+                                 <children>
+                                    <HBox alignment="CENTER" spacing="2.0">
+                                       <children>
+                                          <HBox alignment="CENTER" spacing="5.0">
+                                             <children>
+                                                <Button fx:id="btnPrevious" mnemonicParsing="false" style="-fx-background-color: transparent; -fx-padding: 1;">
+                                                   <graphic>
+                                                      <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                                                         <image>
+                                                            <Image url="@../../../../../images/previous-img.png" />
+                                                         </image>
+                                                      </ImageView>
+                                                   </graphic>
+                                                   <cursor>
+                                                      <Cursor fx:constant="HAND" />
+                                                   </cursor>
+                                                </Button>
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER" spacing="5.0">
+                                             <children>
+                                                <Button fx:id="btnNext" mnemonicParsing="false" style="-fx-background-color: transparent; -fx-padding: 1;">
+                                                   <graphic>
+                                                      <ImageView fitHeight="15.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                                         <image>
+                                                            <Image url="@../../../../../images/next-img.png" />
+                                                         </image>
+                                                      </ImageView>
+                                                   </graphic>
+                                                   <cursor>
+                                                      <Cursor fx:constant="HAND" />
+                                                   </cursor>
+                                                </Button>
+                                             </children>
+                                          </HBox>
+                                       </children>
+                                    </HBox>
+                                    <Label fx:id="paginationNumberInfo" text="(0/0)" textFill="#636466">
+                                       <font>
+                                          <Font name="Roboto" size="12.0" />
+                                       </font>
+                                    </Label>
+                                 </children>
+                                 <padding>
+                                    <Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
+                                 </padding>
+                              </HBox>
+                           </children>
+                        </VBox>
+                     </children>
+                  </VBox>
+               </children>
+               <padding>
+                  <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+               </padding>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+            </VBox>
+         </children>
+      </VBox>
+   </center>
+   <top>
+      <HBox onMouseDragged="#titleBarMouseDragged" onMousePressed="#titleBarMousePressed" spacing="20.0" styleClass="title-bar" BorderPane.alignment="CENTER_LEFT">
+         <children>
+            <HBox alignment="CENTER_LEFT">
+               <padding>
+                  <Insets left="5.0" />
+               </padding></HBox>
+            <Text fx:id="title" fill="WHITE" stroke="WHITE" strokeType="INSIDE" strokeWidth="0.0" text="Titre de la fenêtre" textAlignment="CENTER">
+               <font>
+                  <Font name="System Bold" size="16.0" />
+               </font>
+               <HBox.margin>
+                  <Insets bottom="2.0" top="2.0" />
+               </HBox.margin>
+            </Text>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" spacing="20.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#maximize" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/max_icon.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+                  <Button layoutX="786.0" layoutY="15.0" mnemonicParsing="false" onAction="#close" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/custom_close_icon.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets bottom="1.5" left="1.5" right="10.0" top="1.5" />
+         </padding>
+      </HBox>
+   </top>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-main-style.css" />
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureFormView.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureFormView.fxml
new file mode 100644
index 0000000..fba5919
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureFormView.fxml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.ScrollPane?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<AnchorPane prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <VBox AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar">
+               <children>
+                  <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+                     <children>
+                        <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Ajout d'une structure JSON">
+                           <font>
+                              <Font name="Arial" size="15.0" />
+                           </font>
+                        </Text>
+                     </children>
+                     <padding>
+                        <Insets left="20.0" />
+                     </padding>
+                  </HBox>
+                  <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+                     <children>
+                        <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                           <graphic>
+                              <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                                 <image>
+                                    <Image url="@../../../../../images/reduire.png" />
+                                 </image>
+                              </ImageView>
+                           </graphic>
+                        </Button>
+                        <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                           <graphic>
+                              <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                                 <image>
+                                    <Image url="@../../../../../images/agrandir.png" />
+                                 </image>
+                              </ImageView>
+                           </graphic>
+                        </Button>
+                        <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                           <graphic>
+                              <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                                 <image>
+                                    <Image url="@../../../../../images/fermer.png" />
+                                 </image>
+                                 <cursor>
+                                    <Cursor fx:constant="HAND" />
+                                 </cursor>
+                              </ImageView>
+                           </graphic>
+                        </Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="10.0" VBox.vgrow="ALWAYS">
+               <children>
+                  <HBox alignment="CENTER_LEFT" style="-fx-background-color: transparent;" styleClass="banner">
+                     <children>
+                        <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                           </image>
+                        </ImageView>
+                     </children>
+                  </HBox>
+                  <TitledPane collapsible="false" maxHeight="1.7976931348623157E308" style="-fx-text-fill: #FFFFFF;" text="Informations sur le validateur à importer" VBox.vgrow="ALWAYS">
+                     <content>
+                        <VBox spacing="20.0">
+                           <children>
+                              <VBox spacing="10.0">
+                                 <children>
+                                    <Label text="Type fichier" />
+                                    <AbstractSelectionItem fx:id="typeFichierField" maxWidth="260.0" prefWidth="260.0" />
+                                 </children>
+                              </VBox>
+                              <VBox spacing="15.0" VBox.vgrow="ALWAYS">
+                                 <children>
+                                    <Label text="Structure JSON" />
+                                    <ScrollPane VBox.vgrow="ALWAYS">
+                                       <content>
+                                          <VBox fx:id="mainContainer" maxWidth="1.7976931348623157E308" minWidth="200.0" prefHeight="318.0" prefWidth="922.0" />
+                                       </content>
+                                    </ScrollPane>
+                                 </children>
+                              </VBox>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="15.0" right="15.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                  </TitledPane>
+                  <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" spacing="5.0">
+                     <children>
+                        <Button fx:id="cancelButton" mnemonicParsing="false" onAction="#close" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #949599; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+                           <font>
+                              <Font name="System Bold" size="12.0" />
+                           </font>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </Button>
+                        <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #869447; -fx-background-radius: 0;" text="Enregistrer" textFill="WHITE">
+                           <font>
+                              <Font name="System Bold" size="12.0" />
+                           </font>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="10.0" left="20.0" right="20.0" top="10.0" />
+               </padding>
+            </VBox>
+         </children>
+         <stylesheets>
+            <URL value="@../../../../../styles/custom-title-bar.css" />
+            <URL value="@../../../../../styles/custom-main-style.css" />
+            <URL value="@../../../../../styles/CustomFormComponents.css" />
+         </stylesheets>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureTableView.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureTableView.fxml
new file mode 100644
index 0000000..27e5baf
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/views/JsonStructureTableView.fxml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="500.0" minWidth="700.0" prefHeight="569.0" prefWidth="982.0" style="-fx-border-color: #969696; -fx-border-width: 1;" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.views.JsonStructureTableViewController">
+   <center>
+      <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="12.0" style="-fx-background-color: #44507;" VBox.vgrow="ALWAYS">
+               <children>
+                  <VBox prefHeight="200.0" prefWidth="100.0" spacing="12.0" style="-fx-border-color: #D6D6D6; -fx-border-width: 1.5;" VBox.vgrow="ALWAYS">
+                     <children>
+                        <TitledPane collapsible="false" prefHeight="61.0" prefWidth="1223.0" text="Recherche">
+                           <content>
+                              <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+                                 <right>
+                                    <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+                                       <BorderPane.margin>
+                                          <Insets />
+                                       </BorderPane.margin>
+                                       <children>
+                                          <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="reset">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Recherche avancées">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </CheckBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </right>
+                                 <center>
+                                    <VBox BorderPane.alignment="CENTER">
+                                       <children>
+                                          <VBox fx:id="normalSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                          <VBox fx:id="advancedSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                       </children>
+                                       <BorderPane.margin>
+                                          <Insets top="5.0" />
+                                       </BorderPane.margin>
+                                    </VBox>
+                                 </center>
+                              </BorderPane>
+                           </content>
+                        </TitledPane>
+                        <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+                           <children>
+                              <HBox alignment="CENTER_LEFT" spacing="2.0">
+                                 <children>
+                                    <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" spacing="2.0">
+                                       <children>
+                                          <Button fx:id="btnAdd" mnemonicParsing="false" styleClass="main-btn-add" textFill="#ebf0ee">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnEdit" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" styleClass="main-btn-edit" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnDelete" mnemonicParsing="false" styleClass="main-btn-delete" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                       </children>
+                                    </HBox>
+                                 </children>
+                                 <opaqueInsets>
+                                    <Insets />
+                                 </opaqueInsets>
+                              </HBox>
+                              <VBox prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS">
+                                 <children>
+                                    <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+                                       <columnResizePolicy>
+                                          <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                       </columnResizePolicy>
+                                    </TableView>
+                                    <HBox alignment="CENTER_LEFT" spacing="15.0" style="-fx-background-color: #CECECE;">
+                                       <children>
+                                          <HBox alignment="CENTER" spacing="2.0">
+                                             <children>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Label text="précédent">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                      <Button fx:id="btnPrevious" mnemonicParsing="false" styleClass="previous-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor>
+                                                      </Button>
+                                                   </children>
+                                                </HBox>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Button fx:id="btnNext" mnemonicParsing="false" styleClass="next-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor>
+                                                      </Button>
+                                                      <Label text="suivant">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                   </children>
+                                                </HBox>
+                                             </children>
+                                          </HBox>
+                                          <Label fx:id="paginationNumberInfo" text="(200/400)">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </Label>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                           </children>
+                        </VBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="12.0" left="12.0" right="12.0" top="12.0" />
+                     </padding>
+                  </VBox>
+                  <HBox alignment="CENTER_RIGHT">
+                     <children>
+                        <Button mnemonicParsing="false" onAction="#close" style="-fx-background-color: #CACACA; -fx-border-color: #A8A8A8;" text="Quitter">
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="12.0" left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </VBox>
+         </children>
+      </VBox>
+   </center>
+   <top>
+      <HBox alignment="CENTER" onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Types de fichier au format JSON">
+                     <font>
+                        <Font name="Roboto" size="15.0" />
+                     </font>
+                  </Text>
+               </children>
+               <padding>
+                  <Insets left="30.0" />
+               </padding>
+            </HBox>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/fermer.png" />
+                           </image>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+         </padding>
+      </HBox>
+   </top>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-main-style.css" />
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/src/main/resources/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml b/fdx_convert/src/main/resources/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml
new file mode 100644
index 0000000..62f6cf2
--- /dev/null
+++ b/fdx_convert/src/main/resources/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <VBox fx:id="mainContainer" layoutX="10.0" layoutY="10.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox fx:id="formFieldContainer" alignment="CENTER_LEFT" spacing="5.0">
+               <children>
+                  <Label fx:id="squareBracketLeft" text="[">
+                     <font>
+                        <Font size="24.0" />
+                     </font>
+                  </Label>
+                  <HBox fx:id="fieldContainer" spacing="5.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Nom" />
+                              <TextField fx:id="nameField" maxWidth="120.0" prefWidth="120.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Type" />
+                              <ComboBox fx:id="typeField" maxWidth="120.0" prefWidth="120.0" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="formatFieldContainer" alignment="CENTER_LEFT" layoutX="200.0" layoutY="10.0" spacing="5.0">
+                           <children>
+                              <Label text="Format" />
+                              <ComboBox fx:id="formatField" maxWidth="110.0" prefWidth="110.0" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="delimitorFieldContainer" alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Délimiteur" />
+                              <ComboBox fx:id="delimitorField" maxWidth="110.0" prefWidth="110.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Taille" />
+                              <TextField fx:id="tailleField" maxWidth="45.0" prefWidth="45.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <CheckBox fx:id="requiredField" mnemonicParsing="false" text="Obligatoire" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <CheckBox fx:id="collectionField" mnemonicParsing="false" text="Liste" />
+                           </children>
+                        </HBox>
+                     </children>
+                  </HBox>
+                  <Label fx:id="squareBracketRight" text="]">
+                     <font>
+                        <Font size="24.0" />
+                     </font>
+                  </Label>
+               </children>
+            </HBox>
+            <VBox fx:id="objectContainer" VBox.vgrow="ALWAYS">
+               <children>
+                  <HBox alignment="CENTER_LEFT" spacing="5.0">
+                     <children>
+                        <HBox fx:id="objectContainerleft" alignment="CENTER_LEFT">
+                           <children>
+                              <Label fx:id="objectSquareBracketLeft" text="[">
+                                 <font>
+                                    <Font size="24.0" />
+                                 </font>
+                              </Label>
+                              <Label text="{">
+                                 <font>
+                                    <Font size="24.0" />
+                                 </font>
+                              </Label>
+                           </children>
+                        </HBox>
+                        <Button fx:id="addButton" mnemonicParsing="false" text="+" />
+                     </children>
+                  </HBox>
+                  <VBox fx:id="nestedContainer" spacing="5.0" VBox.vgrow="ALWAYS">
+                     <padding>
+                        <Insets bottom="5.0" left="10.0" right="5.0" top="5.0" />
+                     </padding>
+                  </VBox>
+                  <HBox fx:id="objectContainerRight" alignment="CENTER_LEFT">
+                     <children>
+                        <Label text="}">
+                           <font>
+                              <Font size="24.0" />
+                           </font>
+                        </Label>
+                        <Label fx:id="objectSquareBracketRight" text="]">
+                           <font>
+                              <Font size="24.0" />
+                           </font>
+                        </Label>
+                     </children>
+                  </HBox>
+               </children>
+            </VBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/src/main/resources/log4j.properties b/fdx_convert/src/main/resources/log4j.properties
new file mode 100644
index 0000000..aae8ee9
--- /dev/null
+++ b/fdx_convert/src/main/resources/log4j.properties
@@ -0,0 +1,11 @@
+# Root logger option 
+log4j.rootLogger=INFO, file
+
+log4j.appender.file=org.apache.log4j.RollingFileAppender
+log4j.appender.file.File=fdx-convert.log
+log4j.appender.file.MaxFileSize=10GB
+log4j.appender.file.MaxBackupIndex=5
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
+
+log4j.logger.org.hibernate=FATAL 
\ No newline at end of file
diff --git a/fdx_convert/src/main/resources/predicatelogic-engine.xml b/fdx_convert/src/main/resources/predicatelogic-engine.xml
new file mode 100644
index 0000000..6b516de
--- /dev/null
+++ b/fdx_convert/src/main/resources/predicatelogic-engine.xml
@@ -0,0 +1,1701 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<predicate-engine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                  xsi:schemaLocation="http://www.leadware.net/predicatelogic-engine ../xsd/predicatelogic-engine.xsd"
+                  xmlns="http://www.leadware.net/predicatelogic-engine">
+
+    <!-- Définition des connecteurs -->
+    <connectors>
+
+        <connector name="not">
+            <invoke method="not"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="notParam" type="Boolean" />
+        </connector>
+
+        <connector name="or">
+            <invoke method="or"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="orParam1" type="Boolean" />
+            <param name="orParam2" type="Boolean" />
+        </connector>
+
+        <connector name="and">
+            <invoke method="and"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="andParam1" type="Boolean" />
+            <param name="andParam2" type="Boolean" />
+        </connector>
+
+        <connector name="implies">
+            <invoke method="implies"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="impliesAssumption" type="Boolean" />
+            <param name="impliesConclusion" type="Boolean" />
+        </connector>
+
+    </connectors>
+
+    <!-- Définition des prédicats -->
+    <predicates>
+        <predicate name="inValues">
+            <invoke  method="inValues" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="values" type="String"/>
+            <param name="fieldToCheck" type="String" />
+        </predicate>
+             
+        <predicate name="ifTypeFichier">
+            <invoke  method="ifTypeFichier" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="index" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param name="taillePartieDecimale" type="String"/>
+            <param name="separateurDecimal" type="String"/>
+        </predicate>
+        
+        <predicate name="ifTypeFichierExcel">
+            <invoke  method="ifTypeFichierExcel" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="position" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="nbreColonnes" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="java.util.Map"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param name="separateurDecimal" type="String"/>
+            <param name="taillePartieDecimale" type="int"/>
+        </predicate>
+        
+        <predicate name="ifTypeFichierFileName">
+            <invoke  method="ifTypeFichierFileName" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="prefixe" type="String"/>
+            <param name="type_suffixe" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="fileName" type="String"/>
+        </predicate>
+        
+        <predicate name="ifVersion">
+            <invoke  method="ifVersion" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="version" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+        </predicate>
+        
+        <predicate name="ifCodeRemise">
+            <invoke  method="ifCodeRemise" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="codeRemise" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+        </predicate>
+        
+        <predicate name="ifNumber">
+            <invoke  method="ifNumber" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="nbFiles" type="String"/>
+        </predicate>
+        
+        <predicate name="ifDate">
+            <invoke  method="ifDate" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="date" type="String"/>
+            <param name="format" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="fileName" type="String" />
+        </predicate>
+        
+        <predicate name="ifCodeAgentOrCodeParticipant">
+            <invoke  method="ifCodeAgentOrCodeParticipant" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="code" type="String"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+        </predicate>
+        
+        <predicate name="ifTierce">
+            <invoke  method="ifTierce" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="minValue" type="int" />
+            <param-value name="maxValue" type="int" />
+        </predicate>
+        
+        <predicate name="ifDecimal">
+            <invoke  method="ifDecimal" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+            <param-value name="typeDonnee" type="String" />
+            <param name="ligne" type="String"/>
+            <param-value name="decimalPartMaxLength" type="int" />
+            <param-value name="separator" type="char"/>
+        </predicate>
+        
+        <predicate name="equal">
+            <invoke method="equal" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="equalParam" type="Object" />
+            <param name="equalValue" type="Object" />
+        </predicate>
+         
+        <predicate name="empty">
+            <invoke method="empty"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="emptyParam" type="Object" />
+            
+        </predicate>
+        <predicate name="equal">
+            <invoke method="equal"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="equalParam" type="Object" />
+            <param name="equalValue" type="Object" />
+        </predicate>
+
+        <predicate name="empty">
+            <invoke method="empty"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="emptyParam" type="Object" />
+        </predicate>
+
+        <predicate name="notEmptyValues">
+            <invoke method="notEmptyValues"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="notEmptyValuesParam" type="Collection" />
+        </predicate>
+
+        <predicate name="emptyValues">
+            <invoke method="emptyValues"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="emptyValuesParam" type="Collection" />
+        </predicate>
+
+        <predicate name="propertyReferenceEntry">
+            <invoke method="propertyReferenceEntry"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entityName" type="String" />
+            <param name="propertyName" type="String" />
+            <param name="propertyValue" type="Object" />
+        </predicate>
+
+        <predicate name="propertiesReferenceEntry">
+            <invoke method="propertiesReferenceEntry"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+        </predicate>
+
+        <predicate name="dateFormat">
+            <invoke method="dateFormat"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="dateValue" type="String" />
+            <param name="dateFormat" type="String" />
+        </predicate>
+
+        <predicate name="csvEntry">
+            <invoke method="csvEntry"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entryValue" type="String" />
+            <param name="csvValues" type="String" />
+        </predicate>
+
+        <predicate name="singleton">
+            <invoke method="singleton"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+        </predicate>
+
+        <predicate name="singletonValue">
+            <invoke method="singletonValue"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="singletonValue" type="Object" />
+        </predicate>
+
+        <predicate name="singleOccurenceValue">
+            <invoke method="singleOccurenceValue"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="occurenceValue" type="Object" />
+        </predicate>
+
+        <predicate name="singleOccurenceValueByGroup">
+            <invoke method="singleOccurenceValueByGroup"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="csvGroupPropertiesNames" type="String" />
+            <param name="occurenceEntity" type="Object" />
+            <param name="occurenceValue" type="Object" />
+        </predicate>
+
+        <predicate name="sum">
+            <invoke method="sum"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="sumValue" type="java.math.BigDecimal" />
+        </predicate>
+
+        <predicate name="size">
+            <invoke method="size"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="sizeValue" type="java.math.BigDecimal" />
+        </predicate>
+
+        <predicate name="greater">
+            <invoke method="greater"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="greaterValue" type="Object" />
+            <param name="greaterLimit" type="Object" />
+        </predicate>
+
+        <predicate name="lower">
+            <invoke method="lower"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="lowerValue" type="Object" />
+            <param name="lowerLimit" type="Object" />
+        </predicate>
+
+        <predicate name="ribChecker">
+            <invoke method="ribChecker"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="ribValue" type="String" />
+        </predicate>
+
+        <predicate name="systacCountryExist">
+            <invoke  method="systacCountryExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="countryCode" type="String"/>
+        </predicate>
+
+        <predicate name="posteComptableExist">
+            <invoke  method="posteComptableExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codePosteComptable" type="String"/>
+        </predicate>
+                
+        <predicate name="systacBankExist">
+            <invoke  method="systacBankExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="bankCode" type="String"/>
+        </predicate>
+
+        <predicate name="systacAgencyExist">
+            <invoke  method="systacAgencyExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="agencyCode" type="String"/>
+        </predicate>
+                
+        <predicate name="systacAgencyBankExist">
+            <invoke  method="systacAgencyBankExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="bankCode" type="String"/>
+            <param name="agencyCode" type="String"/>
+        </predicate>		
+		
+        <predicate name="sygmaParticipantCodeBicExist">
+            <invoke  method="sygmaParticipantCodeBicExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBicParticipant" type="String"/>
+        </predicate>
+
+        <predicate name="sygmaParticipantCodeBicWithPropertiesExist">
+            <invoke  method="sygmaParticipantCodeBicWithPropertiesExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBicParticipant" type="String"/>
+            <param name="properties" type="Map"/>
+        </predicate>
+
+        <predicate name="sygmaParticipantNumeroCompteExist">
+            <invoke  method="sygmaParticipantNumeroCompteExist" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroCompteParticipant" type="String"/>
+        </predicate>
+
+        <predicate name="sygmaParticipantNumeroCompteWithPropertiesExist">
+            <invoke  method="sygmaParticipantNumeroCompteWithPropertiesExist" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroCompteParticipant" type="String"/>
+            <param name="properties" type="Map"/>
+        </predicate>
+
+        <predicate name="ifReplayQueueInDataExist">
+            <invoke  method="ifReplayQueueInDataExist" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroReference" type="String"/>
+            <param name="numeroBordereauVirement" type="String"/>
+            <param name="codeEnregistrement"   type="String"/>
+            <param name="codeValeur"  type="String"/>
+        </predicate>
+				 
+        <predicate name="ifMt103001Message">
+            <invoke  method="ifMt103001Message" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeTypeMessage" type="String"/>
+            <param name="codeTypeTransaction" type="String"/>
+        </predicate>
+                 
+        <predicate name="ifAdmin">
+            <invoke  method="ifAdmin" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="loginValue" type="String"/>
+            <param name="passwordValue" type="String"/>
+        </predicate>
+                 
+        <predicate name="ifReplayQueueInDataExistSystac">
+            <invoke  method="ifReplayQueueInDataExistSystac" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroOperation" type="String"/>
+            <param name="datePresentation" type="String"/>
+            <param name="codeValeur"  type="String"/>
+            <param name="codeEnregistrement"   type="String"/>                       
+        </predicate>
+                 
+        <predicate name="ifReplayQueueInDataExistSygma">
+            <invoke  method="ifReplayQueueInDataExistSygma" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeReference" type="String"/>
+            <param name="datePresentation" type="String"/>                                              
+        </predicate>    
+                 
+        <predicate name="ifBankIsNotInBlackList">
+            <invoke  method="ifBankIsNotInBlackList" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBanqueDestinataire" type="String"/>
+        </predicate>
+                 
+        <predicate name="ifParticipantIsNotInBlackList">
+            <invoke  method="ifParticipantIsNotInBlackList" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBicDestinataireSygma" type="String"/>
+        </predicate>      
+                 
+        <predicate name="checkReconciliationItemExistence">
+            <invoke  method="checkReconciliationItemExistence" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroReference" type="String"/>
+            <param name="montant" type="String"/>
+            <param name="datePresentation"   type="String"/>                        
+        </predicate>  
+                
+        <predicate name="queueInAnnulationCalendarValidation">
+            <invoke method="queueInAnnulationCalendarValidation"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+        </predicate>
+        <predicate name="uniqueCodeSystem">
+            <invoke  method="uniqueCodeSystem" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeSystem" type="String"/>
+        </predicate>
+        <predicate name="justOneOperation">
+            <invoke  method="justOneOperation" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroBonVirement" type="String"/>
+        </predicate>
+    </predicates>
+
+    <!-- Définition des assertions : ce sont des compositions de connecteurs, 
+    predicats et d'autres assertions -->
+    <asserts>
+        <assert name="inValues">
+            <param name="values" type="String"/>
+            <param-value name="fieldToCheck" type="String" />
+            <formula predicate-ref="inValues">
+                <param name="values" assert-param-ref="values" />
+                <param name="fieldToCheck" assert-param-ref="fieldToCheck" />
+            </formula>
+        </assert>
+            
+        <assert name="ifTypeFichier">
+            <param name="index" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param-value name="taillePartieDecimale" type="int" />
+            <param-value name="separateurDecimal" type="String"/>
+            <formula predicate-ref="ifTypeFichier">
+                <param name="index" assert-param-ref="index" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="typeDonnee" assert-param-ref="typeDonnee" />
+                <param name="ligne" assert-param-ref="ligne" />
+                <param name="formatDate" assert-param-ref="formatDate" />
+                <param name="separateurDate" assert-param-ref="separateurDate" />
+                <param name="taillePartieDecimale" assert-param-ref="taillePartieDecimale" />
+                <param name="separateurDecimal" assert-param-ref="separateurDecimal" />
+                    
+            </formula>
+        </assert>
+        <assert name="ifTypeFichierExcel">
+            <param name="position" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="nbreColonnes" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="java.util.Map"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param name="separateurDecimal" type="char"/>
+            <param name="taillePartieDecimale" type="int"/>
+            <formula predicate-ref="ifTypeFichierExcel">
+                <param name="position" assert-param-ref="position" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="nbreColonnes" assert-param-ref="nbreColonnes" />
+                <param name="typeDonnee" assert-param-ref="typeDonnee" />
+                <param name="ligne" assert-param-ref="ligne" />
+                <param name="formatDate" assert-param-ref="formatDate" />
+                <param name="separateurDate" assert-param-ref="separateurDate" />
+                <param name="separateurDecimal" assert-param-ref="separateurDecimal" />
+                <param name="taillePartieDecimale" assert-param-ref="taillePartieDecimale" />
+                    
+            </formula>
+        </assert>
+            
+        <assert name="ifTypeFichierFileName">
+            <param name="prefixe" type="String"/>
+            <param name="type_suffixe" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="fileName" type="String"/>
+            <formula predicate-ref="ifTypeFichierFileName">
+                <param name="prefixe" assert-param-ref="prefixe" />
+                <param name="type_suffixe" assert-param-ref="type_suffixe" />
+                <param name="formatDate" assert-param-ref="formatDate" />
+                <param name="fileName" assert-param-ref="fileName" />
+            </formula>
+        </assert>
+            
+        <assert name="ifVersion">
+            <param name="version" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+            <formula predicate-ref="ifVersion">
+                <param name="version" assert-param-ref="version" />
+                <param name="nbPosition" assert-param-ref="nbPosition" />
+                <param name="typeCharactere" assert-param-ref="typeCharactere" />
+            </formula>
+        </assert>
+                
+        <assert name="ifCodeRemise">
+            <param name="codeRemise" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+            <formula predicate-ref="ifCodeRemise">
+                <param name="codeRemise" assert-param-ref="codeRemise" />
+                <param name="nbPosition" assert-param-ref="nbPosition" />
+                <param name="typeCharactere" assert-param-ref="typeCharactere" />
+            </formula>
+        </assert>
+                
+        <assert name="ifNumber">
+            <param name="nbFiles" type="String"/>
+            <formula predicate-ref="ifNumber">
+                <param name="nbFiles" assert-param-ref="nbFiles" />
+            </formula>
+        </assert>
+                
+                
+        <assert name="ifDate">
+            <param name="date" type="String"/>
+            <param name="format" type="String"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <formula predicate-ref="ifDate">
+                <param name="date" assert-param-ref="date" />
+                <param name="format" assert-param-ref="format" />
+                <param name="index" assert-param-ref="index" />
+                <param name="fileName" assert-param-ref="fileName" />
+            </formula>
+        </assert>
+                
+        <assert name="ifCodeAgentOrCodeParticipant">
+            <param name="code" type="String"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+            <formula predicate-ref="ifCodeAgentOrCodeParticipant">
+                <param name="code" assert-param-ref="code" />
+                <param name="fileName" assert-param-ref="fileName" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="index" assert-param-ref="index" />
+            </formula>
+        </assert>
+
+         
+        <assert name="ifTierce">
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="minValue" type="int" />
+            <param-value name="maxValue" type="int" />
+            <formula predicate-ref="ifTierce">
+                <param name="fileName" assert-param-ref="fileName" />
+                <param name="minValue" assert-param-ref="minValue" />
+                <param name="maxValue" assert-param-ref="maxValue" />
+                <param name="index" assert-param-ref="index" />
+            </formula>
+        </assert>
+              
+        <assert name="ifDecimal">
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+            <param-value name="typeDonnee" value="String" />
+            <param name="ligne" type="String"/>
+            <param-value name="decimalPartMaxLength" type="int" />
+            <param-value name="separator" type="char" />
+            <formula predicate-ref="ifDecimal">
+                <param name="index" assert-param-ref="index" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="typeDonnee" assert-param-ref="typeDonnee" />
+                <param name="ligne" assert-param-ref="ligne"/>
+                <param name="decimalPartMaxLength" assert-param-ref="decimalPartMaxLength" />
+                <param name="separator" assert-param-ref="separator" />
+            </formula>
+        </assert>
+              
+        <assert name="equal">
+            <param name="equalValue" type="Object" />
+            <param name="equalParam" type="Object" />
+            <formula predicate-ref="equal">
+                <param name="equalValue" assert-param-ref="equalValue" />
+                <param name="equalParam" assert-param-ref="equalParam" />
+            </formula>
+        </assert>
+
+        <assert name="empty">
+            <param name="emptyParam" type="Object" />
+            <formula predicate-ref="empty">
+                <param name="emptyParam" assert-param-ref="emptyParam" />
+            </formula>
+        </assert>
+
+        <!-- Est vrai si toutes les valeurs sont non vides -->
+        <assert name="notEmptyValues">
+            <param name="notEmptyValuesParam" type="Object" />
+            <formula predicate-ref="notEmptyValues">
+                <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParam" />
+            </formula>
+        </assert>
+
+        <!-- Est vrai si toutes les valeurs sont vides -->
+        <assert name="emptyValues">
+            <param name="emptyValuesParam" type="Object" />
+            <formula predicate-ref="emptyValues">
+                <param name="emptyValuesParam" assert-param-ref="emptyValuesParam" />
+            </formula>
+        </assert>
+
+        <assert name="propertyReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="propertyName" type="String" />
+            <param name="propertyValue" type="Object" />
+            <formula predicate-ref="propertyReferenceEntry">
+                <param name="entityName" assert-param-ref="entityName" />
+                <param name="propertyName" assert-param-ref="propertyName" />
+                <param name="propertyValue" assert-param-ref="propertyValue" />
+            </formula>
+        </assert>
+
+        <assert name="propertiesReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="propertiesReferenceEntry">
+                <param name="entityName" assert-param-ref="entityName" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert>
+
+        <assert name="dateFormat">
+            <param name="dateValue" type="String" />
+            <param name="dateFormat" type="String" />
+            <formula predicate-ref="dateFormat">
+                <param name="dateValue" assert-param-ref="dateValue" />
+                <param name="dateFormat" assert-param-ref="dateFormat" />
+            </formula>
+        </assert>
+
+        <assert name="csvEntry">
+            <param name="entryValue" type="String" />
+            <param name="csvValues" type="String" />
+            <formula predicate-ref="csvEntry">
+                <param name="entryValue" assert-param-ref="entryValue" />
+                <param name="csvValues" assert-param-ref="csvValues" />
+            </formula>
+        </assert>
+
+        <assert name="singleton">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <formula predicate-ref="singleton">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+            </formula>
+        </assert>
+
+        <assert name="singletonValue">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="singletonValue" type="Object" />
+            <formula predicate-ref="singletonValue">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="singletonValue" assert-param-ref="singletonValue" />
+            </formula>
+        </assert>
+
+        <assert name="singleOccurenceValue">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="occurenceValue" type="Object" />
+            <formula predicate-ref="singleOccurenceValue">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="occurenceValue" assert-param-ref="occurenceValue" />
+            </formula>
+        </assert>
+
+        <assert name="singleOccurenceValueByGroup">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="csvGroupPropertiesNames" type="String" />
+            <param name="occurenceEntity" type="Object" />
+            <param name="occurenceValue" type="Object" />
+            <formula predicate-ref="singleOccurenceValueByGroup">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="csvGroupPropertiesNames" assert-param-ref="csvGroupPropertiesNames" />
+                <param name="occurenceEntity" assert-param-ref="occurenceEntity" />
+                <param name="occurenceValue" assert-param-ref="occurenceValue" />
+            </formula>
+        </assert>
+
+        <assert name="sum">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="sumValue" type="java.math.BigDecimal" />
+            <formula predicate-ref="sum">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="sumValue" assert-param-ref="sumValue" />
+            </formula>
+        </assert>
+
+        <assert name="size">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="sizeValue" type="java.math.BigDecimal" />
+            <formula predicate-ref="size">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="sizeValue" assert-param-ref="sizeValue" />
+            </formula>
+        </assert>
+
+        <assert name="greater">
+            <param name="greaterValue" type="Object" />
+            <param name="greaterLimit" type="Object" />
+            <formula predicate-ref="greater">
+                <param name="greaterValue" assert-param-ref="greaterValue" />
+                <param name="greaterLimit" assert-param-ref="greaterLimit" />
+            </formula>
+        </assert>
+
+        <assert name="lower">
+            <param name="lowerValue" type="Object" />
+            <param name="lowerLimit" type="Object" />
+            <formula predicate-ref="lower">
+                <param name="lowerValue" assert-param-ref="lowerValue" />
+                <param name="lowerLimit" assert-param-ref="lowerLimit" />
+            </formula>
+        </assert>
+
+        <assert name="ribChecker">
+            <param name="ribValue" type="String" />
+            <formula predicate-ref="ribChecker">
+                <param name="ribValue" assert-param-ref="ribValue" />
+            </formula>
+        </assert>
+
+        <assert name="systacCountryExist">
+            <param name="countryCode" type="String" />
+            <formula predicate-ref="systacCountryExist">
+                <param name="countryCode" assert-param-ref="countryCode" />
+            </formula>
+        </assert>
+                
+        <assert name="uniqueCodeSystem">
+            <param name="codeSystem" type="String" />
+            <formula predicate-ref="uniqueCodeSystem">
+                <param name="codeSystem" assert-param-ref="codeSystem" />
+            </formula>
+        </assert>
+                
+        <assert name="justOneOperation">
+            <param name="numeroBonVirement" type="String" />
+            <formula predicate-ref="justOneOperation">
+                <param name="numeroBonVirement" assert-param-ref="numeroBonVirement" />
+            </formula>
+        </assert>
+
+        <assert name="posteComptableExist">
+            <param name="codePosteComptable" type="String" />
+            <formula predicate-ref="posteComptableExist">
+                <param name="codePosteComptable" assert-param-ref="codePosteComptable" />
+            </formula>
+        </assert>
+                
+        <assert name="systacBankExist">
+            <param name="bankCode" type="String" />
+            <formula predicate-ref="systacBankExist">
+                <param name="bankCode" assert-param-ref="bankCode" />
+            </formula>
+        </assert>
+
+        <assert name="systacAgencyExist">
+            <param name="agencyCode" type="String" />
+            <formula predicate-ref="systacAgencyExist">
+                <param name="agencyCode" assert-param-ref="agencyCode" />
+            </formula>
+        </assert>
+		
+        <assert name="systacAgencyBankExist">
+            <param name="bankCode" type="String" />
+            <param name="agencyCode" type="String" />
+            <formula predicate-ref="systacAgencyBankExist">
+                <param name="bankCode" assert-param-ref="bankCode" />
+                <param name="agencyCode" assert-param-ref="agencyCode" />
+            </formula>
+        </assert>	
+
+        <assert name="sygmaParticipantCodeBicExist">
+            <param name="codeBicParticipant" type="String" />
+            <formula predicate-ref="sygmaParticipantCodeBicExist">
+                <param name="codeBicParticipant" assert-param-ref="codeBicParticipant" />
+            </formula>
+        </assert>
+
+        <assert name="sygmaParticipantCodeBicWithPropertiesExist">
+            <param name="codeBicParticipant" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="sygmaParticipantCodeBicWithPropertiesExist">
+                <param name="codeBicParticipant" assert-param-ref="codeBicParticipant" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert>
+
+        <assert name="sygmaParticipantNumeroCompteExist">
+            <param name="numeroCompteParticipant" type="String" />
+            <formula predicate-ref="sygmaParticipantNumeroCompteExist">
+                <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipant" />
+            </formula>
+        </assert>
+
+        <assert name="sygmaParticipantNumeroCompteWithPropertiesExist">
+            <param name="numeroCompteParticipant" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="sygmaParticipantNumeroCompteWithPropertiesExist">
+                <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipant" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert> 
+        
+        <assert name="ifMt103001Message">
+            <param name="codeTypeMessage" type="String" />
+            <param name="codeTypeTransaction" type="String" />
+            <formula predicate-ref="ifMt103001Message">
+                <param name="codeTypeMessage" assert-param-ref="codeTypeMessage" />
+                <param name="codeTypeTransaction" assert-param-ref="codeTypeTransaction" />
+            </formula>
+        </assert>
+                
+        <assert name="ifAdmin">
+            <param name="loginValue" type="String" />
+            <param name="passwordValue" type="String" />
+            <formula predicate-ref="ifAdmin">
+                <param name="loginValue" assert-param-ref="loginValue" />
+                <param name="passwordValue" assert-param-ref="passwordValue" />
+            </formula>
+        </assert>
+		
+        <assert name="ifReplayQueueInDataExist">
+            <param name="numeroReference" type="String" />
+            <param name="numeroBordereauVirement" type="String" />
+            <param name="codeEnregistrement"  type="String" />
+            <param name="codeValeur"  type="String" />
+            <formula predicate-ref="ifReplayQueueInDataExist">
+                <param name="numeroReference" assert-param-ref="numeroReference" />
+                <param name="numeroBordereauVirement" assert-param-ref="numeroBordereauVirement" />
+                <param name="codeEnregistrement"    assert-param-ref="codeEnregistrement" />
+                <param name="codeValeur"  assert-param-ref="codeValeur" />
+            </formula>
+        </assert>
+                
+        <assert name="ifReplayQueueInDataExistSystac">
+            <param name="numeroOperation" type="String" />
+            <param name="datePresentation" type="String" />     
+            <param name="codeValeur"  type="String" />  
+            <param name="codeEnregistrement"  type="String" />                                 
+            <formula predicate-ref="ifReplayQueueInDataExistSystac">
+                <param name="numeroOperation" assert-param-ref="numeroOperation" />
+                <param name="datePresentation" assert-param-ref="datePresentation" />
+                <param name="codeValeur"  assert-param-ref="codeValeur" />
+                <param name="codeEnregistrement"    assert-param-ref="codeEnregistrement" />                            
+            </formula>
+        </assert>
+                
+        <assert name="ifReplayQueueInDataExistSygma">
+            <param name="codeReference" type="String" />
+            <param name="datePresentation" type="String" />                                      
+            <formula predicate-ref="ifReplayQueueInDataExistSygma">
+                <param name="codeReference" assert-param-ref="codeReference" />
+                <param name="datePresentation" assert-param-ref="datePresentation" />                            
+            </formula>
+        </assert>
+                
+        <assert name="ifBankIsNotInBlackList">
+            <param name="codeBanqueDestinataire" type="String" />                  
+            <formula predicate-ref="ifBankIsNotInBlackList">
+                <param name="codeBanqueDestinataire" assert-param-ref="codeBanqueDestinataire" />                           
+            </formula>
+        </assert>
+                
+        <assert name="ifParticipantIsNotInBlackList">
+            <param name="codeBicDestinataireSygma" type="String" />                  
+            <formula predicate-ref="ifParticipantIsNotInBlackList">
+                <param name="codeBicDestinataireSygma" assert-param-ref="codeBicDestinataireSygma" />                           
+            </formula>
+        </assert>        
+                
+        <assert name="checkReconciliationItemExistence">
+            <param name="numeroReference" type="String" />
+            <param name="montant" type="String" />
+            <param name="datePresentation"  type="String" />
+            <formula predicate-ref="checkReconciliationItemExistence">
+                <param name="numeroReference" assert-param-ref="numeroReference" />
+                <param name="montant" assert-param-ref="montant" />
+                <param name="datePresentation"    assert-param-ref="datePresentation" />
+            </formula>
+        </assert>    
+                
+        <assert name="queueInAnnulationCalendarValidation">
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="queueInAnnulationCalendarValidation">
+                <param name="entityName" assert-param-ref="entityName" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert>
+
+        <assert name="notEqual">
+            <param name="notEqualParam" type="Object" />
+            <param name="notEqualValue" type="Object" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="notEqualParam" />
+                    <param name="equalValue" assert-param-ref="notEqualValue" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notPropertyReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="propertyName" type="String" />
+            <param name="propertyValue" type="Object" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityName" />
+                    <param name="propertyName" assert-param-ref="propertyName" />
+                    <param name="propertyValue" assert-param-ref="propertyValue" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notPropertiesReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="propertiesReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityName" />
+                    <param name="properties" assert-param-ref="properties" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notEmpty">
+            <param name="notEmptyParam" type="Object" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="empty">
+                    <param name="emptyParam" assert-param-ref="notEmptyParam" />
+                </param>
+            </formula>
+        </assert>
+
+        <!-- Est vrai si aumoins l'une des valeurs de la collection est non vide -->
+        <assert name="lazyNotEmptyValues">
+            <param name="lazyNotEmptyValuesParam" type="Collection" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="emptyValues">
+                    <param name="emptyValuesParam" assert-param-ref="lazyNotEmptyValuesParam" />
+                </param>
+            </formula>
+        </assert>
+
+        <!-- Est vrai si aumoins l'une des valeurs de la liste est vide -->
+        <assert name="lazyEmptyValues">
+            <param name="lazyEmptyValues" type="Collection" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="lazyEmptyValues" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="greaterOrEqual">
+            <param name="greaterEqualValue" type="Object" />
+            <param name="greaterEqualLimit" type="Object" />
+            <formula connector-ref="or">
+                <param name="orParam1" predicate-ref="greater">
+                    <param name="greaterValue" assert-param-ref="greaterEqualValue" />
+                    <param name="greaterLimit" assert-param-ref="greaterEqualLimit" />
+                </param>
+                <param name="orParam2" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="greaterEqualValue" />
+                    <param name="equalValue" assert-param-ref="greaterEqualLimit" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="lowerOrEqual">
+            <param name="lowerEqualValue" type="Object" />
+            <param name="lowerEqualLimit" type="Object" />
+            <formula connector-ref="or">
+                <param name="orParam1" predicate-ref="lower">
+                    <param name="lowerValue" assert-param-ref="lowerEqualValue" />
+                    <param name="lowerLimit" assert-param-ref="lowerEqualLimit" />
+                </param>
+                <param name="orParam2" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="lowerEqualValue" />
+                    <param name="equalValue" assert-param-ref="lowerEqualLimit" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notCsvEntry">
+            <param name="notEntryValue" type="String" />
+            <param name="notCsvValues" type="String" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="notEntryValue" />
+                    <param name="csvValues" assert-param-ref="notCsvValues" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="equalAndNotEmpty">
+            <param name="equalParam" type="Object" />
+            <param name="equalValue" type="Object" />
+            <param name="notEmptyParam" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam" />
+                    <param name="equalValue" assert-param-ref="equalValue" />
+                </param>
+                <param name="andParam2" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParam" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="equalAndEqual">
+            <param name="equalParam1" type="Object" />
+            <param name="equalValue1" type="Object" />
+            <param name="equalParam2" type="Object" />
+            <param name="equalValue2" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam1" />
+                    <param name="equalValue" assert-param-ref="equalValue1" />
+                </param>
+                <param name="andParam2" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam2" />
+                    <param name="equalValue" assert-param-ref="equalValue2" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="csvEntryAndCsvEntry">
+            <param name="entryValue1" type="Object" />
+            <param name="csvValues1" type="Object" />
+            <param name="entryValue2" type="Object" />
+            <param name="csvValues2" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValue1" />
+                    <param name="csvValues" assert-param-ref="csvValues1" />
+                </param>
+                <param name="andParam2" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValue2" />
+                    <param name="csvValues" assert-param-ref="csvValues2" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="csvEntryAndNotCsvEntry">
+            <param name="entryValue" type="Object" />
+            <param name="csvValues" type="Object" />
+            <param name="notEntryValue" type="Object" />
+            <param name="notCsvValues" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValue" />
+                    <param name="csvValues" assert-param-ref="csvValues" />
+                </param>
+                <param name="andParam2" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValue" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValues" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenGreater">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="greaterValueConclusion" type="String" />
+            <param name="greaterLimitConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="greater">
+                    <param name="greaterValue" assert-param-ref="greaterValueConclusion" />
+                    <param name="greaterLimit" assert-param-ref="greaterLimitConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenLower">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="lowerValueConclusion" type="String" />
+            <param name="lowerLimitConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="lower">
+                    <param name="lowerValue" assert-param-ref="lowerValueConclusion" />
+                    <param name="lowerLimit" assert-param-ref="lowerLimitConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenEqual">
+            <param name="equalParam1Assumption" type="String" />
+            <param name="equalValue1Assumption" type="String" />
+            <param name="equalParam2Conclusion" type="String" />
+            <param name="equalValue2Conclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam1Assumption" />
+                    <param name="equalValue" assert-param-ref="equalValue1Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam2Conclusion" />
+                    <param name="equalValue" assert-param-ref="equalValue2Conclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenNotEqual">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="notEqualParamConclusion" type="String" />
+            <param name="notEqualValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEqual">
+                    <param name="notEqualParam" assert-param-ref="notEqualParamConclusion" />
+                    <param name="notEqualValue" assert-param-ref="notEqualValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenNotCsvEntry">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="notEntryValueConclusion" type="String" />
+            <param name="notCsvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValueConclusion" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenCsvEntry">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="entryValueConclusion" type="String" />
+            <param name="csvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueConclusion" />
+                    <param name="csvValues" assert-param-ref="csvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenCsvEntry">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="entryValueConclusion" type="String" />
+            <param name="csvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueConclusion" />
+                    <param name="csvValues" assert-param-ref="csvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenSingleton">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="collectionEntriesConclusion" type="java.util.Collection" />
+            <param name="entryTypeNameConclusion" type="String" />
+            <param name="entryPropertyNameConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="singleton">
+                    <param name="collectionEntries" assert-param-ref="collectionEntriesConclusion" />
+                    <param name="entryTypeName" assert-param-ref="entryTypeNameConclusion" />
+                    <param name="entryPropertyName" assert-param-ref="entryPropertyNameConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenSingleOccurenceValueByGroup">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="collectionEntriesConclusion" type="java.util.Collection" />
+            <param name="entryTypeNameConclusion" type="String" />
+            <param name="entryPropertyNameConclusion" type="String" />
+            <param name="csvGroupPropertiesNamesConclusion" type="String" />
+            <param name="occurenceEntityConclusion" type="Object" />
+            <param name="occurenceValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="singleOccurenceValueByGroup">
+                    <param name="collectionEntries" assert-param-ref="collectionEntriesConclusion" />
+                    <param name="entryTypeName" assert-param-ref="entryTypeNameConclusion" />
+                    <param name="entryPropertyName" assert-param-ref="entryPropertyNameConclusion" />
+                    <param name="csvGroupPropertiesNames" assert-param-ref="csvGroupPropertiesNamesConclusion" />
+                    <param name="occurenceEntity" assert-param-ref="occurenceEntityConclusion" />
+                    <param name="occurenceValue" assert-param-ref="occurenceValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenEqual">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="equalParamConclusion" type="String" />
+            <param name="equalValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamConclusion" />
+                    <param name="equalValue" assert-param-ref="equalValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenNotEqual">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="notEqualParamConclusion" type="String" />
+            <param name="notEqualValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEqual">
+                    <param name="notEqualParam" assert-param-ref="notEqualParamConclusion" />
+                    <param name="notEqualValue" assert-param-ref="notEqualValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenNotCsvEntry">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="notEntryValueConclusion" type="String" />
+            <param name="notCsvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValueConclusion" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenPropertyReferenceEntry">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="entityNameConclusion" type="String" />
+            <param name="propertyNameConclusion" type="String" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualAndNotEmptyThenRibChecker">
+            <param name="equalParamAssumption" type="Object" />
+            <param name="equalValueAssumption" type="Object" />
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="ribValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="equalAndNotEmpty">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="ribChecker">
+                    <param name="ribValue" assert-param-ref="ribValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenNotEmpty">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenNotEmpty">
+            <param name="entryValueAssumption" type="Object" />
+            <param name="csvValuesAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+
+        <assert name="ifCsvEntryAndCsvEntryThenEqual">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="equalParamConclusion" type="Object" />
+            <param name="equalValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamConclusion" />
+                    <param name="equalValue" assert-param-ref="equalValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenPropertyReferenceEntry">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertyNameConclusion" type="Object" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenSygmaParticipantCodeBicExist">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenSygmaParticipantNumeroCompteExist">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenCsvEntry">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="entryValueConclusion" type="Object" />
+            <param name="csvValuesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueConclusion" />
+                    <param name="csvValues" assert-param-ref="csvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenEqual">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="equalValueConclusion" type="Object" />
+            <param name="equalParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalValue" assert-param-ref="equalValueConclusion" />
+                    <param name="equalParam" assert-param-ref="equalParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenNotEmpty">
+            <param name="equalValueAssumption" type="Object" />
+            <param name="equalParamAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                </param>				
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenNotEmpty">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotCsvEntryThenNotEmpty">
+            <param name="notEntryValueAssumption" type="Object" />
+            <param name="notCsvValuesAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValueAssumption" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+
+        <assert name="ifNotEmptyThenPropertyReferenceEntry">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertyNameConclusion" type="Object" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantCodeBicExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantNumeroCompteExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantCodeBicWithPropertiesExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicWithPropertiesExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantNumeroCompteWithPropertiesExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteWithPropertiesExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenPropertiesReferenceEntry">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertiesReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenLazyNotEmptyValues">
+            <param name="entryValueAssumption" type="Object" />
+            <param name="csvValuesAssumption" type="Object" />
+            <param name="lazyNotEmptyValuesParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="lazyNotEmptyValues">
+                    <param name="lazyNotEmptyValuesParam" assert-param-ref="lazyNotEmptyValuesParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenPropertyReferenceEntry">
+            <param name="notEmptyValuesParamAssumption" type="String" />
+            <param name="entityNameConclusion" type="String" />
+            <param name="propertyNameConclusion" type="String" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantCodeBicExist">
+            <param name="notEmptyValuesParamAssumption" type="String" />
+            <param name="codeBicParticipantConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantNumeroCompteExist">
+            <param name="notEmptyValuesParamAssumption" type="String" />
+            <param name="numeroCompteParticipantConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+
+        <assert name="ifNotEmptyValuesThenPropertiesReferenceEntry">
+            <param name="notEmptyValuesParamAssumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertiesReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantCodeBicWithPropertiesExist">
+            <param name="notEmptyValuesParamAssumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicWithPropertiesExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantNumeroCompteWithPropertiesExist">
+            <param name="notEmptyValuesParamAssumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteWithPropertiesExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+               
+
+    </asserts>
+
+</predicate-engine>
\ No newline at end of file
diff --git a/fdx_convert/src/main/resources/styles/CustomFormComponents.css b/fdx_convert/src/main/resources/styles/CustomFormComponents.css
new file mode 100644
index 0000000..5077d90
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/CustomFormComponents.css
@@ -0,0 +1,225 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 3 févr. 2022, 08:53:05
+    Author     : MGT_DEV3
+*/
+
+/*@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Regular.ttf');
+}*/
+
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Regular.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}
+
+.mainForm {
+    /*-fx-background-color:  rgb(246, 247, 249);*/
+}
+
+/* LABEL */
+
+.label {
+    -fx-text-fill: rgba(90, 90, 90, 1);
+    -fx-font-weight: bold;
+}
+
+/* TEXTFIELD */
+
+.text-field {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-text-fill: rgba(98, 98, 100, 1);
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-border-width: 1;
+    -fx-font-family: 'Roboto';
+}
+
+.text-field:disabled {
+    -fx-opacity: 0.8;
+}
+
+* {
+    -fx-primary-color: #007acc;
+    -fx-secondary-color: #4B6EAF;
+
+    -fx-focus-color: -fx-secondary-color;
+}
+
+/* SPINNER */
+
+.spinner {
+    -fx-border-width: 0;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+.spinner .increment-arrow-button,
+.spinner .decrement-arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+.spinner .increment-arrow-button:hover,
+.spinner .decrement-arrow-button:hover {
+
+}
+.spinner .increment-arrow-button:hover:pressed,
+.spinner .decrement-arrow-button:hover:pressed,
+.spinner .increment-arrow-button:pressed,
+.spinner .decrement-arrow-button:pressed {
+
+}
+.spinner .increment-arrow-button .increment-arrow,
+.spinner .decrement-arrow-button .decrement-arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* CHECKBOX */
+.check-box {
+    /* default properties */
+    selected-box-color: rgba(111, 136, 140, 1);
+    box-color: rgba(111, 136, 140, 1);
+    mark-color: white;
+}
+
+.check-box:selected > .box {
+    /* background color for selected checkbox */
+    -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+    /* background color of unselected checkbox */
+    -fx-background-color: box-color;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+.check-box:selected > .box > .mark,
+.check-box:indeterminate  > .box > .mark {
+    /* modify mark color */
+    -fx-background-color: mark-color;
+}
+
+/* COMBOBOX */
+/* The ListCell that shows the selected item in a non-editable ComboBox */
+
+.combo-box:focus,
+.combo-box .list-cell {
+    -fx-background-color: rgba(208, 208, 208, 1);
+}
+
+.combo-box{
+    -fx-background-color: #fff;
+    -fx-text-fill: #000;
+}
+.combo-box .list-view .list-cell {
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+/* The TextField that shows the selected item in an editable ComboBox */
+.combo-box .text-input {
+    -fx-background-color: rgba(208, 208, 208, 1);
+     -fx-text-fill: #000;
+}
+
+.combo-box:disabled {
+    -fx-opacity: 0.8;
+}
+
+
+/* Style the arrow button area */
+.combo-box .arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+
+.combo-box .arrow-button .arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell:hover {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+    -fx-background-color: rgba(214, 236, 219, 1);
+}
+
+/*
+* Title pane style
+*/
+.titled-pane {
+    -fx-border-color: rgba(203, 203, 203, 1);
+    -fx-text-fill: rgba(255, 255, 255, 1);
+    -fx-border-width: 0.5;
+}
+
+.titled-pane > .title {
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-background-color: rgba(115, 135, 132, 1);
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-background-color: rgba(114, 114, 116, 1);
+    -fx-font-size: 14px;
+    -fx-text-fill: white;
+    -fx-font-weight: bold;
+}
+
+.text-area {
+    -fx-text-fill: black;
+    -fx-background-color: #fff;
+    -fx-border-width: 1;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-border-width: 1;
+}
+
+.text-area .content{
+    -fx-opacity: 1;
+    -fx-background-color: #fff;
+}
+
+.text-area:disabled {
+    -fx-opacity: 1;
+    -fx-background-color:  white;
+    -fx-font-weight:bold;
+}
+
+.text-input > .scroll-pane:disabled {
+    -fx-opacity: 1;
+}
+
+.custom-file-chooser .text-field,
+.custom-directory-chooser .text-field,
+.abstract-selection-item .text-field {
+   
+    -fx-text-fill: black;
+}
diff --git a/fdx_convert/src/main/resources/styles/FormComponents1.css b/fdx_convert/src/main/resources/styles/FormComponents1.css
new file mode 100644
index 0000000..8b9f5d9
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/FormComponents1.css
@@ -0,0 +1,367 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 3 févr. 2022, 08:53:05
+    Author     : MGT_DEV3
+*/
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}
+
+.mainForm {
+    -fx-background-color: #fff;
+}
+
+/* LABEL */
+
+.form-label {
+    -fx-text-fill: rgba(137, 137, 137, 1);
+    -fx-font-weight: normal; 
+}
+
+.label {
+    -fx-font-family: 'Roboto';
+    -fx-font-size: 12px;
+    /* -fx-font-weight: bold; */
+    -fx-text-fill: #333333;
+    /* -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); */
+}
+
+
+/* TEXTFIELD */
+
+.text-field {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: #000;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-border-width: 1;
+    -fx-font-family: 'Roboto';
+    -fx-min-height: 28px;	
+    -fx-pref-height: 28px;	
+    -fx-font-size: 12px;
+}
+
+.text-field:disabled {
+    -fx-background-color: rgba(240, 240, 240, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: #000;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-opacity: 1.0;
+    -fx-font-size: 12px;
+}
+
+.text-field:focused {
+    -fx-border-color: #0FA3D5;
+}
+
+.text-field:focused:hover {
+    -fx-border-color: #0FA3D5;
+}
+
+.text-area {
+    -fx-background-insets: 0;
+    -fx-background-color: white;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(208, 208, 208, 1);
+}
+
+.text-area .content {
+    -fx-background-color: white;
+}
+
+.text-area:focused .content {
+    -fx-background-color: white;
+}
+
+.text-area:focused {
+    -fx-border-color: #0FA3D5;
+}
+
+.text-area .content {
+    -fx-padding: 10px;
+    -fx-text-fill: rgba(100, 99, 102, 1);
+    /*-fx-highlight-fill: #7ecfff;*/
+}
+
+.text-area:disabled {
+    -fx-background-insets: 0;
+    -fx-background-color: rgba(241, 241, 241, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-opacity: 1.0;
+    -fx-text-fill: #000;
+}
+
+.text-area:disabled .content {
+    -fx-background-color: rgba(241, 241, 241, 1);
+}
+
+/* keep element fully opaque, when disabled */
+.text-area:disabled,
+.text-area *:disabled {
+    -fx-opacity: 1;
+}
+
+* {
+    -fx-primary-color: #007acc;
+    -fx-secondary-color: #4B6EAF;
+    -fx-focus-color: -fx-secondary-color;
+}
+
+/* SPINNER */
+
+.spinner {
+    -fx-border-width: 0;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-min-height:28px;
+}
+
+.spinner .increment-arrow-button,
+.spinner .decrement-arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+.spinner .increment-arrow-button:hover,
+.spinner .decrement-arrow-button:hover {
+
+}
+.spinner .increment-arrow-button:hover:pressed,
+.spinner .decrement-arrow-button:hover:pressed,
+.spinner .increment-arrow-button:pressed,
+.spinner .decrement-arrow-button:pressed {
+
+}
+.spinner .increment-arrow-button .increment-arrow,
+.spinner .decrement-arrow-button .decrement-arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* CHECKBOX */
+.check-box {
+    /* default properties */
+    selected-box-color: rgba(111, 136, 140, 1);
+    box-color: rgba(111, 136, 140, 1);
+    mark-color: white;
+}
+
+.check-box:selected > .box {
+    /* background color for selected checkbox */
+    -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+    /* background color of unselected checkbox */
+    -fx-background-color: box-color;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+.check-box:selected > .box > .mark,
+.check-box:indeterminate  > .box > .mark {
+    /* modify mark color */
+    -fx-background-color: mark-color;
+}
+
+/* COMBOBOX */
+/* The ListCell that shows the selected item in a non-editable ComboBox */
+
+.combo-box {
+    -fx-border-color: #D3D3D3;
+    -fx-min-height: 28px;	
+    -fx-pref-height: 28px;
+}
+
+.combo-box,
+.combo-box:focus,
+.combo-box .list-cell {
+    -fx-background-color: rgba(255,255,255, 1);
+    -fx-border-color: #C9C9CC;
+    -fx-border-width: 0.1 0.1 0.1 0.1;
+}
+
+.combo-box .list-view .list-cell {
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+.combo-box .list-view {
+    -fx-background-color: rgba(250, 250, 250, 1);
+    -fx-border-color:rgba(225, 225, 225, 1);
+}
+
+/* The TextField that shows the selected item in an editable ComboBox */
+.combo-box .text-input {
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+.combo-box:disabled {
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: black;
+    -fx-opacity: 1.0;
+    -fx-background-color: rgba(235, 242, 243, 1);
+}
+
+.combo-box-base:disabled {
+    -fx-background-color: rgba(245, 242, 243, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: black;
+    -fx-border-color: rgba(228, 238, 248, 1);
+    -fx-opacity: 1;
+}
+
+.combo-box-base {
+    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, white;
+    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
+    -fx-background-radius: 3px, 3px, 2px, 1px;
+}
+
+
+/* Style the arrow button area */
+.combo-box .arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 1px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+
+.combo-box .arrow-button .arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell:hover {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+    -fx-background-color: rgba(214, 236, 219, 1);
+}
+
+/*
+* Title pane style
+*/
+/*
+* Title pane style
+*/
+.titled-pane {
+    -fx-border-color: rgba(199, 200, 202, 1);
+   /* -fx-text-fill: rgba(255, 255, 255, 1);*/
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+.titled-pane > .title {
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-background-color: rgba(88, 88, 90, 1);
+}
+
+.titled-pane > .title .text {
+    
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-font-size: 14px;
+    /* -fx-background-color: rgba(114, 114, 116, 1);*/
+    -fx-text-fill: #FFFFFF;
+}
+
+.nested-class .table-view {
+    -fx-background-color: transparent;
+    -fx-border-color: rgb(209, 211, 212);
+    -fx-padding: 0;
+}
+
+.nested-class .table-view .column-header,
+.nested-class .table-view .column-header-background .filler {
+    -fx-background-color: red; 
+}
+
+.nested-class .column-header {
+
+}
+
+.nested-class .table-view .column-header-background{
+    -fx-padding: 0;
+}
+
+.nested-class .table-view .column-header {
+    -fx-border-color: rgb(209, 211, 212);
+}
+
+.nested-class .table-view .column-header .label{
+    -fx-text-fill: white;
+    -fx-font-weight: bold; 
+    -fx-alignment: CENTER;
+    -fx-padding: 5;
+}
+
+.nested-class .table-cell {
+    -fx-border-width: 0 1 0 1;
+    -fx-border-color: rgb(230, 231, 232);
+    -fx-padding: 5;
+}
+
+.nested-class .table-row-cell{
+    -fx-background-color: #ffffff;
+}
+
+.nested-class .table-row-cell:odd {
+    -fx-background-color: rgb(239, 239, 240);
+}
+
+.nested-class .table-row-cell:selected {
+    -fx-background-color: rgba(214, 236, 219, 1);
+    -fx-background-insets: 0;
+    -fx-background-radius: 0;
+}
+
+.nested-class .table-row-cell:selected .text {
+    -fx-fill: #000;
+}
+
+.abstract-selection-item .text-field:disabled {
+    -fx-background-color: rgba(240, 240, 240, 1);
+}
+
+.pane .vbox {
+    -fx-background-color: blue;
+}
+
+.abstract-selection-list .text-field,
+.abstract-selection-list .text-field:disabled {
+    -fx-text-fill: #000;
+}
+
+.abstract-selection-item .text-field,
+.abstract-selection-item .text-field:disabled {
+    -fx-text-fill: #000;
+}
diff --git a/fdx_convert/src/main/resources/styles/app-theme.css b/fdx_convert/src/main/resources/styles/app-theme.css
new file mode 100644
index 0000000..7dd9fe6
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/app-theme.css
@@ -0,0 +1,34 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 23 août 2022, 23:19:20
+    Author     : MGT_DEV3
+*/
+
+.notification-dialog {
+    -fx-border-color: rgba(31, 139, 123, 1);
+}
+
+.notification-dialog .image-view{
+    -fx-graphic: url('../images/app_icon.png');
+}
+
+.notification-dialog .top-bar {
+    -fx-background-color:  #5D5D0F;
+}
+
+.abstract-selection-list-table .banner,
+.abstract-selection-item-table .banner {
+    -fx-background-size: 0;
+    -fx-background-color:  rgba(31, 139, 123, 1);
+}
+
+.save-btn {
+    -fx-border-color: rgba(31, 139, 123, 1);
+    -fx-border-width: 1;
+    -fx-background-color: rgba(31, 139, 123, 1);
+}
+
diff --git a/fdx_convert/src/main/resources/styles/custom-main-style.css b/fdx_convert/src/main/resources/styles/custom-main-style.css
new file mode 100644
index 0000000..0de0cc0
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/custom-main-style.css
@@ -0,0 +1,426 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+/*@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}*/
+
+.next-btn {
+    -fx-background-image: url(../images/next-img.png);
+    -fx-background-size: 15px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.previous-btn {
+    -fx-background-image: url(../images/previous-img.png);
+    -fx-background-size: 15px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.next-btn,
+.previous-btn {
+    -fx-background-color: transparent;
+    -fx-background-radius: 0;
+    -fx-padding: 3 10 3 10;
+}
+
+.next-btn:hover,
+.previous-btn:hover {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+}
+
+.next-btn:disabled:hover,
+.previous-btn:disabled:hover {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+}
+
+.main-btn-add {
+    -fx-background-image: url(../images/add-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-edit {
+    -fx-background-image: url(../images/edit-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-print {
+    -fx-background-image: url(../images/print-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-delete {
+    -fx-background-image: url(../images/delete-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-add:disabled {
+    -fx-background-image: url(../images/add-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-edit:disabled {
+    -fx-background-image: url(../images/edit-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-print:disabled {
+    -fx-background-image: url(../images/print-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-delete:disabled {
+    -fx-background-image: url(../images/delete-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-export {
+    -fx-background-image: url(../images/exporter.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-add {
+    -fx-background-image: url(../images/add-subtype.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-delete {
+    -fx-background-image: url(../images/delete-subtype.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-update{
+    -fx-background-image: url(../images/update-subtype.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-add,
+.subtype-btn-update,
+.subtype-btn-delete {
+    -fx-background-color: #FFFFFF;
+    -fx-background-radius: 0;
+  /*  -fx-padding: 3 15 1 15;*/
+    -fx-border-width: 1 1 1 1;
+    -fx-border-color:  #9B9798;
+}
+
+.main-btn-add,
+.main-btn-edit,
+.main-btn-print,
+.main-btn-delete,
+.main-btn {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+    -fx-padding: 3 15 3 15;
+    -fx-border-width: 0 1 0 0;
+    -fx-border-color:  #9B9798;
+}
+
+.main-btn-add:hover,
+.main-btn-edit:hover,
+.main-btn-print:hover,
+.main-btn-delete:hover,
+.main-btn:hover {
+    -fx-background-color: #fff;
+    -fx-background-radius: 0;
+    -fx-padding: 3 15 3 15;
+    -fx-border-width: 0 1 0 0;
+    -fx-border-color:  #9B9798;
+}
+
+.main-btn-add:disabled:hover,
+.main-btn-edit:disabled:hover,
+.main-btn-print:disabled:hover,
+.main-btn-delete:disabled:hover,
+.main-btn:disabled:hover {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+    -fx-padding: 3 15 3 15;
+    -fx-border-width: 0 1 0 0;
+    -fx-border-color:  #9B9798;
+}
+
+.banner {
+    /*-fx-background-image: url(../images/logo-ip.png);
+    -fx-background-position: center left;
+    -fx-background-repeat: stretch;*/
+    -fx-background-color:  transparent;
+}
+
+.mainFxmlClass {
+    -fx-background-color: rgb(246, 247, 249);
+}
+
+.table-view {
+    -fx-background-color: transparent;
+    -fx-border-color: rgb(209, 211, 212);
+    -fx-padding: 0;
+}
+
+.table-view .column-header,
+.table-view .column-header-background .filler {
+    -fx-background-color: rgba(115, 135, 132, 1); 
+}
+
+.column-header {
+
+}
+
+.table-view .column-header-background{
+    -fx-padding: 0;
+}
+
+.table-view .column-header {
+    -fx-border-color: rgb(209, 211, 212);
+}
+
+.table-view .column-header .label{
+    -fx-text-fill: white;
+    -fx-font-weight: bold; 
+    -fx-alignment: CENTER;
+    -fx-padding: 5;
+    -fx-font-size: 14px;
+    -fx-text-fill: white;
+    -fx-font-weight: bold;
+}
+
+.table-cell {
+    -fx-border-width: 0 1 0 1;
+    -fx-border-color: rgb(230, 231, 232);
+    -fx-padding: 2;
+    -fx-alignment: CENTER;
+}
+
+.table-row-cell{
+    -fx-background-color: rgb(255, 255, 255);
+}
+
+.table-row-cell .text {
+    -fx-fill: rgb(56, 56, 56);
+    -fx-font-size: 12px;
+}
+
+.table-row-cell:odd {
+    -fx-background-color: rgb(223, 223, 223);
+}
+
+.table-row-cell:selected {
+    -fx-background-color: rgba(214, 236, 219, 1);
+    -fx-background-insets: 0;
+    -fx-background-radius: 0;
+}
+
+.table-row-cell:selected .text {
+    -fx-fill: rgb(56, 56, 56);
+    -fx-font-weight: bold;
+}
+
+/*
+* Style for TextField
+*/
+.text-field {
+    -fx-background-color: #F6F7F9;
+    -fx-border-color: #30AFDC;
+    -fx-border-radius: 3px;
+    -fx-background-radius: 3px;
+}
+
+/*
+Tab Pane style
+*/
+
+.tab-pane > .tab-header-area > .headers-region > .tab:top {
+    -fx-border-color: #a3a7a8;
+    -fx-border-radius: 5 5 0 0;
+    -fx-background-color: white;
+    -fx-pref-height: 40px;  
+    -fx-background-insets: 0;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected:top {
+    -fx-border-color: #a3a7a8 #a3a7a8 #a3a7a8 #a3a7a8;
+    -fx-border-width: 1 1 1 1;   
+    -fx-border-radius: 5 5 0 0;
+    -fx-background-color: white;
+    -fx-pref-height: 40px;  
+    -fx-background-insets: 0;
+    -fx-border-insets: 0; 
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected > .tab-container > .tab-label {
+    -fx-alignment: CENTER;
+    -fx-text-fill: #323232;
+    -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-label {
+    -fx-alignment: CENTER;
+    -fx-text-fill: #323232;
+    -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .tab-header-background {
+    -fx-background-color: white;
+    -fx-border-color: #a3a7a8;
+    -fx-border-width: 0 0 1 0;
+    -fx-background-insets: 0;
+    -fx-pref-height: 45px;  
+}
+
+/*
+* Title pane style
+*/
+.titled-pane {
+    -fx-border-color: rgba(203, 203, 203, 1);
+    -fx-text-fill: rgba(255, 255, 255, 1);
+    -fx-border-width: 0.5;
+}
+
+.titled-pane > .title {
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-background-color: rgba(115, 135, 132, 1);
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-background-color: rgba(114, 114, 116, 1);
+    -fx-font-size: 14px;
+    -fx-text-fill: white;
+    -fx-font-weight: bold;
+}
+
+/*
+* Search buttons
+*/
+
+.search {   
+    -fx-background-image: url(../images/Recherche.png);
+    -fx-background-size: 12px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-padding: 2 10 2 10;
+    -fx-background-color: rgba(220, 221, 223, 1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+}
+
+.search:hover {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-color: rgba(220, 221, 223, 1);
+    -fx-border-width: 1px;
+    -fx-padding: 1 9 1 9;
+}
+
+.reset {   
+    -fx-background-image: url(../images/Reset.png);
+    -fx-background-size: 12px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-padding: 2 10 2 10;
+    -fx-background-color: rgba(220, 221, 223, 1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+}
+
+.reset:hover {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-color: rgba(220, 221, 223, 1);
+    -fx-border-width: 1px;
+    -fx-padding: 1 9 1 9;
+}
+
+/* CHECKBOX */
+.check-box {
+    /* default properties */
+    selected-box-color: rgba(255, 255, 255, 1);
+    box-color: rgba(255, 255, 255, 1);
+    mark-color: white;
+}
+
+.check-box .box {
+    /* background color for selected checkbox */
+    -fx-border-width: 1px;
+    -fx-border-color: rgb(208, 208, 208);
+}
+
+.check-box:selected > .box {
+    /* background color for selected checkbox */
+    -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+    /* background color of unselected checkbox */
+    -fx-background-color: box-color;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+/*
+* SCROLLBAR
+*/
+* {
+    /*-fx-background-color: black;*/
+    -fx-focus-color: transparent;
+    -fx-faint-focus-color: transparent;
+}
+
+.scroll-bar:horizontal, .scroll-bar:vertical{
+    -fx-background-color:transparent;
+}
+
+.increment-button, .decrement-button {
+    -fx-background-color: transparent;
+    -fx-border-color: transparent;
+}
+
+.scroll-bar:horizontal .track,
+.scroll-bar:vertical .track{
+    -fx-background-color: transparent;
+    -fx-border-color: transparent;
+    -fx-background-radius: 0em;
+}
+
+.scroll-bar:horizontal .thumb,
+.scroll-bar:vertical .thumb {
+    -fx-background-color: white;
+    -fx-background-radius: 5em;
+}
\ No newline at end of file
diff --git a/fdx_convert/src/main/resources/styles/custom-title-bar.css b/fdx_convert/src/main/resources/styles/custom-title-bar.css
new file mode 100644
index 0000000..65e13b8
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/custom-title-bar.css
@@ -0,0 +1,47 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 3 mars 2022, 14:50:08
+    Author     : MGT_DEV3
+*/
+
+.title-bar {
+    -fx-background-image: url(../images/motif-title-bar.jpg);
+    -fx-background-position: center center;
+    -fx-background-repeat: no-repeat;
+    -fx-background-size: stretch;
+}
+
+.title-bar-button {
+    -fx-background-color: transparent;
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
+.title-bar-button:hover {
+    -fx-cursor: hand;
+    -fx-background-color: rgba(0, 0, 0, 0.1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
+.title-bar-button-close {
+    -fx-cursor: hand;
+    -fx-background-color: transparent;
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
+.title-bar-button-close:hover {
+    -fx-background-color: rgba(0, 0, 0, 0.1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
diff --git a/fdx_convert/src/main/resources/styles/main_screen.css b/fdx_convert/src/main/resources/styles/main_screen.css
new file mode 100644
index 0000000..7cf285c
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/main_screen.css
@@ -0,0 +1,246 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}
+
+.main_screen {
+    -fx-background-image: url('../images/Accuueil_agent.jpg');
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-background-size: stretch;
+    -fx-border-color: #C5CFCE;
+}
+
+.dashboard {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Tableau_de_bord_1.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.dashboard:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Barre_outils_hover-03.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.receive {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/export.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.receive:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Barre_outils_hover-02.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.update {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Modif-01-01x.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.update:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Modif-01-01.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.generate {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/fichiers_generesx.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.generate:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Barre_outils_hover-01.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.treatment {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/tache.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.treatment:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/tache_hover.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+}
+
+/*
+* Title pane style
+*/
+.titled-pane > .title {
+    -fx-background-color: #C5D6E0;
+    -fx-border-color: #C5D6E0;
+}
+
+.titled-pane > .title .text {
+    
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-font-size: 14px;
+}
+
+/*
+* Menu-bar style
+*/
+/*
+.menu-item {
+    -fx-border-color: #fff;
+    -fx-margin: 0;
+} 
+
+.menu .text,
+.menu-item .text {
+    -fx-fill: #000;
+    -fx-fill: #000;
+}
+
+.menu:hover .text, 
+.menu:showing .text,
+.menu:focused .text,
+.menu-item:hover .text,
+.menu-item:showing .text,
+.menu-item:focused .text {
+    -fx-fill: #fff;
+    -fx-fill: #fff;
+    -fx-font-weight: bold;
+}
+
+
+.menu:hover, 
+.menu:showing,
+.menu:focused,
+.menu-item:hover,
+.menu-item:showing,
+.menu-item:focused {
+    -fx-background-color: #BCD18A;
+}
+
+.menu:clicked {
+    -fx-background-color: #BCD18A;
+}
+*/
+/*
+* MENU BUTTON
+*/
+
+.menu-button > .arrow-button {
+    -fx-padding: 0;
+}
+
+.menu-button > .arrow-button > .arrow {
+    -fx-padding: 0;
+}
+
+.menu-button {
+    -fx-background-color: transparent;
+    -fx-background-radius: 7;
+    -fx-border-radius: 7;
+    -fx-border-width: 1;
+    -fx-border-color: transparent;
+    -fx-text-fill: white;
+    -fx-font-size: 11px;
+    -fx-padding: 0;
+}
+
+.menu-button:hover {
+    -fx-background-color: #ededee;
+    -fx-background-radius: 7;
+    -fx-border-radius: 7;
+    -fx-border-width: 1;
+    -fx-border-color: #F2F2F2;
+    -fx-text-fill: white;
+    -fx-font-weight: normal;
+}
+
+/* LABEL */
+
+.bottom-label {
+    -fx-text-fill: rgba(90, 90, 90, 1);
+    -fx-font-weight: bold; 
+    -fx-font-size: 11px;
+}
+
+/* TEXTFIELD */
+
+.bottom-text-field {
+    -fx-background-color: #e0e4e3;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-text-fill: rgba(0, 0, 0, 1);
+    -fx-border-color: #C5CFCE;
+    -fx-border-width: 1;
+    -fx-padding: 3;
+    -fx-font-size: 11px;
+    -fx-background-radius: 2;
+    -fx-border-radius: 2;
+}
+
+.bottom-text-field:disabled {
+    -fx-opacity: 0.8;
+}
\ No newline at end of file
diff --git a/fdx_convert/src/main/resources/styles/style.css b/fdx_convert/src/main/resources/styles/style.css
new file mode 100644
index 0000000..af672d4
--- /dev/null
+++ b/fdx_convert/src/main/resources/styles/style.css
@@ -0,0 +1,15 @@
+/*
+Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+Click nbfs://nbhost/SystemFileSystem/Templates/Other/CascadeStyleSheet.css to edit this template
+*/
+/* 
+    Created on : 15 nov. 2022, 11:59:29
+    Author     : STEPHANIE
+*/
+
+.cover{
+    -fx-background-image: url(../images/Accuueil_convert.jpg);
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-background-size: cover;
+}
diff --git a/fdx_convert/target/classes/.netbeans_automatic_build b/fdx_convert/target/classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_convert/target/classes/.netbeans_automatic_build
diff --git a/fdx_convert/target/classes/app.properties b/fdx_convert/target/classes/app.properties
new file mode 100644
index 0000000..1c1375b
--- /dev/null
+++ b/fdx_convert/target/classes/app.properties
@@ -0,0 +1 @@
+nbThreads = 10
\ No newline at end of file
diff --git a/fdx_convert/target/classes/fonts/LICENSE.txt b/fdx_convert/target/classes/fonts/LICENSE.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/LICENSE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/fdx_convert/target/classes/fonts/Roboto-Black.ttf b/fdx_convert/target/classes/fonts/Roboto-Black.ttf
new file mode 100644
index 0000000..2d45238
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Black.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-BlackItalic.ttf b/fdx_convert/target/classes/fonts/Roboto-BlackItalic.ttf
new file mode 100644
index 0000000..29a4359
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-BlackItalic.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-Bold.ttf b/fdx_convert/target/classes/fonts/Roboto-Bold.ttf
new file mode 100644
index 0000000..d998cf5
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Bold.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-BoldItalic.ttf b/fdx_convert/target/classes/fonts/Roboto-BoldItalic.ttf
new file mode 100644
index 0000000..b4e2210
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-BoldItalic.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-Italic.ttf b/fdx_convert/target/classes/fonts/Roboto-Italic.ttf
new file mode 100644
index 0000000..5b390ff
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Italic.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-Light.ttf b/fdx_convert/target/classes/fonts/Roboto-Light.ttf
new file mode 100644
index 0000000..3526798
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Light.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-LightItalic.ttf b/fdx_convert/target/classes/fonts/Roboto-LightItalic.ttf
new file mode 100644
index 0000000..46e9bf7
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-LightItalic.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-Medium.ttf b/fdx_convert/target/classes/fonts/Roboto-Medium.ttf
new file mode 100644
index 0000000..f714a51
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Medium.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-MediumItalic.ttf b/fdx_convert/target/classes/fonts/Roboto-MediumItalic.ttf
new file mode 100644
index 0000000..5dc6a2d
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-MediumItalic.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-Regular.ttf b/fdx_convert/target/classes/fonts/Roboto-Regular.ttf
new file mode 100644
index 0000000..2b6392f
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Regular.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-Thin.ttf b/fdx_convert/target/classes/fonts/Roboto-Thin.ttf
new file mode 100644
index 0000000..4e797cf
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-Thin.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/fonts/Roboto-ThinItalic.ttf b/fdx_convert/target/classes/fonts/Roboto-ThinItalic.ttf
new file mode 100644
index 0000000..eea836f
--- /dev/null
+++ b/fdx_convert/target/classes/fonts/Roboto-ThinItalic.ttf
Binary files differ
diff --git a/fdx_convert/target/classes/images/143-01.png b/fdx_convert/target/classes/images/143-01.png
new file mode 100644
index 0000000..84f2182
--- /dev/null
+++ b/fdx_convert/target/classes/images/143-01.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/143-02.png b/fdx_convert/target/classes/images/143-02.png
new file mode 100644
index 0000000..ad7888f
--- /dev/null
+++ b/fdx_convert/target/classes/images/143-02.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/143-03.png b/fdx_convert/target/classes/images/143-03.png
new file mode 100644
index 0000000..4f9314e
--- /dev/null
+++ b/fdx_convert/target/classes/images/143-03.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/143-04.png b/fdx_convert/target/classes/images/143-04.png
new file mode 100644
index 0000000..80f3975
--- /dev/null
+++ b/fdx_convert/target/classes/images/143-04.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/143-05.png b/fdx_convert/target/classes/images/143-05.png
new file mode 100644
index 0000000..195001d
--- /dev/null
+++ b/fdx_convert/target/classes/images/143-05.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Accueil.png b/fdx_convert/target/classes/images/Accueil.png
new file mode 100644
index 0000000..fd21406
--- /dev/null
+++ b/fdx_convert/target/classes/images/Accueil.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Accuueil_agent.jpg b/fdx_convert/target/classes/images/Accuueil_agent.jpg
new file mode 100644
index 0000000..2863ccc
--- /dev/null
+++ b/fdx_convert/target/classes/images/Accuueil_agent.jpg
Binary files differ
diff --git a/fdx_convert/target/classes/images/Apropos.png b/fdx_convert/target/classes/images/Apropos.png
new file mode 100644
index 0000000..6913e66
--- /dev/null
+++ b/fdx_convert/target/classes/images/Apropos.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Barre_outils_hover-01.png b/fdx_convert/target/classes/images/Barre_outils_hover-01.png
new file mode 100644
index 0000000..8356c56
--- /dev/null
+++ b/fdx_convert/target/classes/images/Barre_outils_hover-01.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Barre_outils_hover-02.png b/fdx_convert/target/classes/images/Barre_outils_hover-02.png
new file mode 100644
index 0000000..b55e1c6
--- /dev/null
+++ b/fdx_convert/target/classes/images/Barre_outils_hover-02.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Export.png b/fdx_convert/target/classes/images/Export.png
new file mode 100644
index 0000000..3fc521d
--- /dev/null
+++ b/fdx_convert/target/classes/images/Export.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Fichier.png b/fdx_convert/target/classes/images/Fichier.png
new file mode 100644
index 0000000..e390ade
--- /dev/null
+++ b/fdx_convert/target/classes/images/Fichier.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Logo_FDX_Convert.png b/fdx_convert/target/classes/images/Logo_FDX_Convert.png
new file mode 100644
index 0000000..c8216f3
--- /dev/null
+++ b/fdx_convert/target/classes/images/Logo_FDX_Convert.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Recherche.png b/fdx_convert/target/classes/images/Recherche.png
new file mode 100644
index 0000000..c9ca377
--- /dev/null
+++ b/fdx_convert/target/classes/images/Recherche.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Reset.png b/fdx_convert/target/classes/images/Reset.png
new file mode 100644
index 0000000..07ebdb5
--- /dev/null
+++ b/fdx_convert/target/classes/images/Reset.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/Search.png b/fdx_convert/target/classes/images/Search.png
new file mode 100644
index 0000000..dd57502
--- /dev/null
+++ b/fdx_convert/target/classes/images/Search.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/add-disabled.png b/fdx_convert/target/classes/images/add-disabled.png
new file mode 100644
index 0000000..cffd6f5
--- /dev/null
+++ b/fdx_convert/target/classes/images/add-disabled.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/add-new.png b/fdx_convert/target/classes/images/add-new.png
new file mode 100644
index 0000000..1900242
--- /dev/null
+++ b/fdx_convert/target/classes/images/add-new.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/add-subtype.png b/fdx_convert/target/classes/images/add-subtype.png
new file mode 100644
index 0000000..cffd6f5
--- /dev/null
+++ b/fdx_convert/target/classes/images/add-subtype.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/add.png b/fdx_convert/target/classes/images/add.png
new file mode 100644
index 0000000..ee865fa
--- /dev/null
+++ b/fdx_convert/target/classes/images/add.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/agrandir.png b/fdx_convert/target/classes/images/agrandir.png
new file mode 100644
index 0000000..6591008
--- /dev/null
+++ b/fdx_convert/target/classes/images/agrandir.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/app_icon.png b/fdx_convert/target/classes/images/app_icon.png
new file mode 100644
index 0000000..8f328d4
--- /dev/null
+++ b/fdx_convert/target/classes/images/app_icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/custom_app_icon.png b/fdx_convert/target/classes/images/custom_app_icon.png
new file mode 100644
index 0000000..8f328d4
--- /dev/null
+++ b/fdx_convert/target/classes/images/custom_app_icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/custom_close_icon.png b/fdx_convert/target/classes/images/custom_close_icon.png
new file mode 100644
index 0000000..8ed54b7
--- /dev/null
+++ b/fdx_convert/target/classes/images/custom_close_icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/delete-disabled.png b/fdx_convert/target/classes/images/delete-disabled.png
new file mode 100644
index 0000000..ae9f20a
--- /dev/null
+++ b/fdx_convert/target/classes/images/delete-disabled.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/delete-new.png b/fdx_convert/target/classes/images/delete-new.png
new file mode 100644
index 0000000..cf5877d
--- /dev/null
+++ b/fdx_convert/target/classes/images/delete-new.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/delete-subtype.png b/fdx_convert/target/classes/images/delete-subtype.png
new file mode 100644
index 0000000..ae9f20a
--- /dev/null
+++ b/fdx_convert/target/classes/images/delete-subtype.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/edit-disabled.png b/fdx_convert/target/classes/images/edit-disabled.png
new file mode 100644
index 0000000..668bdeb
--- /dev/null
+++ b/fdx_convert/target/classes/images/edit-disabled.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/edit-new.png b/fdx_convert/target/classes/images/edit-new.png
new file mode 100644
index 0000000..cf0865f
--- /dev/null
+++ b/fdx_convert/target/classes/images/edit-new.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/edit.png b/fdx_convert/target/classes/images/edit.png
new file mode 100644
index 0000000..72def46
--- /dev/null
+++ b/fdx_convert/target/classes/images/edit.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/error-icon.png b/fdx_convert/target/classes/images/error-icon.png
new file mode 100644
index 0000000..f06efc4
--- /dev/null
+++ b/fdx_convert/target/classes/images/error-icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/exporter.png b/fdx_convert/target/classes/images/exporter.png
new file mode 100644
index 0000000..eafe594
--- /dev/null
+++ b/fdx_convert/target/classes/images/exporter.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/fermer.png b/fdx_convert/target/classes/images/fermer.png
new file mode 100644
index 0000000..93c5144
--- /dev/null
+++ b/fdx_convert/target/classes/images/fermer.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/fichiers_generesx.png b/fdx_convert/target/classes/images/fichiers_generesx.png
new file mode 100644
index 0000000..253ee53
--- /dev/null
+++ b/fdx_convert/target/classes/images/fichiers_generesx.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/icone_ins.png b/fdx_convert/target/classes/images/icone_ins.png
new file mode 100644
index 0000000..051c8c4
--- /dev/null
+++ b/fdx_convert/target/classes/images/icone_ins.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/intervalle_affichage.png b/fdx_convert/target/classes/images/intervalle_affichage.png
new file mode 100644
index 0000000..d7c2c5a
--- /dev/null
+++ b/fdx_convert/target/classes/images/intervalle_affichage.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/max-icon.png b/fdx_convert/target/classes/images/max-icon.png
new file mode 100644
index 0000000..191f0c2
--- /dev/null
+++ b/fdx_convert/target/classes/images/max-icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/max_icon.png b/fdx_convert/target/classes/images/max_icon.png
new file mode 100644
index 0000000..987bc8c
--- /dev/null
+++ b/fdx_convert/target/classes/images/max_icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/min-icon.png b/fdx_convert/target/classes/images/min-icon.png
new file mode 100644
index 0000000..60178dc
--- /dev/null
+++ b/fdx_convert/target/classes/images/min-icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/motif-title-bar.jpg b/fdx_convert/target/classes/images/motif-title-bar.jpg
new file mode 100644
index 0000000..4754959
--- /dev/null
+++ b/fdx_convert/target/classes/images/motif-title-bar.jpg
Binary files differ
diff --git a/fdx_convert/target/classes/images/next-img.png b/fdx_convert/target/classes/images/next-img.png
new file mode 100644
index 0000000..72e7830
--- /dev/null
+++ b/fdx_convert/target/classes/images/next-img.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/oeil.png b/fdx_convert/target/classes/images/oeil.png
new file mode 100644
index 0000000..bf5a58d
--- /dev/null
+++ b/fdx_convert/target/classes/images/oeil.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/previous-img.png b/fdx_convert/target/classes/images/previous-img.png
new file mode 100644
index 0000000..7a34d4b
--- /dev/null
+++ b/fdx_convert/target/classes/images/previous-img.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/print-disabled.png b/fdx_convert/target/classes/images/print-disabled.png
new file mode 100644
index 0000000..f366643
--- /dev/null
+++ b/fdx_convert/target/classes/images/print-disabled.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/print-new.png b/fdx_convert/target/classes/images/print-new.png
new file mode 100644
index 0000000..43fbec1
--- /dev/null
+++ b/fdx_convert/target/classes/images/print-new.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/print.png b/fdx_convert/target/classes/images/print.png
new file mode 100644
index 0000000..2295c0f
--- /dev/null
+++ b/fdx_convert/target/classes/images/print.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/reduire.png b/fdx_convert/target/classes/images/reduire.png
new file mode 100644
index 0000000..d172335
--- /dev/null
+++ b/fdx_convert/target/classes/images/reduire.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/success-icon.png b/fdx_convert/target/classes/images/success-icon.png
new file mode 100644
index 0000000..f2e7217
--- /dev/null
+++ b/fdx_convert/target/classes/images/success-icon.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/table-plus.png b/fdx_convert/target/classes/images/table-plus.png
new file mode 100644
index 0000000..7536085
--- /dev/null
+++ b/fdx_convert/target/classes/images/table-plus.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/tache.png b/fdx_convert/target/classes/images/tache.png
new file mode 100644
index 0000000..e4cce33
--- /dev/null
+++ b/fdx_convert/target/classes/images/tache.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/tache_hover.png b/fdx_convert/target/classes/images/tache_hover.png
new file mode 100644
index 0000000..8074d15
--- /dev/null
+++ b/fdx_convert/target/classes/images/tache_hover.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/trash.png b/fdx_convert/target/classes/images/trash.png
new file mode 100644
index 0000000..1c21ed9
--- /dev/null
+++ b/fdx_convert/target/classes/images/trash.png
Binary files differ
diff --git a/fdx_convert/target/classes/images/update-subtype.png b/fdx_convert/target/classes/images/update-subtype.png
new file mode 100644
index 0000000..668bdeb
--- /dev/null
+++ b/fdx_convert/target/classes/images/update-subtype.png
Binary files differ
diff --git a/fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractEditDialog.fxml b/fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractEditDialog.fxml
new file mode 100644
index 0000000..1fa7120
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractEditDialog.fxml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane style="-fx-border-color: #969696; -fx-background-color: transparent; -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractEditDialogController">
+   <top>
+      <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Titre de la fenêtre ici">
+                     <font>
+                        <Font name="Arial" size="15.0" />
+                     </font>
+                  </Text>
+               </children>
+               <padding>
+                  <Insets left="20.0" />
+               </padding></HBox>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/reduire.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+                  <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/agrandir.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+                  <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/fermer.png" />
+                           </image>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+               </children></HBox>
+         </children>
+         <padding>
+            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+         </padding>
+      </HBox>
+   </top>
+   <center>
+      <VBox BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" style="-fx-background-color: transparent;" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="47.0" top="10.0" />
+               </padding>
+            </HBox>
+            <BorderPane fx:id="formPanel" style="-fx-background-color: transparent;" VBox.vgrow="ALWAYS">
+               <center>
+                  <VBox BorderPane.alignment="CENTER">
+                     <padding>
+                        <Insets bottom="20.0" left="47.0" right="47.0" top="20.0" />
+                     </padding>
+                     <children>
+                        <VBox fx:id="formContainer" style="-fx-background-color: #F8F8F8; -fx-border-color: #E9E9E9; -fx-border-width: 1;" />
+                     </children>
+                  </VBox>
+               </center></BorderPane>
+            <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="31.0" prefWidth="404.0" spacing="5.0">
+               <children>
+                  <Button fx:id="cancelButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #949599; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+                     <font>
+                        <Font name="System Bold" size="12.0" />
+                     </font>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+                  <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #869447; -fx-background-radius: 0;" text="Enregistrer" textFill="WHITE">
+                     <font>
+                        <Font name="System Bold" size="12.0" />
+                     </font>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+               </children>
+               <padding>
+                  <Insets left="47.0" right="40.0" />
+               </padding>
+            </HBox>
+         </children>
+      </VBox>
+   </center>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+      <URL value="@../../../../styles/custom-main-style.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractMainDialog.fxml b/fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractMainDialog.fxml
new file mode 100644
index 0000000..5898cf7
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/abstracts/AbstractMainDialog.fxml
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="500.0" minWidth="700.0" prefHeight="569.0" prefWidth="982.0" style="-fx-border-color: #969696; -fx-border-width: 1;" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.megatimfx.common.abstracts.AbstractMainDialogController">
+   <center>
+      <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="12.0" style="-fx-background-color: #44507;" VBox.vgrow="ALWAYS">
+               <children>
+                  <VBox prefHeight="200.0" prefWidth="100.0" spacing="12.0" style="-fx-border-color: #D6D6D6; -fx-border-width: 1.5;" VBox.vgrow="ALWAYS">
+                     <children>
+                        <TitledPane collapsible="false" prefHeight="61.0" prefWidth="1223.0" text="Recherche">
+                           <content>
+                              <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+                                 <right>
+                                    <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+                                       <BorderPane.margin>
+                                          <Insets />
+                                       </BorderPane.margin>
+                                       <children>
+                                          <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor></Button>
+                                          <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="reset">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor></Button>
+                                          <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Recherche avancées">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </CheckBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </right>
+                                 <center>
+                                    <VBox BorderPane.alignment="CENTER">
+                                       <children>
+                                          <VBox fx:id="normalSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                          <VBox fx:id="advancedSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                       </children>
+                                       <BorderPane.margin>
+                                          <Insets top="5.0" />
+                                       </BorderPane.margin>
+                                    </VBox>
+                                 </center>
+                              </BorderPane>
+                           </content>
+                        </TitledPane>
+                        <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+                           <children>
+                              <HBox alignment="CENTER_LEFT" spacing="2.0">
+                                 <children>
+                                    <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" spacing="2.0">
+                                       <children>
+                                          <Button fx:id="btnAdd" mnemonicParsing="false" onAction="#onAddDialog" styleClass="main-btn-add" textFill="#ebf0ee">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnEdit" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" styleClass="main-btn-edit" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnPrint" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" styleClass="main-btn-print" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnDelete" mnemonicParsing="false" onAction="#removeElement" styleClass="main-btn-delete" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                       </children>
+                                    </HBox>
+                                 </children>
+                                 <opaqueInsets>
+                                    <Insets />
+                                 </opaqueInsets>
+                              </HBox>
+                              <VBox prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS">
+                                 <children>
+                                    <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+                                       <columnResizePolicy>
+                                          <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                       </columnResizePolicy>
+                                    </TableView>
+                                    <HBox alignment="CENTER_LEFT" spacing="15.0" style="-fx-background-color: #CECECE;">
+                                       <children>
+                                          <HBox alignment="CENTER" spacing="2.0">
+                                             <children>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Label text="précédent">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                      <Button fx:id="btnPrevious" mnemonicParsing="false" styleClass="previous-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor></Button>
+                                                   </children>
+                                                </HBox>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Button fx:id="btnNext" mnemonicParsing="false" styleClass="next-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor></Button>
+                                                      <Label text="suivant">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                   </children>
+                                                </HBox>
+                                             </children>
+                                          </HBox>
+                                          <Label fx:id="paginationNumberInfo" text="(200/400)">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </Label>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                           </children>
+                        </VBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="12.0" left="12.0" right="12.0" top="12.0" />
+                     </padding>
+                  </VBox>
+                  <HBox alignment="CENTER_RIGHT">
+                     <children>
+                        <Button fx:id="btnClose" mnemonicParsing="false" style="-fx-background-color: #CACACA; -fx-border-color: #A8A8A8;" text="Quitter">
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor></Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="12.0" left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </VBox>
+         </children>
+      </VBox>
+   </center>
+   <top>
+      <HBox alignment="CENTER" onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text fx:id="title" fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Titre de la fenêtre">
+                     <font>
+                        <Font name="Roboto" size="15.0" />
+                     </font>
+                  </Text>
+               </children>
+               <padding>
+                  <Insets left="30.0" />
+               </padding></HBox>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/fermer.png" />
+                           </image>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+         </padding>
+      </HBox>
+   </top>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-main-style.css" />
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/main.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/main.fxml
new file mode 100644
index 0000000..ef6039d
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/main.fxml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.image.*?>
+<?import javafx.scene.layout.*?>
+
+<VBox fx:id="mainContainer" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="600.0" prefWidth="1081.0" style="-fx-background-color: transparent;" stylesheets="@../../../../../styles/main_screen.css" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.MainController">
+    <children>
+        <HBox style="-fx-background-color: #f8f8f8;">
+            <children>
+                <HBox alignment="CENTER">
+                    <children>
+                        <ImageView fitHeight="48.0" fitWidth="190.0" pickOnBounds="true" preserveRatio="true">
+                            <image>
+                                <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                            </image>
+                        </ImageView>
+                    </children>
+                    <padding>
+                        <Insets right="30.0" />
+                    </padding>
+                </HBox>
+                <HBox fx:id="myMenuBar">
+                    <children>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Fichier">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/Fichier.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <MenuItem mnemonicParsing="false" onAction="#quit" text="Quitter" />
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Paramètres">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-02.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <Menu mnemonicParsing="false" text="Type Fichier">
+                                    <items>
+                                        <MenuItem mnemonicParsing="false" onAction="#openImportTypeFichierDialog" text="Importer" />
+                                        <MenuItem mnemonicParsing="false" onAction="#openTypeFichierDialog" text="Consulter" />
+                                    </items>
+                                </Menu>
+                                <MenuItem fx:id="configMenuItem" mnemonicParsing="false" onAction="#openConfigDialog" text="Configurer les répertoires" />
+                        <Menu mnemonicParsing="false" text="Enregistrement des formats de validation">
+                          <items>
+                                      <MenuItem mnemonicParsing="false" onAction="#openValidateurDialog" text="Fichiers de données Texte" />
+                            <!--<MenuItem mnemonicParsing="false" onAction="#openJsonToValidateDialog" text="Fichiers de données JSON" />-->
+                          </items>
+                        </Menu>
+                        <!--<MenuItem fx:id="configMenuItem1" mnemonicParsing="false" onAction="#openJsonStructureView" text="Structures JSON" />-->                        
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Conversion">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-03.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                        <MenuItem fx:id="conversionModelMenuItem" mnemonicParsing="false" onAction="#openConversionModelDialog" text="Modèles de conversion" />
+                                <MenuItem fx:id="validationManuelMenuItem" mnemonicParsing="false" onAction="#openFileToValidateDialog" text="Manuelle" />
+                                <Menu mnemonicParsing="false" text="Automatique">
+                                    <items>
+                                        <MenuItem fx:id="paramAutomatiqueMenuItem" mnemonicParsing="false" onAction="#openTacheDialog" text="Tâches" />
+                              <MenuItem fx:id="journalMenuItem" mnemonicParsing="false" onAction="#openJournalDialog" text="Journal des tâches" />
+                                    </items>
+                                </Menu>
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" mnemonicParsing="false" text="Outils">
+                            <graphic>
+                                <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-04.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <MenuItem mnemonicParsing="false" onAction="#openDecryptageAESSymDailog" text="Décryptage AES symétrique" />
+                                <MenuItem fx:id="menuTableauDeBord" mnemonicParsing="false" onAction="#openTxtFileToValidateDialog" text="Vérifier format d'un fichier texte" />
+                        <MenuItem fx:id="menuConversionJson" mnemonicParsing="false" onAction="#openTxtFileToJsonDialog" text="Convertir un fichier de données en Json" />
+                            </items>
+                        </MenuButton>
+                        <MenuButton contentDisplay="TOP" disable="true" mnemonicParsing="false" text="Aide">
+                            <graphic>
+                                <ImageView disable="true" fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                        <Image url="@../../../../../images/143-05.png" />
+                                    </image>
+                                </ImageView>
+                            </graphic>
+                            <items>
+                                <MenuItem mnemonicParsing="false" onAction="#openAproposrDialog" text="A propos" />
+                            </items>
+                        </MenuButton>
+                    </children>
+                </HBox>
+            </children>
+            <padding>
+                <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+            </padding>
+        </HBox>
+        <HBox spacing="10.0" style="-fx-background-color: #fff; -fx-border-color: #dedfe0;">
+            <padding>
+                <Insets bottom="5.0" left="15.0" right="5.0" top="5.0" />
+            </padding>
+            <children>
+                <HBox prefWidth="200.0" spacing="10.0">
+                    <children>
+                        <Button fx:id="btnImportationFormatValidation" mnemonicParsing="false" onAction="#openValidateurDialog" styleClass="receive">
+                            <cursor>
+                                <Cursor fx:constant="HAND" />
+                            </cursor>
+                        </Button>
+                        <Button fx:id="btnConvertionManuelle" mnemonicParsing="false" onAction="#openFileToValidateDialog" styleClass="generate">
+                            <cursor>
+                                <Cursor fx:constant="HAND" />
+                            </cursor>
+                        </Button>
+                        <Button fx:id="btnGestionTachesConvertion" mnemonicParsing="false" onAction="#openTacheDialog" styleClass="treatment">
+                            <cursor>
+                                <Cursor fx:constant="HAND" />
+                            </cursor>
+                        </Button>
+                    </children>
+                </HBox>
+                <HBox alignment="TOP_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS" />
+            </children>
+        </HBox>
+        <AnchorPane prefHeight="578.0" prefWidth="800.0" style="-fx-border-color: #F8F8F8; -fx-border-width: 0;" styleClass="main_screen" VBox.vgrow="ALWAYS" />
+    </children>
+</VBox>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml
new file mode 100644
index 0000000..1bfa84a
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelAdvancedSearchForm.fxml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="81.0" prefWidth="468.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefWidth="158.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Délimiteur de ligne" />
+                  <StackPane prefHeight="150.0" prefWidth="200.0">
+                     <children>
+                        <TextField fx:id="codeDelimiteurLigneTextField" minWidth="300.0" prefWidth="300.0" visible="false" />
+                        <ComboBox fx:id="delimiteurLigneComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+            <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefHeight="25.0" prefWidth="158.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                  <StackPane prefHeight="150.0" prefWidth="200.0">
+                     <children>
+                        <TextField fx:id="codeDelimiteurColonneTextField" visible="false" />
+                        <ComboBox fx:id="delimiteurColonneComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets top="10.0" />
+         </padding>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml
new file mode 100644
index 0000000..e58cd15
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/ConversionModelSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="69.0" prefWidth="604.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.ConversionModelSearchController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefHeight="25.0" prefWidth="158.0" style="-fx-text-fill: black;" text="Type du fichier à valider" />
+                  <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="418.0" prefHeight="25.0" prefWidth="418.0" />
+               </children>
+            </HBox>
+            <HBox alignment="CENTER_LEFT" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="158.0" prefHeight="25.0" prefWidth="158.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Format du fichier de données" />
+                  <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="418.0" prefHeight="25.0" prefWidth="418.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml
new file mode 100644
index 0000000..4854ab6
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalAdvancedSearchForm.fxml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.DatePicker?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.ColumnConstraints?>
+<?import javafx.scene.layout.GridPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.RowConstraints?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="120.0" prefWidth="773.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierAdvancedSearchFormController">
+   <children>
+      <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <GridPane hgap="110.0" vgap="20.0">
+              <columnConstraints>
+                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+              </columnConstraints>
+              <rowConstraints>
+                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+              </rowConstraints>
+               <children>
+                  <HBox spacing="10.0">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="94.0" prefHeight="25.0" prefWidth="94.0" style="-fx-text-fill: black;" text="Statut de l'action" />
+                        <ComboBox fx:id="statutActionComboBox" minHeight="25.0" minWidth="260.0" prefHeight="25.0" prefWidth="260.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets bottom="5.0" top="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.rowIndex="1">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="94.0" prefHeight="25.0" prefWidth="94.0" style="-fx-text-fill: black;" text="Date de début" />
+                        <DatePicker fx:id="dateDebutDatePicker" minHeight="25.0" minWidth="260.0" prefHeight="25.0" prefWidth="260.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets bottom="5.0" top="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="115.0" prefHeight="25.0" prefWidth="115.0" style="-fx-text-fill: black;" text="Date de fin" />
+                        <DatePicker fx:id="dateFinDatePicker" minHeight="25.0" minWidth="200.0" prefHeight="25.0" prefWidth="250.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets bottom="5.0" />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets bottom="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.rowIndex="2">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="94.0" prefHeight="25.0" prefWidth="94.0" style="-fx-text-fill: black;" text="Fichier Source" />
+                        <TextField fx:id="sourceFileNameTextField" minWidth="260.0" prefHeight="25.0" prefWidth="260.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets bottom="5.0" />
+                     </GridPane.margin>
+                     <padding>
+                        <Insets top="5.0" />
+                     </padding>
+                  </HBox>
+                  <HBox spacing="10.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
+                     <children>
+                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="115.0" prefHeight="25.0" prefWidth="115.0" style="-fx-text-fill: black;" text="Fichier Destination" />
+                        <TextField fx:id="destinationFileNameTextField" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" />
+                     </children>
+                     <GridPane.margin>
+                        <Insets bottom="5.0" />
+                     </GridPane.margin>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+               </padding>
+               <VBox.margin>
+                  <Insets />
+               </VBox.margin>
+            </GridPane>
+         </children>
+      </VBox>
+   </children>
+   <padding>
+      <Insets top="5.0" />
+   </padding>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalSearchForm.fxml
new file mode 100644
index 0000000..e945c6c
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/JournalSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="31.0" prefWidth="346.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="104.0" prefHeight="25.0" prefWidth="104.0" style="-fx-text-fill: black;" text="Type Fichier" />
+                  <StackPane minHeight="25.0" minWidth="260.0" prefHeight="25.0" prefWidth="260.0">
+                     <children>
+                        <TextField fx:id="typeFichierTextField" editable="false" minHeight="25.0" minWidth="250.0" prefHeight="25.0" prefWidth="250.0" style="-fx-background-color: #ffff;" visible="false" />
+                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectionItem" minHeight="25.0" minWidth="250.0" prefHeight="25.0" prefWidth="250.0" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/TacheSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TacheSearchForm.fxml
new file mode 100644
index 0000000..96c9fe5
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TacheSearchForm.fxml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="326.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TacheSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox alignment="CENTER" prefHeight="25.0" prefWidth="315.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" contentDisplay="CENTER" minWidth="96.0" prefHeight="18.0" prefWidth="96.0" style="-fx-text-fill: black;" text="Type de Fichier">
+                     <font>
+                        <Font size="14.0" />
+                     </font>
+                  </Label>
+                  <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="100.0" prefHeight="25.0" prefWidth="207.0" HBox.hgrow="ALWAYS" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml
new file mode 100644
index 0000000..ead0875
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementAdvancedSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.DatePicker?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="67.0" prefWidth="352.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TruncatedElementAdvancedSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="106.0" prefHeight="15.0" prefWidth="106.0" text="Code de la colonne" />
+                  <TextField fx:id="codeColonneTextfield" minHeight="25.0" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+            <HBox spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="106.0" prefHeight="25.0" prefWidth="106.0" text="Date de l'action" />
+                  <DatePicker fx:id="dateActionDatePicker" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml
new file mode 100644
index 0000000..88dac02
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TruncatedElementSearchForm.fxml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="364.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TruncatedElementSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="10.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="106.0" prefHeight="25.0" prefWidth="106.0" text="Type du fichier" />
+                  <StackPane prefHeight="150.0" prefWidth="200.0">
+                     <children>
+                        <TextField fx:id="codeTypeFichierTextfield" editable="false" minHeight="25.0" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" style="-fx-background-radius: 0%;" visible="false" />
+                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectionItem" minWidth="229.0" prefWidth="229.0" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+   <padding>
+      <Insets bottom="10.0" />
+   </padding>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml
new file mode 100644
index 0000000..576260a
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierAdvancedSearchForm.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="30.0" prefWidth="600.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierAdvancedSearchFormController">
+   <children>
+      <VBox prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox layoutX="10.0" layoutY="45.0" prefHeight="25.0" prefWidth="353.0" spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="58.0" prefWidth="58.0" style="-fx-text-fill: black;" text="Participant">
+                     <HBox.margin>
+                        <Insets />
+                     </HBox.margin></Label>
+                  <TextField fx:id="participant" prefHeight="25.0" prefWidth="120.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+            <HBox spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" prefWidth="57.0" style="-fx-text-fill: black;" text="Libelle" />
+                  <TextField fx:id="libelle" style="-fx-background-radius: 0%;" HBox.hgrow="ALWAYS" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+   <padding>
+      <Insets top="10.0" />
+   </padding>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml
new file mode 100644
index 0000000..1337230
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/TypeFichierSearchForm.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="251.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.TypeFichierSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="395.0" spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="42.0" prefWidth="57.0" style="-fx-text-fill: black;" text="Code" />
+                  <TextField fx:id="code" prefWidth="120.0" style="-fx-background-radius: 0%;" />
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml
new file mode 100644
index 0000000..736f206
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/controller/search/ValidateurSearchForm.fxml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="25.0" prefWidth="358.0" stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.controller.search.ValidateurSearchFormController">
+   <children>
+      <VBox layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox prefHeight="25.0" prefWidth="323.0" spacing="5.0">
+               <children>
+                  <Label alignment="CENTER_RIGHT" minWidth="42.0" prefHeight="17.0" prefWidth="89.0" style="-fx-text-fill: black;" text="Type du Fichier" />
+                  <StackPane prefHeight="25.0" prefWidth="264.0">
+                     <children>
+                        <TextField fx:id="codeTypeFichierTextfield" editable="false" minWidth="229.0" prefHeight="25.0" prefWidth="229.0" style="-fx-background-radius: 0%;" visible="false" />
+                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectionItem" minWidth="229.0" prefWidth="229.0" />
+                     </children>
+                  </StackPane>
+               </children>
+            </HBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/About.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/About.fxml
new file mode 100644
index 0000000..07d3f90
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/About.fxml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane style="-fx-border-color: #969696; -fx-background-color: transparent; -fx-border-width: 1;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.forms.AproposEditFormController">
+   <center>
+      <VBox BorderPane.alignment="CENTER">
+         <children>
+            <BorderPane fx:id="formPanel" style="-fx-background-color: transparent;" VBox.vgrow="ALWAYS">
+               <center>
+                  <VBox BorderPane.alignment="CENTER">
+                     <padding>
+                        <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" />
+                     </padding>
+                     <children>
+                        <VBox fx:id="formContainer" spacing="15.0" style="-fx-border-color: #E9E9E9; -fx-border-width: 1;" VBox.vgrow="ALWAYS">
+                           <children>
+                              <VBox>
+                                 <children>
+                                    <HBox>
+                                       <children>
+                                          <Label text="Sirius-Sygma">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" />
+                                       </padding>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Version :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="1.0.2" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Build time :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="02 septembre 2022" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Auteur :  ">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="Megatim Ltd (www.megatimgroup.com)" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Mail :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="contact@megatimgroup.com" />
+                                       </children>
+                                    </HBox>
+                                    <HBox spacing="5.0">
+                                       <children>
+                                          <Label text="Licence d'utilisateur octroyée à la société :">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                          </Label>
+                                          <Label text="UBA Cameroon SA" />
+                                       </children>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                              <VBox spacing="10.0">
+                                 <children>
+                                    <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Le logiciel Sirius-Sygma est un intergiciel qui assiste la génération des messages financiers MT103 et MT202, dans le cadre des l'intercommunication du Système d'information et leRTGS de la zone CEMAC dénommé SYGMA." wrappingWidth="496.13671875" />
+                                    <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Il s'agit d'une application ergonomique, facile de prise en main et développée en langage Java avec des technologies éprouvées." wrappingWidth="498.13671875" />
+                                 </children>
+                              </VBox>
+                           </children>
+                           <padding>
+                              <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" />
+                           </padding></VBox>
+                     </children>
+                  </VBox>
+               </center>
+            </BorderPane>
+            <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" prefHeight="0.0" prefWidth="621.0" spacing="5.0">
+               <padding>
+                  <Insets bottom="20.0" left="30.0" right="30.0" />
+               </padding>
+            </HBox>
+         </children>
+      </VBox>
+   </center>
+   <stylesheets>
+      <URL value="@../styles/main-style.css" />
+      <URL value="@../styles/title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml
new file mode 100644
index 0000000..f7888fa
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/AlphaNumeriqueFieldEditForm.fxml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="105.0" prefWidth="706.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.MetaAlphaNumeriqueFieldEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Champs à tronquer">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" prefWidth="212.0" text="Code du champ à tronquer" />
+                              <AbstractSelectionItem fx:id="alphaNumeriqueFieldAbstractSelectItem" prefWidth="427.0" />
+                                    </children>
+                                </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ConfigEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ConfigEditForm.fxml
new file mode 100644
index 0000000..70bd06b
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ConfigEditForm.fxml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="215.0" prefWidth="708.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConfigEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Informations sur les répertoires">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire des fichiers de données" />
+                              <CustomDirectoryChooser fx:id="datasDirectoryChooser" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire d'exportation des validateurs" />
+                              <CustomDirectoryChooser fx:id="validatorsDirectoryChooser" minHeight="25.0" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire des erreurs" />
+                              <CustomDirectoryChooser fx:id="errorDirectoryChooser" minHeight="25.0" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="116.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire de sortie" />
+                              <CustomDirectoryChooser fx:id="outputDirectoryChooser" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="155.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="212.0" prefHeight="25.0" prefWidth="212.0" style="-fx-text-fill: black;" text="Répertoire d'archivage" />
+                              <CustomDirectoryChooser fx:id="archivesDirectoryChooser" minWidth="420.0" prefWidth="420.0" style="-fx-text-fill: black;" />
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ConversionModelEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ConversionModelEditForm.fxml
new file mode 100644
index 0000000..3a1db46
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ConversionModelEditForm.fxml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Tab?>
+<?import javafx.scene.control.TabPane?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="562.0" prefWidth="678.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConversionModelEditFormController">
+   <children>
+      <VBox prefHeight="697.0" prefWidth="678.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TabPane fx:id="tabPane" prefHeight="553.0" prefWidth="702.0" stylesheets="@../../../../../styles/CustomFormComponents.css" tabClosingPolicy="UNAVAILABLE">
+              <tabs>
+                <Tab text="Description du fichier de données">
+                     <content>
+                        <VBox prefHeight="574.0" prefWidth="687.0" spacing="15.0">
+                           <children>
+                              <TitledPane collapsible="false" prefHeight="659.0" prefWidth="647.0" style="-fx-text-fill: #fff;" text="Informations générales">
+                                 <content>
+                                    <VBox prefHeight="534.0" prefWidth="643.0" spacing="20.0" style="-fx-background-color: #fff;">
+                                       <children>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="25.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Libellé du modèle" />
+                                                <TextField fx:id="libelleTextField" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Type du fichier à valider" />
+                                                <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="418.0" prefHeight="25.0" prefWidth="418.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="sourceHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire source">
+                                                   <font>
+                                                      <Font size="14.0" />
+                                                   </font>
+                                                </Label>
+                                                <CustomDirectoryChooser fx:id="repertoireSource" minWidth="418.0" prefWidth="418.0" HBox.hgrow="ALWAYS" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="sourceHBox1" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire destination">
+                                                   <font>
+                                                      <Font size="14.0" />
+                                                   </font>
+                                                </Label>
+                                                <CustomDirectoryChooser fx:id="repertoireDestination" minWidth="418.0" prefWidth="418.0" HBox.hgrow="ALWAYS" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="sourceHBox11" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire d'erreur">
+                                                   <font>
+                                                      <Font size="14.0" />
+                                                   </font>
+                                                </Label>
+                                                <CustomDirectoryChooser fx:id="repertoireErreur" minWidth="418.0" prefWidth="418.0" HBox.hgrow="ALWAYS" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="169.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Format du fichier de données" />
+                                                <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Délimiteur de ligne" />
+                                                <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                                <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                                                <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                          <HBox layoutX="25.0" layoutY="244.0" prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="176.0" prefHeight="25.0" prefWidth="176.0" style="-fx-text-fill: black;" text="Validation stricte des données ?" />
+                                                <CheckBox fx:id="strictValidationCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+                <Tab text="Champs à tronquer">
+                     <content>
+                        <VBox prefHeight="581.0" prefWidth="678.0" spacing="15.0">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Informations sur les champs">
+                                 <content>
+                                    <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                       <children>
+                                          <HBox alignment="CENTER_RIGHT">
+                                             <children>
+                                                <CheckBox fx:id="saisieAlphaNumeriqueFieldChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../../../../../../generation-validateur-typefichier/src/main/resources/styles/style.css" text="Sélectionner les champs à tronquer" />
+                                             </children>
+                                          </HBox>
+                                          <AbstractNestedEntityTable fx:id="metaAlphaNumeriqueFieldAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+              </tabs>
+            </TabPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml
new file mode 100644
index 0000000..e0c358f
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/DataFileToJsonEditForm.fxml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="330.0" prefWidth="624.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.DataFileToJsonFormController">
+    <children>
+        <VBox fillWidth="false" layoutX="-23.0" layoutY="40.0" prefHeight="226.0" prefWidth="698.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #ffffff;" text="Informations sur le fichier à convertir">
+               <content>
+                  <VBox prefHeight="275.0" prefWidth="614.0" spacing="20.0" style="-fx-background-color: #fff;">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="25.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="TypeFichier" />
+                              <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Validateur XML" />
+                              <CustomFileChooser fx:id="validateurFileChooser" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Fichier à convertir" />
+                              <CustomFileChooser fx:id="fileToConvertFileChooser" minWidth="390.0" prefWidth="390.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="169.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Format du fichier de données" />
+                              <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" style="-fx-background-radius: 0%;" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                              <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" style="-fx-background-radius: 0%;" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                              <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" style="-fx-background-radius: 0%;" />
+                           </children>
+                        </HBox>
+                        <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="170.0" prefHeight="25.0" prefWidth="170.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                              <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                     </padding>
+                  </VBox>
+               </content>
+                </TitledPane>
+            </children>
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+         </padding>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/DecryptageAESEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/DecryptageAESEditForm.fxml
new file mode 100644
index 0000000..3b4be41
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/DecryptageAESEditForm.fxml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="235.0" prefWidth="657.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.DecryptageAESEditFormController">
+    <children>
+        <VBox fillWidth="false" layoutX="-23.0" layoutY="40.0" prefHeight="226.0" prefWidth="698.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #ffffff;" text="Informations sur le fichier à décrypter">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #ffffff;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Fichier à décrypter" />
+                              <CustomFileChooser fx:id="fileToDecrypt" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Repertoire de dépôt du fichier décrypté" />
+                              <CustomDirectoryChooser fx:id="outputDir" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Clé de décryptage" />
+                              <StackPane minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0">
+                                 <children>
+                                    <PasswordField fx:id="keyToDecryptField" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                                    <TextField fx:id="showKeyTextField" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0" />
+                                    <ImageView fx:id="eyeImageView" fitHeight="15.0" fitWidth="15.0" onMousePressed="#eyeOnMousePressed" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER_RIGHT">
+                                       <image>
+                                          <Image url="@../../../../../images/oeil.png" />
+                                       </image>
+                                       <StackPane.margin>
+                                          <Insets right="5.0" />
+                                       </StackPane.margin>
+                                    </ImageView>
+                                 </children>
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </StackPane>
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="210.0" prefHeight="25.0" prefWidth="210.0" style="-fx-text-fill: black;" text="Confirmation de la clé" />
+                              <PasswordField fx:id="keyConfirmationField" minHeight="25.0" minWidth="370.0" prefHeight="25.0" prefWidth="370.0">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </PasswordField>
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+         </padding>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/FileToValidateEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/FileToValidateEditForm.fxml
new file mode 100644
index 0000000..277d67d
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/FileToValidateEditForm.fxml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Tab?>
+<?import javafx.scene.control.TabPane?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="503.0" prefWidth="705.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.FileToValidateEditFormController">
+   <children>
+      <VBox prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TabPane fx:id="tabPane" prefHeight="553.0" prefWidth="702.0" stylesheets="@../../../../../styles/CustomFormComponents.css" tabClosingPolicy="UNAVAILABLE">
+              <tabs>
+                <Tab text="Fichier à valider">
+                     <content>
+                        <VBox prefHeight="518.0" prefWidth="645.0" spacing="15.0">
+                           <children>
+                              <TitledPane collapsible="false" prefHeight="496.0" prefWidth="702.0" style="-fx-text-fill: #fff;" text="Informations sur le fichier à valider">
+                                 <content>
+                                    <VBox prefHeight="275.0" prefWidth="614.0" spacing="20.0" style="-fx-background-color: #fff;">
+                                       <children>
+                                          <HBox layoutX="25.0" layoutY="358.0" prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Utiliser un modèle de conversion existant" />
+                                                <CheckBox fx:id="useExistingConversionModelCheckBox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="25.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Modèle de conversion" />
+                                                <AbstractSelectionItem fx:id="conversionModelAbstractSelectItem" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" maxWidth="213.0" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Type du fichier à valider" />
+                                                <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Fichier à valider" />
+                                                <CustomFileChooser fx:id="fileToValidateFileChooser" minWidth="390.0" prefWidth="390.0" />
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="169.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Format du fichier de données" />
+                                                <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                                                <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                                <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                             </children>
+                                          </HBox>
+                                          <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                                                <CheckBox fx:id="headerPresentCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                          <HBox layoutX="25.0" layoutY="244.0" prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                             <children>
+                                                <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Validation stricte des données ?" />
+                                                <CheckBox fx:id="strictValidationCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                             </children>
+                                          </HBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+                <Tab text="Champs à tronquer">
+                     <content>
+                        <VBox prefHeight="200.0" prefWidth="100.0" spacing="15.0">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Informations sur les champs">
+                                 <content>
+                                    <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                       <children>
+                                          <HBox alignment="CENTER_RIGHT">
+                                             <children>
+                                                <CheckBox fx:id="saisieAlphaNumeriqueFieldChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../../../../../../generation-validateur-typefichier/src/main/resources/styles/style.css" text="Sélectionner les champs à tronquer" />
+                                             </children>
+                                          </HBox>
+                                          <AbstractNestedEntityTable fx:id="metaAlphaNumeriqueFieldAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                </Tab>
+              </tabs>
+            </TabPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml
new file mode 100644
index 0000000..a2dc749
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ImportRawCsvDataEditForm.fxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="216.0" prefWidth="648.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.RawCsvDataEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" prefHeight="271.0" prefWidth="665.0" spacing="5.0" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="-6.0" AnchorPane.rightAnchor="-11.0" AnchorPane.topAnchor="7.0">
+            <padding>
+                <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="231.0" prefWidth="598.0" style="-fx-text-fill: #fff;" styleClass="text" text="Informations sur le fichier à importer">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #fff;">
+                            <children>
+<!--                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+                                        <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+                                    </children>
+                                </HBox>-->
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur de ligne" />
+                                        <ComboBox fx:id="delimiteurLigne" prefWidth="150.0" style="-fx-background-radius: 0%; -fx-background-color: #fff; -fx-border-color: #C9C9CC;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Délimiteur colonne" />
+                                        <ComboBox fx:id="delimiteurColonne" prefWidth="150.0" style="-fx-background-radius: 0%; -fx-background-color: #fff; -fx-border-color: #C9C9CC;" />
+                                    </children>
+                                </HBox>
+<!--                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Type de fichier" />
+                                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="330.0" prefWidth="330.0" />
+                                    </children>
+                                </HBox>-->
+                                <HBox alignment="CENTER_LEFT">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Fichier à importer" />
+                                        <TextField fx:id="fileToImportTextField" prefHeight="25.0" prefWidth="336.0" style="-fx-background-radius: 0%;">
+                                            <HBox.margin>
+                                                <Insets left="10.0" right="2.0" />
+                                            </HBox.margin>
+                                        </TextField>
+                                        <Button fx:id="importButton" maxWidth="25.0" minHeight="28.0" mnemonicParsing="false" onMousePressed="#importButtonOnClicked" prefHeight="28.0" prefWidth="25.0" style="-fx-background-radius: 0%; -fx-font-weight: bold; -fx-background-color: #fff; -fx-border-color: #C9C9CC;" text="...">
+                                            <HBox.margin>
+                                                <Insets right="10.0" />
+                                            </HBox.margin>
+                                        </Button>
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Repertoire de dépôt du fichier txt" />
+                              <TextField fx:id="OutDirTextField" prefHeight="25.0" prefWidth="336.0" style="-fx-background-radius: 0%;">
+                                 <HBox.margin>
+                                    <Insets left="10.0" right="2.0" />
+                                 </HBox.margin>
+                              </TextField>
+                              <Button fx:id="OutButton" maxHeight="28.0" minHeight="28.0" mnemonicParsing="false" onMousePressed="#outButtonOnClicked" prefHeight="28.0" style="-fx-background-radius: 0%; -fx-background-color: #fff; -fx-border-color: #C9C9CC; -fx-font-weight: bold;" text="...">
+                                 <HBox.margin>
+                                    <Insets right="10.0" />
+                                 </HBox.margin>
+                              </Button>
+                           </children>
+                        </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml
new file mode 100644
index 0000000..c1d9f59
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ImportTypeFichierEditForm.fxml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="194.0" prefWidth="555.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ImportTypeFichierEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" prefHeight="223.0" prefWidth="664.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <padding>
+                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="174.0" prefWidth="582.0" style="-fx-text-fill: #FFFFFF;" text="Informations sur le fichier à importer">
+                    <content>
+                        <VBox prefHeight="154.0" prefWidth="605.0" spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+<!--                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="205.0" text="Format du fichier" />
+                                        <ComboBox fx:id="formatFichier" prefWidth="150.0" />
+                                    </children>
+                                </HBox>-->
+                                <HBox alignment="CENTER_LEFT" prefHeight="28.0" prefWidth="475.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="116.0" prefHeight="17.0" prefWidth="116.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                                        <ComboBox fx:id="delimiteurLigne" minHeight="25.0" prefHeight="25.0" prefWidth="366.0" style="-fx-background-radius: 0%;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefHeight="17.0" prefWidth="116.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                        <ComboBox fx:id="delimiteurColonne" minHeight="25.0" prefHeight="25.0" prefWidth="366.0" style="-fx-background-radius: 0%;" />
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" prefHeight="29.0" prefWidth="505.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefHeight="17.0" prefWidth="116.0" style="-fx-text-fill: black;" text="Fichier à importer" />
+                              <CustomFileChooser fx:id="fileToImportCustomFile" minHeight="25.0" minWidth="366.0" prefHeight="25.0" prefWidth="366.0" />
+                                    </children>
+                                </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/JournalEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/JournalEditForm.fxml
new file mode 100644
index 0000000..c76074c
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/JournalEditForm.fxml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="249.0" prefWidth="621.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConfigEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Informations sur l'action">
+                    <content>
+                        <VBox spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Date" />
+                              <TextField fx:id="dateActionTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="153.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefWidth="120.0" text="Statut" />
+                              <TextField fx:id="statutActionTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="168.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="TypeFichier" />
+                              <TextField fx:id="typefichierfichierTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="153.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefWidth="120.0" text="Répertoire source" />
+                              <TextField fx:id="sourceDirectoryTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="155.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefWidth="120.0" text="Fichier source" />
+                              <TextField fx:id="sourceFileNameTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="290.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Nombre lignes" />
+                              <TextField fx:id="nombreLignesTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="200.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Répertoire destination" />
+                              <TextField fx:id="destinationDirectoryTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="245.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="120.0" prefHeight="15.0" prefWidth="120.0" text="Fichier destination" />
+                              <TextField fx:id="destinationFileNameTextfield" minWidth="438.0" prefHeight="25.0" prefWidth="438.0" />
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ModeleJsonEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ModeleJsonEditForm.fxml
new file mode 100644
index 0000000..690ddd6
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ModeleJsonEditForm.fxml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableColumn?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="458.0" prefWidth="671.0" stylesheets="@../../../../../styles/custom-main-style.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ModeleJsonEditFormController">
+   <children>
+      <VBox alignment="CENTER" prefHeight="458.0" prefWidth="671.0">
+         <children>
+            <VBox alignment="CENTER" prefHeight="453.0" prefWidth="683.0" spacing="5.0">
+               <padding>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </padding>
+               <children>
+                  <TitledPane collapsible="false" text="Informations sur le fichier JSON">
+                     <content>
+                        <VBox prefHeight="31.0" prefWidth="603.0" spacing="5.0">
+                           <padding>
+                              <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                           </padding>
+                           <children>
+                              <HBox minWidth="400.0" prefHeight="46.0" prefWidth="400.0">
+                                 <children>
+                                    <HBox alignment="CENTER_LEFT" prefHeight="27.0" prefWidth="352.0" spacing="5.0">
+                                       <children>
+                                          <Label alignment="CENTER_RIGHT" minWidth="60.0" text="Type de fichier" />
+                                          <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minWidth="100.0" prefWidth="261.0" />
+                                       </children>
+                                    </HBox>
+                                    <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                       <children>
+                                          <Label alignment="CENTER_RIGHT" minWidth="100.0" prefWidth="100.0" text="Nom de l'objet" />
+                                          <TextField fx:id="objectNameTextField" minWidth="100.0" prefHeight="27.0" prefWidth="153.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                                       </children>
+                                    </HBox>
+                                 </children>
+                              </HBox>
+                           </children>
+                        </VBox>
+                     </content>
+                  </TitledPane>
+                  <HBox alignment="CENTER" prefHeight="333.0" prefWidth="631.0" spacing="5.0">
+                     <children>
+                        <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="313.0" prefWidth="356.0" text="Structure des champs">
+                           <content>
+                              <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                 <children>
+                                    <AbstractNestedEntityTable fx:id="structureChampAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                 </children>
+                                 <padding>
+                                    <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                 </padding>
+                              </VBox>
+                           </content>
+                        </TitledPane>
+                        <TitledPane animated="false" collapsible="false" prefHeight="318.0" prefWidth="273.0" text="Liste des sous-types">
+                           <content>
+                              <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0">
+                                 <children>
+                                    <HBox alignment="CENTER" prefHeight="10.0" prefWidth="249.0" />
+                                    <HBox alignment="CENTER" minHeight="25.0" minWidth="249.0" prefHeight="25.0" prefWidth="249.0">
+                                       <children>
+                                          <HBox alignment="CENTER" minWidth="155.0" prefWidth="155.0">
+                                             <HBox.margin>
+                                                <Insets />
+                                             </HBox.margin>
+                                          </HBox>
+                                          <HBox alignment="CENTER">
+                                             <children>
+                                                <Button fx:id="subTypeAddButton" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-add">
+                                                   <HBox.margin>
+                                                      <Insets right="5.0" />
+                                                   </HBox.margin>
+                                                </Button>
+                                                <Button fx:id="subTypeUpdateButton" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-update">
+                                                   <HBox.margin>
+                                                      <Insets right="5.0" />
+                                                   </HBox.margin>
+                                                </Button>
+                                                <Button fx:id="subTypeDeleteButton" disable="true" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-delete">
+                                                   <HBox.margin>
+                                                      <Insets />
+                                                   </HBox.margin>
+                                                </Button>
+                                             </children>
+                                             <HBox.margin>
+                                                <Insets />
+                                             </HBox.margin>
+                                          </HBox>
+                                       </children>
+                                       <VBox.margin>
+                                          <Insets bottom="6.0" />
+                                       </VBox.margin>
+                                    </HBox>
+                                    <HBox alignment="CENTER" minHeight="223.0" minWidth="249.0" prefHeight="223.0" prefWidth="249.0">
+                                       <children>
+                                          <TableView fx:id="subObjetsTableView" minWidth="249.0" prefWidth="249.0">
+                                             <columns>
+                                                <TableColumn fx:id="subObjectTableColumn" editable="false" maxWidth="1.7976931348623157E308" minWidth="249.0" prefWidth="249.0" sortable="false" text="Nom de l'objet" />
+                                             </columns>
+                                          </TableView>
+                                       </children>
+                                       <VBox.margin>
+                                          <Insets />
+                                       </VBox.margin>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                           </content>
+                        </TitledPane>
+                     </children>
+                  </HBox>
+               </children>
+            </VBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml
new file mode 100644
index 0000000..8e0ed8d
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/StructureChampJsonEditForm.fxml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="291.0" prefWidth="396.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.StructureChampJsonEditFormController">
+   <children>
+      <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TitledPane collapsible="false" text="Informations générales sur la structure du champ" VBox.vgrow="ALWAYS">
+               <content>
+                  <VBox fx:id="formFieldContainer" alignment="CENTER" spacing="10.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Libellé" />
+                              <TextField fx:id="libelleTextField" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Type de données" />
+                              <ComboBox fx:id="typeDonneeComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="dateFormatContainer" alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Format date" />
+                               <ComboBox fx:id="formatDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                              <!--<TextField fx:id="formatDateTextField" prefWidth="100.0" />-->
+                           </children>
+                        </HBox>
+                        <HBox fx:id="dateFormatContainer1" alignment="CENTER_LEFT" layoutX="25.0" layoutY="175.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Séparateur de date" />
+                              <ComboBox fx:id="delimiteurDateComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="dateFormatContainer11" alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Forme du champ" />
+                              <CheckBox fx:id="listeCheckBox" mnemonicParsing="false" text="Liste" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="55.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="110.0" prefWidth="110.0" text="Type de l'objet" />
+                              <ComboBox fx:id="typeObjetComboBox" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                     </padding>
+                  </VBox>
+               </content>
+            </TitledPane>
+         </children>
+         <padding>
+            <Insets bottom="20.0" left="32.0" right="32.0" top="20.0" />
+         </padding>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/SubObjectEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/SubObjectEditForm.fxml
new file mode 100644
index 0000000..c62a3e5
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/SubObjectEditForm.fxml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableColumn?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="458.0" prefWidth="648.0" stylesheets="@../../../../../styles/custom-main-style.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.SubObjectEditFormController">
+   <children>
+      <VBox alignment="CENTER" prefHeight="458.0" prefWidth="648.0" spacing="5.0">
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="20.0" />
+         </padding>
+         <children>
+            <TitledPane collapsible="false" text="Informations sur l'objet">
+               <content>
+                  <VBox alignment="CENTER" prefHeight="0.0" prefWidth="582.0" spacing="5.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="127.0" prefHeight="17.0" prefWidth="127.0" text="Nom de l'objet" />
+                              <TextField fx:id="subObjectNameTextField" minWidth="180.0" prefWidth="180.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css" />
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                     </padding>
+                  </VBox>
+               </content>
+            </TitledPane>
+            <TitledPane collapsible="false" prefHeight="322.0" prefWidth="584.0" text="Structure des champs">
+               <content>
+                  <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0">
+                     <children>
+                        <HBox alignment="CENTER" minHeight="25.0" prefHeight="25.0" prefWidth="604.0">
+                           <children>
+                              <HBox alignment="CENTER" prefWidth="543.0" />
+                              <HBox alignment="CENTER" prefHeight="27.0" prefWidth="91.0">
+                                 <children>
+                                    <Button fx:id="addFieldButton" alignment="CENTER" contentDisplay="CENTER" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-add">
+                                       <HBox.margin>
+                                          <Insets right="5.0" />
+                                       </HBox.margin>
+                                    </Button>
+                                    <Button fx:id="updateFieldButton" alignment="CENTER" disable="true" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-update">
+                                       <HBox.margin>
+                                          <Insets right="5.0" />
+                                       </HBox.margin>
+                                    </Button>
+                                    <Button fx:id="deleteFieldButton" alignment="CENTER" disable="true" minWidth="28.0" mnemonicParsing="false" prefWidth="28.0" styleClass="subtype-btn-delete">
+                                       <HBox.margin>
+                                          <Insets right="5.0" />
+                                       </HBox.margin>
+                                    </Button>
+                                 </children>
+                              </HBox>
+                           </children>
+                           <VBox.margin>
+                              <Insets />
+                           </VBox.margin>
+                        </HBox>
+                        <HBox alignment="CENTER" prefHeight="237.0" prefWidth="604.0">
+                           <children>
+                              <TableView fx:id="subObjectsFieldsTableView">
+                                 <columns>
+                                    <TableColumn fx:id="fieldNameTableColumn" prefWidth="117.0" text="Libellé" />
+                                    <TableColumn fx:id="dataTypeTableColumn" prefWidth="149.0" text="Type de données" />
+                                    <TableColumn fx:id="isListeTableColumn" prefWidth="70.0" text="Liste ?" />
+                                    <TableColumn fx:id="formatDateTableColumn" prefWidth="138.0" text="Format Date" />
+                                    <TableColumn fx:id="separateurDateTableColumn" prefWidth="131.0" text="Séparateur Date" />
+                                 </columns>
+                              </TableView>
+                           </children>
+                           <padding>
+                              <Insets top="5.0" />
+                           </padding>
+                           <VBox.margin>
+                              <Insets />
+                           </VBox.margin>
+                        </HBox>
+                     </children>
+                  </VBox>
+               </content>
+            </TitledPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/TacheEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/TacheEditForm.fxml
new file mode 100644
index 0000000..842dfd3
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/TacheEditForm.fxml
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractNestedEntityTable?>
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomDirectoryChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Tab?>
+<?import javafx.scene.control.TabPane?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.ColumnConstraints?>
+<?import javafx.scene.layout.GridPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.RowConstraints?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane prefHeight="551.0" prefWidth="737.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.TacheEditFormController">
+   <children>
+      <VBox AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <TabPane fx:id="tabPane" stylesheets="@../../../../../styles/CustomFormComponents.css">
+               <tabs>
+                  <Tab style="-fx-font-size: 14;" text="Informations sur la tâche">
+                     <content>
+                        <VBox prefHeight="604.0" prefWidth="748.0" spacing="15.0" stylesheets="@../../../../../styles/CustomFormComponents.css">
+                        
+                                  <VBox fx:id="paneContainer" spacing="10.0" style="-fx-background-color: white;">
+                                <children>
+                                    <TitledPane animated="false" collapsible="false" prefHeight="82.0" prefWidth="370.0" text="Informations générales">
+                                        <content>
+                                            <VBox spacing="10.0">
+                                                <padding>
+                                                    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                                                </padding>
+                                                <children>
+                                                    <HBox alignment="CENTER" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" contentDisplay="CENTER" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Libellé ">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <TextField fx:id="libelleTextField" minHeight="25.0" minWidth="390.0" prefHeight="25.0" prefWidth="390.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                             <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                                <children>
+                                                   <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Utiliser un modèle de conversion existant" />
+                                                   <CheckBox fx:id="useExistingConversionModelCheckBox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Oui" textFill="#5a5a5a" />
+                                                </children>
+                                             </HBox>
+                                             <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                                <children>
+                                                   <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Modèle de conversion" />
+                                                   <AbstractSelectionItem fx:id="conversionModelAbstractSelectItem" maxWidth="474.0" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" />
+                                                </children>
+                                             </HBox>
+                                                    <HBox alignment="CENTER" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" contentDisplay="CENTER" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Type de fichier">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="sourceHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire source">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <CustomDirectoryChooser fx:id="repertoireSource" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="sourceHBox1" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire destination">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <CustomDirectoryChooser fx:id="repertoireDestination" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="468.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="sourceHBox11" alignment="CENTER_LEFT" layoutX="20.0" layoutY="122.0" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Répertoire d'erreur">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </Label>
+                                                            <CustomDirectoryChooser fx:id="repertoireErreur" minHeight="25.0" minWidth="468.0" prefHeight="25.0" prefWidth="390.0" HBox.hgrow="ALWAYS" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Format du fichier de données" />
+                                                            <ComboBox fx:id="dataTypeComboBox" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="delimiteurLigneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur de ligne" />
+                                                            <ComboBox fx:id="delimiteurLigne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox fx:id="delimiteurColonneHBox" alignment="CENTER_LEFT" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Délimiteur colonne" />
+                                                            <ComboBox fx:id="delimiteurColonne" minHeight="25.0" minWidth="300.0" prefHeight="25.0" prefWidth="300.0" style="-fx-background-radius: 0%;" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Fichier contient ligne d'entête ?" />
+                                                            <CheckBox fx:id="withHeader" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox prefHeight="43.0" prefWidth="637.0" spacing="10.0">
+                                                        <children>
+                                                            <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="225.0" prefHeight="25.0" prefWidth="225.0" style="-fx-text-fill: black;" text="Validation stricte des données ?" />
+                                                            <CheckBox fx:id="strictValidationCheckbox" disable="true" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui" />
+                                                        </children>
+                                                    </HBox>
+                                                    <HBox alignment="CENTER_RIGHT" spacing="10.0">
+                                                        <children>
+                                                            <CheckBox fx:id="active" minHeight="25.0" mnemonicParsing="false" nodeOrientation="RIGHT_TO_LEFT" prefHeight="25.0" style="-fx-font-size: 12; -fx-text-fill: black;" text="Activer" textFill="#5a5a5a">
+                                                                <font>
+                                                                    <Font size="14.0" />
+                                                                </font>
+                                                            </CheckBox>
+                                                        </children>
+                                                    </HBox>
+                                                </children>
+                                            </VBox>
+                                        </content>
+                                    </TitledPane>
+                                </children>
+                            </VBox>
+                            <padding>
+                                <Insets bottom="5.0" left="5.0" right="5.0" top="20.0" />
+                            </padding>
+                        </VBox>
+                     </content>
+                  </Tab>
+                  <Tab style="-fx-font-size: 14;" text="Plannification">
+                     <content>
+                        <VBox spacing="5.0" style="-fx-background-color: white;">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" prefHeight="146.0" prefWidth="943.0" text="Configuration de la plannification">
+                                 <content>
+                                    <VBox spacing="5.0">
+                                       <padding>
+                                          <Insets bottom="5.0" left="10.0" right="10.0" top="5.0" />
+                                       </padding>
+                                       <children>
+                                          <VBox spacing="10.0">
+                                             <children>
+                                                <HBox prefHeight="25.0" prefWidth="901.0" spacing="10.0" VBox.vgrow="ALWAYS">
+                                                   <children>
+                                                      <HBox prefHeight="31.0" prefWidth="260.0" spacing="10.0">
+                                                         <children>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <Label contentDisplay="CENTER" style="-fx-text-fill: black;" text="Heure" />
+                                                                  <TextField fx:id="heureTextField" minWidth="70.0" prefWidth="70.0" />
+                                                               </children>
+                                                            </HBox>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <Label style="-fx-text-fill: black;" text="Minute" />
+                                                                  <TextField fx:id="minuteTextField" minWidth="70.0" prefWidth="70.0" />
+                                                               </children>
+                                                            </HBox>
+                                                         </children>
+                                                      </HBox>
+                                                      <HBox alignment="CENTER_RIGHT" prefHeight="25.0" prefWidth="456.0" spacing="15.0" HBox.hgrow="ALWAYS">
+                                                         <children>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <CheckBox fx:id="withoutInterval" mnemonicParsing="false" nodeOrientation="RIGHT_TO_LEFT" prefHeight="16.0" prefWidth="185.0" style="-fx-text-fill: black;" text="Exécuter une seule fois" textFill="#5a5a5a" />
+                                                               </children>
+                                                            </HBox>
+                                                            <HBox alignment="CENTER_LEFT" spacing="5.0">
+                                                               <children>
+                                                                  <Label prefHeight="15.0" prefWidth="228.0" style="-fx-text-fill: black;" text="Intervalle de répétition (en minutes)" />
+                                                                  <TextField fx:id="intervalleTache" minWidth="70.0" prefWidth="70.0" />
+                                                               </children>
+                                                            </HBox>
+                                                         </children>
+                                                      </HBox>
+                                                   </children>
+                                                </HBox>
+                                                <HBox VBox.vgrow="ALWAYS">
+                                                   <children>
+                                                      <GridPane hgap="15.0" vgap="5.0" HBox.hgrow="ALWAYS">
+                                                         <columnConstraints>
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+                                                         </columnConstraints>
+                                                         <rowConstraints>
+                                                            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                                                            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+                                                         </rowConstraints>
+                                                         <children>
+                                                            <CheckBox fx:id="lundiCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Lundi" textFill="#5a5a5a" />
+                                                            <CheckBox fx:id="mardiCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Mardi" textFill="#5a5a5a" GridPane.columnIndex="1" />
+                                                            <CheckBox fx:id="mercrediCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Mercredi" textFill="#5a5a5a" GridPane.columnIndex="2" />
+                                                            <CheckBox fx:id="jeudiCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Jeudi" textFill="#5a5a5a" GridPane.columnIndex="3" />
+                                                            <CheckBox fx:id="vendrediCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Vendredi" textFill="#5a5a5a" GridPane.rowIndex="1" />
+                                                            <CheckBox fx:id="samediCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Samedi" textFill="#5a5a5a" GridPane.columnIndex="1" GridPane.rowIndex="1" />
+                                                            <CheckBox fx:id="dimancheCheckbox" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" style="-fx-text-fill: black;" text="Dimanche" textFill="#5a5a5a" GridPane.columnIndex="2" GridPane.rowIndex="1" />
+                                                         </children>
+                                                      </GridPane>
+                                                   </children>
+                                                </HBox>
+                                             </children>
+                                          </VBox>
+                                       </children>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                  </Tab>
+                  <Tab style="-fx-font-size: 14;" text="Champs à tronquer">
+                     <content>
+                        <VBox spacing="15.0">
+                           <children>
+                              <TitledPane animated="false" collapsible="false" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Informations sur les champs">
+                                 <content>
+                                    <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0">
+                                       <children>
+                                          <HBox alignment="CENTER_RIGHT">
+                                             <children>
+                                                <CheckBox fx:id="saisieAlphaNumeriqueFieldChecBox" mnemonicParsing="false" styleClass="square-border" stylesheets="@../../../../../../../../../generation-validateur-typefichier/src/main/resources/styles/style.css" text="Sélectionner les champs à tronquer" textFill="#5a5a5a" />
+                                             </children>
+                                          </HBox>
+                                          <AbstractNestedEntityTable fx:id="metaAlphaNumeriqueFieldAbstractTable" prefHeight="252.0" prefWidth="526.0" VBox.vgrow="ALWAYS" />
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                                       </padding>
+                                    </VBox>
+                                 </content>
+                              </TitledPane>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                  </Tab>
+               </tabs>
+            </TabPane>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/TruncatedElementEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/TruncatedElementEditForm.fxml
new file mode 100644
index 0000000..22c2841
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/TruncatedElementEditForm.fxml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextArea?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="294.0" prefWidth="679.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ConfigEditFormController">
+    <children>
+        <VBox prefHeight="400.0" prefWidth="100.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <children>
+                <TitledPane collapsible="false" prefHeight="254.0" prefWidth="619.0" style="-fx-text-fill: #FFFFFF; -fx-background-color: #FFFFFF;" text="Informations sur l'élément tronqué">
+                    <content>
+                        <VBox prefHeight="225.0" prefWidth="492.0" spacing="20.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" prefHeight="25.0" prefWidth="474.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefHeight="15.0" prefWidth="117.0" text="Code du type fichier" />
+                                        <TextField fx:id="codeTypeFichierTextfield" editable="false" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" style="-fx-background-radius: 0%;">
+                                            <HBox.margin>
+                                                <Insets />
+                                            </HBox.margin>
+                                        </TextField>
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Code de la colonne" />
+                                        <TextField fx:id="codeColonneTexfield" editable="false" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" style="-fx-background-radius: 0%;">
+                                            <HBox.margin>
+                                                <Insets />
+                                            </HBox.margin>
+                                        </TextField>
+                                    </children>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" layoutX="25.0" layoutY="115.0" prefHeight="25.0" prefWidth="596.0" spacing="5.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Donnée initiale" />
+                              <TextArea fx:id="initialDataTextArea" minWidth="500.0" prefHeight="200.0" prefWidth="500.0" wrapText="true" />
+                                    </children>
+                                </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="116.0" spacing="5.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Donnée finale" />
+                              <TextArea fx:id="finalDataTextArea" minWidth="500.0" prefHeight="200.0" prefWidth="500.0" wrapText="true" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="155.0" spacing="5.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Chemin du fichier" />
+                              <TextField fx:id="fileNameTextfield" editable="false" minWidth="500.0" prefHeight="25.0" prefWidth="500.0" style="-fx-background-radius: 0%;">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </TextField>
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" layoutX="20.0" layoutY="200.0" spacing="5.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minWidth="117.0" prefWidth="117.0" text="Date de l'action" />
+                              <TextField fx:id="dateActionTextfield" editable="false" minWidth="200.0" prefHeight="25.0" prefWidth="200.0" style="-fx-background-radius: 0%;">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </TextField>
+                           </children>
+                        </HBox>
+                            </children>
+                        </VBox>
+                    </content>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml
new file mode 100644
index 0000000..79e0d0d
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/TxtFileToValidateEditForm.fxml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="136.0" prefWidth="525.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.TxtFileToValidateEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <padding>
+                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="122.0" prefWidth="508.0" style="-fx-text-fill: #FFFFFF;" text="Informations sur le fichier">
+                    <content>
+                        <VBox prefHeight="91.0" prefWidth="364.0" spacing="10.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" prefHeight="28.0" prefWidth="454.0" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="92.0" prefHeight="25.0" prefWidth="92.0" style="-fx-text-fill: black;" text="Type du fichier" />
+                                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="375.0" prefHeight="25.0" prefWidth="375.0" />
+                                    </children>
+                           <padding>
+                              <Insets top="5.0" />
+                           </padding>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="92.0" prefHeight="25.0" prefWidth="92.0" style="-fx-text-fill: black;" text="Fichier à vérifier" />
+                              <CustomFileChooser fx:id="fileToValidate" minHeight="25.0" minWidth="375.0" prefHeight="25.0" prefWidth="375.0" />
+                                    </children>
+                                </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/TypeFichierEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/TypeFichierEditForm.fxml
new file mode 100644
index 0000000..3cf4b1c
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/TypeFichierEditForm.fxml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="178.0" prefWidth="538.0" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.TypeFichierEditFormController">
+    <children>
+      <VBox alignment="CENTER" prefHeight="231.0" prefWidth="553.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <padding>
+            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+         </padding>
+         <children>
+            <TitledPane collapsible="false" prefHeight="240.0" prefWidth="620.0" text="Informations générales sur le type fichier">
+               <content>
+                  <VBox spacing="14.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="162.0" prefHeight="25.0" prefWidth="162.0" style="-fx-text-fill: black;" text="Code TypeFichier" />
+                              <TextField fx:id="codeTextField" minHeight="25.0" minWidth="291.0" prefHeight="25.0" prefWidth="291.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="162.0" prefHeight="25.0" prefWidth="162.0" style="-fx-text-fill: black;" text="Libellé" />
+                              <TextField fx:id="libelleTextField" minHeight="25.0" minWidth="291.0" prefHeight="25.0" prefWidth="291.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="162.0" prefHeight="25.0" prefWidth="162.0" style="-fx-text-fill: black;" text="Code Participant" />
+                              <TextField fx:id="codeParticipantTextField" minHeight="25.0" minWidth="291.0" prefHeight="25.0" prefWidth="291.0" styleClass="square-border" stylesheets="@../../../../../styles/style.css">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </TextField>
+                           </children>
+                        </HBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
+                     </padding>
+                  </VBox>
+               </content>
+            </TitledPane>
+         </children>
+      </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurEditForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurEditForm.fxml
new file mode 100644
index 0000000..f23ce5e
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurEditForm.fxml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import com.megatimfx.common.customcontrols.CustomFileChooser?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.StackPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane id="AnchorPane" prefHeight="232.0" prefWidth="562.0" style="-fx-background-color: #fff;" styleClass="mainForm" stylesheets="@../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ValidateurEditFormController">
+    <children>
+        <VBox layoutX="-6.0" layoutY="7.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+            <padding>
+                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+            </padding>
+            <children>
+                <TitledPane collapsible="false" prefHeight="290.0" prefWidth="595.0" style="-fx-text-fill: #FFFFFF;" text="Informations sur le validateur à importer">
+                    <content>
+                        <VBox spacing="10.0" style="-fx-background-color: #FFFFFF;">
+                            <children>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Type du fichier" />
+                                        <AbstractSelectionItem fx:id="typeFichierAbstractSelectItem" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" style="-fx-background-color: #ffffff;" />
+                                    </children>
+                           <VBox.margin>
+                              <Insets top="5.0" />
+                           </VBox.margin>
+                                </HBox>
+                                <HBox alignment="CENTER_LEFT" spacing="10.0">
+                                    <children>
+                                        <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Validateur à importer" />
+                              <CustomFileChooser fx:id="FileToImport" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" />
+                                    </children>
+                                </HBox>
+                        <HBox spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Fichier de validation protégé ?" />
+                              <CheckBox fx:id="protegeCheckBox" layoutX="235.0" layoutY="10.0" minHeight="25.0" mnemonicParsing="false" prefHeight="25.0" text="Oui">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </CheckBox>
+                           </children>
+                        </HBox>
+                        <HBox spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Clé de cryptage">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin></Label>
+                              <StackPane minHeight="25.0" minWidth="330.0" prefHeight="26.0" prefWidth="330.0">
+                                 <children>
+                                    <TextField fx:id="showKeyTextField" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" />
+                                    <PasswordField fx:id="keyToDecryptField" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0" />
+                                    <ImageView fx:id="eyeImageView" fitHeight="15.0" fitWidth="15.0" onMousePressed="#eyeOnMousePressed" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER_RIGHT">
+                                       <image>
+                                          <Image url="@../../../../../images/oeil.png" />
+                                       </image>
+                                       <StackPane.margin>
+                                          <Insets right="5.0" />
+                                       </StackPane.margin>
+                                    </ImageView>
+                                 </children>
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </StackPane>
+                           </children>
+                        </HBox>
+                        <HBox layoutX="25.0" layoutY="121.0" spacing="10.0">
+                           <children>
+                              <Label alignment="CENTER_RIGHT" minHeight="25.0" minWidth="160.0" prefHeight="25.0" prefWidth="160.0" style="-fx-text-fill: black;" text="Confirmation de la clé" />
+                              <PasswordField fx:id="keyConfirmationField" minHeight="25.0" minWidth="330.0" prefHeight="25.0" prefWidth="330.0">
+                                 <HBox.margin>
+                                    <Insets />
+                                 </HBox.margin>
+                              </PasswordField>
+                           </children>
+                        </HBox>
+                            </children>
+                            <padding>
+                                <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                            </padding>
+                        </VBox>
+                    </content>
+                </TitledPane>
+            </children>
+        </VBox>
+    </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurListForm.fxml b/fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurListForm.fxml
new file mode 100644
index 0000000..e66feec
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/forms/ValidateurListForm.fxml
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="600.0" minWidth="1000.0" prefHeight="600.0" prefWidth="993.0" style="-fx-border-color: #969696; -fx-border-width: 1; -fx-background-color: white;" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.forms.ValidateurListFormController">
+   <center>
+      <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="509.0" prefWidth="949.0" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="37.0" fitWidth="131.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="20.0" style="-fx-background-color: #44507; -fx-border-color: #E7E7E7; -fx-border-width: 2 2 2 2;" VBox.vgrow="ALWAYS">
+               <children>
+                  <TitledPane collapsible="false" text="Recherche">
+                     <content>
+                        <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+                           <right>
+                              <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+                                 <BorderPane.margin>
+                                    <Insets />
+                                 </BorderPane.margin>
+                                 <children>
+                                    <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="reset">
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Recherche avancées">
+                                       <font>
+                                          <Font name="Roboto" size="12.0" />
+                                       </font>
+                                    </CheckBox>
+                                 </children>
+                                 <padding>
+                                    <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                 </padding>
+                              </HBox>
+                           </right>
+                           <center>
+                              <VBox BorderPane.alignment="CENTER">
+                                 <children>
+                                    <VBox fx:id="normalSearchContainer" VBox.vgrow="ALWAYS">
+                                       <padding>
+                                          <Insets right="50.0" />
+                                       </padding>
+                                    </VBox>
+                                    <VBox fx:id="advancedSearchContainer" VBox.vgrow="ALWAYS">
+                                       <padding>
+                                          <Insets right="50.0" />
+                                       </padding>
+                                    </VBox>
+                                 </children>
+                              </VBox>
+                           </center>
+                        </BorderPane>
+                     </content>
+                  </TitledPane>
+                  <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" maxHeight="18.0" minHeight="18.0" prefHeight="30.0" spacing="5.0" style="-fx-background-color: #fff; -fx-border-width: 2 2  0 2; -fx-border-color: #D0D0D0;">
+                           <children>
+                              <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" maxHeight="15.0" minHeight="15.0" prefHeight="15.0">
+                                 <children>
+                                    <Button fx:id="btnAdd" maxHeight="15.0" minHeight="15.0" mnemonicParsing="false" onAction="#onAddDialog" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-add" textFill="#ebf0ee">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnEdit" maxHeight="15.0" minHeight="15.0" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-edit" textFill="#f2eded">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnPrint" maxHeight="15.0" minHeight="15.0" minWidth="-Infinity" mnemonicParsing="false" onAction="#onEditDialog" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-print" textFill="#f2eded">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Button fx:id="btnDelete" maxHeight="15.0" minHeight="15.0" mnemonicParsing="false" onAction="#removeElement" prefHeight="15.0" style="-fx-background-color: #fff;" styleClass="main-btn-delete" textFill="#f2eded">
+                                       <font>
+                                          <Font name="System Bold" size="12.0" />
+                                       </font>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                 </children>
+                              </HBox>
+                              <HBox prefHeight="25.0" prefWidth="1149.0" />
+                              <HBox alignment="CENTER_RIGHT" maxHeight="15.0" minHeight="15.0" prefHeight="15.0" prefWidth="650.0" spacing="5.0" style="-fx-background-color: #fff;">
+                                 <children>
+                                    <Button fx:id="btnPrintValidator" alignment="BOTTOM_RIGHT" contentDisplay="CENTER" maxHeight="18.0" minHeight="18.0" mnemonicParsing="false" style="-fx-background-color: #fff;" styleClass="main-btn-export">
+                                       <HBox.margin>
+                                          <Insets />
+                                       </HBox.margin>
+                                       <cursor>
+                                          <Cursor fx:constant="HAND" />
+                                       </cursor>
+                                    </Button>
+                                    <Label fx:id="btnPrintValidatorLabel" text="Exporter" />
+                                 </children>
+                                 <HBox.margin>
+                                    <Insets right="5.0" />
+                                 </HBox.margin>
+                              </HBox>
+                           </children>
+                           <opaqueInsets>
+                              <Insets />
+                           </opaqueInsets>
+                           <VBox.margin>
+                              <Insets top="5.0" />
+                           </VBox.margin>
+                        </HBox>
+                        <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-border-color: #9B9798;" VBox.vgrow="ALWAYS">
+                           <children>
+                              <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+                                 <columnResizePolicy>
+                                    <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                 </columnResizePolicy>
+                              </TableView>
+                              <HBox alignment="CENTER_RIGHT" spacing="5.0" style="-fx-background-color: #D1D2D4; -fx-border-color: #9B9798; -fx-border-width: 1 0 0 0;">
+                                 <children>
+                                    <HBox alignment="CENTER" spacing="2.0">
+                                       <children>
+                                          <HBox alignment="CENTER" spacing="5.0">
+                                             <children>
+                                                <Button fx:id="btnPrevious" mnemonicParsing="false" style="-fx-background-color: transparent; -fx-padding: 1;">
+                                                   <graphic>
+                                                      <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                                                         <image>
+                                                            <Image url="@../../../../../images/previous-img.png" />
+                                                         </image>
+                                                      </ImageView>
+                                                   </graphic>
+                                                   <cursor>
+                                                      <Cursor fx:constant="HAND" />
+                                                   </cursor>
+                                                </Button>
+                                             </children>
+                                          </HBox>
+                                          <HBox alignment="CENTER" spacing="5.0">
+                                             <children>
+                                                <Button fx:id="btnNext" mnemonicParsing="false" style="-fx-background-color: transparent; -fx-padding: 1;">
+                                                   <graphic>
+                                                      <ImageView fitHeight="15.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
+                                                         <image>
+                                                            <Image url="@../../../../../images/next-img.png" />
+                                                         </image>
+                                                      </ImageView>
+                                                   </graphic>
+                                                   <cursor>
+                                                      <Cursor fx:constant="HAND" />
+                                                   </cursor>
+                                                </Button>
+                                             </children>
+                                          </HBox>
+                                       </children>
+                                    </HBox>
+                                    <Label fx:id="paginationNumberInfo" text="(0/0)" textFill="#636466">
+                                       <font>
+                                          <Font name="Roboto" size="12.0" />
+                                       </font>
+                                    </Label>
+                                 </children>
+                                 <padding>
+                                    <Insets bottom="4.0" left="4.0" right="4.0" top="4.0" />
+                                 </padding>
+                              </HBox>
+                           </children>
+                        </VBox>
+                     </children>
+                  </VBox>
+               </children>
+               <padding>
+                  <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+               </padding>
+               <VBox.margin>
+                  <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+               </VBox.margin>
+            </VBox>
+         </children>
+      </VBox>
+   </center>
+   <top>
+      <HBox onMouseDragged="#titleBarMouseDragged" onMousePressed="#titleBarMousePressed" spacing="20.0" styleClass="title-bar" BorderPane.alignment="CENTER_LEFT">
+         <children>
+            <HBox alignment="CENTER_LEFT">
+               <padding>
+                  <Insets left="5.0" />
+               </padding></HBox>
+            <Text fx:id="title" fill="WHITE" stroke="WHITE" strokeType="INSIDE" strokeWidth="0.0" text="Titre de la fenêtre" textAlignment="CENTER">
+               <font>
+                  <Font name="System Bold" size="16.0" />
+               </font>
+               <HBox.margin>
+                  <Insets bottom="2.0" top="2.0" />
+               </HBox.margin>
+            </Text>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" spacing="20.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#maximize" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/max_icon.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+                  <Button layoutX="786.0" layoutY="15.0" mnemonicParsing="false" onAction="#close" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/custom_close_icon.png" />
+                           </image>
+                        </ImageView>
+                     </graphic>
+                     <cursor>
+                        <Cursor fx:constant="HAND" />
+                     </cursor>
+                  </Button>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets bottom="1.5" left="1.5" right="10.0" top="1.5" />
+         </padding>
+      </HBox>
+   </top>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-main-style.css" />
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureFormView.fxml b/fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureFormView.fxml
new file mode 100644
index 0000000..fba5919
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureFormView.fxml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import com.megatimfx.common.customcontrols.AbstractSelectionItem?>
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.ScrollPane?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<AnchorPane prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <VBox AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar">
+               <children>
+                  <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+                     <children>
+                        <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Ajout d'une structure JSON">
+                           <font>
+                              <Font name="Arial" size="15.0" />
+                           </font>
+                        </Text>
+                     </children>
+                     <padding>
+                        <Insets left="20.0" />
+                     </padding>
+                  </HBox>
+                  <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+                     <children>
+                        <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                           <graphic>
+                              <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                                 <image>
+                                    <Image url="@../../../../../images/reduire.png" />
+                                 </image>
+                              </ImageView>
+                           </graphic>
+                        </Button>
+                        <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false">
+                           <graphic>
+                              <ImageView fitHeight="10.0" fitWidth="10.0" pickOnBounds="true" preserveRatio="true">
+                                 <image>
+                                    <Image url="@../../../../../images/agrandir.png" />
+                                 </image>
+                              </ImageView>
+                           </graphic>
+                        </Button>
+                        <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                           <graphic>
+                              <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                                 <image>
+                                    <Image url="@../../../../../images/fermer.png" />
+                                 </image>
+                                 <cursor>
+                                    <Cursor fx:constant="HAND" />
+                                 </cursor>
+                              </ImageView>
+                           </graphic>
+                        </Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="10.0" VBox.vgrow="ALWAYS">
+               <children>
+                  <HBox alignment="CENTER_LEFT" style="-fx-background-color: transparent;" styleClass="banner">
+                     <children>
+                        <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                           </image>
+                        </ImageView>
+                     </children>
+                  </HBox>
+                  <TitledPane collapsible="false" maxHeight="1.7976931348623157E308" style="-fx-text-fill: #FFFFFF;" text="Informations sur le validateur à importer" VBox.vgrow="ALWAYS">
+                     <content>
+                        <VBox spacing="20.0">
+                           <children>
+                              <VBox spacing="10.0">
+                                 <children>
+                                    <Label text="Type fichier" />
+                                    <AbstractSelectionItem fx:id="typeFichierField" maxWidth="260.0" prefWidth="260.0" />
+                                 </children>
+                              </VBox>
+                              <VBox spacing="15.0" VBox.vgrow="ALWAYS">
+                                 <children>
+                                    <Label text="Structure JSON" />
+                                    <ScrollPane VBox.vgrow="ALWAYS">
+                                       <content>
+                                          <VBox fx:id="mainContainer" maxWidth="1.7976931348623157E308" minWidth="200.0" prefHeight="318.0" prefWidth="922.0" />
+                                       </content>
+                                    </ScrollPane>
+                                 </children>
+                              </VBox>
+                           </children>
+                           <padding>
+                              <Insets bottom="20.0" left="15.0" right="15.0" top="20.0" />
+                           </padding>
+                        </VBox>
+                     </content>
+                  </TitledPane>
+                  <HBox fx:id="bottomContainer" alignment="TOP_RIGHT" spacing="5.0">
+                     <children>
+                        <Button fx:id="cancelButton" mnemonicParsing="false" onAction="#close" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #949599; -fx-border-color: #9d9fa2; -fx-background-radius: 0;" text="Annuler" textFill="WHITE">
+                           <font>
+                              <Font name="System Bold" size="12.0" />
+                           </font>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </Button>
+                        <Button fx:id="editButton" mnemonicParsing="false" prefHeight="27.0" prefWidth="87.0" style="-fx-background-color: #869447; -fx-background-radius: 0;" text="Enregistrer" textFill="WHITE">
+                           <font>
+                              <Font name="System Bold" size="12.0" />
+                           </font>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="10.0" left="20.0" right="20.0" top="10.0" />
+               </padding>
+            </VBox>
+         </children>
+         <stylesheets>
+            <URL value="@../../../../../styles/custom-title-bar.css" />
+            <URL value="@../../../../../styles/custom-main-style.css" />
+            <URL value="@../../../../../styles/CustomFormComponents.css" />
+         </stylesheets>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureTableView.fxml b/fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureTableView.fxml
new file mode 100644
index 0000000..27e5baf
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/views/JsonStructureTableView.fxml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Cursor?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TitledPane?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.BorderPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.scene.text.Text?>
+
+<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="500.0" minWidth="700.0" prefHeight="569.0" prefWidth="982.0" style="-fx-border-color: #969696; -fx-border-width: 1;" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="importation.validation.data.client.views.JsonStructureTableViewController">
+   <center>
+      <VBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" styleClass="banner">
+               <children>
+                  <ImageView fitHeight="20.0" fitWidth="100.0" pickOnBounds="true" preserveRatio="true">
+                     <image>
+                        <Image url="@../../../../../images/Logo_FDX_Convert.png" />
+                     </image>
+                  </ImageView>
+               </children>
+               <padding>
+                  <Insets left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </HBox>
+            <VBox spacing="12.0" style="-fx-background-color: #44507;" VBox.vgrow="ALWAYS">
+               <children>
+                  <VBox prefHeight="200.0" prefWidth="100.0" spacing="12.0" style="-fx-border-color: #D6D6D6; -fx-border-width: 1.5;" VBox.vgrow="ALWAYS">
+                     <children>
+                        <TitledPane collapsible="false" prefHeight="61.0" prefWidth="1223.0" text="Recherche">
+                           <content>
+                              <BorderPane fx:id="searchPane" prefHeight="43.0" prefWidth="1219.0" style="-fx-background-color: rgb(246, 247, 249);">
+                                 <right>
+                                    <HBox spacing="5.0" BorderPane.alignment="CENTER_LEFT">
+                                       <BorderPane.margin>
+                                          <Insets />
+                                       </BorderPane.margin>
+                                       <children>
+                                          <Button fx:id="btnSearch" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="search">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnReset" maxWidth="1.7976931348623157E308" mnemonicParsing="false" styleClass="reset">
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <CheckBox fx:id="advancedCheckBox" alignment="CENTER" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" mnemonicParsing="false" prefHeight="25.0" text="Recherche avancées">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </CheckBox>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </right>
+                                 <center>
+                                    <VBox BorderPane.alignment="CENTER">
+                                       <children>
+                                          <VBox fx:id="normalSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                          <VBox fx:id="advancedSearchContainer" VBox.vgrow="ALWAYS">
+                                             <padding>
+                                                <Insets right="50.0" />
+                                             </padding>
+                                          </VBox>
+                                       </children>
+                                       <BorderPane.margin>
+                                          <Insets top="5.0" />
+                                       </BorderPane.margin>
+                                    </VBox>
+                                 </center>
+                              </BorderPane>
+                           </content>
+                        </TitledPane>
+                        <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: rgb(246, 247, 249);" VBox.vgrow="ALWAYS">
+                           <children>
+                              <HBox alignment="CENTER_LEFT" spacing="2.0">
+                                 <children>
+                                    <HBox fx:id="buttonContainer" alignment="BOTTOM_LEFT" spacing="2.0">
+                                       <children>
+                                          <Button fx:id="btnAdd" mnemonicParsing="false" styleClass="main-btn-add" textFill="#ebf0ee">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnEdit" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" styleClass="main-btn-edit" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                          <Button fx:id="btnDelete" mnemonicParsing="false" styleClass="main-btn-delete" textFill="#f2eded">
+                                             <font>
+                                                <Font name="System Bold" size="12.0" />
+                                             </font>
+                                             <cursor>
+                                                <Cursor fx:constant="HAND" />
+                                             </cursor>
+                                          </Button>
+                                       </children>
+                                    </HBox>
+                                 </children>
+                                 <opaqueInsets>
+                                    <Insets />
+                                 </opaqueInsets>
+                              </HBox>
+                              <VBox prefHeight="200.0" prefWidth="100.0" VBox.vgrow="ALWAYS">
+                                 <children>
+                                    <TableView fx:id="elementTable" VBox.vgrow="ALWAYS">
+                                       <columnResizePolicy>
+                                          <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                       </columnResizePolicy>
+                                    </TableView>
+                                    <HBox alignment="CENTER_LEFT" spacing="15.0" style="-fx-background-color: #CECECE;">
+                                       <children>
+                                          <HBox alignment="CENTER" spacing="2.0">
+                                             <children>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Label text="précédent">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                      <Button fx:id="btnPrevious" mnemonicParsing="false" styleClass="previous-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor>
+                                                      </Button>
+                                                   </children>
+                                                </HBox>
+                                                <HBox alignment="CENTER" spacing="5.0">
+                                                   <children>
+                                                      <Button fx:id="btnNext" mnemonicParsing="false" styleClass="next-btn">
+                                                         <cursor>
+                                                            <Cursor fx:constant="HAND" />
+                                                         </cursor>
+                                                      </Button>
+                                                      <Label text="suivant">
+                                                         <font>
+                                                            <Font name="Roboto" size="12.0" />
+                                                         </font>
+                                                      </Label>
+                                                   </children>
+                                                </HBox>
+                                             </children>
+                                          </HBox>
+                                          <Label fx:id="paginationNumberInfo" text="(200/400)">
+                                             <font>
+                                                <Font name="Roboto" size="12.0" />
+                                             </font>
+                                          </Label>
+                                       </children>
+                                       <padding>
+                                          <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+                                       </padding>
+                                    </HBox>
+                                 </children>
+                              </VBox>
+                           </children>
+                        </VBox>
+                     </children>
+                     <padding>
+                        <Insets bottom="12.0" left="12.0" right="12.0" top="12.0" />
+                     </padding>
+                  </VBox>
+                  <HBox alignment="CENTER_RIGHT">
+                     <children>
+                        <Button mnemonicParsing="false" onAction="#close" style="-fx-background-color: #CACACA; -fx-border-color: #A8A8A8;" text="Quitter">
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </Button>
+                     </children>
+                  </HBox>
+               </children>
+               <padding>
+                  <Insets bottom="12.0" left="30.0" right="30.0" top="20.0" />
+               </padding>
+            </VBox>
+         </children>
+      </VBox>
+   </center>
+   <top>
+      <HBox alignment="CENTER" onMouseDragged="#mouseDraggedTitleBar" onMousePressed="#mousePressedTitleBar" styleClass="title-bar" BorderPane.alignment="CENTER">
+         <children>
+            <HBox alignment="CENTER_LEFT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Text fill="WHITE" strokeType="OUTSIDE" strokeWidth="0.0" text="Types de fichier au format JSON">
+                     <font>
+                        <Font name="Roboto" size="15.0" />
+                     </font>
+                  </Text>
+               </children>
+               <padding>
+                  <Insets left="30.0" />
+               </padding>
+            </HBox>
+            <HBox alignment="CENTER_RIGHT" prefWidth="200.0" HBox.hgrow="ALWAYS">
+               <children>
+                  <Button mnemonicParsing="false" onAction="#minimize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#maximize" style="-fx-padding: 5 12 5 12;" styleClass="title-bar-button" visible="false" />
+                  <Button mnemonicParsing="false" onAction="#close" style="-fx-padding: 3 10 3 10;" styleClass="title-bar-button">
+                     <graphic>
+                        <ImageView fitHeight="15.0" fitWidth="15.0" pickOnBounds="true" preserveRatio="true">
+                           <image>
+                              <Image url="@../../../../../images/fermer.png" />
+                           </image>
+                           <cursor>
+                              <Cursor fx:constant="HAND" />
+                           </cursor>
+                        </ImageView>
+                     </graphic>
+                  </Button>
+               </children>
+            </HBox>
+         </children>
+         <padding>
+            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
+         </padding>
+      </HBox>
+   </top>
+   <stylesheets>
+      <URL value="@../../../../../styles/custom-main-style.css" />
+      <URL value="@../../../../../styles/custom-title-bar.css" />
+   </stylesheets>
+</BorderPane>
diff --git a/fdx_convert/target/classes/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml b/fdx_convert/target/classes/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml
new file mode 100644
index 0000000..62f6cf2
--- /dev/null
+++ b/fdx_convert/target/classes/importation/validation/data/client/views/jsonstructure/JsonStructureView.fxml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane stylesheets="@../../../../../../styles/CustomFormComponents.css" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <VBox fx:id="mainContainer" layoutX="10.0" layoutY="10.0" spacing="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+         <children>
+            <HBox fx:id="formFieldContainer" alignment="CENTER_LEFT" spacing="5.0">
+               <children>
+                  <Label fx:id="squareBracketLeft" text="[">
+                     <font>
+                        <Font size="24.0" />
+                     </font>
+                  </Label>
+                  <HBox fx:id="fieldContainer" spacing="5.0">
+                     <children>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Nom" />
+                              <TextField fx:id="nameField" maxWidth="120.0" prefWidth="120.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Type" />
+                              <ComboBox fx:id="typeField" maxWidth="120.0" prefWidth="120.0" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="formatFieldContainer" alignment="CENTER_LEFT" layoutX="200.0" layoutY="10.0" spacing="5.0">
+                           <children>
+                              <Label text="Format" />
+                              <ComboBox fx:id="formatField" maxWidth="110.0" prefWidth="110.0" />
+                           </children>
+                        </HBox>
+                        <HBox fx:id="delimitorFieldContainer" alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Délimiteur" />
+                              <ComboBox fx:id="delimitorField" maxWidth="110.0" prefWidth="110.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <Label text="Taille" />
+                              <TextField fx:id="tailleField" maxWidth="45.0" prefWidth="45.0" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <CheckBox fx:id="requiredField" mnemonicParsing="false" text="Obligatoire" />
+                           </children>
+                        </HBox>
+                        <HBox alignment="CENTER_LEFT" spacing="5.0">
+                           <children>
+                              <CheckBox fx:id="collectionField" mnemonicParsing="false" text="Liste" />
+                           </children>
+                        </HBox>
+                     </children>
+                  </HBox>
+                  <Label fx:id="squareBracketRight" text="]">
+                     <font>
+                        <Font size="24.0" />
+                     </font>
+                  </Label>
+               </children>
+            </HBox>
+            <VBox fx:id="objectContainer" VBox.vgrow="ALWAYS">
+               <children>
+                  <HBox alignment="CENTER_LEFT" spacing="5.0">
+                     <children>
+                        <HBox fx:id="objectContainerleft" alignment="CENTER_LEFT">
+                           <children>
+                              <Label fx:id="objectSquareBracketLeft" text="[">
+                                 <font>
+                                    <Font size="24.0" />
+                                 </font>
+                              </Label>
+                              <Label text="{">
+                                 <font>
+                                    <Font size="24.0" />
+                                 </font>
+                              </Label>
+                           </children>
+                        </HBox>
+                        <Button fx:id="addButton" mnemonicParsing="false" text="+" />
+                     </children>
+                  </HBox>
+                  <VBox fx:id="nestedContainer" spacing="5.0" VBox.vgrow="ALWAYS">
+                     <padding>
+                        <Insets bottom="5.0" left="10.0" right="5.0" top="5.0" />
+                     </padding>
+                  </VBox>
+                  <HBox fx:id="objectContainerRight" alignment="CENTER_LEFT">
+                     <children>
+                        <Label text="}">
+                           <font>
+                              <Font size="24.0" />
+                           </font>
+                        </Label>
+                        <Label fx:id="objectSquareBracketRight" text="]">
+                           <font>
+                              <Font size="24.0" />
+                           </font>
+                        </Label>
+                     </children>
+                  </HBox>
+               </children>
+            </VBox>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/fdx_convert/target/classes/log4j.properties b/fdx_convert/target/classes/log4j.properties
new file mode 100644
index 0000000..aae8ee9
--- /dev/null
+++ b/fdx_convert/target/classes/log4j.properties
@@ -0,0 +1,11 @@
+# Root logger option 
+log4j.rootLogger=INFO, file
+
+log4j.appender.file=org.apache.log4j.RollingFileAppender
+log4j.appender.file.File=fdx-convert.log
+log4j.appender.file.MaxFileSize=10GB
+log4j.appender.file.MaxBackupIndex=5
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
+
+log4j.logger.org.hibernate=FATAL 
\ No newline at end of file
diff --git a/fdx_convert/target/classes/predicatelogic-engine.xml b/fdx_convert/target/classes/predicatelogic-engine.xml
new file mode 100644
index 0000000..6b516de
--- /dev/null
+++ b/fdx_convert/target/classes/predicatelogic-engine.xml
@@ -0,0 +1,1701 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<predicate-engine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                  xsi:schemaLocation="http://www.leadware.net/predicatelogic-engine ../xsd/predicatelogic-engine.xsd"
+                  xmlns="http://www.leadware.net/predicatelogic-engine">
+
+    <!-- Définition des connecteurs -->
+    <connectors>
+
+        <connector name="not">
+            <invoke method="not"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="notParam" type="Boolean" />
+        </connector>
+
+        <connector name="or">
+            <invoke method="or"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="orParam1" type="Boolean" />
+            <param name="orParam2" type="Boolean" />
+        </connector>
+
+        <connector name="and">
+            <invoke method="and"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="andParam1" type="Boolean" />
+            <param name="andParam2" type="Boolean" />
+        </connector>
+
+        <connector name="implies">
+            <invoke method="implies"
+                    class-name="com.megatim.typefichier.validator.predicat.ConnectorImpl" />
+            <param name="impliesAssumption" type="Boolean" />
+            <param name="impliesConclusion" type="Boolean" />
+        </connector>
+
+    </connectors>
+
+    <!-- Définition des prédicats -->
+    <predicates>
+        <predicate name="inValues">
+            <invoke  method="inValues" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="values" type="String"/>
+            <param name="fieldToCheck" type="String" />
+        </predicate>
+             
+        <predicate name="ifTypeFichier">
+            <invoke  method="ifTypeFichier" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="index" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param name="taillePartieDecimale" type="String"/>
+            <param name="separateurDecimal" type="String"/>
+        </predicate>
+        
+        <predicate name="ifTypeFichierExcel">
+            <invoke  method="ifTypeFichierExcel" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="position" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="nbreColonnes" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="java.util.Map"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param name="separateurDecimal" type="String"/>
+            <param name="taillePartieDecimale" type="int"/>
+        </predicate>
+        
+        <predicate name="ifTypeFichierFileName">
+            <invoke  method="ifTypeFichierFileName" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="prefixe" type="String"/>
+            <param name="type_suffixe" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="fileName" type="String"/>
+        </predicate>
+        
+        <predicate name="ifVersion">
+            <invoke  method="ifVersion" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="version" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+        </predicate>
+        
+        <predicate name="ifCodeRemise">
+            <invoke  method="ifCodeRemise" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="codeRemise" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+        </predicate>
+        
+        <predicate name="ifNumber">
+            <invoke  method="ifNumber" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="nbFiles" type="String"/>
+        </predicate>
+        
+        <predicate name="ifDate">
+            <invoke  method="ifDate" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="date" type="String"/>
+            <param name="format" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="fileName" type="String" />
+        </predicate>
+        
+        <predicate name="ifCodeAgentOrCodeParticipant">
+            <invoke  method="ifCodeAgentOrCodeParticipant" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="code" type="String"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+        </predicate>
+        
+        <predicate name="ifTierce">
+            <invoke  method="ifTierce" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="minValue" type="int" />
+            <param-value name="maxValue" type="int" />
+        </predicate>
+        
+        <predicate name="ifDecimal">
+            <invoke  method="ifDecimal" class-name="com.megatim.typefichier.validator.predicat.PredicateImpl"/>
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+            <param-value name="typeDonnee" type="String" />
+            <param name="ligne" type="String"/>
+            <param-value name="decimalPartMaxLength" type="int" />
+            <param-value name="separator" type="char"/>
+        </predicate>
+        
+        <predicate name="equal">
+            <invoke method="equal" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="equalParam" type="Object" />
+            <param name="equalValue" type="Object" />
+        </predicate>
+         
+        <predicate name="empty">
+            <invoke method="empty"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="emptyParam" type="Object" />
+            
+        </predicate>
+        <predicate name="equal">
+            <invoke method="equal"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="equalParam" type="Object" />
+            <param name="equalValue" type="Object" />
+        </predicate>
+
+        <predicate name="empty">
+            <invoke method="empty"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="emptyParam" type="Object" />
+        </predicate>
+
+        <predicate name="notEmptyValues">
+            <invoke method="notEmptyValues"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="notEmptyValuesParam" type="Collection" />
+        </predicate>
+
+        <predicate name="emptyValues">
+            <invoke method="emptyValues"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="emptyValuesParam" type="Collection" />
+        </predicate>
+
+        <predicate name="propertyReferenceEntry">
+            <invoke method="propertyReferenceEntry"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entityName" type="String" />
+            <param name="propertyName" type="String" />
+            <param name="propertyValue" type="Object" />
+        </predicate>
+
+        <predicate name="propertiesReferenceEntry">
+            <invoke method="propertiesReferenceEntry"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+        </predicate>
+
+        <predicate name="dateFormat">
+            <invoke method="dateFormat"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="dateValue" type="String" />
+            <param name="dateFormat" type="String" />
+        </predicate>
+
+        <predicate name="csvEntry">
+            <invoke method="csvEntry"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entryValue" type="String" />
+            <param name="csvValues" type="String" />
+        </predicate>
+
+        <predicate name="singleton">
+            <invoke method="singleton"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+        </predicate>
+
+        <predicate name="singletonValue">
+            <invoke method="singletonValue"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="singletonValue" type="Object" />
+        </predicate>
+
+        <predicate name="singleOccurenceValue">
+            <invoke method="singleOccurenceValue"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="occurenceValue" type="Object" />
+        </predicate>
+
+        <predicate name="singleOccurenceValueByGroup">
+            <invoke method="singleOccurenceValueByGroup"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="csvGroupPropertiesNames" type="String" />
+            <param name="occurenceEntity" type="Object" />
+            <param name="occurenceValue" type="Object" />
+        </predicate>
+
+        <predicate name="sum">
+            <invoke method="sum"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="sumValue" type="java.math.BigDecimal" />
+        </predicate>
+
+        <predicate name="size">
+            <invoke method="size"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="sizeValue" type="java.math.BigDecimal" />
+        </predicate>
+
+        <predicate name="greater">
+            <invoke method="greater"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="greaterValue" type="Object" />
+            <param name="greaterLimit" type="Object" />
+        </predicate>
+
+        <predicate name="lower">
+            <invoke method="lower"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="lowerValue" type="Object" />
+            <param name="lowerLimit" type="Object" />
+        </predicate>
+
+        <predicate name="ribChecker">
+            <invoke method="ribChecker"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="ribValue" type="String" />
+        </predicate>
+
+        <predicate name="systacCountryExist">
+            <invoke  method="systacCountryExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="countryCode" type="String"/>
+        </predicate>
+
+        <predicate name="posteComptableExist">
+            <invoke  method="posteComptableExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codePosteComptable" type="String"/>
+        </predicate>
+                
+        <predicate name="systacBankExist">
+            <invoke  method="systacBankExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="bankCode" type="String"/>
+        </predicate>
+
+        <predicate name="systacAgencyExist">
+            <invoke  method="systacAgencyExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="agencyCode" type="String"/>
+        </predicate>
+                
+        <predicate name="systacAgencyBankExist">
+            <invoke  method="systacAgencyBankExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="bankCode" type="String"/>
+            <param name="agencyCode" type="String"/>
+        </predicate>		
+		
+        <predicate name="sygmaParticipantCodeBicExist">
+            <invoke  method="sygmaParticipantCodeBicExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBicParticipant" type="String"/>
+        </predicate>
+
+        <predicate name="sygmaParticipantCodeBicWithPropertiesExist">
+            <invoke  method="sygmaParticipantCodeBicWithPropertiesExist" 
+                     class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBicParticipant" type="String"/>
+            <param name="properties" type="Map"/>
+        </predicate>
+
+        <predicate name="sygmaParticipantNumeroCompteExist">
+            <invoke  method="sygmaParticipantNumeroCompteExist" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroCompteParticipant" type="String"/>
+        </predicate>
+
+        <predicate name="sygmaParticipantNumeroCompteWithPropertiesExist">
+            <invoke  method="sygmaParticipantNumeroCompteWithPropertiesExist" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroCompteParticipant" type="String"/>
+            <param name="properties" type="Map"/>
+        </predicate>
+
+        <predicate name="ifReplayQueueInDataExist">
+            <invoke  method="ifReplayQueueInDataExist" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroReference" type="String"/>
+            <param name="numeroBordereauVirement" type="String"/>
+            <param name="codeEnregistrement"   type="String"/>
+            <param name="codeValeur"  type="String"/>
+        </predicate>
+				 
+        <predicate name="ifMt103001Message">
+            <invoke  method="ifMt103001Message" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeTypeMessage" type="String"/>
+            <param name="codeTypeTransaction" type="String"/>
+        </predicate>
+                 
+        <predicate name="ifAdmin">
+            <invoke  method="ifAdmin" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="loginValue" type="String"/>
+            <param name="passwordValue" type="String"/>
+        </predicate>
+                 
+        <predicate name="ifReplayQueueInDataExistSystac">
+            <invoke  method="ifReplayQueueInDataExistSystac" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroOperation" type="String"/>
+            <param name="datePresentation" type="String"/>
+            <param name="codeValeur"  type="String"/>
+            <param name="codeEnregistrement"   type="String"/>                       
+        </predicate>
+                 
+        <predicate name="ifReplayQueueInDataExistSygma">
+            <invoke  method="ifReplayQueueInDataExistSygma" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeReference" type="String"/>
+            <param name="datePresentation" type="String"/>                                              
+        </predicate>    
+                 
+        <predicate name="ifBankIsNotInBlackList">
+            <invoke  method="ifBankIsNotInBlackList" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBanqueDestinataire" type="String"/>
+        </predicate>
+                 
+        <predicate name="ifParticipantIsNotInBlackList">
+            <invoke  method="ifParticipantIsNotInBlackList" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeBicDestinataireSygma" type="String"/>
+        </predicate>      
+                 
+        <predicate name="checkReconciliationItemExistence">
+            <invoke  method="checkReconciliationItemExistence" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroReference" type="String"/>
+            <param name="montant" type="String"/>
+            <param name="datePresentation"   type="String"/>                        
+        </predicate>  
+                
+        <predicate name="queueInAnnulationCalendarValidation">
+            <invoke method="queueInAnnulationCalendarValidation"
+                    class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl" />
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+        </predicate>
+        <predicate name="uniqueCodeSystem">
+            <invoke  method="uniqueCodeSystem" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="codeSystem" type="String"/>
+        </predicate>
+        <predicate name="justOneOperation">
+            <invoke  method="justOneOperation" class-name="com.mgt.moteur.predicat.validation.impl.PredicateImpl"/>
+            <param name="numeroBonVirement" type="String"/>
+        </predicate>
+    </predicates>
+
+    <!-- Définition des assertions : ce sont des compositions de connecteurs, 
+    predicats et d'autres assertions -->
+    <asserts>
+        <assert name="inValues">
+            <param name="values" type="String"/>
+            <param-value name="fieldToCheck" type="String" />
+            <formula predicate-ref="inValues">
+                <param name="values" assert-param-ref="values" />
+                <param name="fieldToCheck" assert-param-ref="fieldToCheck" />
+            </formula>
+        </assert>
+            
+        <assert name="ifTypeFichier">
+            <param name="index" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param-value name="taillePartieDecimale" type="int" />
+            <param-value name="separateurDecimal" type="String"/>
+            <formula predicate-ref="ifTypeFichier">
+                <param name="index" assert-param-ref="index" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="typeDonnee" assert-param-ref="typeDonnee" />
+                <param name="ligne" assert-param-ref="ligne" />
+                <param name="formatDate" assert-param-ref="formatDate" />
+                <param name="separateurDate" assert-param-ref="separateurDate" />
+                <param name="taillePartieDecimale" assert-param-ref="taillePartieDecimale" />
+                <param name="separateurDecimal" assert-param-ref="separateurDecimal" />
+                    
+            </formula>
+        </assert>
+        <assert name="ifTypeFichierExcel">
+            <param name="position" type="int"/>
+            <param name="taille" type="int"/>
+            <param name="nbreColonnes" type="int"/>
+            <param name="typeDonnee" type="String"/>
+            <param name="ligne" type="java.util.Map"/>
+            <param name="formatDate" type="String"/>
+            <param name="separateurDate" type="String"/>
+            <param name="separateurDecimal" type="char"/>
+            <param name="taillePartieDecimale" type="int"/>
+            <formula predicate-ref="ifTypeFichierExcel">
+                <param name="position" assert-param-ref="position" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="nbreColonnes" assert-param-ref="nbreColonnes" />
+                <param name="typeDonnee" assert-param-ref="typeDonnee" />
+                <param name="ligne" assert-param-ref="ligne" />
+                <param name="formatDate" assert-param-ref="formatDate" />
+                <param name="separateurDate" assert-param-ref="separateurDate" />
+                <param name="separateurDecimal" assert-param-ref="separateurDecimal" />
+                <param name="taillePartieDecimale" assert-param-ref="taillePartieDecimale" />
+                    
+            </formula>
+        </assert>
+            
+        <assert name="ifTypeFichierFileName">
+            <param name="prefixe" type="String"/>
+            <param name="type_suffixe" type="String"/>
+            <param name="formatDate" type="String"/>
+            <param name="fileName" type="String"/>
+            <formula predicate-ref="ifTypeFichierFileName">
+                <param name="prefixe" assert-param-ref="prefixe" />
+                <param name="type_suffixe" assert-param-ref="type_suffixe" />
+                <param name="formatDate" assert-param-ref="formatDate" />
+                <param name="fileName" assert-param-ref="fileName" />
+            </formula>
+        </assert>
+            
+        <assert name="ifVersion">
+            <param name="version" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+            <formula predicate-ref="ifVersion">
+                <param name="version" assert-param-ref="version" />
+                <param name="nbPosition" assert-param-ref="nbPosition" />
+                <param name="typeCharactere" assert-param-ref="typeCharactere" />
+            </formula>
+        </assert>
+                
+        <assert name="ifCodeRemise">
+            <param name="codeRemise" type="String"/>
+            <param name="nbPosition" type="int"/>
+            <param name="typeCharactere" type="String"/>
+            <formula predicate-ref="ifCodeRemise">
+                <param name="codeRemise" assert-param-ref="codeRemise" />
+                <param name="nbPosition" assert-param-ref="nbPosition" />
+                <param name="typeCharactere" assert-param-ref="typeCharactere" />
+            </formula>
+        </assert>
+                
+        <assert name="ifNumber">
+            <param name="nbFiles" type="String"/>
+            <formula predicate-ref="ifNumber">
+                <param name="nbFiles" assert-param-ref="nbFiles" />
+            </formula>
+        </assert>
+                
+                
+        <assert name="ifDate">
+            <param name="date" type="String"/>
+            <param name="format" type="String"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <formula predicate-ref="ifDate">
+                <param name="date" assert-param-ref="date" />
+                <param name="format" assert-param-ref="format" />
+                <param name="index" assert-param-ref="index" />
+                <param name="fileName" assert-param-ref="fileName" />
+            </formula>
+        </assert>
+                
+        <assert name="ifCodeAgentOrCodeParticipant">
+            <param name="code" type="String"/>
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+            <formula predicate-ref="ifCodeAgentOrCodeParticipant">
+                <param name="code" assert-param-ref="code" />
+                <param name="fileName" assert-param-ref="fileName" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="index" assert-param-ref="index" />
+            </formula>
+        </assert>
+
+         
+        <assert name="ifTierce">
+            <param name="fileName" type="String"/>
+            <param-value name="index" type="int" />
+            <param-value name="minValue" type="int" />
+            <param-value name="maxValue" type="int" />
+            <formula predicate-ref="ifTierce">
+                <param name="fileName" assert-param-ref="fileName" />
+                <param name="minValue" assert-param-ref="minValue" />
+                <param name="maxValue" assert-param-ref="maxValue" />
+                <param name="index" assert-param-ref="index" />
+            </formula>
+        </assert>
+              
+        <assert name="ifDecimal">
+            <param-value name="index" type="int" />
+            <param-value name="taille" type="int" />
+            <param-value name="typeDonnee" value="String" />
+            <param name="ligne" type="String"/>
+            <param-value name="decimalPartMaxLength" type="int" />
+            <param-value name="separator" type="char" />
+            <formula predicate-ref="ifDecimal">
+                <param name="index" assert-param-ref="index" />
+                <param name="taille" assert-param-ref="taille" />
+                <param name="typeDonnee" assert-param-ref="typeDonnee" />
+                <param name="ligne" assert-param-ref="ligne"/>
+                <param name="decimalPartMaxLength" assert-param-ref="decimalPartMaxLength" />
+                <param name="separator" assert-param-ref="separator" />
+            </formula>
+        </assert>
+              
+        <assert name="equal">
+            <param name="equalValue" type="Object" />
+            <param name="equalParam" type="Object" />
+            <formula predicate-ref="equal">
+                <param name="equalValue" assert-param-ref="equalValue" />
+                <param name="equalParam" assert-param-ref="equalParam" />
+            </formula>
+        </assert>
+
+        <assert name="empty">
+            <param name="emptyParam" type="Object" />
+            <formula predicate-ref="empty">
+                <param name="emptyParam" assert-param-ref="emptyParam" />
+            </formula>
+        </assert>
+
+        <!-- Est vrai si toutes les valeurs sont non vides -->
+        <assert name="notEmptyValues">
+            <param name="notEmptyValuesParam" type="Object" />
+            <formula predicate-ref="notEmptyValues">
+                <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParam" />
+            </formula>
+        </assert>
+
+        <!-- Est vrai si toutes les valeurs sont vides -->
+        <assert name="emptyValues">
+            <param name="emptyValuesParam" type="Object" />
+            <formula predicate-ref="emptyValues">
+                <param name="emptyValuesParam" assert-param-ref="emptyValuesParam" />
+            </formula>
+        </assert>
+
+        <assert name="propertyReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="propertyName" type="String" />
+            <param name="propertyValue" type="Object" />
+            <formula predicate-ref="propertyReferenceEntry">
+                <param name="entityName" assert-param-ref="entityName" />
+                <param name="propertyName" assert-param-ref="propertyName" />
+                <param name="propertyValue" assert-param-ref="propertyValue" />
+            </formula>
+        </assert>
+
+        <assert name="propertiesReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="propertiesReferenceEntry">
+                <param name="entityName" assert-param-ref="entityName" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert>
+
+        <assert name="dateFormat">
+            <param name="dateValue" type="String" />
+            <param name="dateFormat" type="String" />
+            <formula predicate-ref="dateFormat">
+                <param name="dateValue" assert-param-ref="dateValue" />
+                <param name="dateFormat" assert-param-ref="dateFormat" />
+            </formula>
+        </assert>
+
+        <assert name="csvEntry">
+            <param name="entryValue" type="String" />
+            <param name="csvValues" type="String" />
+            <formula predicate-ref="csvEntry">
+                <param name="entryValue" assert-param-ref="entryValue" />
+                <param name="csvValues" assert-param-ref="csvValues" />
+            </formula>
+        </assert>
+
+        <assert name="singleton">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <formula predicate-ref="singleton">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+            </formula>
+        </assert>
+
+        <assert name="singletonValue">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="singletonValue" type="Object" />
+            <formula predicate-ref="singletonValue">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="singletonValue" assert-param-ref="singletonValue" />
+            </formula>
+        </assert>
+
+        <assert name="singleOccurenceValue">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="occurenceValue" type="Object" />
+            <formula predicate-ref="singleOccurenceValue">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="occurenceValue" assert-param-ref="occurenceValue" />
+            </formula>
+        </assert>
+
+        <assert name="singleOccurenceValueByGroup">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="csvGroupPropertiesNames" type="String" />
+            <param name="occurenceEntity" type="Object" />
+            <param name="occurenceValue" type="Object" />
+            <formula predicate-ref="singleOccurenceValueByGroup">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="csvGroupPropertiesNames" assert-param-ref="csvGroupPropertiesNames" />
+                <param name="occurenceEntity" assert-param-ref="occurenceEntity" />
+                <param name="occurenceValue" assert-param-ref="occurenceValue" />
+            </formula>
+        </assert>
+
+        <assert name="sum">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="entryPropertyName" type="String" />
+            <param name="sumValue" type="java.math.BigDecimal" />
+            <formula predicate-ref="sum">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="entryPropertyName" assert-param-ref="entryPropertyName" />
+                <param name="sumValue" assert-param-ref="sumValue" />
+            </formula>
+        </assert>
+
+        <assert name="size">
+            <param name="collectionEntries" type="java.util.Collection" />
+            <param name="entryTypeName" type="String" />
+            <param name="sizeValue" type="java.math.BigDecimal" />
+            <formula predicate-ref="size">
+                <param name="collectionEntries" assert-param-ref="collectionEntries" />
+                <param name="entryTypeName" assert-param-ref="entryTypeName" />
+                <param name="sizeValue" assert-param-ref="sizeValue" />
+            </formula>
+        </assert>
+
+        <assert name="greater">
+            <param name="greaterValue" type="Object" />
+            <param name="greaterLimit" type="Object" />
+            <formula predicate-ref="greater">
+                <param name="greaterValue" assert-param-ref="greaterValue" />
+                <param name="greaterLimit" assert-param-ref="greaterLimit" />
+            </formula>
+        </assert>
+
+        <assert name="lower">
+            <param name="lowerValue" type="Object" />
+            <param name="lowerLimit" type="Object" />
+            <formula predicate-ref="lower">
+                <param name="lowerValue" assert-param-ref="lowerValue" />
+                <param name="lowerLimit" assert-param-ref="lowerLimit" />
+            </formula>
+        </assert>
+
+        <assert name="ribChecker">
+            <param name="ribValue" type="String" />
+            <formula predicate-ref="ribChecker">
+                <param name="ribValue" assert-param-ref="ribValue" />
+            </formula>
+        </assert>
+
+        <assert name="systacCountryExist">
+            <param name="countryCode" type="String" />
+            <formula predicate-ref="systacCountryExist">
+                <param name="countryCode" assert-param-ref="countryCode" />
+            </formula>
+        </assert>
+                
+        <assert name="uniqueCodeSystem">
+            <param name="codeSystem" type="String" />
+            <formula predicate-ref="uniqueCodeSystem">
+                <param name="codeSystem" assert-param-ref="codeSystem" />
+            </formula>
+        </assert>
+                
+        <assert name="justOneOperation">
+            <param name="numeroBonVirement" type="String" />
+            <formula predicate-ref="justOneOperation">
+                <param name="numeroBonVirement" assert-param-ref="numeroBonVirement" />
+            </formula>
+        </assert>
+
+        <assert name="posteComptableExist">
+            <param name="codePosteComptable" type="String" />
+            <formula predicate-ref="posteComptableExist">
+                <param name="codePosteComptable" assert-param-ref="codePosteComptable" />
+            </formula>
+        </assert>
+                
+        <assert name="systacBankExist">
+            <param name="bankCode" type="String" />
+            <formula predicate-ref="systacBankExist">
+                <param name="bankCode" assert-param-ref="bankCode" />
+            </formula>
+        </assert>
+
+        <assert name="systacAgencyExist">
+            <param name="agencyCode" type="String" />
+            <formula predicate-ref="systacAgencyExist">
+                <param name="agencyCode" assert-param-ref="agencyCode" />
+            </formula>
+        </assert>
+		
+        <assert name="systacAgencyBankExist">
+            <param name="bankCode" type="String" />
+            <param name="agencyCode" type="String" />
+            <formula predicate-ref="systacAgencyBankExist">
+                <param name="bankCode" assert-param-ref="bankCode" />
+                <param name="agencyCode" assert-param-ref="agencyCode" />
+            </formula>
+        </assert>	
+
+        <assert name="sygmaParticipantCodeBicExist">
+            <param name="codeBicParticipant" type="String" />
+            <formula predicate-ref="sygmaParticipantCodeBicExist">
+                <param name="codeBicParticipant" assert-param-ref="codeBicParticipant" />
+            </formula>
+        </assert>
+
+        <assert name="sygmaParticipantCodeBicWithPropertiesExist">
+            <param name="codeBicParticipant" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="sygmaParticipantCodeBicWithPropertiesExist">
+                <param name="codeBicParticipant" assert-param-ref="codeBicParticipant" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert>
+
+        <assert name="sygmaParticipantNumeroCompteExist">
+            <param name="numeroCompteParticipant" type="String" />
+            <formula predicate-ref="sygmaParticipantNumeroCompteExist">
+                <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipant" />
+            </formula>
+        </assert>
+
+        <assert name="sygmaParticipantNumeroCompteWithPropertiesExist">
+            <param name="numeroCompteParticipant" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="sygmaParticipantNumeroCompteWithPropertiesExist">
+                <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipant" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert> 
+        
+        <assert name="ifMt103001Message">
+            <param name="codeTypeMessage" type="String" />
+            <param name="codeTypeTransaction" type="String" />
+            <formula predicate-ref="ifMt103001Message">
+                <param name="codeTypeMessage" assert-param-ref="codeTypeMessage" />
+                <param name="codeTypeTransaction" assert-param-ref="codeTypeTransaction" />
+            </formula>
+        </assert>
+                
+        <assert name="ifAdmin">
+            <param name="loginValue" type="String" />
+            <param name="passwordValue" type="String" />
+            <formula predicate-ref="ifAdmin">
+                <param name="loginValue" assert-param-ref="loginValue" />
+                <param name="passwordValue" assert-param-ref="passwordValue" />
+            </formula>
+        </assert>
+		
+        <assert name="ifReplayQueueInDataExist">
+            <param name="numeroReference" type="String" />
+            <param name="numeroBordereauVirement" type="String" />
+            <param name="codeEnregistrement"  type="String" />
+            <param name="codeValeur"  type="String" />
+            <formula predicate-ref="ifReplayQueueInDataExist">
+                <param name="numeroReference" assert-param-ref="numeroReference" />
+                <param name="numeroBordereauVirement" assert-param-ref="numeroBordereauVirement" />
+                <param name="codeEnregistrement"    assert-param-ref="codeEnregistrement" />
+                <param name="codeValeur"  assert-param-ref="codeValeur" />
+            </formula>
+        </assert>
+                
+        <assert name="ifReplayQueueInDataExistSystac">
+            <param name="numeroOperation" type="String" />
+            <param name="datePresentation" type="String" />     
+            <param name="codeValeur"  type="String" />  
+            <param name="codeEnregistrement"  type="String" />                                 
+            <formula predicate-ref="ifReplayQueueInDataExistSystac">
+                <param name="numeroOperation" assert-param-ref="numeroOperation" />
+                <param name="datePresentation" assert-param-ref="datePresentation" />
+                <param name="codeValeur"  assert-param-ref="codeValeur" />
+                <param name="codeEnregistrement"    assert-param-ref="codeEnregistrement" />                            
+            </formula>
+        </assert>
+                
+        <assert name="ifReplayQueueInDataExistSygma">
+            <param name="codeReference" type="String" />
+            <param name="datePresentation" type="String" />                                      
+            <formula predicate-ref="ifReplayQueueInDataExistSygma">
+                <param name="codeReference" assert-param-ref="codeReference" />
+                <param name="datePresentation" assert-param-ref="datePresentation" />                            
+            </formula>
+        </assert>
+                
+        <assert name="ifBankIsNotInBlackList">
+            <param name="codeBanqueDestinataire" type="String" />                  
+            <formula predicate-ref="ifBankIsNotInBlackList">
+                <param name="codeBanqueDestinataire" assert-param-ref="codeBanqueDestinataire" />                           
+            </formula>
+        </assert>
+                
+        <assert name="ifParticipantIsNotInBlackList">
+            <param name="codeBicDestinataireSygma" type="String" />                  
+            <formula predicate-ref="ifParticipantIsNotInBlackList">
+                <param name="codeBicDestinataireSygma" assert-param-ref="codeBicDestinataireSygma" />                           
+            </formula>
+        </assert>        
+                
+        <assert name="checkReconciliationItemExistence">
+            <param name="numeroReference" type="String" />
+            <param name="montant" type="String" />
+            <param name="datePresentation"  type="String" />
+            <formula predicate-ref="checkReconciliationItemExistence">
+                <param name="numeroReference" assert-param-ref="numeroReference" />
+                <param name="montant" assert-param-ref="montant" />
+                <param name="datePresentation"    assert-param-ref="datePresentation" />
+            </formula>
+        </assert>    
+                
+        <assert name="queueInAnnulationCalendarValidation">
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+            <formula predicate-ref="queueInAnnulationCalendarValidation">
+                <param name="entityName" assert-param-ref="entityName" />
+                <param name="properties" assert-param-ref="properties" />
+            </formula>
+        </assert>
+
+        <assert name="notEqual">
+            <param name="notEqualParam" type="Object" />
+            <param name="notEqualValue" type="Object" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="notEqualParam" />
+                    <param name="equalValue" assert-param-ref="notEqualValue" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notPropertyReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="propertyName" type="String" />
+            <param name="propertyValue" type="Object" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityName" />
+                    <param name="propertyName" assert-param-ref="propertyName" />
+                    <param name="propertyValue" assert-param-ref="propertyValue" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notPropertiesReferenceEntry">
+            <param name="entityName" type="String" />
+            <param name="properties" type="Map" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="propertiesReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityName" />
+                    <param name="properties" assert-param-ref="properties" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notEmpty">
+            <param name="notEmptyParam" type="Object" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="empty">
+                    <param name="emptyParam" assert-param-ref="notEmptyParam" />
+                </param>
+            </formula>
+        </assert>
+
+        <!-- Est vrai si aumoins l'une des valeurs de la collection est non vide -->
+        <assert name="lazyNotEmptyValues">
+            <param name="lazyNotEmptyValuesParam" type="Collection" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="emptyValues">
+                    <param name="emptyValuesParam" assert-param-ref="lazyNotEmptyValuesParam" />
+                </param>
+            </formula>
+        </assert>
+
+        <!-- Est vrai si aumoins l'une des valeurs de la liste est vide -->
+        <assert name="lazyEmptyValues">
+            <param name="lazyEmptyValues" type="Collection" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="lazyEmptyValues" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="greaterOrEqual">
+            <param name="greaterEqualValue" type="Object" />
+            <param name="greaterEqualLimit" type="Object" />
+            <formula connector-ref="or">
+                <param name="orParam1" predicate-ref="greater">
+                    <param name="greaterValue" assert-param-ref="greaterEqualValue" />
+                    <param name="greaterLimit" assert-param-ref="greaterEqualLimit" />
+                </param>
+                <param name="orParam2" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="greaterEqualValue" />
+                    <param name="equalValue" assert-param-ref="greaterEqualLimit" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="lowerOrEqual">
+            <param name="lowerEqualValue" type="Object" />
+            <param name="lowerEqualLimit" type="Object" />
+            <formula connector-ref="or">
+                <param name="orParam1" predicate-ref="lower">
+                    <param name="lowerValue" assert-param-ref="lowerEqualValue" />
+                    <param name="lowerLimit" assert-param-ref="lowerEqualLimit" />
+                </param>
+                <param name="orParam2" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="lowerEqualValue" />
+                    <param name="equalValue" assert-param-ref="lowerEqualLimit" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="notCsvEntry">
+            <param name="notEntryValue" type="String" />
+            <param name="notCsvValues" type="String" />
+            <formula connector-ref="not">
+                <param name="notParam" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="notEntryValue" />
+                    <param name="csvValues" assert-param-ref="notCsvValues" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="equalAndNotEmpty">
+            <param name="equalParam" type="Object" />
+            <param name="equalValue" type="Object" />
+            <param name="notEmptyParam" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam" />
+                    <param name="equalValue" assert-param-ref="equalValue" />
+                </param>
+                <param name="andParam2" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParam" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="equalAndEqual">
+            <param name="equalParam1" type="Object" />
+            <param name="equalValue1" type="Object" />
+            <param name="equalParam2" type="Object" />
+            <param name="equalValue2" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam1" />
+                    <param name="equalValue" assert-param-ref="equalValue1" />
+                </param>
+                <param name="andParam2" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam2" />
+                    <param name="equalValue" assert-param-ref="equalValue2" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="csvEntryAndCsvEntry">
+            <param name="entryValue1" type="Object" />
+            <param name="csvValues1" type="Object" />
+            <param name="entryValue2" type="Object" />
+            <param name="csvValues2" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValue1" />
+                    <param name="csvValues" assert-param-ref="csvValues1" />
+                </param>
+                <param name="andParam2" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValue2" />
+                    <param name="csvValues" assert-param-ref="csvValues2" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="csvEntryAndNotCsvEntry">
+            <param name="entryValue" type="Object" />
+            <param name="csvValues" type="Object" />
+            <param name="notEntryValue" type="Object" />
+            <param name="notCsvValues" type="Object" />
+            <formula connector-ref="and">
+                <param name="andParam1" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValue" />
+                    <param name="csvValues" assert-param-ref="csvValues" />
+                </param>
+                <param name="andParam2" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValue" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValues" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenGreater">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="greaterValueConclusion" type="String" />
+            <param name="greaterLimitConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="greater">
+                    <param name="greaterValue" assert-param-ref="greaterValueConclusion" />
+                    <param name="greaterLimit" assert-param-ref="greaterLimitConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenLower">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="lowerValueConclusion" type="String" />
+            <param name="lowerLimitConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="lower">
+                    <param name="lowerValue" assert-param-ref="lowerValueConclusion" />
+                    <param name="lowerLimit" assert-param-ref="lowerLimitConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenEqual">
+            <param name="equalParam1Assumption" type="String" />
+            <param name="equalValue1Assumption" type="String" />
+            <param name="equalParam2Conclusion" type="String" />
+            <param name="equalValue2Conclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam1Assumption" />
+                    <param name="equalValue" assert-param-ref="equalValue1Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParam2Conclusion" />
+                    <param name="equalValue" assert-param-ref="equalValue2Conclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenNotEqual">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="notEqualParamConclusion" type="String" />
+            <param name="notEqualValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEqual">
+                    <param name="notEqualParam" assert-param-ref="notEqualParamConclusion" />
+                    <param name="notEqualValue" assert-param-ref="notEqualValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenNotCsvEntry">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="notEntryValueConclusion" type="String" />
+            <param name="notCsvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValueConclusion" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenCsvEntry">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="entryValueConclusion" type="String" />
+            <param name="csvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueConclusion" />
+                    <param name="csvValues" assert-param-ref="csvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenCsvEntry">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="entryValueConclusion" type="String" />
+            <param name="csvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueConclusion" />
+                    <param name="csvValues" assert-param-ref="csvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenSingleton">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="collectionEntriesConclusion" type="java.util.Collection" />
+            <param name="entryTypeNameConclusion" type="String" />
+            <param name="entryPropertyNameConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="singleton">
+                    <param name="collectionEntries" assert-param-ref="collectionEntriesConclusion" />
+                    <param name="entryTypeName" assert-param-ref="entryTypeNameConclusion" />
+                    <param name="entryPropertyName" assert-param-ref="entryPropertyNameConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenSingleOccurenceValueByGroup">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="collectionEntriesConclusion" type="java.util.Collection" />
+            <param name="entryTypeNameConclusion" type="String" />
+            <param name="entryPropertyNameConclusion" type="String" />
+            <param name="csvGroupPropertiesNamesConclusion" type="String" />
+            <param name="occurenceEntityConclusion" type="Object" />
+            <param name="occurenceValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="singleOccurenceValueByGroup">
+                    <param name="collectionEntries" assert-param-ref="collectionEntriesConclusion" />
+                    <param name="entryTypeName" assert-param-ref="entryTypeNameConclusion" />
+                    <param name="entryPropertyName" assert-param-ref="entryPropertyNameConclusion" />
+                    <param name="csvGroupPropertiesNames" assert-param-ref="csvGroupPropertiesNamesConclusion" />
+                    <param name="occurenceEntity" assert-param-ref="occurenceEntityConclusion" />
+                    <param name="occurenceValue" assert-param-ref="occurenceValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenEqual">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="equalParamConclusion" type="String" />
+            <param name="equalValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamConclusion" />
+                    <param name="equalValue" assert-param-ref="equalValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenNotEqual">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="notEqualParamConclusion" type="String" />
+            <param name="notEqualValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEqual">
+                    <param name="notEqualParam" assert-param-ref="notEqualParamConclusion" />
+                    <param name="notEqualValue" assert-param-ref="notEqualValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenNotCsvEntry">
+            <param name="entryValueAssumption" type="String" />
+            <param name="csvValuesAssumption" type="String" />
+            <param name="notEntryValueConclusion" type="String" />
+            <param name="notCsvValuesConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValueConclusion" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenPropertyReferenceEntry">
+            <param name="equalParamAssumption" type="String" />
+            <param name="equalValueAssumption" type="String" />
+            <param name="entityNameConclusion" type="String" />
+            <param name="propertyNameConclusion" type="String" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualAndNotEmptyThenRibChecker">
+            <param name="equalParamAssumption" type="Object" />
+            <param name="equalValueAssumption" type="Object" />
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="ribValueConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="equalAndNotEmpty">
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="ribChecker">
+                    <param name="ribValue" assert-param-ref="ribValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenNotEmpty">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenNotEmpty">
+            <param name="entryValueAssumption" type="Object" />
+            <param name="csvValuesAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+
+        <assert name="ifCsvEntryAndCsvEntryThenEqual">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="equalParamConclusion" type="Object" />
+            <param name="equalValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalParam" assert-param-ref="equalParamConclusion" />
+                    <param name="equalValue" assert-param-ref="equalValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenPropertyReferenceEntry">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertyNameConclusion" type="Object" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenSygmaParticipantCodeBicExist">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryAndCsvEntryThenSygmaParticipantNumeroCompteExist">
+            <param name="entryValue1Assumption" type="Object" />
+            <param name="csvValues1Assumption" type="Object" />
+            <param name="entryValue2Assumption" type="Object" />
+            <param name="csvValues2Assumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="csvEntryAndCsvEntry">
+                    <param name="entryValue1" assert-param-ref="entryValue1Assumption" />
+                    <param name="csvValues1" assert-param-ref="csvValues1Assumption" />
+                    <param name="entryValue2" assert-param-ref="entryValue2Assumption" />
+                    <param name="csvValues2" assert-param-ref="csvValues2Assumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenCsvEntry">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="entryValueConclusion" type="Object" />
+            <param name="csvValuesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueConclusion" />
+                    <param name="csvValues" assert-param-ref="csvValuesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenEqual">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="equalValueConclusion" type="Object" />
+            <param name="equalParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="equal">
+                    <param name="equalValue" assert-param-ref="equalValueConclusion" />
+                    <param name="equalParam" assert-param-ref="equalParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifEqualThenNotEmpty">
+            <param name="equalValueAssumption" type="Object" />
+            <param name="equalParamAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="equal">
+                    <param name="equalValue" assert-param-ref="equalValueAssumption" />
+                    <param name="equalParam" assert-param-ref="equalParamAssumption" />
+                </param>				
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenNotEmpty">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotCsvEntryThenNotEmpty">
+            <param name="notEntryValueAssumption" type="Object" />
+            <param name="notCsvValuesAssumption" type="Object" />
+            <param name="notEmptyParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notCsvEntry">
+                    <param name="notEntryValue" assert-param-ref="notEntryValueAssumption" />
+                    <param name="notCsvValues" assert-param-ref="notCsvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+
+        <assert name="ifNotEmptyThenPropertyReferenceEntry">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertyNameConclusion" type="Object" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantCodeBicExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantNumeroCompteExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantCodeBicWithPropertiesExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicWithPropertiesExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenSygmaParticipantNumeroCompteWithPropertiesExist">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteWithPropertiesExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyThenPropertiesReferenceEntry">
+            <param name="notEmptyParamAssumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" assert-ref="notEmpty">
+                    <param name="notEmptyParam" assert-param-ref="notEmptyParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertiesReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifCsvEntryThenLazyNotEmptyValues">
+            <param name="entryValueAssumption" type="Object" />
+            <param name="csvValuesAssumption" type="Object" />
+            <param name="lazyNotEmptyValuesParamConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="csvEntry">
+                    <param name="entryValue" assert-param-ref="entryValueAssumption" />
+                    <param name="csvValues" assert-param-ref="csvValuesAssumption" />
+                </param>
+                <param name="impliesConclusion" assert-ref="lazyNotEmptyValues">
+                    <param name="lazyNotEmptyValuesParam" assert-param-ref="lazyNotEmptyValuesParamConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenPropertyReferenceEntry">
+            <param name="notEmptyValuesParamAssumption" type="String" />
+            <param name="entityNameConclusion" type="String" />
+            <param name="propertyNameConclusion" type="String" />
+            <param name="propertyValueConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertyReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="propertyName" assert-param-ref="propertyNameConclusion" />
+                    <param name="propertyValue" assert-param-ref="propertyValueConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantCodeBicExist">
+            <param name="notEmptyValuesParamAssumption" type="String" />
+            <param name="codeBicParticipantConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantNumeroCompteExist">
+            <param name="notEmptyValuesParamAssumption" type="String" />
+            <param name="numeroCompteParticipantConclusion" type="String" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+
+        <assert name="ifNotEmptyValuesThenPropertiesReferenceEntry">
+            <param name="notEmptyValuesParamAssumption" type="Object" />
+            <param name="entityNameConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="propertiesReferenceEntry">
+                    <param name="entityName" assert-param-ref="entityNameConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantCodeBicWithPropertiesExist">
+            <param name="notEmptyValuesParamAssumption" type="Object" />
+            <param name="codeBicParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantCodeBicWithPropertiesExist">
+                    <param name="codeBicParticipant" assert-param-ref="codeBicParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+
+        <assert name="ifNotEmptyValuesThenSygmaParticipantNumeroCompteWithPropertiesExist">
+            <param name="notEmptyValuesParamAssumption" type="Object" />
+            <param name="numeroCompteParticipantConclusion" type="Object" />
+            <param name="propertiesConclusion" type="Object" />
+            <formula connector-ref="implies">
+                <param name="impliesAssumption" predicate-ref="notEmptyValues">
+                    <param name="notEmptyValuesParam" assert-param-ref="notEmptyValuesParamAssumption" />
+                </param>
+                <param name="impliesConclusion" predicate-ref="sygmaParticipantNumeroCompteWithPropertiesExist">
+                    <param name="numeroCompteParticipant" assert-param-ref="numeroCompteParticipantConclusion" />
+                    <param name="properties" assert-param-ref="propertiesConclusion" />
+                </param>
+            </formula>
+        </assert>
+               
+
+    </asserts>
+
+</predicate-engine>
\ No newline at end of file
diff --git a/fdx_convert/target/classes/styles/CustomFormComponents.css b/fdx_convert/target/classes/styles/CustomFormComponents.css
new file mode 100644
index 0000000..5077d90
--- /dev/null
+++ b/fdx_convert/target/classes/styles/CustomFormComponents.css
@@ -0,0 +1,225 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 3 févr. 2022, 08:53:05
+    Author     : MGT_DEV3
+*/
+
+/*@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Regular.ttf');
+}*/
+
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Regular.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}
+
+.mainForm {
+    /*-fx-background-color:  rgb(246, 247, 249);*/
+}
+
+/* LABEL */
+
+.label {
+    -fx-text-fill: rgba(90, 90, 90, 1);
+    -fx-font-weight: bold;
+}
+
+/* TEXTFIELD */
+
+.text-field {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-text-fill: rgba(98, 98, 100, 1);
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-border-width: 1;
+    -fx-font-family: 'Roboto';
+}
+
+.text-field:disabled {
+    -fx-opacity: 0.8;
+}
+
+* {
+    -fx-primary-color: #007acc;
+    -fx-secondary-color: #4B6EAF;
+
+    -fx-focus-color: -fx-secondary-color;
+}
+
+/* SPINNER */
+
+.spinner {
+    -fx-border-width: 0;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+.spinner .increment-arrow-button,
+.spinner .decrement-arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+.spinner .increment-arrow-button:hover,
+.spinner .decrement-arrow-button:hover {
+
+}
+.spinner .increment-arrow-button:hover:pressed,
+.spinner .decrement-arrow-button:hover:pressed,
+.spinner .increment-arrow-button:pressed,
+.spinner .decrement-arrow-button:pressed {
+
+}
+.spinner .increment-arrow-button .increment-arrow,
+.spinner .decrement-arrow-button .decrement-arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* CHECKBOX */
+.check-box {
+    /* default properties */
+    selected-box-color: rgba(111, 136, 140, 1);
+    box-color: rgba(111, 136, 140, 1);
+    mark-color: white;
+}
+
+.check-box:selected > .box {
+    /* background color for selected checkbox */
+    -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+    /* background color of unselected checkbox */
+    -fx-background-color: box-color;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+.check-box:selected > .box > .mark,
+.check-box:indeterminate  > .box > .mark {
+    /* modify mark color */
+    -fx-background-color: mark-color;
+}
+
+/* COMBOBOX */
+/* The ListCell that shows the selected item in a non-editable ComboBox */
+
+.combo-box:focus,
+.combo-box .list-cell {
+    -fx-background-color: rgba(208, 208, 208, 1);
+}
+
+.combo-box{
+    -fx-background-color: #fff;
+    -fx-text-fill: #000;
+}
+.combo-box .list-view .list-cell {
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+/* The TextField that shows the selected item in an editable ComboBox */
+.combo-box .text-input {
+    -fx-background-color: rgba(208, 208, 208, 1);
+     -fx-text-fill: #000;
+}
+
+.combo-box:disabled {
+    -fx-opacity: 0.8;
+}
+
+
+/* Style the arrow button area */
+.combo-box .arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+
+.combo-box .arrow-button .arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell:hover {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+    -fx-background-color: rgba(214, 236, 219, 1);
+}
+
+/*
+* Title pane style
+*/
+.titled-pane {
+    -fx-border-color: rgba(203, 203, 203, 1);
+    -fx-text-fill: rgba(255, 255, 255, 1);
+    -fx-border-width: 0.5;
+}
+
+.titled-pane > .title {
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-background-color: rgba(115, 135, 132, 1);
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-background-color: rgba(114, 114, 116, 1);
+    -fx-font-size: 14px;
+    -fx-text-fill: white;
+    -fx-font-weight: bold;
+}
+
+.text-area {
+    -fx-text-fill: black;
+    -fx-background-color: #fff;
+    -fx-border-width: 1;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-border-width: 1;
+}
+
+.text-area .content{
+    -fx-opacity: 1;
+    -fx-background-color: #fff;
+}
+
+.text-area:disabled {
+    -fx-opacity: 1;
+    -fx-background-color:  white;
+    -fx-font-weight:bold;
+}
+
+.text-input > .scroll-pane:disabled {
+    -fx-opacity: 1;
+}
+
+.custom-file-chooser .text-field,
+.custom-directory-chooser .text-field,
+.abstract-selection-item .text-field {
+   
+    -fx-text-fill: black;
+}
diff --git a/fdx_convert/target/classes/styles/FormComponents1.css b/fdx_convert/target/classes/styles/FormComponents1.css
new file mode 100644
index 0000000..8b9f5d9
--- /dev/null
+++ b/fdx_convert/target/classes/styles/FormComponents1.css
@@ -0,0 +1,367 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 3 févr. 2022, 08:53:05
+    Author     : MGT_DEV3
+*/
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}
+
+.mainForm {
+    -fx-background-color: #fff;
+}
+
+/* LABEL */
+
+.form-label {
+    -fx-text-fill: rgba(137, 137, 137, 1);
+    -fx-font-weight: normal; 
+}
+
+.label {
+    -fx-font-family: 'Roboto';
+    -fx-font-size: 12px;
+    /* -fx-font-weight: bold; */
+    -fx-text-fill: #333333;
+    /* -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); */
+}
+
+
+/* TEXTFIELD */
+
+.text-field {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: #000;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-border-width: 1;
+    -fx-font-family: 'Roboto';
+    -fx-min-height: 28px;	
+    -fx-pref-height: 28px;	
+    -fx-font-size: 12px;
+}
+
+.text-field:disabled {
+    -fx-background-color: rgba(240, 240, 240, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: #000;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-opacity: 1.0;
+    -fx-font-size: 12px;
+}
+
+.text-field:focused {
+    -fx-border-color: #0FA3D5;
+}
+
+.text-field:focused:hover {
+    -fx-border-color: #0FA3D5;
+}
+
+.text-area {
+    -fx-background-insets: 0;
+    -fx-background-color: white;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(208, 208, 208, 1);
+}
+
+.text-area .content {
+    -fx-background-color: white;
+}
+
+.text-area:focused .content {
+    -fx-background-color: white;
+}
+
+.text-area:focused {
+    -fx-border-color: #0FA3D5;
+}
+
+.text-area .content {
+    -fx-padding: 10px;
+    -fx-text-fill: rgba(100, 99, 102, 1);
+    /*-fx-highlight-fill: #7ecfff;*/
+}
+
+.text-area:disabled {
+    -fx-background-insets: 0;
+    -fx-background-color: rgba(241, 241, 241, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(208, 208, 208, 1);
+    -fx-opacity: 1.0;
+    -fx-text-fill: #000;
+}
+
+.text-area:disabled .content {
+    -fx-background-color: rgba(241, 241, 241, 1);
+}
+
+/* keep element fully opaque, when disabled */
+.text-area:disabled,
+.text-area *:disabled {
+    -fx-opacity: 1;
+}
+
+* {
+    -fx-primary-color: #007acc;
+    -fx-secondary-color: #4B6EAF;
+    -fx-focus-color: -fx-secondary-color;
+}
+
+/* SPINNER */
+
+.spinner {
+    -fx-border-width: 0;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-min-height:28px;
+}
+
+.spinner .increment-arrow-button,
+.spinner .decrement-arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+.spinner .increment-arrow-button:hover,
+.spinner .decrement-arrow-button:hover {
+
+}
+.spinner .increment-arrow-button:hover:pressed,
+.spinner .decrement-arrow-button:hover:pressed,
+.spinner .increment-arrow-button:pressed,
+.spinner .decrement-arrow-button:pressed {
+
+}
+.spinner .increment-arrow-button .increment-arrow,
+.spinner .decrement-arrow-button .decrement-arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* CHECKBOX */
+.check-box {
+    /* default properties */
+    selected-box-color: rgba(111, 136, 140, 1);
+    box-color: rgba(111, 136, 140, 1);
+    mark-color: white;
+}
+
+.check-box:selected > .box {
+    /* background color for selected checkbox */
+    -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+    /* background color of unselected checkbox */
+    -fx-background-color: box-color;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+.check-box:selected > .box > .mark,
+.check-box:indeterminate  > .box > .mark {
+    /* modify mark color */
+    -fx-background-color: mark-color;
+}
+
+/* COMBOBOX */
+/* The ListCell that shows the selected item in a non-editable ComboBox */
+
+.combo-box {
+    -fx-border-color: #D3D3D3;
+    -fx-min-height: 28px;	
+    -fx-pref-height: 28px;
+}
+
+.combo-box,
+.combo-box:focus,
+.combo-box .list-cell {
+    -fx-background-color: rgba(255,255,255, 1);
+    -fx-border-color: #C9C9CC;
+    -fx-border-width: 0.1 0.1 0.1 0.1;
+}
+
+.combo-box .list-view .list-cell {
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+.combo-box .list-view {
+    -fx-background-color: rgba(250, 250, 250, 1);
+    -fx-border-color:rgba(225, 225, 225, 1);
+}
+
+/* The TextField that shows the selected item in an editable ComboBox */
+.combo-box .text-input {
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+.combo-box:disabled {
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: black;
+    -fx-opacity: 1.0;
+    -fx-background-color: rgba(235, 242, 243, 1);
+}
+
+.combo-box-base:disabled {
+    -fx-background-color: rgba(245, 242, 243, 1);
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    /*-fx-text-fill: rgba(98, 98, 100, 1);*/
+    -fx-text-fill: black;
+    -fx-border-color: rgba(228, 238, 248, 1);
+    -fx-opacity: 1;
+}
+
+.combo-box-base {
+    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, white;
+    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
+    -fx-background-radius: 3px, 3px, 2px, 1px;
+}
+
+
+/* Style the arrow button area */
+.combo-box .arrow-button {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-radius: 1px;
+    -fx-background-radius: 0px;
+    -fx-border-color: rgba(225, 225, 225, 1);
+    -fx-border-width: 1;
+}
+
+.combo-box .arrow-button .arrow {
+    -fx-background-color: rgba(162, 162, 162, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+}
+
+/* Set the text color in the popup list for ComboBox to blue */
+.combo-box-popup .list-view .list-cell:hover {
+    -fx-text-fill: rgba(98, 98, 100, 1);
+    -fx-background-color: rgba(214, 236, 219, 1);
+}
+
+/*
+* Title pane style
+*/
+/*
+* Title pane style
+*/
+.titled-pane {
+    -fx-border-color: rgba(199, 200, 202, 1);
+   /* -fx-text-fill: rgba(255, 255, 255, 1);*/
+    -fx-background-color: rgba(255, 255, 255, 1);
+}
+
+.titled-pane > .title {
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-background-color: rgba(88, 88, 90, 1);
+}
+
+.titled-pane > .title .text {
+    
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-font-size: 14px;
+    /* -fx-background-color: rgba(114, 114, 116, 1);*/
+    -fx-text-fill: #FFFFFF;
+}
+
+.nested-class .table-view {
+    -fx-background-color: transparent;
+    -fx-border-color: rgb(209, 211, 212);
+    -fx-padding: 0;
+}
+
+.nested-class .table-view .column-header,
+.nested-class .table-view .column-header-background .filler {
+    -fx-background-color: red; 
+}
+
+.nested-class .column-header {
+
+}
+
+.nested-class .table-view .column-header-background{
+    -fx-padding: 0;
+}
+
+.nested-class .table-view .column-header {
+    -fx-border-color: rgb(209, 211, 212);
+}
+
+.nested-class .table-view .column-header .label{
+    -fx-text-fill: white;
+    -fx-font-weight: bold; 
+    -fx-alignment: CENTER;
+    -fx-padding: 5;
+}
+
+.nested-class .table-cell {
+    -fx-border-width: 0 1 0 1;
+    -fx-border-color: rgb(230, 231, 232);
+    -fx-padding: 5;
+}
+
+.nested-class .table-row-cell{
+    -fx-background-color: #ffffff;
+}
+
+.nested-class .table-row-cell:odd {
+    -fx-background-color: rgb(239, 239, 240);
+}
+
+.nested-class .table-row-cell:selected {
+    -fx-background-color: rgba(214, 236, 219, 1);
+    -fx-background-insets: 0;
+    -fx-background-radius: 0;
+}
+
+.nested-class .table-row-cell:selected .text {
+    -fx-fill: #000;
+}
+
+.abstract-selection-item .text-field:disabled {
+    -fx-background-color: rgba(240, 240, 240, 1);
+}
+
+.pane .vbox {
+    -fx-background-color: blue;
+}
+
+.abstract-selection-list .text-field,
+.abstract-selection-list .text-field:disabled {
+    -fx-text-fill: #000;
+}
+
+.abstract-selection-item .text-field,
+.abstract-selection-item .text-field:disabled {
+    -fx-text-fill: #000;
+}
diff --git a/fdx_convert/target/classes/styles/app-theme.css b/fdx_convert/target/classes/styles/app-theme.css
new file mode 100644
index 0000000..7dd9fe6
--- /dev/null
+++ b/fdx_convert/target/classes/styles/app-theme.css
@@ -0,0 +1,34 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 23 août 2022, 23:19:20
+    Author     : MGT_DEV3
+*/
+
+.notification-dialog {
+    -fx-border-color: rgba(31, 139, 123, 1);
+}
+
+.notification-dialog .image-view{
+    -fx-graphic: url('../images/app_icon.png');
+}
+
+.notification-dialog .top-bar {
+    -fx-background-color:  #5D5D0F;
+}
+
+.abstract-selection-list-table .banner,
+.abstract-selection-item-table .banner {
+    -fx-background-size: 0;
+    -fx-background-color:  rgba(31, 139, 123, 1);
+}
+
+.save-btn {
+    -fx-border-color: rgba(31, 139, 123, 1);
+    -fx-border-width: 1;
+    -fx-background-color: rgba(31, 139, 123, 1);
+}
+
diff --git a/fdx_convert/target/classes/styles/custom-main-style.css b/fdx_convert/target/classes/styles/custom-main-style.css
new file mode 100644
index 0000000..0de0cc0
--- /dev/null
+++ b/fdx_convert/target/classes/styles/custom-main-style.css
@@ -0,0 +1,426 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+/*@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}*/
+
+.next-btn {
+    -fx-background-image: url(../images/next-img.png);
+    -fx-background-size: 15px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.previous-btn {
+    -fx-background-image: url(../images/previous-img.png);
+    -fx-background-size: 15px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.next-btn,
+.previous-btn {
+    -fx-background-color: transparent;
+    -fx-background-radius: 0;
+    -fx-padding: 3 10 3 10;
+}
+
+.next-btn:hover,
+.previous-btn:hover {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+}
+
+.next-btn:disabled:hover,
+.previous-btn:disabled:hover {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+}
+
+.main-btn-add {
+    -fx-background-image: url(../images/add-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-edit {
+    -fx-background-image: url(../images/edit-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-print {
+    -fx-background-image: url(../images/print-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-delete {
+    -fx-background-image: url(../images/delete-new.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-add:disabled {
+    -fx-background-image: url(../images/add-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-edit:disabled {
+    -fx-background-image: url(../images/edit-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-print:disabled {
+    -fx-background-image: url(../images/print-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-delete:disabled {
+    -fx-background-image: url(../images/delete-disabled.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.main-btn-export {
+    -fx-background-image: url(../images/exporter.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-add {
+    -fx-background-image: url(../images/add-subtype.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-delete {
+    -fx-background-image: url(../images/delete-subtype.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-update{
+    -fx-background-image: url(../images/update-subtype.png);
+    -fx-background-size: 13px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+}
+
+.subtype-btn-add,
+.subtype-btn-update,
+.subtype-btn-delete {
+    -fx-background-color: #FFFFFF;
+    -fx-background-radius: 0;
+  /*  -fx-padding: 3 15 1 15;*/
+    -fx-border-width: 1 1 1 1;
+    -fx-border-color:  #9B9798;
+}
+
+.main-btn-add,
+.main-btn-edit,
+.main-btn-print,
+.main-btn-delete,
+.main-btn {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+    -fx-padding: 3 15 3 15;
+    -fx-border-width: 0 1 0 0;
+    -fx-border-color:  #9B9798;
+}
+
+.main-btn-add:hover,
+.main-btn-edit:hover,
+.main-btn-print:hover,
+.main-btn-delete:hover,
+.main-btn:hover {
+    -fx-background-color: #fff;
+    -fx-background-radius: 0;
+    -fx-padding: 3 15 3 15;
+    -fx-border-width: 0 1 0 0;
+    -fx-border-color:  #9B9798;
+}
+
+.main-btn-add:disabled:hover,
+.main-btn-edit:disabled:hover,
+.main-btn-print:disabled:hover,
+.main-btn-delete:disabled:hover,
+.main-btn:disabled:hover {
+    -fx-background-color: #E7E7E7;
+    -fx-background-radius: 0;
+    -fx-padding: 3 15 3 15;
+    -fx-border-width: 0 1 0 0;
+    -fx-border-color:  #9B9798;
+}
+
+.banner {
+    /*-fx-background-image: url(../images/logo-ip.png);
+    -fx-background-position: center left;
+    -fx-background-repeat: stretch;*/
+    -fx-background-color:  transparent;
+}
+
+.mainFxmlClass {
+    -fx-background-color: rgb(246, 247, 249);
+}
+
+.table-view {
+    -fx-background-color: transparent;
+    -fx-border-color: rgb(209, 211, 212);
+    -fx-padding: 0;
+}
+
+.table-view .column-header,
+.table-view .column-header-background .filler {
+    -fx-background-color: rgba(115, 135, 132, 1); 
+}
+
+.column-header {
+
+}
+
+.table-view .column-header-background{
+    -fx-padding: 0;
+}
+
+.table-view .column-header {
+    -fx-border-color: rgb(209, 211, 212);
+}
+
+.table-view .column-header .label{
+    -fx-text-fill: white;
+    -fx-font-weight: bold; 
+    -fx-alignment: CENTER;
+    -fx-padding: 5;
+    -fx-font-size: 14px;
+    -fx-text-fill: white;
+    -fx-font-weight: bold;
+}
+
+.table-cell {
+    -fx-border-width: 0 1 0 1;
+    -fx-border-color: rgb(230, 231, 232);
+    -fx-padding: 2;
+    -fx-alignment: CENTER;
+}
+
+.table-row-cell{
+    -fx-background-color: rgb(255, 255, 255);
+}
+
+.table-row-cell .text {
+    -fx-fill: rgb(56, 56, 56);
+    -fx-font-size: 12px;
+}
+
+.table-row-cell:odd {
+    -fx-background-color: rgb(223, 223, 223);
+}
+
+.table-row-cell:selected {
+    -fx-background-color: rgba(214, 236, 219, 1);
+    -fx-background-insets: 0;
+    -fx-background-radius: 0;
+}
+
+.table-row-cell:selected .text {
+    -fx-fill: rgb(56, 56, 56);
+    -fx-font-weight: bold;
+}
+
+/*
+* Style for TextField
+*/
+.text-field {
+    -fx-background-color: #F6F7F9;
+    -fx-border-color: #30AFDC;
+    -fx-border-radius: 3px;
+    -fx-background-radius: 3px;
+}
+
+/*
+Tab Pane style
+*/
+
+.tab-pane > .tab-header-area > .headers-region > .tab:top {
+    -fx-border-color: #a3a7a8;
+    -fx-border-radius: 5 5 0 0;
+    -fx-background-color: white;
+    -fx-pref-height: 40px;  
+    -fx-background-insets: 0;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected:top {
+    -fx-border-color: #a3a7a8 #a3a7a8 #a3a7a8 #a3a7a8;
+    -fx-border-width: 1 1 1 1;   
+    -fx-border-radius: 5 5 0 0;
+    -fx-background-color: white;
+    -fx-pref-height: 40px;  
+    -fx-background-insets: 0;
+    -fx-border-insets: 0; 
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab:selected > .tab-container > .tab-label {
+    -fx-alignment: CENTER;
+    -fx-text-fill: #323232;
+    -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-label {
+    -fx-alignment: CENTER;
+    -fx-text-fill: #323232;
+    -fx-font-weight: bold;
+}
+
+.tab-pane > .tab-header-area > .tab-header-background {
+    -fx-background-color: white;
+    -fx-border-color: #a3a7a8;
+    -fx-border-width: 0 0 1 0;
+    -fx-background-insets: 0;
+    -fx-pref-height: 45px;  
+}
+
+/*
+* Title pane style
+*/
+.titled-pane {
+    -fx-border-color: rgba(203, 203, 203, 1);
+    -fx-text-fill: rgba(255, 255, 255, 1);
+    -fx-border-width: 0.5;
+}
+
+.titled-pane > .title {
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-background-color: rgba(115, 135, 132, 1);
+}
+
+.titled-pane > .title .text {
+
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-background-color: rgba(114, 114, 116, 1);
+    -fx-font-size: 14px;
+    -fx-text-fill: white;
+    -fx-font-weight: bold;
+}
+
+/*
+* Search buttons
+*/
+
+.search {   
+    -fx-background-image: url(../images/Recherche.png);
+    -fx-background-size: 12px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-padding: 2 10 2 10;
+    -fx-background-color: rgba(220, 221, 223, 1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+}
+
+.search:hover {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-color: rgba(220, 221, 223, 1);
+    -fx-border-width: 1px;
+    -fx-padding: 1 9 1 9;
+}
+
+.reset {   
+    -fx-background-image: url(../images/Reset.png);
+    -fx-background-size: 12px;
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-padding: 2 10 2 10;
+    -fx-background-color: rgba(220, 221, 223, 1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+}
+
+.reset:hover {
+    -fx-background-color: rgba(255, 255, 255, 1);
+    -fx-border-color: rgba(220, 221, 223, 1);
+    -fx-border-width: 1px;
+    -fx-padding: 1 9 1 9;
+}
+
+/* CHECKBOX */
+.check-box {
+    /* default properties */
+    selected-box-color: rgba(255, 255, 255, 1);
+    box-color: rgba(255, 255, 255, 1);
+    mark-color: white;
+}
+
+.check-box .box {
+    /* background color for selected checkbox */
+    -fx-border-width: 1px;
+    -fx-border-color: rgb(208, 208, 208);
+}
+
+.check-box:selected > .box {
+    /* background color for selected checkbox */
+    -fx-background-color: selected-box-color;
+}
+
+.check-box > .box {
+    /* background color of unselected checkbox */
+    -fx-background-color: box-color;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+}
+
+/*
+* SCROLLBAR
+*/
+* {
+    /*-fx-background-color: black;*/
+    -fx-focus-color: transparent;
+    -fx-faint-focus-color: transparent;
+}
+
+.scroll-bar:horizontal, .scroll-bar:vertical{
+    -fx-background-color:transparent;
+}
+
+.increment-button, .decrement-button {
+    -fx-background-color: transparent;
+    -fx-border-color: transparent;
+}
+
+.scroll-bar:horizontal .track,
+.scroll-bar:vertical .track{
+    -fx-background-color: transparent;
+    -fx-border-color: transparent;
+    -fx-background-radius: 0em;
+}
+
+.scroll-bar:horizontal .thumb,
+.scroll-bar:vertical .thumb {
+    -fx-background-color: white;
+    -fx-background-radius: 5em;
+}
\ No newline at end of file
diff --git a/fdx_convert/target/classes/styles/custom-title-bar.css b/fdx_convert/target/classes/styles/custom-title-bar.css
new file mode 100644
index 0000000..65e13b8
--- /dev/null
+++ b/fdx_convert/target/classes/styles/custom-title-bar.css
@@ -0,0 +1,47 @@
+/*
+To change this license header, choose License Headers in Project Properties.
+To change this template file, choose Tools | Templates
+and open the template in the editor.
+*/
+/* 
+    Created on : 3 mars 2022, 14:50:08
+    Author     : MGT_DEV3
+*/
+
+.title-bar {
+    -fx-background-image: url(../images/motif-title-bar.jpg);
+    -fx-background-position: center center;
+    -fx-background-repeat: no-repeat;
+    -fx-background-size: stretch;
+}
+
+.title-bar-button {
+    -fx-background-color: transparent;
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
+.title-bar-button:hover {
+    -fx-cursor: hand;
+    -fx-background-color: rgba(0, 0, 0, 0.1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
+.title-bar-button-close {
+    -fx-cursor: hand;
+    -fx-background-color: transparent;
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
+.title-bar-button-close:hover {
+    -fx-background-color: rgba(0, 0, 0, 0.1);
+    -fx-background-radius: 0;
+    -fx-border-radius: 0;
+    -fx-border-width: 0;
+}
+
diff --git a/fdx_convert/target/classes/styles/main_screen.css b/fdx_convert/target/classes/styles/main_screen.css
new file mode 100644
index 0000000..7cf285c
--- /dev/null
+++ b/fdx_convert/target/classes/styles/main_screen.css
@@ -0,0 +1,246 @@
+/*
+ * Empty Stylesheet file.
+ */
+
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Medium.ttf');
+}
+
+* {
+    -fx-font-family: 'Roboto';
+}
+
+.main_screen {
+    -fx-background-image: url('../images/Accuueil_agent.jpg');
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-background-size: stretch;
+    -fx-border-color: #C5CFCE;
+}
+
+.dashboard {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Tableau_de_bord_1.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.dashboard:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Barre_outils_hover-03.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.receive {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/export.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.receive:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Barre_outils_hover-02.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.update {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Modif-01-01x.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.update:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Modif-01-01.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.generate {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/fichiers_generesx.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.generate:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/Barre_outils_hover-01.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.treatment {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/tache.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+    
+}
+
+.treatment:hover {
+    -fx-pref-width: 20px;
+    -fx-pref-height: 20px;
+    -fx-background-color: transparent;
+    -fx-background-image: url('../images/tache_hover.png');
+    -fx-background-size: 20px;
+    -fx-background-position: 0, 0, 0, 0;
+    -fx-background-repeat: stretch;
+}
+
+/*
+* Title pane style
+*/
+.titled-pane > .title {
+    -fx-background-color: #C5D6E0;
+    -fx-border-color: #C5D6E0;
+}
+
+.titled-pane > .title .text {
+    
+}
+
+/* #2 */
+.titled-pane > .title > .text {
+    -fx-font-size: 14px;
+}
+
+/*
+* Menu-bar style
+*/
+/*
+.menu-item {
+    -fx-border-color: #fff;
+    -fx-margin: 0;
+} 
+
+.menu .text,
+.menu-item .text {
+    -fx-fill: #000;
+    -fx-fill: #000;
+}
+
+.menu:hover .text, 
+.menu:showing .text,
+.menu:focused .text,
+.menu-item:hover .text,
+.menu-item:showing .text,
+.menu-item:focused .text {
+    -fx-fill: #fff;
+    -fx-fill: #fff;
+    -fx-font-weight: bold;
+}
+
+
+.menu:hover, 
+.menu:showing,
+.menu:focused,
+.menu-item:hover,
+.menu-item:showing,
+.menu-item:focused {
+    -fx-background-color: #BCD18A;
+}
+
+.menu:clicked {
+    -fx-background-color: #BCD18A;
+}
+*/
+/*
+* MENU BUTTON
+*/
+
+.menu-button > .arrow-button {
+    -fx-padding: 0;
+}
+
+.menu-button > .arrow-button > .arrow {
+    -fx-padding: 0;
+}
+
+.menu-button {
+    -fx-background-color: transparent;
+    -fx-background-radius: 7;
+    -fx-border-radius: 7;
+    -fx-border-width: 1;
+    -fx-border-color: transparent;
+    -fx-text-fill: white;
+    -fx-font-size: 11px;
+    -fx-padding: 0;
+}
+
+.menu-button:hover {
+    -fx-background-color: #ededee;
+    -fx-background-radius: 7;
+    -fx-border-radius: 7;
+    -fx-border-width: 1;
+    -fx-border-color: #F2F2F2;
+    -fx-text-fill: white;
+    -fx-font-weight: normal;
+}
+
+/* LABEL */
+
+.bottom-label {
+    -fx-text-fill: rgba(90, 90, 90, 1);
+    -fx-font-weight: bold; 
+    -fx-font-size: 11px;
+}
+
+/* TEXTFIELD */
+
+.bottom-text-field {
+    -fx-background-color: #e0e4e3;
+    -fx-border-radius: 0px;
+    -fx-background-radius: 0px;
+    -fx-text-fill: rgba(0, 0, 0, 1);
+    -fx-border-color: #C5CFCE;
+    -fx-border-width: 1;
+    -fx-padding: 3;
+    -fx-font-size: 11px;
+    -fx-background-radius: 2;
+    -fx-border-radius: 2;
+}
+
+.bottom-text-field:disabled {
+    -fx-opacity: 0.8;
+}
\ No newline at end of file
diff --git a/fdx_convert/target/classes/styles/style.css b/fdx_convert/target/classes/styles/style.css
new file mode 100644
index 0000000..af672d4
--- /dev/null
+++ b/fdx_convert/target/classes/styles/style.css
@@ -0,0 +1,15 @@
+/*
+Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+Click nbfs://nbhost/SystemFileSystem/Templates/Other/CascadeStyleSheet.css to edit this template
+*/
+/* 
+    Created on : 15 nov. 2022, 11:59:29
+    Author     : STEPHANIE
+*/
+
+.cover{
+    -fx-background-image: url(../images/Accuueil_convert.jpg);
+    -fx-background-position: center center;
+    -fx-background-repeat: stretch;
+    -fx-background-size: cover;
+}
diff --git a/fdx_convert/target/maven-archiver/pom.properties b/fdx_convert/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..c8b9f0e
--- /dev/null
+++ b/fdx_convert/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Thu Jun 18 16:58:31 WAT 2026
+version=1.0
+groupId=com.megatim.importation.validation.data.client
+artifactId=fdx-convert-client
diff --git a/fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..8b2a841
--- /dev/null
+++ b/fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,209 @@
+com\megatim\fdxconvert\dao\AbstractDAO$1.class
+com\megatim\fdxconvert\dao\TypeFichierDAO.class
+com\megatim\fdxconvert\service\DecryptageAESService.class
+com\megatim\fdxconvert\controller\ConversionModelEditDialogController$1.class
+com\megatim\fdxconvert\pojo\TxtFileToValidate.class
+com\megatim\fdxconvert\util\Utilities.class
+com\megatim\fdxconvert\pojo\ResultFileParsing.class
+com\megatim\fdxconvert\util\ExportToJson.class
+com\megatim\fdxconvert\views\jsonstructure\NestedJsonStructure.class
+com\megatim\fdxconvert\controller\ConversionModelEditDialogController.class
+com\megatim\fdxconvert\model\jaxb\ParamValue.class
+com\megatim\fdxconvert\forms\TacheEditFormController.class
+com\megatim\fdxconvert\util\ImportData.class
+com\megatim\fdxconvert\controller\StructureChampJsonEditDialogController.class
+com\megatim\fdxconvert\service\TypeFichierService.class
+com\megatim\fdxconvert\util\ParserUtils.class
+com\megatim\fdxconvert\service\ConversionModelService.class
+com\megatim\fdxconvert\model\constraint\FileToValidateDelimiterConstraint.class
+com\megatim\fdxconvert\controller\search\TypeFichierAdvancedSearchFormController.class
+com\megatim\fdxconvert\util\TypeFichierJsonMarshaller.class
+com\megatim\fdxconvert\model\constraint\DataTypeConstraint.class
+com\megatim\fdxconvert\service\ModeleJsonService.class
+com\megatim\fdxconvert\forms\SubObjectEditFormController.class
+com\megatim\fdxconvert\model\constraint\DecryptageAESValidator.class
+com\megatim\fdxconvert\service\SubObjectService.class
+com\megatim\fdxconvert\forms\TypeFichierEditFormController.class
+com\megatim\fdxconvert\dao\ConversionModelDAO.class
+com\megatim\fdxconvert\controller\search\JournalSearchFormController$1.class
+com\megatim\fdxconvert\model\SubObject.class
+com\megatim\fdxconvert\controller\ModeleJsonEditDialogController$1.class
+com\megatim\fdxconvert\dao\AlphaNumeriqueFieldDAO.class
+com\megatim\fdxconvert\model\constraint\ConfigurationConversionDelimiterConstraint.class
+com\megatim\fdxconvert\controller\DataFileToJsonEditDialogController.class
+com\megatim\fdxconvert\controller\search\TruncatedElementSearchFormController$1.class
+com\megatim\fdxconvert\model\TruncatedElement.class
+com\megatim\fdxconvert\controller\FileToValidateEditDialogController$3.class
+com\megatim\fdxconvert\dao\HibernateUtil.class
+com\megatim\fdxconvert\dao\JsonStructureDAO.class
+com\megatim\fdxconvert\model\jaxb\PredicateConfig.class
+com\megatim\fdxconvert\service\TacheJob$1.class
+com\megatim\fdxconvert\model\jaxb\Assertion.class
+com\megatim\fdxconvert\controller\table\MetaAlphaNumeriqueTable.class
+com\megatim\fdxconvert\forms\FileToValidateEditFormController.class
+com\megatim\fdxconvert\enums\JournalStatut.class
+com\megatim\fdxconvert\controller\table\TypeFichierTable.class
+com\megatim\fdxconvert\controller\FileToValidateEditDialogController$2.class
+com\megatim\fdxconvert\controller\search\TruncatedElementAdvancedSearchFormController.class
+com\megatim\fdxconvert\model\constraint\KeyToDecryptConstraint.class
+com\megatim\fdxconvert\service\AlphaNumeriqueFieldService.class
+com\megatim\fdxconvert\model\MetaAlphaNumeriqueField.class
+com\megatim\fdxconvert\viewmodel\JsonStructureTableViewModel$3.class
+com\megatim\fdxconvert\controller\search\ConversionModelSearchController$1.class
+com\megatim\fdxconvert\controller\search\JournalSearchFormController.class
+com\megatim\fdxconvert\dao\ValidateurDAO.class
+com\megatim\fdxconvert\pojo\Delimiteur.class
+com\megatim\fdxconvert\dao\AbstractDAO.class
+com\megatim\fdxconvert\controller\table\MetaAlphaNumeriqueFieldTable.class
+com\megatim\fdxconvert\dao\MetaAlphaNumeriqueFieldDAO.class
+com\megatim\fdxconvert\pojo\ImportFile.class
+com\megatim\fdxconvert\forms\ValidateurListFormController$1.class
+com\megatim\fdxconvert\controller\search\ValidateurSearchFormController$1.class
+com\megatim\fdxconvert\model\constraint\ErrorDirConstraint.class
+com\megatim\fdxconvert\service\MetaAlphaNumeriqueFieldService.class
+com\megatim\fdxconvert\controller\table\TruncatedElementTable.class
+com\megatim\fdxconvert\dao\ModeleJsonDAO.class
+com\megatim\fdxconvert\model\constraint\ConfigValidator.class
+com\megatim\fdxconvert\pojo\DecryptageAES.class
+com\megatim\fdxconvert\controller\search\JournalAdvancedSearchFormController.class
+com\megatim\fdxconvert\forms\TruncatedElementEditFormController.class
+com\megatim\fdxconvert\model\jaxb\Entity.class
+com\megatim\fdxconvert\model\constraint\KeyToDecryptValidator.class
+com\megatim\fdxconvert\viewmodel\JsonStructureViewModel.class
+com\megatim\fdxconvert\controller\TypeFichierListDialogController.class
+com\megatim\fdxconvert\pojo\FileToValidateDescription.class
+com\megatim\fdxconvert\controller\ValidateurEditDialogController.class
+com\megatim\fdxconvert\controller\TypeFichierEditDialogController.class
+com\megatim\fdxconvert\controller\ImportTypeFichierEditDialogController.class
+com\megatim\fdxconvert\forms\ConversionModelEditFormController$1.class
+com\megatim\fdxconvert\util\TypeFichierJsonConverter$1.class
+com\megatim\fdxconvert\forms\ModeleJsonEditFormController$1.class
+com\megatim\fdxconvert\controller\FileToValidateEditDialogController$4.class
+com\megatim\fdxconvert\forms\ConfigEditFormController.class
+com\megatim\fdxconvert\model\jaxb\TypeFichierJsonsList.class
+com\megatim\fdxconvert\exceptions\ConfigException.class
+com\megatim\fdxconvert\controller\SubObjectEditDialogController.class
+com\megatim\fdxconvert\forms\TxtFileToValidateEditFormController$1.class
+com\megatim\fdxconvert\views\jsonstructure\NestedJsonStructureFromJsonStructure.class
+com\megatim\fdxconvert\controller\search\TacheSearchFormController.class
+com\megatim\fdxconvert\controller\search\TypeFichierSearchFormController.class
+com\megatim\fdxconvert\controller\search\TacheSearchFormController$1.class
+com\megatim\fdxconvert\model\jaxb\EntityList.class
+com\megatim\fdxconvert\controller\DecryptageAESEditDialogController$1.class
+com\megatim\fdxconvert\model\constraint\FileToValidateDelimiterValidator.class
+com\megatim\fdxconvert\viewmodel\JsonStructureTableViewModel.class
+com\megatim\fdxconvert\controller\search\ConversionModelAdvancedSearchController.class
+com\megatim\fdxconvert\forms\DataFileToJsonFormController$1.class
+com\megatim\fdxconvert\model\constraint\ConfigConstraint.class
+com\megatim\fdxconvert\controller\TxtFileToValidateEditDialogController.class
+com\megatim\fdxconvert\forms\ValidateurEditFormController$1.class
+com\megatim\fdxconvert\model\constraint\ConfigurationConversionDelimiterValidator.class
+com\megatim\fdxconvert\forms\ValidateurListFormController.class
+com\megatim\fdxconvert\views\jsonstructure\JsonStructureController.class
+com\megatim\fdxconvert\controller\search\ValidateurSearchFormController.class
+com\megatim\fdxconvert\dao\TacheDAO.class
+com\megatim\fdxconvert\service\TacheJobService.class
+com\megatim\fdxconvert\service\ImportFileService.class
+com\megatim\fdxconvert\service\TruncatedElementService.class
+com\megatim\fdxconvert\controller\ModeleJsonEditDialogController.class
+com\megatim\fdxconvert\model\Tache.class
+com\megatim\fdxconvert\controller\table\TacheTable.class
+com\megatim\fdxconvert\controller\ModeleJsonListeDialogController.class
+com\megatim\fdxconvert\model\ModeleJson.class
+com\megatim\fdxconvert\viewmodel\JsonStructureFormViewModel$1.class
+com\megatim\fdxconvert\views\JsonStructureFormController.class
+com\megatim\fdxconvert\views\jsonstructure\DefaultNestedJsonStructure.class
+com\megatim\fdxconvert\controller\search\TruncatedElementSearchFormController.class
+com\megatim\fdxconvert\forms\ValidateurEditFormController.class
+com\megatim\fdxconvert\controller\table\StructureChampJsonTable.class
+com\megatim\fdxconvert\model\constraint\SchedulerConstraint.class
+com\megatim\fdxconvert\model\Journal.class
+com\megatim\fdxconvert\controller\TacheEditDialogController.class
+com\megatim\fdxconvert\forms\TacheEditFormController$1.class
+com\megatim\fdxconvert\controller\JournalEditDialogController.class
+com\megatim\fdxconvert\forms\TxtFileToValidateEditFormController.class
+com\megatim\fdxconvert\model\constraint\DataTypeValidator.class
+com\megatim\fdxconvert\controller\table\ValidateurTable.class
+com\megatim\fdxconvert\model\TypeFichier.class
+com\megatim\fdxconvert\pojo\DataFileToJson.class
+com\megatim\fdxconvert\forms\DecryptageAESEditFormController.class
+com\megatim\fdxconvert\App.class
+com\megatim\fdxconvert\controller\table\SubObjectTable.class
+com\megatim\fdxconvert\controller\TacheListeDialogController.class
+com\megatim\fdxconvert\controller\MetaAlphaNumeriqueFieldEditDialogController.class
+com\megatim\fdxconvert\model\constraint\DelimiterConstraint.class
+com\megatim\fdxconvert\forms\ImportTypeFichierEditFormController.class
+com\megatim\fdxconvert\dao\TypeFichierJsonDAO.class
+com\megatim\fdxconvert\util\Count.class
+com\megatim\fdxconvert\controller\table\AlphaNumeriqueFieldTable.class
+com\megatim\fdxconvert\enums\StatutConverter.class
+com\megatim\fdxconvert\model\constraint\ErrorDirValidator.class
+com\megatim\fdxconvert\forms\ConversionModelEditFormController.class
+com\megatim\fdxconvert\model\JsonStructure.class
+com\megatim\fdxconvert\model\constraint\DelimiterValidator.class
+com\megatim\fdxconvert\model\StructureChampJson.class
+com\megatim\fdxconvert\forms\TacheEditFormController$2.class
+com\megatim\fdxconvert\service\TacheService.class
+com\megatim\fdxconvert\controller\DataFileToJsonEditDialogController$2.class
+com\megatim\fdxconvert\controller\ConfigEditDialogController.class
+com\megatim\fdxconvert\controller\table\JournalTable.class
+com\megatim\fdxconvert\pojo\ColumnDefinition.class
+com\megatim\fdxconvert\controller\AproposEditDialogController.class
+com\megatim\fdxconvert\controller\FileToValidateEditDialogController$1.class
+com\megatim\fdxconvert\viewmodel\JsonStructureTableViewModel$2.class
+com\megatim\fdxconvert\controller\table\ModeleJsonTable.class
+com\megatim\fdxconvert\model\constraint\DecryptageAESConstraint.class
+com\megatim\fdxconvert\controller\DataFileToJsonEditDialogController$1.class
+com\megatim\fdxconvert\model\Validateur.class
+com\megatim\fdxconvert\controller\search\ParametreAutoAdvancedSearchFormController.class
+com\megatim\fdxconvert\pojo\FileToValidate.class
+com\megatim\fdxconvert\controller\JournalListDialogController.class
+com\megatim\fdxconvert\controller\search\ConversionModelSearchController.class
+com\megatim\fdxconvert\util\XmlUtils.class
+com\megatim\fdxconvert\views\JsonStructureTableViewController.class
+com\megatim\fdxconvert\util\JsonDataTypeUtil.class
+com\megatim\fdxconvert\util\TypeFichierJsonConverter.class
+com\megatim\fdxconvert\controller\MainController$1.class
+com\megatim\fdxconvert\exceptions\AttributeFormatException.class
+com\megatim\fdxconvert\converter\DataTypeConverter.class
+com\megatim\fdxconvert\service\JournalService.class
+com\megatim\fdxconvert\service\pojo\PaginationElts.class
+com\megatim\fdxconvert\forms\FileToValidateEditFormController$1.class
+com\megatim\fdxconvert\model\jaxb\Validation.class
+com\megatim\fdxconvert\service\util\SchedulerUtil.class
+com\megatim\fdxconvert\controller\search\ParametreAutoSearchFormController.class
+com\megatim\fdxconvert\viewmodel\JsonStructureFormViewModel$2.class
+com\megatim\fdxconvert\forms\MetaAlphaNumeriqueFieldEditFormController$1.class
+com\megatim\fdxconvert\service\TacheJob.class
+com\megatim\fdxconvert\forms\JournalEditFormController.class
+com\megatim\fdxconvert\controller\ConversionModelListDialogController.class
+com\megatim\fdxconvert\Test.class
+com\megatim\fdxconvert\util\ValidateurParser.class
+com\megatim\fdxconvert\forms\FileToValidateEditFormController$2.class
+com\megatim\fdxconvert\viewmodel\JsonStructureFormViewModel.class
+com\megatim\fdxconvert\controller\table\ConversionModelTable.class
+com\megatim\fdxconvert\service\ValidateurService.class
+com\megatim\fdxconvert\forms\AproposEditFormController.class
+com\megatim\fdxconvert\forms\ModeleJsonEditFormController.class
+com\megatim\fdxconvert\controller\DecryptageAESEditDialogController.class
+com\megatim\fdxconvert\model\constraint\SChedulerValidator.class
+com\megatim\fdxconvert\controller\TxtFileToValidateEditDialogController$1.class
+com\megatim\fdxconvert\forms\StructureChampJsonEditFormController.class
+com\megatim\fdxconvert\model\Configuration.class
+com\megatim\fdxconvert\viewmodel\JsonStructureTableViewModel$1.class
+com\megatim\fdxconvert\model\AlphaNumeriqueField.class
+com\megatim\fdxconvert\enums\DataType.class
+com\megatim\fdxconvert\service\TypeFichierJsonService.class
+com\megatim\fdxconvert\forms\MetaAlphaNumeriqueFieldEditFormController.class
+com\megatim\fdxconvert\controller\TacheEditDialogController$1.class
+com\megatim\fdxconvert\service\JsonStructureService.class
+com\megatim\fdxconvert\controller\FileToValidateEditDialogController.class
+com\megatim\fdxconvert\service\ConfigurationService.class
+com\megatim\fdxconvert\service\StructureChampJsonService.class
+com\megatim\fdxconvert\exceptions\ValidatorException.class
+com\megatim\fdxconvert\controller\MainController.class
+com\megatim\fdxconvert\forms\DataFileToJsonFormController.class
+com\megatim\fdxconvert\model\TypeFichierJson.class
+com\megatim\fdxconvert\pojo\DataToImport.class
+com\megatim\fdxconvert\pojo\Decryptage.class
+com\megatim\fdxconvert\model\ConversionModel.class
diff --git a/fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..77aaa55
--- /dev/null
+++ b/fdx_convert/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,173 @@
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\FileToValidateDelimiterConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\AbstractDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\Validateur.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\ParserUtils.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\viewmodel\JsonStructureViewModel.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\DecryptageAESEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\DataFileToJsonFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\AlphaNumeriqueFieldService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\ParamValue.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\ConversionModelEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\JournalAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\DecryptageAESValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\TypeFichierAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\ValidateurListFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\ModeleJsonDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\ConfigConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\TypeFichierDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\ParametreAutoAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\JsonStructure.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\MetaAlphaNumeriqueTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\KeyToDecryptConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\ImportData.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\StructureChampJsonEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\TacheEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ValidateurEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\SubObject.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\JournalTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\FileToValidateEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\ResultFileParsing.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\ModeleJsonTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\FileToValidateDescription.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\ModeleJsonService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\ConversionModelAdvancedSearchController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\SubObjectEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\ValidateurEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\ParametreAutoSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\ConversionModelDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\FileToValidateDelimiterValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\TypeFichierSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\TruncatedElementEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\DecryptageAES.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\ConfigValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\ImportFile.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\TacheSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\XmlUtils.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\Utilities.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\MetaAlphaNumeriqueField.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\JournalEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\JournalListDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\TacheTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\SubObjectService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\DataFileToJson.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\exceptions\AttributeFormatException.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ConversionModelListDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\ConfigurationService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\views\jsonstructure\NestedJsonStructure.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\converter\DataTypeConverter.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\ValidateurDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\App.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\TruncatedElementAdvancedSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\TypeFichierListDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\exceptions\ValidatorException.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\PredicateConfig.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\TacheJob.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\views\JsonStructureFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\views\JsonStructureTableViewController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\TypeFichierService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\TypeFichierJsonDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\Test.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\ConversionModelService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\pojo\PaginationElts.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\StructureChampJsonEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\views\jsonstructure\DefaultNestedJsonStructure.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\MainController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\ConfigEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\MetaAlphaNumeriqueFieldEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\DataTypeValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\TacheListeDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\KeyToDecryptValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\ImportTypeFichierEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\TxtFileToValidateEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\TypeFichierJson.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\MetaAlphaNumeriqueFieldDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\StructureChampJsonService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\enums\DataType.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\SChedulerValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\TacheDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\JournalService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\views\jsonstructure\JsonStructureController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\ConfigurationConversionDelimiterValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\EntityList.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\ModeleJsonEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\ErrorDirConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\viewmodel\JsonStructureFormViewModel.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\DataToImport.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\AlphaNumeriqueField.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\FileToValidate.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\DataTypeConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\Entity.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\AproposEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\TacheService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\JournalSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ModeleJsonEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\TypeFichierJsonConverter.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\ConversionModelTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\MetaAlphaNumeriqueFieldTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\Delimiteur.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\ColumnDefinition.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\TypeFichierJsonService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\ConversionModel.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\Validation.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\DelimiterConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\AproposEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\ConfigurationConversionDelimiterConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\TypeFichierTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\HibernateUtil.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\DataFileToJsonEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\TacheEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\enums\StatutConverter.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ModeleJsonListeDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\TacheJobService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\Count.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\TypeFichier.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\ValidateurTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\JsonStructureService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\ErrorDirValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\TypeFichierEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\DecryptageAESConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\SubObjectTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\FileToValidateEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\SubObjectEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\SchedulerConstraint.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ImportTypeFichierEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\util\SchedulerUtil.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\ValidateurService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\constraint\DelimiterValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\viewmodel\JsonStructureTableViewModel.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ConversionModelEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\ConfigEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\TruncatedElement.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\Configuration.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\DecryptageAESService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\TruncatedElementSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\TypeFichierEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\ConversionModelSearchController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\ModeleJson.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\MetaAlphaNumeriqueFieldEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\TypeFichierJsonsList.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\JsonDataTypeUtil.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\exceptions\ConfigException.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\ImportFileService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\Decryptage.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\TruncatedElementService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\AlphaNumeriqueFieldTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\JsonStructureDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\TypeFichierJsonMarshaller.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\forms\JournalEditFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\dao\AlphaNumeriqueFieldDAO.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\Journal.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\search\ValidateurSearchFormController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\TruncatedElementTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\TxtFileToValidateEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\table\StructureChampJsonTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\StructureChampJson.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\views\jsonstructure\NestedJsonStructureFromJsonStructure.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\controller\DecryptageAESEditDialogController.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\jaxb\Assertion.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\model\Tache.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\pojo\TxtFileToValidate.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\ExportToJson.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\util\ValidateurParser.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\service\MetaAlphaNumeriqueFieldService.java
+C:\Users\ASUS\Documents\NetBeansProjects\share_sources\importation-validation-data\src\main\java\com\megatim\fdxconvert\enums\JournalStatut.java
diff --git a/fdx_convert/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/fdx_convert/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_convert/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
diff --git a/fdx_convert/target/test-classes/.netbeans_automatic_build b/fdx_convert/target/test-classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fdx_convert/target/test-classes/.netbeans_automatic_build

--
Gitblit v1.10.0