Index: main/waeup.kofa/trunk/src/waeup/kofa/permissions.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 10279)
@@ -71,4 +71,10 @@
     grok.name('waeup.exportData')
 
+class ExportPaymentsOverview(grok.Permission):
+    grok.name('waeup.exportPaymentsOverview')
+
+class ExportBursaryData(grok.Permission):
+    grok.name('waeup.exportBursaryData')
+
 class ViewTranscript(grok.Permission):
     grok.name('waeup.viewTranscript')
@@ -93,4 +99,11 @@
                      'waeup.exportData')
 
+class DepartmentOfficer(grok.Role):
+    grok.name('waeup.local.DepartmentOfficer')
+    grok.title(u'Department Officer')
+    grok.permissions('waeup.showStudents',
+                     'waeup.viewAcademics',
+                     'waeup.exportPaymentsOverview')
+
 class ClearanceOfficer(grok.Role):
     """The clearance officer role is meant for the
@@ -255,5 +268,7 @@
     grok.name('waeup.BursaryOfficer')
     grok.title(u'Bursary Officer')
-    grok.permissions('waeup.showStudents', 'waeup.viewAcademics')
+    grok.permissions('waeup.showStudents',
+                     'waeup.viewAcademics',
+                     'waeup.exportBursaryData')
 
 class TranscriptOfficer(grok.Role):
Index: main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt	(revision 10279)
@@ -42,5 +42,5 @@
 
     >>> len(list(get_waeup_roles(also_local=True)))
-    40
+    41
 
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 10279)
@@ -2961,10 +2961,17 @@
     def _set_exporter_values(self):
         # We provide all student exporters, nothing else, yet.
-        # Bursary Officers don't have the general exportData permission
-        # and are only allowed to export bursary data.
+        # Bursary or Department Officers don't have the general exportData 
+        # permission and are only allowed to export bursary or payments
+        # overview data respectively. This is the only place where
+        # waeup.exportBursaryData and waeup.exportPaymentsOverview
+        # are used.
+        exporters = []
         if not checkPermission('waeup.exportData', self.context):
-            self.exporters = [('Bursary Data', 'bursary')]
-            return
-        exporters = []
+            if checkPermission('waeup.exportBursaryData', self.context):
+                exporters += [('Bursary Data', 'bursary')]
+            if checkPermission('waeup.exportPaymentsOverview', self.context):
+                exporters += [('Student Payments Overview', 'paymentsoverview')]
+            self.exporters = exporters
+            return
         for name in EXPORTER_NAMES:
             util = getUtility(ICSVExporter, name=name)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 10279)
@@ -3183,4 +3183,39 @@
             )
 
+    def test_export_departmet_officers(self):
+        # Create department officer
+        self.app['users'].addUser('mrdepartment', 'mrdepartmentsecret')
+        self.app['users']['mrdepartment'].email = 'mrdepartment@foo.ng'
+        self.app['users']['mrdepartment'].title = 'Carlo Pitter'
+        # Assign local role
+        department = self.app['faculties']['fac1']['dep1']
+        prmlocal = IPrincipalRoleManager(department)
+        prmlocal.assignRoleToPrincipal('waeup.local.DepartmentOfficer', 'mrdepartment')
+        # Login as department officer
+        self.browser.open(self.login_path)
+        self.browser.getControl(name="form.login").value = 'mrdepartment'
+        self.browser.getControl(name="form.password").value = 'mrdepartmentsecret'
+        self.browser.getControl("Login").click()
+        self.assertMatches('...You logged in...', self.browser.contents)
+        self.browser.open("http://localhost/app/faculties/fac1/dep1")
+        self.browser.getLink("Export student data").click()
+        self.browser.getControl("Configure new export").click()
+        # Only the paymentsoverview exporter is available for department officers
+        self.assertFalse('<option value="students">' in self.browser.contents)
+        self.assertTrue(
+            '<option value="paymentsoverview">' in self.browser.contents)
+        self.browser.getControl(name="exporter").value = ['paymentsoverview']
+        self.browser.getControl(name="session").value = ['2004']
+        self.browser.getControl(name="level").value = ['100']
+        self.browser.getControl("Create CSV file").click()
+        self.assertTrue('Export started' in self.browser.contents)
+        # Thew job can be discarded
+        self.assertEqual(len(self.app['datacenter'].running_exports), 1)
+        #job_id = self.app['datacenter'].running_exports[0][0]
+        job_id = self.wait_for_export_job_completed()
+        self.browser.open("http://localhost/app/faculties/fac1/dep1/exports")
+        self.browser.getControl("Discard").click()
+        self.assertEqual(len(self.app['datacenter'].running_exports), 0)
+
     def test_export_bursary_officers(self):
         # Create bursary officer
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/department.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/department.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/department.py	(revision 10279)
@@ -40,4 +40,5 @@
     local_roles = [
         'waeup.local.ApplicationsManager',
+        'waeup.local.DepartmentOfficer',
         'waeup.local.DepartmentManager',
         'waeup.local.ClearanceOfficer',
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/facultiescontainer.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/facultiescontainer.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/facultiescontainer.py	(revision 10279)
@@ -25,5 +25,5 @@
 
 class VirtualFacultiesExportJobContainer(VirtualExportJobContainer):
-    """A virtual export job container for certificates.
+    """A virtual export job container for the faculties container.
     """
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/faculty.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/faculty.py	(revision 10278)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/faculty.py	(revision 10279)
@@ -33,4 +33,5 @@
 
     local_roles = [
+        'waeup.local.DepartmentOfficer',
         'waeup.local.DepartmentManager',
         'waeup.local.ClearanceOfficer',
