Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/interfaces.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/interfaces.py	(revision 12077)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/interfaces.py	(revision 12078)
@@ -23,4 +23,10 @@
 from waeup.ikoba.interfaces import MessageFactory as _
 
+class AppCatSource(ContextualDictSourceFactoryBase):
+    """A application category source delivers all application categories
+    provided in the portal.
+    """
+    #: name of dict to deliver from kofa utils.
+    DICT_NAME = 'APP_CATS_DICT'
 
 class IProductsContainer(IIkobaObject):
@@ -48,2 +54,9 @@
         default = u'Unnamed',
         )
+
+    application_category = schema.Choice(
+        title = _(u'Application Category'),
+        source = AppCatSource(),
+        default = u'license',
+        required = True,
+        )
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/sample_product_data.csv
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/sample_product_data.csv	(revision 12077)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/sample_product_data.csv	(revision 12078)
@@ -1,5 +1,5 @@
-product_id,title
-ABC,ABC title
-CDE,CDE title
-EFG,EFG title
-ABC,Duplicate product
+product_id,title,application_category
+ABC,ABC title,license
+CDE,CDE title,license
+EFG,EFG title,license
+ABC,Duplicate product,license
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_batching.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_batching.py	(revision 12077)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_batching.py	(revision 12078)
@@ -164,5 +164,6 @@
         self.assertTrue(
             'INFO - system - Product Processor - sample_product_data - '
-            'EFG - updated: product_id=EFG, title=EFG title\n'
+            'EFG - updated: product_id=EFG, title=EFG title, '
+            'application_category=license\n'
             in logcontent)
         failcontent = open(fail_file).read()
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_export.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_export.py	(revision 12077)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_export.py	(revision 12078)
@@ -62,6 +62,7 @@
         result = open(self.outfile, 'rb').read()
         self.assertTrue(
-            'product_id,title,users_with_local_roles\r\nLIC,Unnamed,"'
-            '[{\'user_name\': u\'john\', \'local_role\': u\'johnsrole\'}]"\r\n'
+            'application_category,product_id,title,users_with_local_roles\r\n'
+            'license,LIC,Unnamed,"[{\'user_name\': u\'john\', \'local_role\': '
+            'u\'johnsrole\'}]"\r\n'
             in result
             )
@@ -74,6 +75,7 @@
         result = open(self.outfile, 'rb').read()
         self.assertTrue(
-            'product_id,title,users_with_local_roles\r\nLIC,Unnamed,"'
-            '[{\'user_name\': u\'john\', \'local_role\': u\'johnsrole\'}]"\r\n'
+            'application_category,product_id,title,users_with_local_roles\r\n'
+            'license,LIC,Unnamed,"[{\'user_name\': u\'john\', \'local_role\': '
+            'u\'johnsrole\'}]"\r\n'
             in result
             )
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/utils/utils.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/utils/utils.py	(revision 12077)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/utils/utils.py	(revision 12078)
@@ -101,4 +101,9 @@
     def sorted_phone_prefixes(cls, data=INT_PHONE_PREFIXES, request=None):
         return sorted_phone_prefixes(data, request)
+
+    APP_CATS_DICT = {
+        'license': 'License',
+        'no': 'no application',
+        }
 
     EXAM_SUBJECTS_DICT = {
