diff --git a/models/virtdb.py b/models/virtdb.py
index 991519ce1e87881d285e1f04ed477a3a5a7fd54c..d7df9f5e234fec3979d41876da62cede144fc0d5 100644
--- a/models/virtdb.py
+++ b/models/virtdb.py
@@ -24,8 +24,12 @@ virtdb.define_table("foo1",
 
 
 virtdb.define_table("harvester_selector",
+    Field('id_teams', db.teams, label='Team'),                    
     Field('id_projects', db.projects, label='Project'),
     Field('controller', 'string', label='Harvest'))
 
 virtdb.harvester_selector.id_projects.requires = \
-IS_IN_DB(db, 'projects.id', 'projects.project')
\ No newline at end of file
+IS_IN_DB(db, 'projects.id', 'projects.project')
+
+virtdb.harvester_selector.id_teams.requires = \
+IS_IN_DB(db, 'teams.id', 'teams.team')
\ No newline at end of file
diff --git a/models/widgets_forms.py b/models/widgets_forms.py
index d3990fb301e87e971982669c22a5372d4f3c9628..f0c99ff701f0bba109f9dc0d38ad8888bec59a24 100644
--- a/models/widgets_forms.py
+++ b/models/widgets_forms.py
@@ -12,24 +12,24 @@ dbui.configure_forms(db, plugins=['pFormToolTip'])
 #
 formModifier = dbui.FormModifier('foo1')
 formModifier.link_comboboxes(masterName='my_axis',
-                             slaveName='my_granularity',
+                             slaveNames='my_granularity',
                              storeName='axesStore',
                              displayFieldMaster='axis_local',
                              valueFieldMaster='axis',
-                             displayFieldSlave='granularity_local',
-                             valueFieldSlave='granularity')
+                             displayFieldSlaves='granularity_local',
+                             valueFieldSlaves='granularity')
 
 #
 # link comboboxes in harvester selector
 #
 formModifier = dbui.FormModifier('harvester_selector')
 formModifier.link_comboboxes(masterName='id_projects',
-                             slaveName='controller',
+                             slaveNames=['controller', 'id_teams'],
                              storeName='harvestersStore',
                              displayFieldMaster='ProjectsProject',
                              valueFieldMaster='HarvestersId_projects',
-                             displayFieldSlave='HarvestersController',
-                             valueFieldSlave='HarvestersController')
+                             displayFieldSlaves=['HarvestersController', 'TeamsTeam'],
+                             valueFieldSlaves=['HarvestersController', 'HarvestersId_teams'])
 
 #
 # Create fieldSet for the publication form
diff --git a/modules/plugin_dbui/formmodifier.py b/modules/plugin_dbui/formmodifier.py
index dfa2a8bb03927bd07b1ee4632cb936316366059d..262cb5f89ff7c4fd5987f3aa2df80cd7af3d1621 100644
--- a/modules/plugin_dbui/formmodifier.py
+++ b/modules/plugin_dbui/formmodifier.py
@@ -5,6 +5,7 @@ import copy
 
 from fieldsmodifier import FieldsModifier
 from gluon.storage import Storage
+from helper import as_list
 from modifier import Modifier
 
 
@@ -63,8 +64,10 @@ class FormModifier(Modifier):
                 masterName
                     field name for the master combobox
                     
-                slaveName
-                    field name for the master combobox
+                slaveNames
+                    field name for the master combobox.
+                    Either a string or a list of string when several
+                    slaves are linked to a master.
                     
                 storeName
                     name of the store containing values
@@ -82,19 +85,26 @@ class FormModifier(Modifier):
                     Either field for Ext.data.ArrayStore or TableField 
                     for a store linked to a database table.
                     
-                displayFieldSlave
+                displayFieldSlaves
                     Name of the field in the store display in the slave combo.
                     Either field for Ext.data.ArrayStore or TableField
                     for a store linked to a database table.
+                    Either a string or a list of string when several
+                    slaves are linked to a master.
                     
-                valueFieldSlave
+                valueFieldSlaves
                     Name of the field in the store return by the slave combo.
                     Either field for Ext.data.ArrayStore or TableField 
                     for a store linked to a database table.
+                    Either a string or a list of string when several
+                    slaves are linked to a master.
                     
         """
+        for el in ('slaveNames', 'displayFieldSlaves', 'valueFieldSlaves'):
+            kwargs[el] = as_list(kwargs[el])
+
+        # master
         fieldsModifier = FieldsModifier(self.tablename)
-        
         fieldsModifier.configure_field(kwargs['masterName'],
                                        displayField=kwargs['displayFieldMaster'],
                                        role='master',
@@ -102,13 +112,15 @@ class FormModifier(Modifier):
                                        valueField=kwargs['valueFieldMaster'],
                                        xtype='xlinkedcombobox')
         
-        fieldsModifier.configure_field(kwargs['slaveName'],
-                                       displayField=kwargs['displayFieldSlave'],
-                                       mode='local',
-                                       role='slave',
-                                       store=kwargs['storeName'],
-                                       valueField=kwargs['valueFieldSlave'], 
-                                       xtype='xlinkedcombobox')
+        # slaves
+        for i in range(len(kwargs['slaveNames'])):
+            fieldsModifier.configure_field(kwargs['slaveNames'][i],
+                                           displayField=kwargs['displayFieldSlaves'][i],
+                                           mode='local',
+                                           role='slave',
+                                           store=kwargs['storeName'],
+                                           valueField=kwargs['valueFieldSlaves'][i], 
+                                           xtype='xlinkedcombobox')
 
 
     def merge_fields(self, *fields, **kwargs):
diff --git a/static/plugin_dbui/src/linkedcombobox.js b/static/plugin_dbui/src/linkedcombobox.js
index 5d033784bb257e553c8ed462db5d19fe6f245fd9..95b1fbecaf2c7303618c53bcdb2bf9723f6d601c 100644
--- a/static/plugin_dbui/src/linkedcombobox.js
+++ b/static/plugin_dbui/src/linkedcombobox.js
@@ -68,11 +68,8 @@ App.form.LinkedComboBox = Ext.extend(Ext.form.ComboBox, {
             this.store = App.getStore(this.store);
             
             if (!this.store.getTotalCount()) {
-                this.store.load({
-                    callback: this.initSlave, 
-                    scope: this
-                });
-                
+                this.store.on('load', this.initSlave, this, {single: true});                
+
             } else {
                 this.initSlave();
             }
@@ -105,6 +102,44 @@ App.form.LinkedComboBox = Ext.extend(Ext.form.ComboBox, {
         this.masterStore.filter(this.valueField, combo.getValue());
     },
     
+    /**
+     * Private method to initialise the slave combobox
+     * A slave is disable at startup.
+     * 
+     */    
+    initSlave: function () {
+
+        // Reset and disable the combobox.
+        //
+        // NOTE
+        // when the user select a value in the master combobox
+        // for the first time, the value of the slave are not filtered
+        // It contains all possible values.
+        // To fix this issue, the code mimic the click by a user
+        // on the slave combobox and then it works !!!
+        //
+        
+        function initialise(combo) {
+            combo.onTriggerClick();
+            combo.collapse();
+            combo.reset();
+            combo.disable();            
+        }   
+             
+        if (this.role !== 'slave') {
+            return;
+        }
+
+        if (this.rendered) {
+            initialise(this);
+            
+        } else {
+            this.on('render', function (combo) {
+                initialise(combo);
+            });
+        }
+    },
+
     /**
      * Private method to load data in the combo store from the master one
      */
@@ -126,50 +161,15 @@ App.form.LinkedComboBox = Ext.extend(Ext.form.ComboBox, {
         }
                         
         this.store.loadData(data);
-        
+        this.fireEvent('masterready');
     },
 
-    /**
-     * Private method to initialise the slave combobox
-     * A slave is disable at startup.
-     * 
-     */    
-    initSlave: function () {
-
-        if (this.role !== 'slave') {
-            return;
-        }
-
-        // Reset and disable the combobox.
-        //
-        // NOTE
-        // when the user select a value in the master combobox
-        // for the first time, the value of the slave are not filtered
-        // It contains all possible values.
-        // To fix this issue, the code mimic the click by a user
-        // on the slave combobox and then it works !!!
-        //
-        if (this.rendered) {
-            this.onTriggerClick();
-            this.collapse();
-            this.reset();
-            this.disable();
-            
-        } else {
-            this.on('render', function (combo) {
-                combo.onTriggerClick();
-                combo.collapse();
-                combo.reset();
-                combo.disable();
-            });
-        }      
-    },
     /**
      * Handler to update the content of the slave combobox content and to select
      * when a master value is selected
      */
     onDataChanged: function () {
-        
+
         var value = this.store.getAt(0).get(this.valueField);
         this.setValue(value);
         this.enable();