Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_interfaces.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_interfaces.py	(revision 12782)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_interfaces.py	(revision 12785)
@@ -24,11 +24,14 @@
 import shutil
 from datetime import date
+from zope.event import notify
 from zope.component.hooks import setSite
 from zope.component import queryUtility, createObject
 from hurry.workflow.interfaces import IWorkflowState
 from waeup.ikoba.app import Company
-from waeup.ikoba.interfaces import SUBMITTED
+from waeup.ikoba.interfaces import SUBMITTED, APPROVED
 from waeup.ikoba.customers.vocabularies import (
-    ConCatProductSource, ConCatActiveProductSource, CustomerDocumentSource)
+    ConCatProductSource, ConCatActiveProductSource, CustomerDocumentSource,
+    RefereeSourceFactory
+    )
 from waeup.ikoba.testing import FunctionalLayer, FunctionalTestCase
 
@@ -133,2 +136,15 @@
         self.assertEqual(result, u'DOC1... - My Sample Document')
 
+    def test_getValues_RefereeSourceFactory(self):
+        source = RefereeSourceFactory()
+        result = source.factory.getValues(object())
+        self.assertFalse(self.customer in result)
+        IWorkflowState(self.customer).setState(APPROVED)
+        notify(grok.ObjectModifiedEvent(self.customer))
+        result = source.factory.getValues(object())
+        self.assertTrue(self.customer in result)
+
+    def test_getTitle_RefereeSourceFactory(self):
+        source = RefereeSourceFactory()
+        result = source.factory.getTitle(object(), self.customer)
+        self.assertEqual(result, u'Bob Tester (K1000000)')
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py	(revision 12782)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py	(revision 12785)
@@ -29,5 +29,7 @@
 from zc.sourcefactory.interfaces import IContextualSource
 from waeup.ikoba.sourcefactory import SmartBasicContextualSourceFactory
-from waeup.ikoba.interfaces import SimpleIkobaVocabulary, SUBMITTED, VERIFIED
+from waeup.ikoba.interfaces import (
+    SimpleIkobaVocabulary, SUBMITTED, VERIFIED, APPROVED
+    )
 from waeup.ikoba.interfaces import MessageFactory as _
 from waeup.ikoba.utils.helpers import get_sorted_preferred
@@ -167,5 +169,4 @@
         if not concat:
             return products
-        
         resultlist = [
             value for value in products
@@ -238,2 +239,36 @@
         currency = ISO_4217_CURRENCIES[value.currency][1]
         return "%s @ %s %s" % (value.title, value.fee, currency)
+
+
+class IRefereeSource(IContextualSource):
+    """A source operating in context.
+
+    This is a marker interface needed for the registration of the
+    IkobaSequenceWidget when using the List-Choice-RefereeSourceFactory
+    field combination primarily in ICustomer as a replacement for
+    the SourceOrderedMultiSelectWidget.
+    """
+
+
+class RefereeSource(FactoredContextualSource):
+
+      implements(IRefereeSource)
+
+
+class RefereeSourceFactory(BasicContextualSourceFactory):
+    """A referee source delivers all registered and approved customers.
+    """
+
+    source_class = RefereeSource
+
+    def getValues(self, context):
+        user_id = getattr(getattr(context, 'customer', None), 'user_id', None)
+        catalog = getUtility(ICatalog, name='customers_catalog')
+        results = catalog.searchResults(state=(APPROVED, APPROVED))
+        return list(results)
+
+    def getToken(self, context, value):
+        return value.customer_id
+
+    def getTitle(self, context, value):
+        return "%s (%s)" % (value.display_fullname, value.customer_id[:9])
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/widgets/overrides.zcml
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/widgets/overrides.zcml	(revision 12782)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/widgets/overrides.zcml	(revision 12785)
@@ -52,4 +52,14 @@
       permission="zope.Public"
       />      
+      
+  <!-- Register IkobaSequenceWidget for RefereeSource -->
+  <adapter
+      for="zope.schema.interfaces.IList
+           waeup.ikoba.customers.vocabularies.IRefereeSource
+           zope.publisher.interfaces.browser.IBrowserRequest"
+      provides="zope.formlib.interfaces.ISimpleInputWidget"
+      factory="waeup.ikoba.widgets.sequencewidget.IkobaSequenceWidget"
+      permission="zope.Public"
+      />      
 
   <!-- Register IkobaSourceOrderedMultiSelectWidget for IterableSource -->
