diff --git a/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml b/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml
index 8fcd484f1324d03fb51897f699c72954b4222cb9..c52655ce75df4c2517040d006e46e251b6192a75 100644
--- a/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml
+++ b/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml
@@ -56,11 +56,22 @@ User would be usually the current user, but sometimes the name has to be given e
 if e.g. the doc is contributed by email, and the script is run by zope user.\n
 """\n
 assignment_dict = context.ERP5Site_getPersonAssignmentDict(user_name=user_name)\n
+group_list = assignment_dict[\'group_list\']\n
 \n
-# XXX: make list of properties configurable through preferences\n
-return {\'group_list\': assignment_dict[\'group_list\'],\n
-        \'site_list\': assignment_dict[\'site_list\'],\n
-        \'function_list\': assignment_dict[\'function_list\']}\n
+if group_list:\n
+  group_level_dict = {}\n
+  for group in group_list:\n
+    group_level = len(group.split("/"))\n
+    group_level_dict[group] = group_level\n
+  \n
+  #Get the highest levels groups of the assignments\n
+  ##if group_list = [\'g1\', \'g1/g1.1\', \'g1/g1.2\'] returns [\'g1\']\n
+  ##if group_list = [\'g1/g1.1\', \'g1/g1.2\'] returns [\'g1/g1.1\', \'g1/g1.2\']\n
+  highest_level_group_value = min(group_level_dict.itervalues())\n
+  highest_level_group_list = [k for k in group_level_dict if group_level_dict[k] == highest_level_group_value]\n
+  return {\'group_list\': highest_level_group_list}\n
+\n
+return {}\n
 </string> </value>
         </item>
         <item>
diff --git a/product/ERP5OOo/tests/testIngestion.py b/product/ERP5OOo/tests/testIngestion.py
index 1a92a25396fe5f11fbaa5f1c777b216f44dd5d65..ec93954fda01c840944b7557cf93524be07f88a7 100644
--- a/product/ERP5OOo/tests/testIngestion.py
+++ b/product/ERP5OOo/tests/testIngestion.py
@@ -187,6 +187,12 @@ class TestIngestion(ERP5TypeTestCase):
                           ,{'path' : 'group/anybody'
                            ,'title': 'Anybody'
                            }
+                          ,{'path' : 'group/anybody/a1'
+                           ,'title': 'Anybody 1'
+                           }
+                          ,{'path' : 'group/anybody/a2'
+                           ,'title': 'Anybody 2'
+                           }
                           ,{'path' : 'publication_section/cop'
                            ,'title': 'COPs'
                            }
@@ -1464,9 +1470,36 @@ class TestIngestion(ERP5TypeTestCase):
     document.discoverMetadata(document.getFilename(), 'contributor1')
     self.tic()
     self.assertEqual(document.getFilename(), 'TEST-en-002.doc')
-    self.assertEqual('musician/wind/saxophone', document.getFunction())
     self.assertEqual('anybody', document.getGroup())
-    self.assertEqual('arctic/spitsbergen', document.getSite())
+    self.assertEqual(None, document.getFunction())
+    self.assertEqual(None, document.getSite())
+
+  def test_TestMetadataDiscoveryFromUserLoginHigherGroup(self):
+    portal = self.portal
+    contribution_tool = getToolByName(portal, 'portal_contributions')
+
+    user = self.createUser(reference='contributor3')
+    self.createUserAssignment(user, dict(group='anybody/a1',))
+    self.createUserAssignment(user, dict(group='anybody/a2',))
+    self.createUserAssignment(user, dict(group='anybody',))
+
+    other_user = self.createUser(reference='contributor2')
+    self.createUserAssignment(other_user, dict(group='anybody/a1',))
+    self.createUserAssignment(other_user, dict(group='anybody/a2',))
+
+    portal.document_module.manage_setLocalRoles('contributor2', ['Assignor',])
+    self.tic()
+    file_object = makeFileUpload('TEST-en-002.doc')
+    document = contribution_tool.newContent(file=file_object)
+
+    # We only consider the higher group of assignments
+    document.discoverMetadata(document.getFilename(), user.getReference())
+    self.tic()
+    self.assertEqual(document.getFilename(), 'TEST-en-002.doc')
+    self.assertEqual(['anybody'], document.getGroupList())
+
+    document.discoverMetadata(document.getFilename(), other_user.getReference())
+    self.assertEqual(['anybody/a1', 'anybody/a2'], document.getGroupList())
 
   def test_IngestionConfigurationByTypeBasedMethod_usecase1(self):
     """How to configure meta data discovery so that each time a file