diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py
index a49ce453f5974440d6673f454a1cb279239ef9a8..e459e5adc285b32757dca2f573861a7ad7699504 100644
--- a/ckanext/odsh/validation.py
+++ b/ckanext/odsh/validation.py
@@ -12,6 +12,9 @@ from ckan.lib.navl.dictization_functions import Missing
 
 from pylons import config
 
+import logging
+log = logging.getLogger(__name__)
+
 def _extract_value(data, field):
     key = None
     for k in data.keys():
@@ -24,25 +27,31 @@ def _extract_value(data, field):
 
 def validate_extra_groups(data, requireAtLeastOne, errors):
     value = _extract_value(data, 'groups')
-    if not value:
-        if requireAtLeastOne:
-            errors['groups']= 'at least one group needed'  
-        data[('groups', 0, 'id')] = '' 
-        return 
+    if value != None:
+        # 'value != None' means the extra key 'groups' was found,
+        # so the dataset came from manual editing via the web-frontend.        
+        if not value:
+            if requireAtLeastOne:
+                errors['groups']= 'at least one group needed'
+            data[('groups', 0, 'id')] = '' 
+            return 
 
-    groups = [g.strip() for g in value.split(',') if value.strip()]
-    for k in data.keys():
-        if len(k) == 3 and k[0] == 'groups':
-            data[k]=''
-            # del data[k]
-    if len(groups)==0:
-        if requireAtLeastOne:
-            errors['groups']= 'at least one group needed'  
-        return 
-
-    for num, group in zip(range(len(groups)), groups):
-        data[('groups', num, 'id')] = group
-    
+        groups = [g.strip() for g in value.split(',') if value.strip()]
+        for k in data.keys():
+            if len(k) == 3 and k[0] == 'groups':
+                data[k]=''
+                # del data[k]
+        if len(groups)==0:
+            if requireAtLeastOne:
+                errors['groups']= 'at least one group needed'  
+            return 
+
+        for num, group in zip(range(len(groups)), groups):
+            data[('groups', num, 'id')] = group
+    else: # no extra-field 'groups'
+        # dataset might come from a harvest process
+        if not data[('groups', 0, 'id')]:
+            errors['groups']= 'at least one group needed'
 
 def validate_extras(key, data, errors, context):
     extra_errors = {}