Index: /main/waeup.kofa/trunk/src/waeup/kofa/permissions.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 9001)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 9002)
@@ -152,4 +152,12 @@
     grok.permissions('waeup.showStudents', 'waeup.viewAcademics')
 
+class Lecturer(grok.Role):
+    """The lecturer role is meant for the
+    assignment of dynamic roles only.
+    """
+    grok.name('waeup.local.Lecturer')
+    grok.title(u'Lecturer')
+    grok.permissions('waeup.showStudents', 'waeup.viewAcademics')
+
 class Owner(grok.Role):
     grok.name('waeup.local.Owner')
Index: /main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt	(revision 9001)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt	(revision 9002)
@@ -42,5 +42,5 @@
 
     >>> len(list(get_waeup_roles(also_local=True)))
-    28
+    29
 
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/dynamicroles.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/dynamicroles.py	(revision 9001)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/dynamicroles.py	(revision 9002)
@@ -46,6 +46,4 @@
     rolename_mapping = {
         'waeup.local.ClearanceOfficer':'waeup.StudentsClearanceOfficer',
-        'waeup.local.UGClearanceOfficer':'waeup.StudentsClearanceOfficer',
-        'waeup.local.PGClearanceOfficer':'waeup.StudentsClearanceOfficer',
         }
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/course.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/course.py	(revision 9001)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/course.py	(revision 9002)
@@ -30,5 +30,5 @@
     grok.implements(ICourse, ICourseAdd)
 
-    local_roles = []
+    local_roles = ['waeup.local.Lecturer']
 
     def __init__(self,
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/sample_course_data.csv
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/sample_course_data.csv	(revision 9002)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/sample_course_data.csv	(revision 9002)
@@ -0,0 +1,8 @@
+faculty_code,department_code,code,local_roles
+FAC1,DEP1,CRS2,"[{'user_name':'anne','local_role':'waeup.local.Lecturer'}]"
+FAC1,DEP1,CRS2,"[{'user_name':'alice','local_role':'waeup.local.Lecturer'}]"
+FAC1,DEP1,CRS2,"[{'user_name':'anne','local_role':'waeup.local.Boss'}]"
+FAC1,DEP1,CRS2,"[('anything')]"
+FAC1,DEP1,CRS2,"["
+FAC1,DEP1,CRS2,"[{'user':'anne','local':'waeup.local.Lecturer'}]"
+FAC11,DEP2,CRS2,"[{'user_name':'anne','local_role':'waeup.local.Lecturer'}]"
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py	(revision 9001)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py	(revision 9002)
@@ -64,4 +64,11 @@
 
 CERTIFICATE_HEADER_FIELDS = CERTIFICATE_SAMPLE_DATA.split(
+    '\n')[0].split(',')
+
+COURSE_SAMPLE_DATA = open(
+    os.path.join(os.path.dirname(__file__), 'sample_course_data.csv'),
+    'rb').read()
+
+COURSE_HEADER_FIELDS = COURSE_SAMPLE_DATA.split(
     '\n')[0].split(',')
 
@@ -375,4 +382,7 @@
         self.row3 = dict(department_code='DEP1', faculty_code='FAC1', code="CRS2")
         self.row4 = dict(department_code='DEP1', faculty_code='FAC1', code="CRS1")
+
+        self.csv_file_course = os.path.join(self.workdir, 'sample_course_data.csv')
+        open(self.csv_file_course, 'wb').write(COURSE_SAMPLE_DATA)
         return
 
@@ -419,4 +429,33 @@
         self.assertTrue('CRS1' not in self.app['faculties']['FAC1']['DEP1'].courses.keys())
         return
+
+    def test_import(self):
+        num, num_warns, fin_file, fail_file = self.proc.doImport(
+            self.csv_file_course, COURSE_HEADER_FIELDS)
+        content = open(fail_file).read()
+        self.assertEqual(num_warns,6)
+        self.assertEqual(
+            content,
+            'faculty_code,department_code,code,local_roles,--ERRORS--\r\n'
+            'FAC1,DEP1,CRS2,"[{\'user_name\':\'alice\',\'local_role\':\'waeup.local.Lecturer\'}]",'
+            'local_roles: alice does not exist\r\n'
+            'FAC1,DEP1,CRS2,"[{\'user_name\':\'anne\',\'local_role\':\'waeup.local.Boss\'}]",'
+            'local_roles: waeup.local.Boss not allowed\r\n'
+            'FAC1,DEP1,CRS2,[(\'anything\')],local_roles: no dicts\r\n'
+            'FAC1,DEP1,CRS2,[,local_roles: Error\r\n'
+            'FAC1,DEP1,CRS2,"[{\'user\':\'anne\',\'local\':\'waeup.local.Lecturer\'}]",'
+            'local_roles: user_name or local_role missing\r\n'
+            'FAC11,DEP2,CRS2,"[{\'user_name\':\'anne\',\'local_role\':\'waeup.local.Lecturer\'}]",'
+            'Not all parents do exist yet. Skipping\r\n'
+            )
+        # Anne got a local role in course ABC.
+        dep = self.app['faculties']['FAC1']['DEP1'].courses['CRS2']
+        role_map = IPrincipalRoleMap(dep)
+        local_role, user_name, setting = role_map.getPrincipalsAndRoles()[0]
+        self.assertEqual(user_name, 'anne')
+        self.assertEqual(local_role, 'waeup.local.Lecturer')
+        shutil.rmtree(os.path.dirname(fin_file))
+        return
+
 
 class CertificateProcessorTests(UniversityProcessorSetup):
