diff --git a/product/ERP5Form/Form.py b/product/ERP5Form/Form.py
index 0f71c99cb2220cf948a1563bb990212c17fb3b1d..229522c4c5e1d1c743e4e06ef82a7319644446ff 100644
--- a/product/ERP5Form/Form.py
+++ b/product/ERP5Form/Form.py
@@ -55,6 +55,7 @@ from zExceptions import Forbidden
 
 from Products.ERP5Type.PsycoWrapper import psyco
 from Products.ERP5Type.Base import Base
+from Products.ERP5Type.Utils import ensure_list
 
 class FieldValueCacheDict(dict):
   _last_sync = -1
@@ -1039,7 +1040,7 @@ class ERP5Form(Base, ZMIForm, ZopePageTemplate):
                 return a==b
 
         def remove_same_value(new_dict, target_dict):
-            for key, value in new_dict.items():
+            for key, value in ensure_list(new_dict.items()):
                 target_value = target_dict.get(key)
                 if force_delegate or is_equal(value, target_value):
                     del new_dict[key]
@@ -1086,7 +1087,7 @@ class ERP5Form(Base, ZMIForm, ZopePageTemplate):
                                           getFieldDict(target_field, 'tales'))
 
             if target_field.meta_type=='ProxyField':
-                for i in new_values.keys():
+                for i in ensure_list(new_values.keys()):
                     if not i in target_field.delegated_list:
                         # obsolete variable check
                         try:
@@ -1098,7 +1099,7 @@ class ERP5Form(Base, ZMIForm, ZopePageTemplate):
                             if is_equal(target_field.get_recursive_orig_value(i),
                                         new_values[i]):
                                 del new_values[i]
-                for i in new_tales.keys():
+                for i in ensure_list(new_tales.keys()):
                     if not i in target_field.delegated_list:
                         # obsolete variable check
                         try:
@@ -1159,7 +1160,7 @@ class ERP5Form(Base, ZMIForm, ZopePageTemplate):
                 return a==b
 
         def remove_same_value(new_dict, target_dict):
-            for key, value in new_dict.items():
+            for key, value in ensure_list(new_dict.items()):
                 target_value = target_dict.get(key)
                 if is_equal(value, target_value):
                     del new_dict[key]
diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py
index 5712ced523cceff91ae75f173ef5e56233214499..6b015a89928215067004ecc6eded803fc682ffaf 100644
--- a/product/ERP5Form/ListBox.py
+++ b/product/ERP5Form/ListBox.py
@@ -38,8 +38,7 @@ from Products.Formulator.Field import ZMIField
 from Products.Formulator.Errors import FormValidationError, ValidationError
 from .Selection import Selection, DomainSelection
 from .Tool.SelectionTool import createFolderMixInPageSelectionMethod
-from Products.ERP5Type.Utils import getPath
-from Products.ERP5Type.Utils import UpperCase
+from Products.ERP5Type.Utils import UpperCase, ensure_list, getPath
 from Products.ERP5Type.Document import newTempBase
 from Products.CMFCore.utils import getToolByName
 from Products.ZSQLCatalog.zsqlbrain import ZSQLBrain
@@ -106,7 +105,7 @@ class CatalogMethodWrapper(MethodWrapper):
     # XXX: I'm not sure if this filtering really belongs to here.
     # It is probably needed at a more generic level (Forms ? Selection ?), or
     # even a more specific one (limited to HTML ?)...
-    for key, value in kw.items():
+    for key, value in ensure_list(kw.items()):
       if value == '':
         kw.pop(key)
     return getattr(self.context, self.method_name)(*args, **kw)