diff --git a/module/javascript/app/modules/Cadastre/cadastre.js b/module/javascript/app/modules/Cadastre/cadastre.js
index eaed9561ddf04f859db73cc3d68093fbb45210e4..91a57bf08b978aba916e302d0bbed6393037e661 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('getSelections');
+                var aSelected = $(parcelleTable).bootstrapTable('getAllSelections');
                 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('getSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
 
     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('getSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
 
     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('getSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
 
     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('getSelections');
+    var selectedComptes = $(compteTable).bootstrapTable('getAllSelections');
 
     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('getSelections');
+    var selectedComptes = $(compteTable).bootstrapTable('getAllSelections');
 
     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('getSelections');
+    var selectedParcelles = $(parcelleTable).bootstrapTable('getAllSelections');
 
     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('getSelections');
+    var tableSelections = $(tableId).bootstrapTable('getAllSelections');
     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('getSelections');
+    var tableSelections = $(tableId).bootstrapTable('getAllSelections');
     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('getSelections'), parcelleTableId);
+                cadastreController.getBaseParcellesByProprietaireOnTable(row['ID_COM'], $(tableId).bootstrapTable('getAllSelections'), 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('getSelections'), invariantsTableId, parcellesTableId);
+                cadastreController.getBatiBaseInvariantsOnTable($(tableId).bootstrapTable('getAllSelections'), 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('getSelections'), parcellesTableId);
+                    cadastreController.getBatiBaseParcellesOnTable($(tableId).bootstrapTable('getAllSelections'), 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('getSelections').length > 0) {
+    if ($(tableSection).bootstrapTable('getAllSelections').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('getSelections').length > 0) {
+    if ($(tableLieuDit).bootstrapTable('getAllSelections').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('getSelections').length > 0) {
+    if ($(tableParcelle).bootstrapTable('getAllSelections').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('getSelections').length > 0) {
+    if ($(tableVoie).bootstrapTable('getAllSelections').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('getSelections').length > 0 && this['aAdresses'].length > 0) {
+    } else if ($(tableVoie).bootstrapTable('getAllSelections').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('getSelections').length > 0) {
+    else if ($(tableVoie).bootstrapTable('getAllSelections').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('getSelections').length > 0) {
+    if ($(tableProprietaires).bootstrapTable('getAllSelections').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('getSelections')[0];
+        var proprietaire = $(tableProprietaires).bootstrapTable('getAllSelections')[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('getSelections').length > 0) {
+    if ($(tableComptes).bootstrapTable('getAllSelections').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('getSelections');
+        var aComptes = $(tableComptes).bootstrapTable('getAllSelections');
         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('getSelections').length > 0) {
+    if ($(tableParcelles).bootstrapTable('getAllSelections').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('getSelections');
+        var aParcelles = $(tableParcelles).bootstrapTable('getAllSelections');
         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('getSelections').length > 0) {
+    if ($(tableProprietaires).bootstrapTable('getAllSelections').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('getSelections')[0];
+        var proprietaire = $(tableProprietaires).bootstrapTable('getAllSelections')[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('getSelections').length > 0) {
+    if ($(tableComptes).bootstrapTable('getAllSelections').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('getSelections');
+        var aComptes = $(tableComptes).bootstrapTable('getAllSelections');
         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('getSelections').length > 0) {
+    if ($(tableInvariants).bootstrapTable('getAllSelections').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('getSelections').length > 0) {
+    if ($(tableParcelles).bootstrapTable('getAllSelections').length > 0) {
         this.aFormList_.push('veremes_cadastre_parcelle');
 
         // Crée l'onglet correspondant
diff --git a/module/javascript/app/vmap/tools/select/basicselect.js b/module/javascript/app/vmap/tools/select/basicselect.js
index f8d0af3ccdbafe8cc7ba4a165cb54767d5d7e001..475f4fd042bb647563ca73111b3bd5e76127a3ae 100755
--- a/module/javascript/app/vmap/tools/select/basicselect.js
+++ b/module/javascript/app/vmap/tools/select/basicselect.js
@@ -282,8 +282,10 @@ nsVmap.nsToolsManager.BasicSelect.prototype.basicSelectController.prototype.quer
  */
 nsVmap.nsToolsManager.BasicSelect.prototype.basicSelectController.prototype.getBOLayersFilters_ = function (oQueryBo) {
     oVmap.log('nsVmap.nsToolsManager.BasicSelect.prototype.basicSelectController.prototypeBO.getLayersFilters_');
+    var formReaderSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["formReaderService"]);
 
     var oFilterValues = {};
+    var oFilterDefinition = {};
     var sFilter = "";
     var filter = {
         'relation': 'AND',
@@ -297,6 +299,13 @@ nsVmap.nsToolsManager.BasicSelect.prototype.basicSelectController.prototype.getB
                 oLayerFilter_ = oQueryBo['layers'][i].get('filter_values_cleared');
                 if (goog.isObject(oLayerFilter_)) {
                     goog.object.extend(oFilterValues, oLayerFilter_);
+                    oLayerFilterDef_ = oQueryBo['layers'][i].get('filter_form');
+                    if(goog.isObject(oLayerFilterDef_)){
+                        for (var field in oLayerFilter_){
+                            var oFieldDef = formReaderSrvc["getFormElementDefinition"](field, 'search', oLayerFilterDef_);
+                            oFilterDefinition[field] = oFieldDef;
+                        }
+                    }
                 }
             }
         }
@@ -323,12 +332,50 @@ nsVmap.nsToolsManager.BasicSelect.prototype.basicSelectController.prototype.getB
                 continue;
             }
         }
-
-        filter['operators'].push({
-            'column': key,
-            'compare_operator': goog.isArray(oFilterValues[key]) ? 'IN' : '=',
-            'value': oFilterValues[key]
-        });
+        var sValue = oFilterValues[key]
+        //surcharge le filtre si une définition est rpésente dans le formulaire
+        if(goog.isDefAndNotNull(oFilterDefinition[key]["comparator"])){
+            var aOperators = [];
+            for (var j = 0;j < oFilterDefinition[key]["comparator"].length;j++){
+                var oOperator = {};
+                if (goog.isDefAndNotNull(oFilterDefinition[key]["comparator"][j]["formater"])) {
+                    sValue = oFilterDefinition[key]["comparator"][j]["formater"].replace(/<VALUE_TO_REPLACE>/g, sValue);
+                }
+                if(goog.isArray(oFilterDefinition[key]["comparator"][j]["compare_operator"])) {
+                    oOperator["relation"] = (goog.isDefAndNotNull(oFilterDefinition[key]["comparator"][j]["relation"]) ? oFilterDefinition[key]["comparator"][j]["relation"] : "AND");
+                    oOperator["operators"] = [];
+                    for (var k = 0; k < oFilterDefinition[key]["comparator"][j]["compare_operator"].length; k++){
+                        oOperator["operators"].push({
+                            "column": (goog.isArray(oFilterDefinition[key]["comparator"][j]["column"]) ? oFilterDefinition[key]["comparator"][j]["column"][k] : key),
+                            "compare_operator": oFilterDefinition[key]["comparator"][j]["compare_operator"][k],
+                            "value": sValue
+                        });
+                    }
+                }else{
+                    oOperator["column"] = (goog.isDefAndNotNull(oFilterDefinition[key]["comparator"][j]["column"]) ? oFilterDefinition[key]["comparator"][j]["column"] : key);
+                    oOperator["compare_operator"] = oFilterDefinition[key]["comparator"][j]["compare_operator"];
+                    oOperator["value"] = sValue;
+                }
+                if(goog.isDefAndNotNull(oFilterDefinition[key]["comparator"][j]["compare_operator_options"])){
+                    oOperator["compare_operator_options"] = oFilterDefinition[key]["comparator"][j]["compare_operator_options"];
+                }
+                aOperators.push(oOperator);
+            }
+            if(goog.isDefAndNotNull(oFilterDefinition[key]["comparator_relation"])){
+                filter['operators'].push({
+                    "relation": oFilterDefinition[key]["comparator_relation"],
+                    "operators": aOperators
+                });
+            }else{
+                filter['operators'] = filter['operators'].concat(aOperators);
+            }
+        } else {
+            filter['operators'].push({
+                'column': key,
+                'compare_operator': goog.isArray(oFilterValues[key]) ? 'IN' : '=',
+                'value': sValue
+            });
+        }
     }
     sFilter = JSON.stringify(filter);
 
diff --git a/web_service/sql/sqlQueries.xml b/web_service/sql/sqlQueries.xml
index cbe6c7bfb1c8f72f64dc354137eeb98e981f4d00..e96354f4c9b16f78e67a075817424635d108985e 100644
--- a/web_service/sql/sqlQueries.xml
+++ b/web_service/sql/sqlQueries.xml
@@ -1140,8 +1140,6 @@
 			<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>