From 0efd375f9bc63147e5cbad681a487e93a8918ec2 Mon Sep 17 00:00:00 2001
From: Anthony Borghi <anthony.borghi@veremes.com>
Date: Fri, 16 Nov 2018 15:00:06 +0100
Subject: [PATCH] Squashed 'src/module_vmap/' changes from ce9e639a..00ecdc5e
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

00ecdc5e Merge branch 'app_vmap' into 'master'
348d59b7 pull subtree
4a58651a Non affichage du mode configuration pour les utilisateurs vmap_admin
f081e696 Bug/1 cadastre recherche attributaire la selection reste en memoire quand on filtre la liste des parcelles
91d05d5a Replace bootstrapTable getAllSelections by getSelections
fb263937 Merge branch 'bug/1-probleme-d-affichage-getfeatureinfo-sur-mobile' into 'master'
fa4aeff7 Redefine css for mobile usage
151aa0d1 Merge branch 'hotfix/cache_liste_sous_objet_metier'
9e8f5beb Merge branch 'hotfix/wms_avec_mp'
a81125aa Merge branch 'feature/impressions_144dpi' into 'master'
a8af3474 Active the resolution parameter
6f2cd262 Merge branch 'next_version' into feature/impressions_144dpi
bec87f0c Merge branch 'master' into 'next_version'
c1211553 Merge branch 'cherry-pick-d395d1d4' into 'next_version'
f11099e6 Problème lors de l'enregistrement de services avec mots de passe
d395d1d4 Problème lors de l'enregistrement de services avec mots de passe
3e46450b pull subtree
47cd4913 Squashed 'src/module_vm4ms/' changes from 4d95a3d..af1a2e3
c0b73f09 Squashed 'src/module_vm4ms/' changes from 373ef426..4d95a3da
906a7169 Modify client symlinks
1dccb17e Modify vas symlinks
885c6310 Merge branch 'master' into next_version
98047575 Merge branch 'master' of gitlab.veremes.net:Development/vitis_apps/sources/module_vmap
945b7ea8 Add storage from SVN
07db5ec5 Update Readme
f982df21 add subtree
b7a4879f Squashed 'src/module_cadastre/' content from commit 0bb9b2fa9
52ebc135 add subtree
3f3d51c3 add subtree
41d5aec2 Squashed 'src/closure/' content from commit 622066db
91cd365c add subtree
7c3aef17 Squashed 'src/vitis/' content from commit 355b5f8b
e8597475 Reset sources
8fe041e4 Merge branch 'master' into next_version
0bb9b2fa pull subtree
14758714 Squashed 'src/module_cadastreV2/' changes from e678ee10..8158b9a2
a9b2699c pull subtree
c499cef3 Squashed 'src/module_anc/' changes from b55c5e85..4321adc4
d82d485e pull subtree
1ad8c842 Squashed 'src/module_vm4ms/' changes from 4f506db7..373ef426
6702c1fb pull subtree
94998ed6 Squashed 'src/module_vmap/' changes from cf75b106..e7dabee0
3a2b6fe9 pull subtree
97c993d5 Squashed 'src/vitis/' changes from 01d199ce..7a1818a4
213795da Resolve require problems
0c3ac326 Change dependency.xml
c23b6587 Rights on write folders
4ac589ad Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
bc0e0830 Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
b51e622f Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
3bd1ab17 Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
53d54531 Change __DIR__ by dirname($_SERVER['SCRIPT_FILENAME'])
2d9fd6a5 Get rights to vas/server
0602efdb Compilation grunt
75c89c8b Try on push subtrees
246ebd0f Add pull.sh
2e026c10 Add pull.sh
37d37d03 Add grunt to the install
5b9cffc3 Update readme
3f86c344 Ignore properties files
02a3be3e gitignore
578f9827 Ingore properties files
d1327b32 add subtree
59431f9c Squashed 'src/module_cadastre/' content from commit ee26cf16
950e5a10 Squashed 'src/module_cadastreV2/' content from commit e678ee10
c2e686cb add subtree
92d769cc Squashed 'src/module_anc/' content from commit b55c5e85
63a0562b add subtree
829e4cf3 Squashed 'src/module_vm4ms/' content from commit 4f506db7
3630a462 add subtree
8792eb7c Squashed 'src/module_vmap/' content from commit cf75b10
4fe41d6b add subtree
974b9dd8 add subtree
92032b6a Squashed 'src/closure/' content from commit 622066d
646709a4 Squashed 'src/vitis/' content from commit 01d199c
416c2c24 add subtree
06cc1a2d ignore properties files
192389a6 Get files from SVN
86c2affb Initial commit

git-subtree-dir: src/module_vmap
git-subtree-split: 00ecdc5eee2725c0b6c0f5b4c7856a7ef0042fc6
---
 module/css/mobile.less                        |  11 +
 .../app/modules/Cadastre/cadastre.js          |  64 +-
 module/javascript/app/vmap/tools/print.js     | 190 +++---
 module/javascript/vitis/script_module.js      |  27 +-
 module/template/tools/print.html              |   4 +-
 storage/veremes_demo_dessin/forms/custom.json | 629 ++++++++++++++++++
 .../veremes_demo_dessin/forms/default.json    | 629 ++++++++++++++++++
 .../veremes_demo_dessin/forms/published.json  | 629 ++++++++++++++++++
 .../forms/ressources/custom.js                | 109 +++
 .../forms/ressources/default.js               | 109 +++
 .../forms/ressources/published.js             | 109 +++
 .../json/business_object.json                 |  20 +
 storage/veremes_demo_dessin/json/event.json   |   4 +
 .../json/mapserver_layers.json                |  65 ++
 storage/veremes_demo_dessin/package.json      |   5 +
 .../veremes_demo_dessin/sql/structure.json    |   6 +
 storage/veremes_demo_dessin/sql/table.sql     | 282 ++++++++
 .../veremes_oads_dossier/forms/custom.json    | 175 +++++
 .../veremes_oads_dossier/forms/default.json   | 259 ++++++++
 .../veremes_oads_dossier/forms/published.json | 175 +++++
 .../json/business_object.json                 |  20 +
 storage/veremes_oads_dossier/json/event.json  |   1 +
 .../json/mapserver_layers.json                |  45 ++
 storage/veremes_oads_dossier/package.json     |   5 +
 .../veremes_oads_dossier/sql/structure.json   |   6 +
 storage/veremes_oads_dossier/sql/table.sql    | 194 ++++++
 .../json/business_object.json                 |  20 +
 storage/veremes_oads_parcelle/json/event.json |   1 +
 .../json/mapserver_layers.json                |  23 +
 storage/veremes_oads_parcelle/package.json    |   5 +
 .../veremes_oads_parcelle/sql/structure.json  |   6 +
 storage/veremes_oads_parcelle/sql/table.sql   |   0
 web_service/sql/sqlQueries.xml                |   2 +
 web_service/ws/PrintMapServices.class.inc     |  12 +-
 34 files changed, 3709 insertions(+), 132 deletions(-)
 create mode 100755 storage/veremes_demo_dessin/forms/custom.json
 create mode 100755 storage/veremes_demo_dessin/forms/default.json
 create mode 100755 storage/veremes_demo_dessin/forms/published.json
 create mode 100755 storage/veremes_demo_dessin/forms/ressources/custom.js
 create mode 100755 storage/veremes_demo_dessin/forms/ressources/default.js
 create mode 100755 storage/veremes_demo_dessin/forms/ressources/published.js
 create mode 100755 storage/veremes_demo_dessin/json/business_object.json
 create mode 100755 storage/veremes_demo_dessin/json/event.json
 create mode 100755 storage/veremes_demo_dessin/json/mapserver_layers.json
 create mode 100755 storage/veremes_demo_dessin/package.json
 create mode 100755 storage/veremes_demo_dessin/sql/structure.json
 create mode 100755 storage/veremes_demo_dessin/sql/table.sql
 create mode 100755 storage/veremes_oads_dossier/forms/custom.json
 create mode 100755 storage/veremes_oads_dossier/forms/default.json
 create mode 100755 storage/veremes_oads_dossier/forms/published.json
 create mode 100755 storage/veremes_oads_dossier/json/business_object.json
 create mode 100755 storage/veremes_oads_dossier/json/event.json
 create mode 100755 storage/veremes_oads_dossier/json/mapserver_layers.json
 create mode 100755 storage/veremes_oads_dossier/package.json
 create mode 100755 storage/veremes_oads_dossier/sql/structure.json
 create mode 100755 storage/veremes_oads_dossier/sql/table.sql
 create mode 100755 storage/veremes_oads_parcelle/json/business_object.json
 create mode 100755 storage/veremes_oads_parcelle/json/event.json
 create mode 100755 storage/veremes_oads_parcelle/json/mapserver_layers.json
 create mode 100755 storage/veremes_oads_parcelle/package.json
 create mode 100755 storage/veremes_oads_parcelle/sql/structure.json
 create mode 100755 storage/veremes_oads_parcelle/sql/table.sql

diff --git a/module/css/mobile.less b/module/css/mobile.less
index a281bf06..fd900b75 100755
--- a/module/css/mobile.less
+++ b/module/css/mobile.less
@@ -276,3 +276,14 @@ app-map > div {
 #select-bo-select{
     max-width: 23vw;
 }
+
+.basic-tools-dropdown-select-getFeatureInfo-content{
+    display: block;
+    top: 0px !important;
+    height: 100%;
+    padding: 0px !important;
+    margin: 0px !important;
+    right: 0px !important;
+    width: 100% !important;
+    min-width: auto;
+}
diff --git a/module/javascript/app/modules/Cadastre/cadastre.js b/module/javascript/app/modules/Cadastre/cadastre.js
index 91a57bf0..eaed9561 100644
--- a/module/javascript/app/modules/Cadastre/cadastre.js
+++ b/module/javascript/app/modules/Cadastre/cadastre.js
@@ -274,7 +274,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController = function
             sString = oVmap.checkLink(sString);
         }else{
             sString = oVmap.parseLink(sString, 'link');
-        }        
+        }
         return $sce.trustAsHtml(sString);
     };
 };
@@ -926,7 +926,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
             }
             tmp = Date.now();
             setTimeout(function () {
-                var aSelected = $(parcelleTable).bootstrapTable('getAllSelections');
+                var aSelected = $(parcelleTable).bootstrapTable('getSelections');
                 this_['tablesSelection'][parcelleTable] = aSelected;
             });
         };
@@ -986,7 +986,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayParcelleDescriptiveSheetByTable = function (parcelleTable) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayParcelleDescriptiveSheetByTable');
 
-    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getSelections');
 
     if (selectedParcelles.length !== 1) {
         $.notify('Veuillez sélectionner une unique parcelle', 'info');
@@ -1128,7 +1128,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayUrbanismeSheetByTable = function (parcelleTable) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayUrbanismeSheetByTable');
 
-    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getSelections');
 
     if (selectedParcelles.length !== 1) {
         $.notify('Veuillez sélectionner une unique parcelle', 'info');
@@ -1482,7 +1482,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayReleveDeProprieteSheetParcelle = function (parcelleTable) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayReleveDeProprieteSheetTiers');
 
-    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getSelections');
 
     if (selectedParcelles.length !== 1) {
         $.notify('Veuillez sélectionner une unique parcelle', 'info');
@@ -1508,7 +1508,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayReleveDeProprieteSheetStandard = function (compteTable) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayReleveDeProprieteSheetStandard');
 
-    var selectedComptes = $(compteTable).bootstrapTable('getAllSelections');
+    var selectedComptes = $(compteTable).bootstrapTable('getSelections');
 
     if (selectedComptes.length !== 1) {
         $.notify('Veuillez sélectionner un unique compte', 'info');
@@ -1535,7 +1535,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayReleveDeProprieteSheetTiers = function (compteTable) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayReleveDeProprieteSheetTiers');
 
-    var selectedComptes = $(compteTable).bootstrapTable('getAllSelections');
+    var selectedComptes = $(compteTable).bootstrapTable('getSelections');
 
     if (selectedComptes.length !== 1) {
         $.notify('Veuillez sélectionner un unique compte', 'info');
@@ -1583,7 +1583,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayRapportParcelle = function (parcelleTable, rapportType, bOpenWindow) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.displayRapportParcelle');
 
-    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getSelections');
 
     bOpenWindow = goog.isDef(bOpenWindow) ? bOpenWindow : true;
 
@@ -2084,7 +2084,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
  */
 nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.addSelectionFromTable = function (path, param, tableId, tabCode, callBack) {
     oVmap.log('nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.addSelectionFromTable');
-    var tableSelections = $(tableId).bootstrapTable('getAllSelections');
+    var tableSelections = $(tableId).bootstrapTable('getSelections');
     if (this['cadastreAPI_'] === "cadastre") {
         var paramField = param;
     } else {
@@ -2235,7 +2235,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     tableParam = goog.isDef(tableParam) ? tableParam : param;
 
     var cadastreController = this;
-    var tableSelections = $(tableId).bootstrapTable('getAllSelections');
+    var tableSelections = $(tableId).bootstrapTable('getSelections');
     var url = oVmap['properties']['api_url'] + '/' + path;
 
     var loadHttp = function () {
@@ -2628,7 +2628,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 
             var data = response['data']['data'];
 
-            // Ajoute le type de voie 
+            // Ajoute le type de voie
             for (var i = 0; i < data.length; i++) {
                 if (goog.isDefAndNotNull(data[i]['L_NATURE_VOIE'])) {
                     data[i]['NOM_VOIE'] = data[i]['L_NATURE_VOIE'] + ' ' + data[i]['DVOILIB'];
@@ -2925,7 +2925,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
             $(tableId).off('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table');
             $(tableId).on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function (e, row) {
                 $(parcelleTableId).bootstrapTable('removeAll');
-                cadastreController.getBaseParcellesByProprietaireOnTable(row['ID_COM'], $(tableId).bootstrapTable('getAllSelections'), parcelleTableId);
+                cadastreController.getBaseParcellesByProprietaireOnTable(row['ID_COM'], $(tableId).bootstrapTable('getSelections'), parcelleTableId);
             });
             // Si une seule ligne est proposée, alors on la sélectionne
             if (data.length === 1) {
@@ -3212,7 +3212,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
                 $(invariantsTableId).bootstrapTable('removeAll');
                 $(parcellesTableId).bootstrapTable('removeAll');
 
-                cadastreController.getBatiBaseInvariantsOnTable($(tableId).bootstrapTable('getAllSelections'), invariantsTableId, parcellesTableId);
+                cadastreController.getBatiBaseInvariantsOnTable($(tableId).bootstrapTable('getSelections'), invariantsTableId, parcellesTableId);
             });
 
             // Si une seule ligne est proposée, alors on la sélectionne
@@ -3305,7 +3305,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
                 $(tableId).off('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table');
                 $(tableId).on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function (e, row) {
                     $(parcellesTableId).bootstrapTable('removeAll');
-                    cadastreController.getBatiBaseParcellesOnTable($(tableId).bootstrapTable('getAllSelections'), parcellesTableId);
+                    cadastreController.getBatiBaseParcellesOnTable($(tableId).bootstrapTable('getSelections'), parcellesTableId);
                 });
 
                 // Si une seule ligne est proposée, alors on la sélectionne
@@ -3500,7 +3500,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos de la section
-    if ($(tableSection).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableSection).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_section');
 
         // Crée l'onglet correspondant
@@ -3550,7 +3550,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos du lieu dit
-    if ($(tableLieuDit).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableLieuDit).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_lieu_dit');
 
         // Crée l'onglet correspondant
@@ -3615,7 +3615,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos de la Parcelle
-    if ($(tableParcelle).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableParcelle).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_parcelle');
 
         // Crée l'onglet correspondant
@@ -3668,7 +3668,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos de la Voie
-    if ($(tableVoie).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableVoie).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_voie');
 
         // Crée l'onglet correspondant
@@ -3703,7 +3703,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
         this.addSelectionFromSelect(oVmap["properties"]["cadastre"]["api"] + '/parcelles', 'id_par', selectAdresse, 'veremes_cadastre_parcelle');
 
         // Si on choisit de voir toutes les géométries
-    } else if ($(tableVoie).bootstrapTable('getAllSelections').length > 0 && this['aAdresses'].length > 0) {
+    } else if ($(tableVoie).bootstrapTable('getSelections').length > 0 && this['aAdresses'].length > 0) {
         this.aFormList_.push('veremes_cadastre_parcelle');
 
         // Crée l'onglet correspondant
@@ -3730,7 +3730,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
 
     if ($(selectAdresse).val() !== "")
         this.localiseFromSelect(oVmap["properties"]["cadastre"]["api"] + '/parcelles', 'id_par', selectAdresse);
-    else if ($(tableVoie).bootstrapTable('getAllSelections').length > 0) {
+    else if ($(tableVoie).bootstrapTable('getSelections').length > 0) {
         this.localiseFromArray(oVmap["properties"]["cadastre"]["api"] + '/parcelles', 'id_par', this['aAdresses'], 'ID_PAR');
     }
 };
@@ -3775,7 +3775,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos du propriétaire
-    if ($(tableProprietaires).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableProprietaires).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_proprietaire');
 
         // Crée l'onglet correspondant
@@ -3783,13 +3783,13 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
             oVmap.getToolsManager().getInfoContainer().addTab({tabCode: 'veremes_cadastre_proprietaire', tabName: 'Propriétaire', actions: ['delete']});
 
         // Ajoute les infos
-        var proprietaire = $(tableProprietaires).bootstrapTable('getAllSelections')[0];
+        var proprietaire = $(tableProprietaires).bootstrapTable('getSelections')[0];
         this.addSelectionFrom2Values(oVmap["properties"]["cadastre"]["api"] + '/proprietaires', 'DDENOM', proprietaire['DDENOM'], 'ID_COM', proprietaire['ID_COM'], 'veremes_cadastre_proprietaire');
 
     }
 
     // Ajoute les infos du compte
-    if ($(tableComptes).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableComptes).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_compte');
 
         // Crée l'onglet correspondant
@@ -3797,7 +3797,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
             oVmap.getToolsManager().getInfoContainer().addTab({tabCode: 'veremes_cadastre_compte', tabName: 'Compte', actions: ['delete']});
 
         // Ajoute les infos
-        var aComptes = $(tableComptes).bootstrapTable('getAllSelections');
+        var aComptes = $(tableComptes).bootstrapTable('getSelections');
         if (this['cadastreAPI_'] === "cadastre") {
             var id_com = 'ID_COM';
             var dnupro = 'DNUPRO';
@@ -3829,7 +3829,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos de la parcelle
-    if ($(tableParcelles).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableParcelles).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_parcelle');
 
         // Crée l'onglet correspondant
@@ -3837,7 +3837,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
             oVmap.getToolsManager().getInfoContainer().addTab({tabCode: 'veremes_cadastre_parcelle', tabName: 'Parcelle', actions: ['zoom', 'delete']});
 
         // Ajoute les infos
-        var aParcelles = $(tableParcelles).bootstrapTable('getAllSelections');
+        var aParcelles = $(tableParcelles).bootstrapTable('getSelections');
         this.addSelectionFromArray(oVmap["properties"]["cadastre"]["api"] + '/parcelles', 'id_par', aParcelles, 'ID_PAR', 'veremes_cadastre_parcelle');
     }
 
@@ -3897,7 +3897,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos du propriétaire
-    if ($(tableProprietaires).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableProprietaires).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_proprietaire');
 
         // Crée l'onglet correspondant
@@ -3905,19 +3905,19 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
             oVmap.getToolsManager().getInfoContainer().addTab({tabCode: 'veremes_cadastre_proprietaire', tabName: 'Propriétaire', actions: ['delete']});
 
         // Ajoute les infos
-        var proprietaire = $(tableProprietaires).bootstrapTable('getAllSelections')[0];
+        var proprietaire = $(tableProprietaires).bootstrapTable('getSelections')[0];
         this.addSelectionFrom2Values(oVmap["properties"]["cadastre"]["api"] + '/proprietaires', ddenomF, proprietaire['DDENOM'], id_comF, proprietaire['ID_COM'], 'veremes_cadastre_proprietaire');
     }
 
     // Ajoute les infos du compte
-    if ($(tableComptes).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableComptes).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_compte');
 
         // Crée l'onglet correspondant
         if (oVmap.getToolsManager().getInfoContainer().getTabByCode('veremes_cadastre_compte') === undefined)
             oVmap.getToolsManager().getInfoContainer().addTab({tabCode: 'veremes_cadastre_compte', tabName: 'Compte', actions: ['delete']});
 
-        var aComptes = $(tableComptes).bootstrapTable('getAllSelections');
+        var aComptes = $(tableComptes).bootstrapTable('getSelections');
         if (this['cadastreAPI_'] === "cadastre") {
             var id_com = 'ID_COM';
             var dnupro = 'DNUPRO';
@@ -3951,7 +3951,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos de l'invariant
-    if ($(tableInvariants).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableInvariants).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_invariant');
 
         // Crée l'onglet correspondant
@@ -3963,7 +3963,7 @@ nsVmap.nsToolsManager.nsModules.Cadastre.prototype.cadastreController.prototype.
     }
 
     // Ajoute les infos de la parcelle
-    if ($(tableParcelles).bootstrapTable('getAllSelections').length > 0) {
+    if ($(tableParcelles).bootstrapTable('getSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_parcelle');
 
         // Crée l'onglet correspondant
diff --git a/module/javascript/app/vmap/tools/print.js b/module/javascript/app/vmap/tools/print.js
index 342c526f..8c779787 100644
--- a/module/javascript/app/vmap/tools/print.js
+++ b/module/javascript/app/vmap/tools/print.js
@@ -558,7 +558,6 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function
     today = dd + '/' + mm + '/' + yyyy;
 
     // Valeurs par défaut
-    var resolutionCoeff = goog.isDefAndNotNull(opt_options.resolutionCoeff) ? opt_options.resolutionCoeff : 1;
     var templateId = opt_options.templateId;
     var printStyleId = opt_options.printStyleId;
 
@@ -573,51 +572,6 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function
     oPrintScope['date'] = goog.isDefAndNotNull(oPrintScope['date']) ? oPrintScope['date'] : today;
     var sScope = JSON.stringify(oPrintScope);
 
-    // Set mapId/mapJson
-    var sMapId;
-    var sMapJSON;
-    if (goog.isDefAndNotNull(opt_options.mapId)) {
-        sMapId = opt_options.mapId;
-    } else {
-        sMapJSON = oVmap.getMapManager().getJSONLayersTree();
-    }
-
-    // set EWKTFeatures
-    var aFeatures = goog.isDefAndNotNull(opt_options.features) ? opt_options.features : [];
-    var sEWKTFeatures = '';
-    for (var i = 0; i < aFeatures.length; i++) {
-        if (i > 0)
-            sEWKTFeatures += '|';
-        sEWKTFeatures += oVmap.getEWKTFromGeom(aFeatures[i].getGeometry());
-    }
-
-    // set extent
-    var aExtent = goog.isDefAndNotNull(opt_options.extent) ? opt_options.extent : [];
-    var sExtent = '';
-    var aOverviewExtent = [
-        aExtent[0] - (aExtent[2] - aExtent[0]),
-        aExtent[1] - (aExtent[3] - aExtent[1]),
-        aExtent[2] + (aExtent[2] - aExtent[0]),
-        aExtent[3] + (aExtent[3] - aExtent[1])
-    ];
-    var sOverviewExtent = '';
-    for (var i = 0; i < aExtent.length; i++) {
-        if (i > 0) {
-            sExtent += '|';
-            sOverviewExtent += '|';
-        }
-        sExtent += aExtent[i];
-        sOverviewExtent += aOverviewExtent[i];
-    }
-
-    // Features zoom
-    var sFeaturesZoom = 100;
-    if (goog.isDefAndNotNull(opt_options.featuresZoom)) {
-        sFeaturesZoom = opt_options.featuresZoom;
-    } else if (goog.isDefAndNotNull(oVmap['properties']['print']['features_zoom'])) {
-        sFeaturesZoom = oVmap['properties']['print']['features_zoom'];
-    }
-
     // Ouvre la fenêtre d'impression
     var printWindow = window.open("", '_blank', 'height=400,width=600');
 
@@ -664,46 +618,17 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function
             template.innerHTML = response['data']['data'][0]['definition'];
 
             var mapImageSize = this_.getTemplateTargetSize(template, '#map_image');
-            var overviezSize = this_.getTemplateTargetSize(template, '#map_overview');
-
-            if (goog.isDefAndNotNull(mapImageSize)) {
-                var oMapDef = {
-                    'map_id': sMapId,
-                    'map_json': sMapJSON,
-                    'image_size': (mapImageSize[0] * resolutionCoeff) + '|' + (mapImageSize[1] * resolutionCoeff),
-                    'resolution_coeff': resolutionCoeff,
-                    'extent': sExtent,
-                    'features': sEWKTFeatures,
-                    'features_zoom': sFeaturesZoom
-                };
-            }
-
-            if (goog.isDefAndNotNull(overviezSize)) {
-                var oOverviewDef = {
-                    'map_id': sMapId,
-                    'map_json': sMapJSON,
-                    'image_size': (overviezSize[0] * resolutionCoeff) + '|' + (overviezSize[1] * resolutionCoeff),
-                    'resolution_coeff': resolutionCoeff,
-                    'extent': sOverviewExtent,
-                    'features': sEWKTFeatures,
-                    'features_zoom': 400
-                };
-            }
-
-            var oMapsJson = [];
-            if (goog.isDefAndNotNull(oMapDef)) {
-                oMapsJson.push({
-                    'target': '#map_image',
-                    'map_definition': oMapDef
-                });
-            }
-            if (goog.isDefAndNotNull(oOverviewDef)) {
-                oMapsJson.push({
-                    'target': '#map_overview',
-                    'map_definition': oOverviewDef
-                });
-            }
-            var mapsJson = JSON.stringify(oMapsJson);
+            var overviewSize = this_.getTemplateTargetSize(template, '#map_overview');
+
+            var mapsJson = this_.getMapsJsonDef({
+                mapId: opt_options.mapId,
+                resolutionCoeff: opt_options.resolutionCoeff,
+                extent: opt_options.extent,
+                features: opt_options.features,
+                featuresZoom: opt_options.featuresZoom,
+                mapImageSize: mapImageSize,
+                overviewSize: overviewSize
+            })
 
             // Récupère les infos de l'utilisateur
             this_.getUserInfos_().then(function (oUserInfos) {
@@ -773,6 +698,99 @@ nsVmap.nsToolsManager.Print.prototype.printController.prototype.print = function
     return 1;
 };
 
+nsVmap.nsToolsManager.Print.prototype.printController.prototype.getMapsJsonDef = function (opt_options) {
+    oVmap.log('nsVmap.nsToolsManager.Print.prototype.printController.prototype.getMapsJsonDef');
+
+    // Resolution
+    var resolutionCoeff = goog.isDefAndNotNull(opt_options.resolutionCoeff) ? opt_options.resolutionCoeff : 1;
+
+    // mapId/mapJson
+    var sMapId;
+    var sMapJSON;
+    if (goog.isDefAndNotNull(opt_options.mapId)) {
+        sMapId = opt_options.mapId;
+    } else {
+        sMapJSON = oVmap.getMapManager().getJSONLayersTree();
+    }
+
+    // Extent
+    var aExtent = goog.isDefAndNotNull(opt_options.extent) ? opt_options.extent : [];
+    var sExtent = '';
+    var aOverviewExtent = [
+        aExtent[0] - (aExtent[2] - aExtent[0]),
+        aExtent[1] - (aExtent[3] - aExtent[1]),
+        aExtent[2] + (aExtent[2] - aExtent[0]),
+        aExtent[3] + (aExtent[3] - aExtent[1])
+    ];
+    var sOverviewExtent = '';
+    for (var i = 0; i < aExtent.length; i++) {
+        if (i > 0) {
+            sExtent += '|';
+            sOverviewExtent += '|';
+        }
+        sExtent += aExtent[i];
+        sOverviewExtent += aOverviewExtent[i];
+    }
+
+    // Features
+    var aFeatures = goog.isDefAndNotNull(opt_options.features) ? opt_options.features : [];
+    var sEWKTFeatures = '';
+    for (var i = 0; i < aFeatures.length; i++) {
+        if (i > 0)
+            sEWKTFeatures += '|';
+        sEWKTFeatures += oVmap.getEWKTFromGeom(aFeatures[i].getGeometry());
+    }
+
+    var sFeaturesZoom = 100;
+    if (goog.isDefAndNotNull(opt_options.featuresZoom)) {
+        sFeaturesZoom = opt_options.featuresZoom;
+    } else if (goog.isDefAndNotNull(oVmap['properties']['print']['features_zoom'])) {
+        sFeaturesZoom = oVmap['properties']['print']['features_zoom'];
+    }
+
+    if (goog.isDefAndNotNull(opt_options.mapImageSize)) {
+        var oMapDef = {
+            'map_id': sMapId,
+            'map_json': sMapJSON,
+            'image_size': (opt_options.mapImageSize[0] * resolutionCoeff) + '|' + (opt_options.mapImageSize[1] * resolutionCoeff),
+            'resolution_coeff': resolutionCoeff,
+            'extent': sExtent,
+            'features': sEWKTFeatures,
+            'features_zoom': sFeaturesZoom
+        };
+    }
+
+    if (goog.isDefAndNotNull(opt_options.overviewSize)) {
+        var oOverviewDef = {
+            'map_id': sMapId,
+            'map_json': sMapJSON,
+            'image_size': (opt_options.overviewSize[0] * resolutionCoeff) + '|' + (opt_options.overviewSize[1] * resolutionCoeff),
+            'resolution_coeff': resolutionCoeff,
+            'extent': sOverviewExtent,
+            'features': sEWKTFeatures,
+            'features_zoom': 400
+        };
+    }
+
+    var oMapsJson = [];
+    if (goog.isDefAndNotNull(oMapDef)) {
+        oMapsJson.push({
+            'target': '#map_image',
+            'map_definition': oMapDef
+        });
+    }
+    if (goog.isDefAndNotNull(oOverviewDef)) {
+        oMapsJson.push({
+            'target': '#map_overview',
+            'map_definition': oOverviewDef
+        });
+    }
+
+    var mapsJson = JSON.stringify(oMapsJson);
+
+    return mapsJson;
+}
+
 /**
  * Get the size of a target in a template
  * @param {string} template
diff --git a/module/javascript/vitis/script_module.js b/module/javascript/vitis/script_module.js
index f14e1f32..00d7bea3 100644
--- a/module/javascript/vitis/script_module.js
+++ b/module/javascript/vitis/script_module.js
@@ -915,7 +915,9 @@ vitisApp.on('appMainDrtvLoaded', function () {
         }
 
         this['getCapabilities'](serviceUrl, {
-            'version': serviceVersion
+            'version': serviceVersion,
+            'service_login': envSrvc["oFormValues"][envSrvc['sFormDefinitionName']]['service_login'],
+            'service_password': envSrvc["oFormValues"][envSrvc['sFormDefinitionName']]['service_password']
         }).then(function (oResult) {
             if (goog.isDefAndNotNull(oResult)) {
                 if (goog.isDefAndNotNull(oResult['json'])) {
@@ -1098,6 +1100,12 @@ vitisApp.on('appMainDrtvLoaded', function () {
                 if (goog.isDefAndNotNull(scope['oServices'][sServiceId]['service_type_version'])) {
                     envSrvc["oFormValues"][envSrvc['sFormDefinitionName']]["service_type_version"] = scope['oServices'][sServiceId]['service_type_version'];
                 }
+                if (goog.isDefAndNotNull(scope['oServices'][sServiceId]['service_login'])) {
+                    envSrvc["oFormValues"][envSrvc['sFormDefinitionName']]["service_login"] = scope['oServices'][sServiceId]['service_login'];
+                }
+                if (goog.isDefAndNotNull(scope['oServices'][sServiceId]['service_password'])) {
+                    envSrvc["oFormValues"][envSrvc['sFormDefinitionName']]["service_password"] = scope['oServices'][sServiceId]['service_password'];
+                }
             }
         } else {
             sServiceType = envSrvc['oFormValues'][envSrvc['sFormDefinitionName']]['service_type_id'];
@@ -2497,11 +2505,15 @@ vitisApp.on('appMainDrtvLoaded', function () {
 
         $translate(["BTN_ADD_LAYERS_VMAP_MAP_LAYER"]).then(function (oTranslations) {
             var sServiceUrl = envSrvc["oFormValues"][sParentFormDefinitionName]["service_url"];
+            var sServiceLogin = envSrvc["oFormValues"][sParentFormDefinitionName]["service_login"];
+            var sServicePassword = envSrvc["oFormValues"][sParentFormDefinitionName]["service_password"];
             var sVersion = envSrvc["oFormValues"][sParentFormDefinitionName]["service_type_version"];
             sServiceUrl = sServiceUrl.replace("[token]", sha256(sessionSrvc["token"]));
             sServiceUrl = sServiceUrl.replace("[ms_cgi_url]", propertiesSrvc["ms_cgi_url"]);
             this_['showLayerModalWindow']({
                 'service_url': sServiceUrl,
+                'service_login': sServiceLogin,
+                'service_password': sServicePassword,
                 'service_version': sVersion,
                 'buttons': [{
                         "label": oTranslations["BTN_ADD_LAYERS_VMAP_MAP_LAYER"],
@@ -2874,7 +2886,9 @@ vitisApp.on('appMainDrtvLoaded', function () {
         } else if (goog.isDefAndNotNull(sServiceUrl)) {
             // Calques du service wms.
             scope.$root['getCapabilities'](sServiceUrl, {
-                'version': opt_options['service_version']
+                'version': opt_options['service_version'],
+                'service_login': opt_options['service_login'],
+                'service_password': opt_options['service_password']
             }).then(function (oGetCapabilities) {
                 oCapabilities = oGetCapabilities;
                 if (goog.isDefAndNotNull(oCapabilities)) {
@@ -2906,6 +2920,9 @@ vitisApp.on('appMainDrtvLoaded', function () {
             "showErrorMessage": true,
             "version": "1.3.0"
         };
+        var oHeaders = {
+            "charset": "charset=utf-8"
+        };
         if (typeof (oOptions) == "undefined")
             oOptions = oDefaultOptions;
         else {
@@ -2918,6 +2935,11 @@ vitisApp.on('appMainDrtvLoaded', function () {
         if (!goog.isDefAndNotNull(oOptions['showErrorMessage'])) {
             oOptions['showErrorMessage'] = true;
         }
+        if (goog.isDefAndNotNull(oOptions['service_login']) && goog.isDefAndNotNull(oOptions['service_password'])) {
+            if (oOptions['service_login'].length > 0 && oOptions['service_password'].length > 0) {
+                oHeaders['Authorization'] = "Basic " + btoa(oOptions['service_login'] + ":" + oOptions['service_password']);
+            }
+        }
         // Création de l'url vers le service.
         if (sServiceUrl.indexOf("?") === -1)
             sServiceUrl += "?";
@@ -2941,6 +2963,7 @@ vitisApp.on('appMainDrtvLoaded', function () {
                 "method": "GET",
                 "url": propertiesSrvc['proxy_url'],
                 "params": {"url": sServiceUrl},
+                'headers': oHeaders,
                 "scope": scope,
                 "responseType": "text",
                 "success": function (response) {
diff --git a/module/template/tools/print.html b/module/template/tools/print.html
index 92421e58..0a1fd62b 100644
--- a/module/template/tools/print.html
+++ b/module/template/tools/print.html
@@ -45,8 +45,8 @@
             <option value="100">1:100</option>
         </select>
 
-        <div class="hidden print-form-label">Résolution</div>
-        <select id="select-print-resolution" class="hidden form-control minus" ng-model="ctrl.dpi">
+        <div class="print-form-label">Résolution</div>
+        <select id="select-print-resolution" class="form-control minus" ng-model="ctrl.dpi">
             <option value="1">72 dpi</option>
             <option value="2" ng-show="ctrl.resolution <= 4">144 dpi</option>
             <option value="4" ng-show="ctrl.resolution <= 2">288 dpi</option>
diff --git a/storage/veremes_demo_dessin/forms/custom.json b/storage/veremes_demo_dessin/forms/custom.json
new file mode 100755
index 00000000..40d59f8f
--- /dev/null
+++ b/storage/veremes_demo_dessin/forms/custom.json
@@ -0,0 +1,629 @@
+{
+  "display": {
+    "name": "custom-form",
+    "title": "Dessin",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": true,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "draw_id",
+            "label": "draw_id",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "draw_id_1_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "description",
+            "label": "description",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "description_2_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "text_size",
+            "label": "text_size",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "text_size_3_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "geom_size",
+            "label": "geom_size",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "geom_size_4_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "contour_color",
+            "label": "Couleur de contour",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "contour_color_5_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "background_color",
+            "label": "Couleur de fond",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "background_color_6_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "color_label",
+            "label": "couleur du texte",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "color_label_7_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "label",
+            "label": "label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "label_8_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "graph",
+            "label": "graph",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "graph_9_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "area",
+            "label": "area",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "area_10_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "area_label",
+            "label": "area_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "area_label_11_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "perimeter",
+            "label": "perimeter",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "perimeter_12_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "perimeter_label",
+            "label": "perimeter_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "perimeter_label_13_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "text_label",
+            "label": "text_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "text_label_14_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "theme",
+            "label": "theme",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "theme_15_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "comments",
+            "label": "comments",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "comments_16_1"
+          }
+        ]
+      }
+    ]
+},
+"search": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": false,
+  "rows": []
+},
+"insert": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": true,
+  "rows": [
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "text_label",
+          "label": "Texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 12,
+          "id": "label_text_14_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "theme",
+          "label": "Thème / Projet",
+          "required": false,
+          "nb_cols": 12,
+          "id": "theme_15_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "textarea",
+          "name": "comments",
+          "label": "Commentaires",
+          "required": false,
+          "nb_cols": 6,
+          "id": "comments_16_1",
+          "size": 4
+        },
+        {
+          "type": "textarea",
+          "name": "description",
+          "label": "Etiquette",
+          "required": false,
+          "nb_cols": 6,
+          "id": "description_2_1",
+          "size": 4
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2206"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2207"
+              }
+            ]
+          },
+          "name": "label",
+          "label": "Afficher le texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "label_8_1",
+          "default_value": true
+        },
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2218"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2219"
+              }
+            ]
+          },
+          "name": "graph",
+          "label": "Afficher la partie graph",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "graphique_9_1",
+          "default_value": true
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "integer",
+          "name": "text_size",
+          "label": "Taille du texte",
+          "nb_cols": 6,
+          "id": "taille_text_3_1",
+          "default_value": 10,
+          "required": true
+        },
+        {
+          "type": "integer",
+          "name": "geom_size",
+          "label": "Épaisseur/taille",
+          "nb_cols": 6,
+          "id": "taille_geom_4_1",
+          "default_value": 15,
+          "required": true
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "color_picker",
+          "name": "background_color_rgba",
+          "label": "Couleur de fond",
+          "nb_cols": 4,
+          "id": "couleur_fond_6_1",
+          "default_value": "0 0 0",
+          "required": true
+        },
+        {
+          "type": "color_picker",
+          "name": "contour_color_rgba",
+          "label": "Couleur de contour",
+          "nb_cols": 4,
+          "id": "couleur_contour_5_1",
+          "default_value": "0 0 0",
+          "required": true
+        },
+        {
+          "type": "color_picker",
+          "name": "color_label_rgba",
+          "label": "couleur du texte",
+          "nb_cols": 4,
+          "id": "couleur_label_7_1",
+          "default_value": "0 0 0",
+          "required": true
+        }
+      ]
+    }, {
+      "fields": [
+        {
+          "type": "hidden",
+          "name": "background_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "contour_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "color_label",
+          "nb_cols": 12
+        }
+      ]
+    }
+  ]
+},
+"update": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": true,
+  "rows": [
+    {
+      "fields": [
+        {
+          "type": "label",
+          "name": "draw_id",
+          "label": "Id",
+          "id": "id_dessin_1_1",
+          "nb_cols": 12
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "text_label",
+          "label": "Texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 12,
+          "id": "label_text_14_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "theme",
+          "label": "Thème / Projet",
+          "required": false,
+          "nb_cols": 12,
+          "id": "theme_15_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "textarea",
+          "name": "comments",
+          "label": "Commentaires",
+          "required": false,
+          "nb_cols": 6,
+          "id": "comments_16_1",
+          "size": 4
+        },
+        {
+          "type": "textarea",
+          "name": "description",
+          "label": "Etiquette",
+          "required": false,
+          "nb_cols": 6,
+          "id": "description_2_1",
+          "size": 4
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2044"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2045"
+              }
+            ]
+          },
+          "name": "label",
+          "label": "Afficher le texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "label_8_1"
+        },
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2056"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2057"
+              }
+            ]
+          },
+          "name": "graph",
+          "label": "Afficher la partie graph",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "graphique_9_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "integer",
+          "name": "text_size",
+          "label": "Taille du texte",
+          "nb_cols": 6,
+          "id": "taille_text_3_1"
+        },
+        {
+          "type": "integer",
+          "name": "geom_size",
+          "label": "Épaisseur/taille",
+          "nb_cols": 6,
+          "id": "taille_geom_4_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "color_picker",
+          "name": "background_color_rgba",
+          "label": "Couleur de fond",
+          "nb_cols": 4,
+          "id": "couleur_fond_6_1"
+        },
+        {
+          "type": "color_picker",
+          "name": "contour_color_rgba",
+          "label": "Couleur de contour",
+          "nb_cols": 4,
+          "id": "couleur_contour_5_1"
+        },
+        {
+          "type": "color_picker",
+          "name": "color_label_rgba",
+          "label": "couleur du texte",
+          "nb_cols": 4,
+          "id": "couleur_label_7_1"
+        }
+      ]
+    }, {
+      "fields": [
+        {
+          "type": "hidden",
+          "name": "background_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "contour_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "color_label",
+          "nb_cols": 12
+        }
+      ]
+    }
+  ]
+},
+"datasources": {}
+}
diff --git a/storage/veremes_demo_dessin/forms/default.json b/storage/veremes_demo_dessin/forms/default.json
new file mode 100755
index 00000000..40d59f8f
--- /dev/null
+++ b/storage/veremes_demo_dessin/forms/default.json
@@ -0,0 +1,629 @@
+{
+  "display": {
+    "name": "custom-form",
+    "title": "Dessin",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": true,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "draw_id",
+            "label": "draw_id",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "draw_id_1_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "description",
+            "label": "description",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "description_2_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "text_size",
+            "label": "text_size",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "text_size_3_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "geom_size",
+            "label": "geom_size",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "geom_size_4_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "contour_color",
+            "label": "Couleur de contour",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "contour_color_5_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "background_color",
+            "label": "Couleur de fond",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "background_color_6_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "color_label",
+            "label": "couleur du texte",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "color_label_7_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "label",
+            "label": "label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "label_8_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "graph",
+            "label": "graph",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "graph_9_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "area",
+            "label": "area",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "area_10_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "area_label",
+            "label": "area_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "area_label_11_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "perimeter",
+            "label": "perimeter",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "perimeter_12_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "perimeter_label",
+            "label": "perimeter_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "perimeter_label_13_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "text_label",
+            "label": "text_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "text_label_14_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "theme",
+            "label": "theme",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "theme_15_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "comments",
+            "label": "comments",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "comments_16_1"
+          }
+        ]
+      }
+    ]
+},
+"search": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": false,
+  "rows": []
+},
+"insert": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": true,
+  "rows": [
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "text_label",
+          "label": "Texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 12,
+          "id": "label_text_14_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "theme",
+          "label": "Thème / Projet",
+          "required": false,
+          "nb_cols": 12,
+          "id": "theme_15_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "textarea",
+          "name": "comments",
+          "label": "Commentaires",
+          "required": false,
+          "nb_cols": 6,
+          "id": "comments_16_1",
+          "size": 4
+        },
+        {
+          "type": "textarea",
+          "name": "description",
+          "label": "Etiquette",
+          "required": false,
+          "nb_cols": 6,
+          "id": "description_2_1",
+          "size": 4
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2206"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2207"
+              }
+            ]
+          },
+          "name": "label",
+          "label": "Afficher le texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "label_8_1",
+          "default_value": true
+        },
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2218"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2219"
+              }
+            ]
+          },
+          "name": "graph",
+          "label": "Afficher la partie graph",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "graphique_9_1",
+          "default_value": true
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "integer",
+          "name": "text_size",
+          "label": "Taille du texte",
+          "nb_cols": 6,
+          "id": "taille_text_3_1",
+          "default_value": 10,
+          "required": true
+        },
+        {
+          "type": "integer",
+          "name": "geom_size",
+          "label": "Épaisseur/taille",
+          "nb_cols": 6,
+          "id": "taille_geom_4_1",
+          "default_value": 15,
+          "required": true
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "color_picker",
+          "name": "background_color_rgba",
+          "label": "Couleur de fond",
+          "nb_cols": 4,
+          "id": "couleur_fond_6_1",
+          "default_value": "0 0 0",
+          "required": true
+        },
+        {
+          "type": "color_picker",
+          "name": "contour_color_rgba",
+          "label": "Couleur de contour",
+          "nb_cols": 4,
+          "id": "couleur_contour_5_1",
+          "default_value": "0 0 0",
+          "required": true
+        },
+        {
+          "type": "color_picker",
+          "name": "color_label_rgba",
+          "label": "couleur du texte",
+          "nb_cols": 4,
+          "id": "couleur_label_7_1",
+          "default_value": "0 0 0",
+          "required": true
+        }
+      ]
+    }, {
+      "fields": [
+        {
+          "type": "hidden",
+          "name": "background_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "contour_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "color_label",
+          "nb_cols": 12
+        }
+      ]
+    }
+  ]
+},
+"update": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": true,
+  "rows": [
+    {
+      "fields": [
+        {
+          "type": "label",
+          "name": "draw_id",
+          "label": "Id",
+          "id": "id_dessin_1_1",
+          "nb_cols": 12
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "text_label",
+          "label": "Texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 12,
+          "id": "label_text_14_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "theme",
+          "label": "Thème / Projet",
+          "required": false,
+          "nb_cols": 12,
+          "id": "theme_15_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "textarea",
+          "name": "comments",
+          "label": "Commentaires",
+          "required": false,
+          "nb_cols": 6,
+          "id": "comments_16_1",
+          "size": 4
+        },
+        {
+          "type": "textarea",
+          "name": "description",
+          "label": "Etiquette",
+          "required": false,
+          "nb_cols": 6,
+          "id": "description_2_1",
+          "size": 4
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2044"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2045"
+              }
+            ]
+          },
+          "name": "label",
+          "label": "Afficher le texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "label_8_1"
+        },
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2056"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2057"
+              }
+            ]
+          },
+          "name": "graph",
+          "label": "Afficher la partie graph",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "graphique_9_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "integer",
+          "name": "text_size",
+          "label": "Taille du texte",
+          "nb_cols": 6,
+          "id": "taille_text_3_1"
+        },
+        {
+          "type": "integer",
+          "name": "geom_size",
+          "label": "Épaisseur/taille",
+          "nb_cols": 6,
+          "id": "taille_geom_4_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "color_picker",
+          "name": "background_color_rgba",
+          "label": "Couleur de fond",
+          "nb_cols": 4,
+          "id": "couleur_fond_6_1"
+        },
+        {
+          "type": "color_picker",
+          "name": "contour_color_rgba",
+          "label": "Couleur de contour",
+          "nb_cols": 4,
+          "id": "couleur_contour_5_1"
+        },
+        {
+          "type": "color_picker",
+          "name": "color_label_rgba",
+          "label": "couleur du texte",
+          "nb_cols": 4,
+          "id": "couleur_label_7_1"
+        }
+      ]
+    }, {
+      "fields": [
+        {
+          "type": "hidden",
+          "name": "background_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "contour_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "color_label",
+          "nb_cols": 12
+        }
+      ]
+    }
+  ]
+},
+"datasources": {}
+}
diff --git a/storage/veremes_demo_dessin/forms/published.json b/storage/veremes_demo_dessin/forms/published.json
new file mode 100755
index 00000000..40d59f8f
--- /dev/null
+++ b/storage/veremes_demo_dessin/forms/published.json
@@ -0,0 +1,629 @@
+{
+  "display": {
+    "name": "custom-form",
+    "title": "Dessin",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": true,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "draw_id",
+            "label": "draw_id",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "draw_id_1_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "description",
+            "label": "description",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "description_2_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "text_size",
+            "label": "text_size",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "text_size_3_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "geom_size",
+            "label": "geom_size",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "geom_size_4_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "contour_color",
+            "label": "Couleur de contour",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "contour_color_5_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "background_color",
+            "label": "Couleur de fond",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "background_color_6_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "color_label",
+            "label": "couleur du texte",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "color_label_7_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "label",
+            "label": "label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "label_8_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "graph",
+            "label": "graph",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "graph_9_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "area",
+            "label": "area",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "area_10_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "area_label",
+            "label": "area_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "area_label_11_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "perimeter",
+            "label": "perimeter",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "perimeter_12_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "options": {
+              "choices": [
+                {
+                  "label": "oui",
+                  "value": true
+                },
+                {
+                  "label": "non",
+                  "value": false
+                }
+              ]
+            },
+            "name": "perimeter_label",
+            "label": "perimeter_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "perimeter_label_13_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "text_label",
+            "label": "text_label",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "text_label_14_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "theme",
+            "label": "theme",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "theme_15_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "comments",
+            "label": "comments",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "comments_16_1"
+          }
+        ]
+      }
+    ]
+},
+"search": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": false,
+  "rows": []
+},
+"insert": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": true,
+  "rows": [
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "text_label",
+          "label": "Texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 12,
+          "id": "label_text_14_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "theme",
+          "label": "Thème / Projet",
+          "required": false,
+          "nb_cols": 12,
+          "id": "theme_15_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "textarea",
+          "name": "comments",
+          "label": "Commentaires",
+          "required": false,
+          "nb_cols": 6,
+          "id": "comments_16_1",
+          "size": 4
+        },
+        {
+          "type": "textarea",
+          "name": "description",
+          "label": "Etiquette",
+          "required": false,
+          "nb_cols": 6,
+          "id": "description_2_1",
+          "size": 4
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2206"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2207"
+              }
+            ]
+          },
+          "name": "label",
+          "label": "Afficher le texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "label_8_1",
+          "default_value": true
+        },
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2218"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2219"
+              }
+            ]
+          },
+          "name": "graph",
+          "label": "Afficher la partie graph",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "graphique_9_1",
+          "default_value": true
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "integer",
+          "name": "text_size",
+          "label": "Taille du texte",
+          "nb_cols": 6,
+          "id": "taille_text_3_1",
+          "default_value": 10,
+          "required": true
+        },
+        {
+          "type": "integer",
+          "name": "geom_size",
+          "label": "Épaisseur/taille",
+          "nb_cols": 6,
+          "id": "taille_geom_4_1",
+          "default_value": 15,
+          "required": true
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "color_picker",
+          "name": "background_color_rgba",
+          "label": "Couleur de fond",
+          "nb_cols": 4,
+          "id": "couleur_fond_6_1",
+          "default_value": "0 0 0",
+          "required": true
+        },
+        {
+          "type": "color_picker",
+          "name": "contour_color_rgba",
+          "label": "Couleur de contour",
+          "nb_cols": 4,
+          "id": "couleur_contour_5_1",
+          "default_value": "0 0 0",
+          "required": true
+        },
+        {
+          "type": "color_picker",
+          "name": "color_label_rgba",
+          "label": "couleur du texte",
+          "nb_cols": 4,
+          "id": "couleur_label_7_1",
+          "default_value": "0 0 0",
+          "required": true
+        }
+      ]
+    }, {
+      "fields": [
+        {
+          "type": "hidden",
+          "name": "background_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "contour_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "color_label",
+          "nb_cols": 12
+        }
+      ]
+    }
+  ]
+},
+"update": {
+  "name": "custom-form",
+  "title": "Dessin",
+  "input_size": "xxs",
+  "nb_cols": 12,
+  "javascript": true,
+  "rows": [
+    {
+      "fields": [
+        {
+          "type": "label",
+          "name": "draw_id",
+          "label": "Id",
+          "id": "id_dessin_1_1",
+          "nb_cols": 12
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "text_label",
+          "label": "Texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 12,
+          "id": "label_text_14_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "text",
+          "name": "theme",
+          "label": "Thème / Projet",
+          "required": false,
+          "nb_cols": 12,
+          "id": "theme_15_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "textarea",
+          "name": "comments",
+          "label": "Commentaires",
+          "required": false,
+          "nb_cols": 6,
+          "id": "comments_16_1",
+          "size": 4
+        },
+        {
+          "type": "textarea",
+          "name": "description",
+          "label": "Etiquette",
+          "required": false,
+          "nb_cols": 6,
+          "id": "description_2_1",
+          "size": 4
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2044"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2045"
+              }
+            ]
+          },
+          "name": "label",
+          "label": "Afficher le texte",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "label_8_1"
+        },
+        {
+          "type": "radio",
+          "options": {
+            "choices": [
+              {
+                "label": "Oui",
+                "value": true,
+                "$$hashKey": "object:2056"
+              },
+              {
+                "label": "Non",
+                "value": false,
+                "$$hashKey": "object:2057"
+              }
+            ]
+          },
+          "name": "graph",
+          "label": "Afficher la partie graph",
+          "disabled": false,
+          "required": false,
+          "nb_cols": 6,
+          "id": "graphique_9_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "integer",
+          "name": "text_size",
+          "label": "Taille du texte",
+          "nb_cols": 6,
+          "id": "taille_text_3_1"
+        },
+        {
+          "type": "integer",
+          "name": "geom_size",
+          "label": "Épaisseur/taille",
+          "nb_cols": 6,
+          "id": "taille_geom_4_1"
+        }
+      ]
+    },
+    {
+      "fields": [
+        {
+          "type": "color_picker",
+          "name": "background_color_rgba",
+          "label": "Couleur de fond",
+          "nb_cols": 4,
+          "id": "couleur_fond_6_1"
+        },
+        {
+          "type": "color_picker",
+          "name": "contour_color_rgba",
+          "label": "Couleur de contour",
+          "nb_cols": 4,
+          "id": "couleur_contour_5_1"
+        },
+        {
+          "type": "color_picker",
+          "name": "color_label_rgba",
+          "label": "couleur du texte",
+          "nb_cols": 4,
+          "id": "couleur_label_7_1"
+        }
+      ]
+    }, {
+      "fields": [
+        {
+          "type": "hidden",
+          "name": "background_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "contour_color",
+          "nb_cols": 12
+        },{
+          "type": "hidden",
+          "name": "color_label",
+          "nb_cols": 12
+        }
+      ]
+    }
+  ]
+},
+"datasources": {}
+}
diff --git a/storage/veremes_demo_dessin/forms/ressources/custom.js b/storage/veremes_demo_dessin/forms/ressources/custom.js
new file mode 100755
index 00000000..de066e6f
--- /dev/null
+++ b/storage/veremes_demo_dessin/forms/ressources/custom.js
@@ -0,0 +1,109 @@
+/* global angular, goog */
+// CUSTOM
+//bloque les delete du destructeur à éviter
+//'use strict';
+
+/***********************************************************************************
+ vmap_dessin Javascript
+ ***********************************************************************************/
+
+var oFormRequired = {
+    "sUrl": "",
+    "scope_": {},
+    "toDestructor": []
+};
+/**
+ * constructor_form
+ * Fonction appelé à l'initialisation du formulaire si dans la structure json javascript vaut "true"
+ * @param {type} scope
+ * @param {type} s_url
+ * @returns {undefined}
+ */
+var constructor_form = function (scope, s_url) {
+    //////////////////////////////////////////////////////////
+    //Ne pas toucher
+    console.log("constructor_form");
+
+    oFormRequired.sUrl = s_url;
+    oFormRequired.scope_ = scope;
+        
+    var parseColorFromRGBA = function (rgba) {
+        if (isRGBA(rgba)) {
+            var matchColors = /rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(\d{1,3})\)/;
+            var match = matchColors.exec(rgba);
+            var color = match[1] + ' ' + match[2] + ' ' + match[3];
+        } else {
+            color = rgba;
+        }
+        return color;
+    };
+
+    var parseColorToRGBA = function (color) {
+        if (isRGBA(color))
+            var rgba = color;
+        else
+            var rgba = 'rgba(' + color.replace(/ /g, ',') + ',1)';
+        return rgba;
+    };
+
+    var isRGBA = function (color) {
+        if (color.substring(0, 4) === 'rgba')
+            return true;
+        else
+            return false;
+    };
+
+    var beforeEvent = function (sMode) {
+        console.log('beforeEvent !!!')
+        scope['oFormValues'][sMode]['background_color'] = parseColorFromRGBA(scope['oFormValues'][sMode]['background_color_rgba']);
+        scope['oFormValues'][sMode]['contour_color'] = parseColorFromRGBA(scope['oFormValues'][sMode]['contour_color_rgba']);
+        scope['oFormValues'][sMode]['color_label'] = parseColorFromRGBA(scope['oFormValues'][sMode]['color_label_rgba']);
+    };
+    
+    if (angular.isDefined(scope['oFormValues']['update'])) {
+        scope['oFormValues']['update']['background_color_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['background_color']);
+        scope['oFormValues']['update']['contour_color_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['contour_color']);
+        scope['oFormValues']['update']['color_label_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['color_label']);
+    }
+
+    // Ajoute BeforeEvent
+    scope['oFormDefinition']['update']['beforeEvent'] = function () {
+        beforeEvent('update');
+    };
+    scope['oFormDefinition']['insert']['beforeEvent'] = function () {
+        beforeEvent('insert');
+    };
+
+    //////////////////////////////////////////////////////////
+    // Ajouter vos Elément à détruire (variable, function, watcher) à oFormRequired.toDestructor
+};
+
+
+
+/**
+ * destructor_form
+ * Fonction appelé quand on quitte le formulaire nettoie toute les fonctions pour les rendres inutilisable en dehors du formulaire
+ * @returns {undefined}
+ */
+var destructor_form = function () {
+
+    for (var i = 0; i < oFormRequired.toDestructor.length; i++) {
+        oFormRequired.toDestructor[i] = undefined;
+        delete oFormRequired.toDestructor[i];
+    }
+
+    //supprimer la balise script du js pour pouvoir le recharger si on reviens sur le formulaire plus tard
+    angular.element('[src="' + oFormRequired.sUrl + '?version=' + oFormRequired.scope_["oProperties"]["build"] + '"]').remove();
+
+    oFormRequired = undefined;
+    delete oFormRequired;
+
+    constructor_form = undefined;
+    delete constructor_form;
+    destructor_form = undefined;
+    delete destructor_form;
+};
+
+/**********************************************************************************/
+
+
diff --git a/storage/veremes_demo_dessin/forms/ressources/default.js b/storage/veremes_demo_dessin/forms/ressources/default.js
new file mode 100755
index 00000000..de066e6f
--- /dev/null
+++ b/storage/veremes_demo_dessin/forms/ressources/default.js
@@ -0,0 +1,109 @@
+/* global angular, goog */
+// CUSTOM
+//bloque les delete du destructeur à éviter
+//'use strict';
+
+/***********************************************************************************
+ vmap_dessin Javascript
+ ***********************************************************************************/
+
+var oFormRequired = {
+    "sUrl": "",
+    "scope_": {},
+    "toDestructor": []
+};
+/**
+ * constructor_form
+ * Fonction appelé à l'initialisation du formulaire si dans la structure json javascript vaut "true"
+ * @param {type} scope
+ * @param {type} s_url
+ * @returns {undefined}
+ */
+var constructor_form = function (scope, s_url) {
+    //////////////////////////////////////////////////////////
+    //Ne pas toucher
+    console.log("constructor_form");
+
+    oFormRequired.sUrl = s_url;
+    oFormRequired.scope_ = scope;
+        
+    var parseColorFromRGBA = function (rgba) {
+        if (isRGBA(rgba)) {
+            var matchColors = /rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(\d{1,3})\)/;
+            var match = matchColors.exec(rgba);
+            var color = match[1] + ' ' + match[2] + ' ' + match[3];
+        } else {
+            color = rgba;
+        }
+        return color;
+    };
+
+    var parseColorToRGBA = function (color) {
+        if (isRGBA(color))
+            var rgba = color;
+        else
+            var rgba = 'rgba(' + color.replace(/ /g, ',') + ',1)';
+        return rgba;
+    };
+
+    var isRGBA = function (color) {
+        if (color.substring(0, 4) === 'rgba')
+            return true;
+        else
+            return false;
+    };
+
+    var beforeEvent = function (sMode) {
+        console.log('beforeEvent !!!')
+        scope['oFormValues'][sMode]['background_color'] = parseColorFromRGBA(scope['oFormValues'][sMode]['background_color_rgba']);
+        scope['oFormValues'][sMode]['contour_color'] = parseColorFromRGBA(scope['oFormValues'][sMode]['contour_color_rgba']);
+        scope['oFormValues'][sMode]['color_label'] = parseColorFromRGBA(scope['oFormValues'][sMode]['color_label_rgba']);
+    };
+    
+    if (angular.isDefined(scope['oFormValues']['update'])) {
+        scope['oFormValues']['update']['background_color_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['background_color']);
+        scope['oFormValues']['update']['contour_color_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['contour_color']);
+        scope['oFormValues']['update']['color_label_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['color_label']);
+    }
+
+    // Ajoute BeforeEvent
+    scope['oFormDefinition']['update']['beforeEvent'] = function () {
+        beforeEvent('update');
+    };
+    scope['oFormDefinition']['insert']['beforeEvent'] = function () {
+        beforeEvent('insert');
+    };
+
+    //////////////////////////////////////////////////////////
+    // Ajouter vos Elément à détruire (variable, function, watcher) à oFormRequired.toDestructor
+};
+
+
+
+/**
+ * destructor_form
+ * Fonction appelé quand on quitte le formulaire nettoie toute les fonctions pour les rendres inutilisable en dehors du formulaire
+ * @returns {undefined}
+ */
+var destructor_form = function () {
+
+    for (var i = 0; i < oFormRequired.toDestructor.length; i++) {
+        oFormRequired.toDestructor[i] = undefined;
+        delete oFormRequired.toDestructor[i];
+    }
+
+    //supprimer la balise script du js pour pouvoir le recharger si on reviens sur le formulaire plus tard
+    angular.element('[src="' + oFormRequired.sUrl + '?version=' + oFormRequired.scope_["oProperties"]["build"] + '"]').remove();
+
+    oFormRequired = undefined;
+    delete oFormRequired;
+
+    constructor_form = undefined;
+    delete constructor_form;
+    destructor_form = undefined;
+    delete destructor_form;
+};
+
+/**********************************************************************************/
+
+
diff --git a/storage/veremes_demo_dessin/forms/ressources/published.js b/storage/veremes_demo_dessin/forms/ressources/published.js
new file mode 100755
index 00000000..de066e6f
--- /dev/null
+++ b/storage/veremes_demo_dessin/forms/ressources/published.js
@@ -0,0 +1,109 @@
+/* global angular, goog */
+// CUSTOM
+//bloque les delete du destructeur à éviter
+//'use strict';
+
+/***********************************************************************************
+ vmap_dessin Javascript
+ ***********************************************************************************/
+
+var oFormRequired = {
+    "sUrl": "",
+    "scope_": {},
+    "toDestructor": []
+};
+/**
+ * constructor_form
+ * Fonction appelé à l'initialisation du formulaire si dans la structure json javascript vaut "true"
+ * @param {type} scope
+ * @param {type} s_url
+ * @returns {undefined}
+ */
+var constructor_form = function (scope, s_url) {
+    //////////////////////////////////////////////////////////
+    //Ne pas toucher
+    console.log("constructor_form");
+
+    oFormRequired.sUrl = s_url;
+    oFormRequired.scope_ = scope;
+        
+    var parseColorFromRGBA = function (rgba) {
+        if (isRGBA(rgba)) {
+            var matchColors = /rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(\d{1,3})\)/;
+            var match = matchColors.exec(rgba);
+            var color = match[1] + ' ' + match[2] + ' ' + match[3];
+        } else {
+            color = rgba;
+        }
+        return color;
+    };
+
+    var parseColorToRGBA = function (color) {
+        if (isRGBA(color))
+            var rgba = color;
+        else
+            var rgba = 'rgba(' + color.replace(/ /g, ',') + ',1)';
+        return rgba;
+    };
+
+    var isRGBA = function (color) {
+        if (color.substring(0, 4) === 'rgba')
+            return true;
+        else
+            return false;
+    };
+
+    var beforeEvent = function (sMode) {
+        console.log('beforeEvent !!!')
+        scope['oFormValues'][sMode]['background_color'] = parseColorFromRGBA(scope['oFormValues'][sMode]['background_color_rgba']);
+        scope['oFormValues'][sMode]['contour_color'] = parseColorFromRGBA(scope['oFormValues'][sMode]['contour_color_rgba']);
+        scope['oFormValues'][sMode]['color_label'] = parseColorFromRGBA(scope['oFormValues'][sMode]['color_label_rgba']);
+    };
+    
+    if (angular.isDefined(scope['oFormValues']['update'])) {
+        scope['oFormValues']['update']['background_color_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['background_color']);
+        scope['oFormValues']['update']['contour_color_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['contour_color']);
+        scope['oFormValues']['update']['color_label_rgba'] = parseColorToRGBA(scope['oFormValues']['update']['color_label']);
+    }
+
+    // Ajoute BeforeEvent
+    scope['oFormDefinition']['update']['beforeEvent'] = function () {
+        beforeEvent('update');
+    };
+    scope['oFormDefinition']['insert']['beforeEvent'] = function () {
+        beforeEvent('insert');
+    };
+
+    //////////////////////////////////////////////////////////
+    // Ajouter vos Elément à détruire (variable, function, watcher) à oFormRequired.toDestructor
+};
+
+
+
+/**
+ * destructor_form
+ * Fonction appelé quand on quitte le formulaire nettoie toute les fonctions pour les rendres inutilisable en dehors du formulaire
+ * @returns {undefined}
+ */
+var destructor_form = function () {
+
+    for (var i = 0; i < oFormRequired.toDestructor.length; i++) {
+        oFormRequired.toDestructor[i] = undefined;
+        delete oFormRequired.toDestructor[i];
+    }
+
+    //supprimer la balise script du js pour pouvoir le recharger si on reviens sur le formulaire plus tard
+    angular.element('[src="' + oFormRequired.sUrl + '?version=' + oFormRequired.scope_["oProperties"]["build"] + '"]').remove();
+
+    oFormRequired = undefined;
+    delete oFormRequired;
+
+    constructor_form = undefined;
+    delete constructor_form;
+    destructor_form = undefined;
+    delete destructor_form;
+};
+
+/**********************************************************************************/
+
+
diff --git a/storage/veremes_demo_dessin/json/business_object.json b/storage/veremes_demo_dessin/json/business_object.json
new file mode 100755
index 00000000..6e193daf
--- /dev/null
+++ b/storage/veremes_demo_dessin/json/business_object.json
@@ -0,0 +1,20 @@
+{  
+   "business_object_id":"vmap_dessin",
+   "title":"Dessin",
+   "id_field":"draw_id",
+   "database":"vmap_angular",
+   "schema":"[TABLE_SCHEMA]",
+   "table":"v_draw",
+   "sql_summary":"select draw_id, description, text_label from [TABLE_SCHEMA].v_draw",
+   "sql_list":"select draw_id as \"Id\", text_label as \"Nom\" , area,  perimeter from [TABLE_SCHEMA].v_draw",
+   "sorted_by":"draw_id",
+   "geom_column":"geom",
+   "search_field":"draw_id",
+   "result_field":"draw_id",
+   "search_use_strict":"left",
+   "event_id":null,
+   "index":0,
+   "add_form_size":1,
+   "edit_form_size":1,
+   "display_form_size":1
+}
diff --git a/storage/veremes_demo_dessin/json/event.json b/storage/veremes_demo_dessin/json/event.json
new file mode 100755
index 00000000..b1cc925b
--- /dev/null
+++ b/storage/veremes_demo_dessin/json/event.json
@@ -0,0 +1,4 @@
+{
+	"event_id":"veremes_demo_dessin_event",
+	"description":"Événement appelé lorsque veremes_demo_dessin change"
+}
diff --git a/storage/veremes_demo_dessin/json/mapserver_layers.json b/storage/veremes_demo_dessin/json/mapserver_layers.json
new file mode 100755
index 00000000..5155634a
--- /dev/null
+++ b/storage/veremes_demo_dessin/json/mapserver_layers.json
@@ -0,0 +1,65 @@
+[{  
+   "ms_layer_id":30,
+   "name":"Dessin_Point",
+   "title":"Dessin Point",
+   "coordsys_id":2154,
+   "coordsys_label":"[EPSG:2154]-RGF93\/Lambert-93",
+   "source_id":null,
+   "connection_id":2,
+   "tableschema":"[TABLE_SCHEMA]",
+   "tablename":"v_draw_point",
+   "tableidfield":"draw_id",
+   "definition":"LAYER\r\n\tNAME \"{LAYER_NAME}\"\r\n\tTYPE {LAYER_TYPE}\r\n\tSTATUS ON\r\n\t{CONNECTION}\r\n\tDATA \"geom from {TABLE_SCHEMA}.{TABLE_NAME} USING SRID={SRID} USING UNIQUE {TABLE_ID}\"\r\n\tOPACITY {LAYER_OPACITY}\r\n\t{COORDSYS}\r\n\r\n\tMETADATA\r\n\t\t\"wms_title\" \t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_srs\" \t\t\t\t\"EPSG:2154 EPSG:3857\"\r\n\t\t\"wms_name\" \t\t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_server_version\" \t\"1.3.0\"\r\n\t\t\"wms_format\" \t\t\t\"image\/png\"\r\n\tEND\r\n\r\n\tLABELITEM \"text_label\"\r\n\tCLASS\r\n\t\tNAME \"Dessin ponctuel\"\r\n\t\tEXPRESSION ('[graph]' eq \"t\" AND '[label]' eq \"t\")\r\n\t\tSTYLE\r\n\t\t\tSYMBOL \"circle\"\r\n\t\t\tOUTLINECOLOR [contour_color]\r\n\t\t\tCOLOR [background_color]\r\n\t\t\tSIZE [geom_size]\r\n\t\tEND\r\n\t\tLABEL\r\n\t\t\tTYPE TRUETYPE\r\n\t\t\tFONT \"Arial\"\r\n\t\t\tANGLE AUTO\r\n\t\t\tSIZE [text_size]\r\n\t\t\tPOSITION UC\r\n\t\t\tCOLOR [color_label]\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dessin ponctuel\"\r\n\t\tEXPRESSION ('[graph]' eq \"t\" AND '[label]' eq \"f\")\r\n\t\tSTYLE\r\n\t\t\tSYMBOL \"circle\"\r\n\t\t\tOUTLINECOLOR [contour_color]\r\n\t\t\tCOLOR [background_color]\r\n\t\t\tSIZE [geom_size]\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dessin ponctuel\"\r\n\t\tEXPRESSION ('[graph]' eq \"f\" AND '[label]' eq \"t\")\r\n\t\tSTYLE\r\n\t\tEND\r\n\t\tLABEL\r\n\t\t\tTYPE TRUETYPE\r\n\t\t\tFONT \"Arial\"\r\n\t\t\tANGLE AUTO\r\n\t\t\tSIZE [text_size]\r\n\t\t\tPOSITION UC\r\n\t\t\tCOLOR [color_label]\r\n\t\tEND\r\n\tEND\r\nEND\r\n\r\n",
+   "active":true,
+   "opacity":100,
+   "ms_layertype_id":"POINT",
+   "private_connection":true,
+   "connection_label":"Connexion privée",
+   "source_label":null,
+   "definitiontmp":null,
+   "database":null,
+   "wmsservices":"",
+   "wmsservices_label":""
+}, {  
+   "ms_layer_id":31,
+   "name":"Dessin_Ligne",
+   "title":"Dessin Ligne",
+   "coordsys_id":2154,
+   "coordsys_label":"[EPSG:2154]-RGF93\/Lambert-93",
+   "source_id":null,
+   "connection_id":2,
+   "tableschema":"[TABLE_SCHEMA]",
+   "tablename":"v_draw_line",
+   "tableidfield":"draw_id",
+   "definition":"LAYER\r\n\tNAME \"{LAYER_NAME}\"\r\n\tTYPE {LAYER_TYPE}\r\n\tSTATUS ON\r\n\t{CONNECTION}\r\n\tDATA \"geom from {TABLE_SCHEMA}.{TABLE_NAME} USING SRID={SRID} USING UNIQUE {TABLE_ID}\"\r\n\tOPACITY {LAYER_OPACITY}\r\n\t{COORDSYS}\r\n\r\n\tMETADATA\r\n\t\t\"wms_title\" \t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_srs\" \t\t\t\t\"EPSG:2154 EPSG:3857\"\r\n\t\t\"wms_name\" \t\t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_server_version\" \t\"1.3.0\"\r\n\t\t\"wms_format\" \t\t\t\"image\/png\"\r\n\tEND\r\n\r\n\tLABELITEM \"text_label\"\r\n\tCLASS\r\n\t\tNAME \"Dessin lin\u00e9aire\"\r\n\t\tEXPRESSION ('[graph]' eq \"t\" AND '[label]' eq \"t\")\r\n\t\tSTYLE\r\n\t\t\tOUTLINECOLOR [contour_color]\r\n\t\t\tCOLOR [background_color]\r\n\t\t\tWIDTH [geom_size]\r\n\t\tEND\r\n\t\tLABEL\r\n\t\t\tTYPE TRUETYPE\r\n\t\t\tFONT \"Arial\"\r\n\t\t\tANGLE AUTO\r\n\t\t\tSIZE [text_size]\r\n\t\t\tPOSITION UC\r\n\t\t\tCOLOR [color_label]\r\n\t\t\tWRAP \"|\"\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dessin lin\u00e9aire\"\r\n\t\tEXPRESSION ('[graph]' eq \"t\" AND '[label]' eq \"f\")\r\n\t\tSTYLE\r\n\t\t\tOUTLINECOLOR [contour_color]\r\n\t\t\tCOLOR [background_color]\r\n\t\t\tWIDTH [geom_size]\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dessin lin\u00e9aire\"\r\n\t\tEXPRESSION ('[graph]' eq \"f\" AND '[label]' eq \"t\")\r\n\t\tSTYLE\r\n\t\tEND\r\n\t\tLABEL\r\n\t\t\tTYPE TRUETYPE\r\n\t\t\tFONT \"Arial\"\r\n\t\t\tANGLE AUTO\r\n\t\t\tSIZE [text_size]\r\n\t\t\tPOSITION UC\r\n\t\t\tCOLOR [color_label]\r\n\t\t\tWRAP \"|\"\r\n\t\tEND\r\n\tEND\r\nEND",
+   "active":true,
+   "opacity":100,
+   "ms_layertype_id":"LINE",
+   "private_connection":true,
+   "connection_label":"Connexion privée",
+   "source_label":null,
+   "database":null,
+   "wmsservices":"",
+   "wmsservices_label":""
+}, {  
+   "ms_layer_id":32,
+   "name":"Dessin_Polygone",
+   "title":"Dessin Polygone",
+   "coordsys_id":2154,
+   "coordsys_label":"[EPSG:2154]-RGF93\/Lambert-93",
+   "source_id":null,
+   "connection_id":2,
+   "tableschema":"[TABLE_SCHEMA]",
+   "tablename":"v_draw_poly",
+   "tableidfield":"draw_id",
+   "definition":"LAYER\r\n\tNAME \"{LAYER_NAME}\"\r\n\tTYPE {LAYER_TYPE}\r\n\tSTATUS ON\r\n\t{CONNECTION}\r\n\tDATA \"geom from {TABLE_SCHEMA}.{TABLE_NAME} USING SRID={SRID} USING UNIQUE {TABLE_ID}\"\r\n\tOPACITY {LAYER_OPACITY}\r\n\t{COORDSYS}\r\n\t\r\n\tMETADATA\r\n\t\t\"wms_title\" \t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_srs\" \t\t\t\t\"EPSG:2154 EPSG:3857\"\r\n\t\t\"wms_name\" \t\t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_server_version\" \t\"1.1.0\"\r\n\t\t\"wms_format\" \t\t\t\"image\/png\"\r\n\tEND\r\n\r\n\tLABELITEM \"text_label\"\r\n\r\n\tCLASS\r\n\t\tNAME \"Dessin surfacique\"\r\n\t\tEXPRESSION ('[graph]' eq \"t\" AND '[label]' eq \"t\")\r\n\t\tSTYLE\r\n\t\t\tOUTLINECOLOR [contour_color]\r\n\t\t\tWIDTH [geom_size]\r\n\t\t\tCOLOR [background_color]\r\n\t\tEND\r\n\t\tLABEL\r\n\t\t\tTYPE TRUETYPE\r\n\t\t\tFONT \"Arial\"\r\n\t\t\tANGLE AUTO\r\n\t\t\tSIZE [text_size]\r\n\t\t\tPOSITION CC\r\n\t\t\tCOLOR [color_label]\r\n\t\t\tWRAP \"|\"\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dessin surfacique\"\r\n\t\tEXPRESSION ('[graph]' eq \"t\" AND '[label]' eq \"f\")\r\n\t\tSTYLE\r\n\t\t\tOUTLINECOLOR [contour_color]\r\n\t\t\tWIDTH [geom_size]\r\n\t\t\tCOLOR [background_color]\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dessin surfacique\"\r\n\t\tEXPRESSION ('[graph]' eq \"f\" AND '[label]' eq \"t\")\r\n\t\tSTYLE\r\n\t\tEND\r\n\t\tLABEL\r\n\t\t\tTYPE TRUETYPE\r\n\t\t\tFONT \"Arial\"\r\n\t\t\tANGLE AUTO\r\n\t\t\tSIZE [text_size]\r\n\t\t\tPOSITION CC\r\n\t\t\tCOLOR [color_label]\r\n\t\t\tWRAP \"|\"\r\n\t\tEND\r\n\tEND\r\nEND",
+   "active":true,
+   "opacity":100,
+   "ms_layertype_id":"POLYGON",
+   "private_connection":true,
+   "connection_label":"Connexion privée",
+   "source_label":null,
+   "database":null,
+   "wmsservices":"",
+   "wmsservices_label":""
+}]
\ No newline at end of file
diff --git a/storage/veremes_demo_dessin/package.json b/storage/veremes_demo_dessin/package.json
new file mode 100755
index 00000000..9bf4d6f5
--- /dev/null
+++ b/storage/veremes_demo_dessin/package.json
@@ -0,0 +1,5 @@
+{
+	"author": "Armand",
+	"mame": "veremes_demo_dessin",
+	"description": "Objet métier permettant la visualisation des dessins"
+}
diff --git a/storage/veremes_demo_dessin/sql/structure.json b/storage/veremes_demo_dessin/sql/structure.json
new file mode 100755
index 00000000..f475b453
--- /dev/null
+++ b/storage/veremes_demo_dessin/sql/structure.json
@@ -0,0 +1,6 @@
+{
+	"schema": "s_draw",
+	"srid": "2154",
+	"tables": ["draw, v_draw, v_draw_line, v_draw_poly, v_draw_point"],
+	"sequences": ["seq_draw"]
+}
\ No newline at end of file
diff --git a/storage/veremes_demo_dessin/sql/table.sql b/storage/veremes_demo_dessin/sql/table.sql
new file mode 100755
index 00000000..1b037df8
--- /dev/null
+++ b/storage/veremes_demo_dessin/sql/table.sql
@@ -0,0 +1,282 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 9.3.14
+-- Dumped by pg_dump version 9.5.6
+
+-- Started on 2017-06-07 09:12:15 CEST
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+-- SET row_security = off;
+
+SET search_path = [TABLE_SCHEMA], pg_catalog;
+
+--
+-- TOC entry 452 (class 1259 OID 67429)
+-- Name: seq_draw; Type: SEQUENCE; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE SEQUENCE seq_draw
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+SET default_tablespace = '';
+
+SET default_with_oids = true;
+
+--
+-- TOC entry 453 (class 1259 OID 67620)
+-- Name: draw; Type: TABLE; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE TABLE draw (
+    draw_id integer DEFAULT nextval('seq_draw'::regclass) NOT NULL,
+    theme character varying(50),
+    comments text,
+    description character varying(255),
+    text_size integer,
+    geom_size integer,
+    user_id integer,
+    label boolean DEFAULT true,
+    graph boolean DEFAULT true,
+    contour_color character varying(50),
+    background_color character varying(50),
+    color_label character varying(50),
+    area character varying(30),
+    area_label boolean,
+    perimeter character varying(30),
+    perimeter_label boolean,
+    text_label character varying(255),
+    geom public.geometry(Geometry,[SRID]),
+    CONSTRAINT enforce_dims_geom CHECK ((public.st_ndims(geom) = 2)),
+    CONSTRAINT enforce_srid_geom CHECK ((public.st_srid(geom) = [SRID]))
+);
+
+
+--
+-- TOC entry 490 (class 1259 OID 68425)
+-- Name: v_draw; Type: VIEW; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE VIEW v_draw AS
+ SELECT draw.draw_id,
+    draw.theme,
+    draw.comments,
+    draw.description,
+    draw.text_size,
+    draw.geom_size,
+    draw.contour_color,
+    draw.background_color,
+    draw.color_label,
+    draw.user_id,
+    draw.label,
+    draw.graph,
+    draw.area,
+    draw.area_label,
+    draw.perimeter,
+    draw.perimeter_label,
+    draw.text_label,
+    "substring"(public.st_astext(draw.geom), 1, ("position"(public.st_astext(draw.geom), '('::text) - 1)) AS geom_type,
+    draw.geom,
+    "user".login
+   FROM (draw
+     JOIN s_vitis."user" ON ((draw.user_id = "user".user_id)))
+  WHERE (("user".login)::name = "current_user"())
+  ORDER BY draw.draw_id DESC;
+
+
+--
+-- TOC entry 454 (class 1259 OID 67686)
+-- Name: v_draw_line; Type: VIEW; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE VIEW v_draw_line AS
+ SELECT draw.draw_id,
+    draw.theme,
+    draw.comments,
+    draw.description,
+    draw.text_size,
+    draw.geom_size,
+    draw.contour_color,
+    draw.background_color,
+    draw.color_label,
+    draw.user_id,
+    draw.label,
+    draw.graph,
+    draw.area,
+    draw.area_label,
+    draw.perimeter,
+    draw.perimeter_label,
+    draw.text_label,
+    "substring"(public.st_astext(draw.geom), 1, ("position"(public.st_astext(draw.geom), '('::text) - 1)) AS geom_type,
+    draw.geom,
+    "user".login
+   FROM (draw
+     JOIN s_vitis."user" ON ((draw.user_id = "user".user_id)))
+  WHERE ((public.st_geometrytype(draw.geom) ~~ '%Line%'::text) AND (("user".login)::name = "current_user"()));
+
+
+--
+-- TOC entry 455 (class 1259 OID 67691)
+-- Name: v_draw_point; Type: VIEW; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE VIEW v_draw_point AS
+ SELECT draw.draw_id,
+    draw.theme,
+    draw.comments,
+    draw.description,
+    draw.text_size,
+    draw.geom_size,
+    draw.contour_color,
+    draw.background_color,
+    draw.color_label,
+    draw.user_id,
+    draw.label,
+    draw.graph,
+    draw.area,
+    draw.area_label,
+    draw.perimeter,
+    draw.perimeter_label,
+    draw.text_label,
+    "substring"(public.st_astext(draw.geom), 1, ("position"(public.st_astext(draw.geom), '('::text) - 1)) AS geom_type,
+    draw.geom,
+    "user".login
+   FROM (draw
+     JOIN s_vitis."user" ON ((draw.user_id = "user".user_id)))
+  WHERE ((public.st_geometrytype(draw.geom) ~~ '%Point%'::text) AND (("user".login)::name = "current_user"()));
+
+
+--
+-- TOC entry 456 (class 1259 OID 67696)
+-- Name: v_draw_poly; Type: VIEW; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE VIEW v_draw_poly AS
+ SELECT draw.draw_id,
+    draw.theme,
+    draw.comments,
+    draw.description,
+    draw.text_size,
+    draw.geom_size,
+    draw.contour_color,
+    draw.background_color,
+    draw.color_label,
+    draw.user_id,
+    draw.label,
+    draw.graph,
+    draw.area,
+    draw.area_label,
+    draw.perimeter,
+    draw.perimeter_label,
+    draw.text_label,
+    "substring"(public.st_astext(draw.geom), 1, ("position"(public.st_astext(draw.geom), '('::text) - 1)) AS geom_type,
+    draw.geom,
+    "user".login
+   FROM (draw
+     JOIN s_vitis."user" ON ((draw.user_id = "user".user_id)))
+  WHERE ((public.st_geometrytype(draw.geom) ~~ '%Polygon%'::text) AND (("user".login)::name = "current_user"()));
+
+
+--
+-- TOC entry 3985 (class 2606 OID 67632)
+-- Name: pk_draw; Type: CONSTRAINT; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+ALTER TABLE ONLY draw
+    ADD CONSTRAINT pk_draw PRIMARY KEY (draw_id);
+
+
+--
+-- TOC entry 3983 (class 1259 OID 67677)
+-- Name: dessin_geom; Type: INDEX; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE INDEX dessin_geom ON draw USING gist (geom);
+
+
+--
+-- TOC entry 4211 (class 2618 OID 68430)
+-- Name: delete_v_draw; Type: RULE; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE RULE delete_v_draw AS
+    ON DELETE TO v_draw DO INSTEAD  DELETE FROM draw
+  WHERE (draw.draw_id = old.draw_id);
+
+
+--
+-- TOC entry 4212 (class 2618 OID 68431)
+-- Name: insert_v_draw; Type: RULE; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE RULE insert_v_draw AS
+    ON INSERT TO v_draw DO INSTEAD  INSERT INTO draw (theme, comments, description, text_size, user_id, label, contour_color, background_color, color_label, geom, graph, geom_size, area, area_label, perimeter, perimeter_label, text_label)
+  VALUES (new.theme, new.comments, new.description, new.text_size, ( SELECT "user".user_id
+           FROM s_vitis."user"
+          WHERE (("user".login)::name = "current_user"())), new.label, new.contour_color, new.background_color, new.color_label, new.geom, new.graph, new.geom_size, new.area, new.area_label, new.perimeter, new.perimeter_label, new.text_label)
+  RETURNING draw.draw_id,
+    draw.theme,
+    draw.comments,
+    draw.description,
+    draw.text_size,
+    draw.geom_size,
+    draw.contour_color,
+    draw.background_color,
+    draw.color_label,
+    draw.user_id,
+    draw.label,
+    draw.graph,
+    draw.area,
+    draw.area_label,
+    draw.perimeter,
+    draw.perimeter_label,
+    draw.text_label,
+    "substring"(public.st_astext(draw.geom), 1, ("position"(public.st_astext(draw.geom), '('::text) - 1)) AS geom_type,
+    draw.geom,
+    ''::character varying AS "varchar";
+
+
+--
+-- TOC entry 4213 (class 2618 OID 68433)
+-- Name: update_v_draw; Type: RULE; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+CREATE RULE update_v_draw AS
+    ON UPDATE TO v_draw DO INSTEAD  UPDATE draw SET draw_id = new.draw_id, theme = new.theme, comments = new.comments, description = new.description, text_size = new.text_size, user_id = new.user_id, label = new.label, contour_color = new.contour_color, background_color = new.background_color, color_label = new.color_label, geom = new.geom, graph = new.graph, geom_size = new.geom_size, area = new.area, area_label = new.area_label, perimeter = new.perimeter, perimeter_label = new.perimeter_label, text_label = new.text_label
+  WHERE (draw.draw_id = new.draw_id);
+
+
+--
+-- TOC entry 3986 (class 2606 OID 67633)
+-- Name: fk_user_login; Type: FK CONSTRAINT; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+ALTER TABLE ONLY draw
+    ADD CONSTRAINT fk_user_login FOREIGN KEY (user_id) REFERENCES s_vitis."user"(user_id) ON DELETE CASCADE;
+
+
+GRANT USAGE ON SCHEMA [TABLE_SCHEMA] TO vmap_user;
+GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE [TABLE_SCHEMA].v_draw TO vmap_user;
+GRANT SELECT ON TABLE [TABLE_SCHEMA].v_draw_point TO vmap_user;
+GRANT SELECT ON TABLE [TABLE_SCHEMA].v_draw_line TO vmap_user;
+GRANT SELECT ON TABLE [TABLE_SCHEMA].v_draw_poly TO vmap_user;
+GRANT SELECT, UPDATE ON SEQUENCE [TABLE_SCHEMA].seq_draw TO vmap_user;
+
+
+-- Completed on 2017-06-07 09:12:21 CEST
+
+--
+-- PostgreSQL database dump complete
+--
+
diff --git a/storage/veremes_oads_dossier/forms/custom.json b/storage/veremes_oads_dossier/forms/custom.json
new file mode 100755
index 00000000..ae1448e7
--- /dev/null
+++ b/storage/veremes_oads_dossier/forms/custom.json
@@ -0,0 +1,175 @@
+{
+  "display": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,	
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "author",
+            "label": "author",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "author_3_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "create_date",
+            "label": "create_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "create_date_4_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "modifier",
+            "label": "modifier",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "modifier_5_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "update_date",
+            "label": "update_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "update_date_6_1"
+          }
+        ]
+      }
+    ],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": [
+            "dossier_num",
+            "author",
+            "create_date",
+            "modifier",
+            "update_date"
+          ]
+        }
+      ]
+    }
+  },
+  "search": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": []
+        }
+      ]
+    }
+  },
+  "insert": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      }
+    ],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": [
+            "dossier_num"
+          ]
+        }
+      ]
+    }
+  },
+  "update": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      }
+    ],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": [
+            "dossier_num"
+          ]
+        }
+      ]
+    }
+  },
+  "datasources": {}
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/forms/default.json b/storage/veremes_oads_dossier/forms/default.json
new file mode 100755
index 00000000..6c38ec46
--- /dev/null
+++ b/storage/veremes_oads_dossier/forms/default.json
@@ -0,0 +1,259 @@
+{
+  "display": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "dossier_id",
+            "label": "dossier_id",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "author",
+            "label": "author",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "create_date",
+            "label": "create_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "modifier",
+            "label": "modifier",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "update_date",
+            "label": "update_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      }
+    ]
+  },
+  "search": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": []
+  },
+  "insert": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "integer",
+            "name": "dossier_id",
+            "label": "dossier_id",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "author",
+            "label": "author",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "create_date",
+            "label": "create_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "modifier",
+            "label": "modifier",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "update_date",
+            "label": "update_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12
+          }
+        ]
+      }
+    ]
+  },
+  "update": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "integer",
+            "name": "dossier_id",
+            "label": "dossier_id",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_id_1_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "author",
+            "label": "author",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "author_3_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "create_date",
+            "label": "create_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "create_date_4_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "modifier",
+            "label": "modifier",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "modifier_5_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "update_date",
+            "label": "update_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "update_date_6_1"
+          }
+        ]
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/forms/published.json b/storage/veremes_oads_dossier/forms/published.json
new file mode 100755
index 00000000..7dd25b34
--- /dev/null
+++ b/storage/veremes_oads_dossier/forms/published.json
@@ -0,0 +1,175 @@
+{
+  "display": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "author",
+            "label": "author",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "author_3_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "create_date",
+            "label": "create_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "create_date_4_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "modifier",
+            "label": "modifier",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "modifier_5_1"
+          }
+        ]
+      },
+      {
+        "fields": [
+          {
+            "type": "label",
+            "name": "update_date",
+            "label": "update_date",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "update_date_6_1"
+          }
+        ]
+      }
+    ],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": [
+            "dossier_num",
+            "author",
+            "create_date",
+            "modifier",
+            "update_date"
+          ]
+        }
+      ]
+    }
+  },
+  "search": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": []
+        }
+      ]
+    }
+  },
+  "insert": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      }
+    ],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": [
+            "dossier_num"
+          ]
+        }
+      ]
+    }
+  },
+  "update": {
+    "name": "custom-form",
+    "title": "veremes_soads_dossier",
+    "input_size": "xxs",
+    "nb_cols": 12,
+    "javascript": false,
+    "rows": [
+      {
+        "fields": [
+          {
+            "type": "text",
+            "name": "dossier_num",
+            "label": "dossier_num",
+            "disabled": false,
+            "required": false,
+            "nb_cols": 12,
+            "id": "dossier_num_2_1"
+          }
+        ]
+      }
+    ],
+    "tabs": {
+      "position": "top",
+      "list": [
+        {
+          "label": "Tab 0",
+          "elements": [
+            "dossier_num"
+          ]
+        }
+      ]
+    }
+  },
+  "datasources": {}
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/json/business_object.json b/storage/veremes_oads_dossier/json/business_object.json
new file mode 100755
index 00000000..77975551
--- /dev/null
+++ b/storage/veremes_oads_dossier/json/business_object.json
@@ -0,0 +1,20 @@
+{  
+	"business_object_id":"veremes_oads_dossier",
+	"title":"veremes_oads_dossier",
+	"id_field":"dossier_num",
+	"database":"vmap",
+	"schema":"[TABLE_SCHEMA]",
+	"table":"dossier",
+	"sql_summary":"SELECT commune as \"Commune\", code_insee as \"Code INSEE\", type_dossier as \"Type du dossier\", dossier_num as \"Numéro du dossier\", author as \"Créateur\", create_date as \"Date de création\", modifier as \"Mise à jour\", update_date as \"Date de màj\"  FROM veremes_oads.v_dossier",
+	"sql_list":"SELECT dossier_num, code_insee, commune, division, annee_dossier, type_dossier, creation_automatique,author, create_date, modifier, update_date  FROM [TABLE_SCHEMA].v_dossier",
+	"sorted_by":"dossier_num",
+	"geom_column":"geom",
+	"search_field":"dossier_num",
+	"result_field":"dossier_num",
+	"search_use_strict":"left",
+	"event_id":null,
+	"index":2,
+	"add_form_size":1,
+	"edit_form_size":1,
+	"display_form_size":1
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/json/event.json b/storage/veremes_oads_dossier/json/event.json
new file mode 100755
index 00000000..9e26dfee
--- /dev/null
+++ b/storage/veremes_oads_dossier/json/event.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/json/mapserver_layers.json b/storage/veremes_oads_dossier/json/mapserver_layers.json
new file mode 100755
index 00000000..aeae16f8
--- /dev/null
+++ b/storage/veremes_oads_dossier/json/mapserver_layers.json
@@ -0,0 +1,45 @@
+[{  
+	"ms_layer_id":80,
+	"name":"Oads_dossier",
+	"title":"Oads_dossier",
+	"coordsys_id":2154,
+	"coordsys_label":"[EPSG:2154]-RGF93/Lambert-93",
+	"source_id":null,
+	"connection_id":6,
+	"tableschema":"veremes_oads",
+	"tablename":"v_dossier",
+	"tableidfield":"dossier_num",
+	"definition":"LAYER\r\n\tNAME \"{LAYER_NAME}\"\r\n\tTYPE {LAYER_TYPE}\r\n\tSTATUS DEFAULT\r\n\t{CONNECTION}\r\n\tDATA \"geom from {TABLE_SCHEMA}.{TABLE_NAME} USING SRID={SRID} USING UNIQUE {TABLE_ID}\"\r\n\tOPACITY {LAYER_OPACITY}\r\n\t{COORDSYS}\r\n\r\n\tMETADATA\r\n\t\t\"wms_title\" \t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_srs\" \t\t\t\t\"EPSG:2154 EPSG:3857\"\r\n\t\t\"wms_name\" \t\t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_server_version\" \t\"1.3.0\"\r\n\t\t\"wms_format\" \t\t\t\"image\/png\"\r\n\tEND\r\n\r\n\tCLASS\r\n\t\tNAME \"Dossier\"\r\n\t\tSTYLE\r\n\t\t\tCOLOR \"#FF9896\"\r\n\t\t\tOUTLINECOLOR \"#A553A5\"\r\n\t\t\tSIZE 1\r\n\t\tEND\r\n\tEND\r\nEND",
+	"active":true,
+	"opacity":70,
+	"ms_layertype_id":"POLYGON",
+	"private_connection":true,
+	"connection_label":"Connexion privée",
+	"source_label":null,
+	"definitiontmp":null,
+	"database":"vmap",
+	"wmsservices":"",
+   "wmsservices_label":""
+},{  
+	"ms_layer_id":90,
+	"name":"Oads_dossier_type",
+	"title":"Oads_dossier_type",
+	"coordsys_id":2154,
+	"coordsys_label":"[EPSG:2154]-RGF93/Lambert-93",
+	"source_id":null,
+	"connection_id":6,
+	"tableschema":"veremes_oads",
+	"tablename":"v_dossier",
+	"tableidfield":"dossier_num",
+	"definition":"LAYER\r\n\tNAME \"{LAYER_NAME}\"\r\n\tTYPE {LAYER_TYPE}\r\n\tSTATUS DEFAULT\r\n\t{CONNECTION}\r\n\tDATA \"geom from {TABLE_SCHEMA}.{TABLE_NAME} USING SRID={SRID} USING UNIQUE {TABLE_ID}\"\r\n\tOPACITY {LAYER_OPACITY}\r\n\tMAXSCALEDENOM 10000\r\n\t{COORDSYS}\r\n\tMETADATA\r\n\t\t\"wms_title\" \t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_srs\" \t\t\t\t\"EPSG:2154\"\r\n\t\t\"wms_name\" \t\t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_server_version\" \t\"1.3.0\"\r\n\t\t\"wms_format\" \t\t\t\"image/png\"\r\n\tEND\r\n\tFILTER ([type_dossier] = ''%type_dossier%'' or ''%type_dossier%'' = ''-1000000'')\r\n\tVALIDATION\r\n\t\t''type_dossier'' ''^[a-zA-Z0-9_|]*$''\r\n\t\t''default_type_dossier'' ''-1000000''\r\n\tEND\r\n\r\n\tCLASS\r\n\t\tNAME \"PC\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"PC\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#FFC240\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"AT\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"AT\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#4E7887\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"CU\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"CU\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#129E18\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"DIA\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"DIA\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#BDB300\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"DP\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"DP\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#2E9BE8\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"PA\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"PA\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#F200FF\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"PD\"\r\n\t\tEXPRESSION (\"[type_dossier]\" = \"PD\")\r\n\t\tSTYLE\r\n\t\t\tGEOMTRANSFORM \"centroid\"\r\n\t\t\tSYMBOL 'circle'\r\n\t\t\tCOLOR \"#FA2525\"\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tSIZE 20\r\n\t\t\tWIDTH 1\r\n\t\tEND\r\n\tEND\r\n\tEND",
+	"active":true,
+	"opacity":100,
+	"ms_layertype_id":"POLYGON",
+	"private_connection":true,
+	"connection_label":"Connexion privée",
+	"source_label":null,
+	"definitiontmp":null,
+	"database":"vmap",
+	"wmsservices":"",
+   "wmsservices_label":""
+}]
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/package.json b/storage/veremes_oads_dossier/package.json
new file mode 100755
index 00000000..e509782f
--- /dev/null
+++ b/storage/veremes_oads_dossier/package.json
@@ -0,0 +1,5 @@
+{
+	"author": "Laurent",
+	"mame": "veremes_oads_dossier",
+	"description": "Objet métier permettant la visualisation des dossiers OpenAds"
+}
diff --git a/storage/veremes_oads_dossier/sql/structure.json b/storage/veremes_oads_dossier/sql/structure.json
new file mode 100755
index 00000000..7dcd23b6
--- /dev/null
+++ b/storage/veremes_oads_dossier/sql/structure.json
@@ -0,0 +1,6 @@
+{
+	"schema": "veremes_oads",
+	"srid": "2154",
+	"tables": ["dossier, parcelle_dossier, parcelle_oads, v_dossier, v_parcelle_dossier"],
+	"sequences": [""]
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_dossier/sql/table.sql b/storage/veremes_oads_dossier/sql/table.sql
new file mode 100755
index 00000000..463a9356
--- /dev/null
+++ b/storage/veremes_oads_dossier/sql/table.sql
@@ -0,0 +1,194 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 9.3.14
+-- Dumped by pg_dump version 9.5.6
+
+-- Started on 2017-06-07 09:12:15 CEST
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+-- SET row_security = off;
+
+SET search_path = [TABLE_SCHEMA], public, pg_catalog;
+
+--
+-- TOC entry 452 (class 1259 OID 67429)
+-- Name: seq_draw; Type: SEQUENCE; Schema: [TABLE_SCHEMA]; Owner: -
+--
+
+
+SET default_tablespace = '';
+
+SET default_with_oids = true;
+  
+select s_vitis.create_role_if_not_exists('oads_user', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION'); 
+INSERT INTO s_vitis.privileges(rolname, description) VALUES ('oads_user', 'rôle utilisateur du module Open Ads de vMap"');
+
+CREATE TABLE [TABLE_SCHEMA].dossier
+(
+  dossier_num character varying(30) NOT NULL,
+  author character varying(50),
+  create_date date,
+  modifier character varying(50),
+  update_date date,
+  geom geometry(MultiPolygon,2154),
+  CONSTRAINT pk_dossier_num PRIMARY KEY (dossier_num),
+  CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2),
+  CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 2154)
+)
+WITH (
+  OIDS=FALSE
+);
+COMMENT ON COLUMN [TABLE_SCHEMA].dossier.author  IS 'Auteur de l''enregistrement';
+COMMENT ON COLUMN [TABLE_SCHEMA].dossier.create_date  IS 'Date de création de l''enregistrement';
+COMMENT ON COLUMN [TABLE_SCHEMA].dossier.modifier  IS 'Dernier modificateur de l''enregistrement';
+COMMENT ON COLUMN [TABLE_SCHEMA].dossier.update_date  IS 'Date de la dernière mise à jour de l''enregistrement';
+COMMENT ON COLUMN [TABLE_SCHEMA].dossier.geom  IS 'Emprise globale du dossier';
+
+
+CREATE TABLE [TABLE_SCHEMA].parcelle_dossier
+(
+  dossier_num character varying(30) NOT NULL,
+  id_par character(14) NOT NULL,
+  CONSTRAINT pk_dossier_num_id_par PRIMARY KEY (dossier_num, id_par)
+)
+WITH (
+  OIDS=FALSE
+);
+  
+   
+CREATE TABLE [TABLE_SCHEMA].parcelle_oads
+(
+  id_par character(14) NOT NULL,
+  geom geometry(MultiPolygon,2154),
+  CONSTRAINT pk_id_par PRIMARY KEY (id_par),
+  CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2),
+  CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 2154)
+)
+WITH (
+  OIDS=FALSE
+);
+COMMENT ON COLUMN [TABLE_SCHEMA].dossier.geom  IS 'geométrie de la parcelle ';
+
+CREATE TRIGGER insert_author_date_dossier
+  BEFORE INSERT
+  ON [TABLE_SCHEMA].dossier
+  FOR EACH ROW
+  EXECUTE PROCEDURE s_vitis.insert_author_date();
+
+CREATE TRIGGER update_modifier_date_dossier
+  BEFORE UPDATE
+  ON [TABLE_SCHEMA].dossier
+  FOR EACH ROW
+  EXECUTE PROCEDURE s_vitis.update_modifier_date();
+
+-- Index: [TABLE_SCHEMA].dossier_geom
+-- DROP INDEX [TABLE_SCHEMA].dossier_geom;
+
+CREATE INDEX dossier_geom
+  ON [TABLE_SCHEMA].dossier
+  USING gist
+  (geom);
+
+-- Index: [TABLE_SCHEMA].dossier_geom
+-- DROP INDEX [TABLE_SCHEMA].dossier_geom;
+
+CREATE INDEX parcelle_oads_geom
+  ON [TABLE_SCHEMA].parcelle_oads
+  USING gist
+  (geom);
+
+CREATE OR REPLACE VIEW [TABLE_SCHEMA].v_dossier AS   
+ SELECT dossier.dossier_num, 
+        CASE
+            WHEN length(dossier.dossier_num::text) = 15 OR length(dossier.dossier_num::text) = 17 THEN substr(dossier.dossier_num::text, 4, 5)
+            WHEN length(dossier.dossier_num::text) = 16 OR length(dossier.dossier_num::text) = 18 THEN substr(dossier.dossier_num::text, 5, 5)
+            ELSE '50'::text
+        END AS code_insee, 
+    v_vmap_commune.nom AS commune, 
+        CASE
+            WHEN length(dossier.dossier_num::text) = 15 OR length(dossier.dossier_num::text) = 17 THEN substr(dossier.dossier_num::text, 11, 1)
+            WHEN length(dossier.dossier_num::text) = 16 OR length(dossier.dossier_num::text) = 18 THEN substr(dossier.dossier_num::text, 12, 1)
+            ELSE NULL::text
+        END AS division, 
+        CASE
+            WHEN length(dossier.dossier_num::text) = 15 OR length(dossier.dossier_num::text) = 17 THEN substr(dossier.dossier_num::text, 9, 2)
+            WHEN length(dossier.dossier_num::text) = 16 OR length(dossier.dossier_num::text) = 18 THEN substr(dossier.dossier_num::text, 10, 2)
+            ELSE NULL::text
+        END AS annee_dossier, 
+        CASE
+            WHEN length(dossier.dossier_num::text) = 15 OR length(dossier.dossier_num::text) = 17 THEN substr(dossier.dossier_num::text, 1, 2)
+            WHEN length(dossier.dossier_num::text) = 16 OR length(dossier.dossier_num::text) = 18 THEN substr(dossier.dossier_num::text, 1, 3)
+            ELSE NULL::text
+        END AS type_dossier, 
+        CASE
+            WHEN dossier.author::text IS NULL THEN 'Oui'::text
+            ELSE 'Non'::text
+        END AS creation_automatique, 
+    dossier.author, dossier.create_date, dossier.modifier, dossier.update_date, 
+    dossier.geom
+   FROM [TABLE_SCHEMA].dossier
+   LEFT JOIN s_cadastre.v_vmap_commune ON 
+   CASE
+       WHEN length(dossier.dossier_num::text) = 15 OR length(dossier.dossier_num::text) = 17 THEN substr(dossier.dossier_num::text, 4, 5)
+       WHEN length(dossier.dossier_num::text) = 16 OR length(dossier.dossier_num::text) = 18 THEN substr(dossier.dossier_num::text, 5, 5)
+       ELSE NULL::text
+   END = v_vmap_commune.id_com::text
+  WHERE 
+   CASE
+       WHEN length(dossier.dossier_num::text) = 15 OR length(dossier.dossier_num::text) = 17 THEN substr(dossier.dossier_num::text, 4, 5)
+       WHEN length(dossier.dossier_num::text) = 16 OR length(dossier.dossier_num::text) = 18 THEN substr(dossier.dossier_num::text, 5, 5)
+       ELSE NULL::text
+   END ~ similar_escape(( SELECT "user".restriction
+      FROM s_vitis."user"
+     WHERE "user".login::name = "current_user"()), NULL::text)
+  ORDER BY dossier.dossier_num DESC;
+
+-- Rule: delete_v_dossier ON [TABLE_SCHEMA].v_dossier
+
+-- DROP RULE delete_v_dossier ON [TABLE_SCHEMA].v_dossier;
+
+CREATE OR REPLACE RULE delete_v_dossier AS
+    ON DELETE TO [TABLE_SCHEMA].v_dossier DO INSTEAD  DELETE FROM [TABLE_SCHEMA].dossier
+  WHERE dossier.dossier_num = old.dossier_num;
+
+-- Rule: insert_v_dossier ON [TABLE_SCHEMA].v_dossier
+
+-- DROP RULE insert_v_dossier ON [TABLE_SCHEMA].v_dossier;
+
+CREATE OR REPLACE RULE insert_v_dossier AS
+    ON INSERT TO [TABLE_SCHEMA].v_dossier DO INSTEAD  INSERT INTO [TABLE_SCHEMA].dossier ( dossier_num, author, create_date, geom)
+  VALUES (new.dossier_num, "current_user"()::text, 'now'::text::date, new.geom);
+
+-- Rule: update_v_dossier ON [TABLE_SCHEMA].v_dossier
+-- DROP RULE update_v_dossier ON [TABLE_SCHEMA].v_dossier;
+
+CREATE OR REPLACE RULE update_v_dossier AS
+    ON UPDATE TO [TABLE_SCHEMA].v_dossier DO INSTEAD  UPDATE [TABLE_SCHEMA].dossier SET geom = new.geom
+  WHERE dossier.dossier_num = new.dossier_num;
+  
+
+ALTER TABLE [TABLE_SCHEMA].dossier OWNER TO u_vitis;
+GRANT ALL ON TABLE [TABLE_SCHEMA].dossier TO u_vitis;
+GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE [TABLE_SCHEMA].dossier TO oads_user;
+
+ALTER TABLE [TABLE_SCHEMA].parcelle_dossier OWNER TO u_vitis;
+GRANT ALL ON TABLE [TABLE_SCHEMA].parcelle_dossier TO u_vitis;
+GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE [TABLE_SCHEMA].parcelle_dossier TO oads_user;
+
+ALTER TABLE [TABLE_SCHEMA].parcelle_oads OWNER TO u_vitis;
+GRANT ALL ON TABLE [TABLE_SCHEMA].parcelle_oads TO u_vitis;
+GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE [TABLE_SCHEMA].parcelle_oads TO oads_user;
+
+ALTER TABLE [TABLE_SCHEMA].v_dossier OWNER TO u_vitis;
+GRANT ALL ON TABLE [TABLE_SCHEMA].v_dossier TO u_vitis;
+GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE [TABLE_SCHEMA].v_dossier TO oads_user;
+	
+	
+	
diff --git a/storage/veremes_oads_parcelle/json/business_object.json b/storage/veremes_oads_parcelle/json/business_object.json
new file mode 100755
index 00000000..0b13c041
--- /dev/null
+++ b/storage/veremes_oads_parcelle/json/business_object.json
@@ -0,0 +1,20 @@
+{  
+	"business_object_id":"veremes_oads_parcelle",
+	"title":"veremes_oads_parcelle",
+	"id_field":"id_par",
+	"database":"vitis_angular_vmap",
+	"schema":"veremes_oads",
+	"table":"v_parcelle_dossier",
+	"sql_summary":"select id_par as \"Parcelle\", dossier as \"Dossier\", '[bo_link href=\"{{getPropertie(''serveur_oads'')}}'||lien_dossier||'\" target=\"_blank\"]Lien vers OpenAds[/bo_link]' as \"OpenAds\" from veremes_oads.v_parcelle_dossier",
+	"sql_list":"select id_par from veremes_oads.v_parcelle_dossier",
+	"sorted_by":"id_par",
+	"geom_column":"geom",
+	"search_field":"id_par",
+	"result_field":"id_par",
+	"search_use_strict":"false",
+	"event_id":"",
+	"index":1,
+	"add_form_size":1,
+	"edit_form_size":1,
+	"display_form_size":1
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_parcelle/json/event.json b/storage/veremes_oads_parcelle/json/event.json
new file mode 100755
index 00000000..9e26dfee
--- /dev/null
+++ b/storage/veremes_oads_parcelle/json/event.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/storage/veremes_oads_parcelle/json/mapserver_layers.json b/storage/veremes_oads_parcelle/json/mapserver_layers.json
new file mode 100755
index 00000000..3fcc08f1
--- /dev/null
+++ b/storage/veremes_oads_parcelle/json/mapserver_layers.json
@@ -0,0 +1,23 @@
+[{  
+	"ms_layer_id":91,
+	"name":"Oads_parcelle",
+	"title":"Oads_parcelle",
+	"coordsys_id":2154,
+	"coordsys_label":"[EPSG:2154]-RGF93/Lambert-93",
+	"source_id":null,
+	"connection_id":6,
+	"tableschema":"veremes_oads",
+	"tablename":"parcelle_oads",
+	"tableidfield":"id_par",
+	"definition":"LAYER\r\n\tNAME \"{LAYER_NAME}\"\r\n\tTYPE {LAYER_TYPE}\r\n\tSTATUS DEFAULT\r\n\t{CONNECTION}\r\n\tDATA \"geom from {TABLE_SCHEMA}.{TABLE_NAME} USING SRID={SRID} USING UNIQUE {TABLE_ID}\"\r\n\tOPACITY {LAYER_OPACITY}\r\n\t{COORDSYS}\r\n\tMETADATA\r\n\t\t\"wms_title\" \t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_srs\" \t\t\t\t\"EPSG:2154\"\r\n\t\t\"wms_name\" \t\t\t\t\"{LAYER_NAME}\"\r\n\t\t\"wms_server_version\" \t\"1.3.0\"\r\n\t\t\"wms_format\" \t\t\t\"image/png\"\r\n\tEND\r\n\tCLASS\r\n\t\tNAME \"Dossier\"\r\n\t\tSTYLE\r\n\t\t\tCOLOR \"#FED4FE\"\r\n\tOPACITY 50\r\n\t\tEND\r\n\t\tSTYLE\r\n\t\t\tOUTLINECOLOR \"#FFFFFF\"\r\n\t\t\tWIDTH 5\r\n\t\tEND\r\n\t\tSTYLE\r\n\t\t\tOUTLINECOLOR \"#FF0000\"\r\n\t\t\tWIDTH 4\r\n\t\t\tLINECAP butt #[butt|round|square|triangle]\r\n\t\t\tLINEJOIN miter #[round|miter|bevel]\r\n\t\t\tLINEJOINMAXSIZE 2\r\n\t\t\tPATTERN 10 10 END\r\n\t\tEND\r\n\tEND\r\nEND",
+	"active":true,
+	"opacity":100,
+	"ms_layertype_id":"POLYGON",
+	"private_connection":true,
+	"connection_label":"Connexion privée",
+	"source_label":null,
+	"definitiontmp":"",
+	"database":"vmap",
+	"wmsservices":"",
+	"wmsservices_label":""
+}]
\ No newline at end of file
diff --git a/storage/veremes_oads_parcelle/package.json b/storage/veremes_oads_parcelle/package.json
new file mode 100755
index 00000000..461fcecd
--- /dev/null
+++ b/storage/veremes_oads_parcelle/package.json
@@ -0,0 +1,5 @@
+{
+	"author": "Laurent",
+	"mame": "veremes_oads_parcelle",
+	"description": "Objet métier permettant la visualisation des parcelles d'un dossier OpenAds"
+}
diff --git a/storage/veremes_oads_parcelle/sql/structure.json b/storage/veremes_oads_parcelle/sql/structure.json
new file mode 100755
index 00000000..5eb29353
--- /dev/null
+++ b/storage/veremes_oads_parcelle/sql/structure.json
@@ -0,0 +1,6 @@
+{
+	"schema": "",
+	"srid": "",
+	"tables": [""],
+	"sequences": [""]
+}
\ No newline at end of file
diff --git a/storage/veremes_oads_parcelle/sql/table.sql b/storage/veremes_oads_parcelle/sql/table.sql
new file mode 100755
index 00000000..e69de29b
diff --git a/web_service/sql/sqlQueries.xml b/web_service/sql/sqlQueries.xml
index e96354f4..cbe6c7bf 100644
--- a/web_service/sql/sqlQueries.xml
+++ b/web_service/sql/sqlQueries.xml
@@ -1140,6 +1140,8 @@
 			<version>2018.04.00</version>
 			<code>
 				<![CDATA[
+					-- Armand 06/11/2018 enlever le mode onfiguration quand on est vmap_admin
+					DELETE FROM s_vitis.vm_mode_rolname WHERE mode_id='configuration' AND rolname='vmap_admin';
 				]]>
 			</code>
 		</query>
diff --git a/web_service/ws/PrintMapServices.class.inc b/web_service/ws/PrintMapServices.class.inc
index 34623aa9..8c656d82 100755
--- a/web_service/ws/PrintMapServices.class.inc
+++ b/web_service/ws/PrintMapServices.class.inc
@@ -15,7 +15,7 @@ require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.i
  *  \brief This file contains the PrintMapServices php class
  *
  * This class defines the rest api for printmapservices
- * 
+ *
  */
 class PrintMapServices extends PrintServices {
     /**
@@ -241,14 +241,6 @@ class PrintMapServices extends PrintServices {
             }
         }
 
-        // Change la taille de l'image en fonction de la résolution
-        if (isset($this->aValues['resolution_coeff'])) {
-            $aImageSize = explode('|', $sImageSize);
-            $aImageSize[0] = $aImageSize[0] * $this->aValues['resolution_coeff'];
-            $aImageSize[1] = $aImageSize[1] * $this->aValues['resolution_coeff'];
-            $sImageSize = implode('|', $aImageSize);
-        }
-
         // Écrit les paramètres gros dans des fichiers
         if (is_dir($this->aProperties['vas_home'])) {
             if (!is_dir($this->aProperties['vas_home'] . '/public')) {
@@ -343,4 +335,4 @@ class PrintMapServices extends PrintServices {
 
 }
 
-?>
\ No newline at end of file
+?>
-- 
GitLab