Index: /main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser.py
===================================================================
--- /main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser.py	(revision 17200)
+++ /main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/browser.py	(revision 17201)
@@ -34,5 +34,6 @@
     BalancePaymentAddFormPage,
     ExportPDFPaymentSlipPage,
-    ApplicantBaseDisplayFormPage)
+    ApplicantBaseDisplayFormPage,
+    ExportJobContainerJobStart)
 from waeup.kofa.applicants.workflow import (
     INITIALIZED, STARTED, PAID, SUBMITTED, 
@@ -52,4 +53,13 @@
 from kofacustom.lpng.interfaces import MessageFactory as _
 
+
+class CustomExportJobContainerJobStart(ExportJobContainerJobStart):
+    """View that starts three export jobs, one for applicants, a second
+    one for applicant payments and a third for referee reports.
+    """
+
+    EXPORTER_LIST = ('applicants',
+                   'applicantpayments',
+                   )
         
 class CustomApplicantDisplayFormPage(ApplicantDisplayFormPage):
Index: /main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/interfaces.py
===================================================================
--- /main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/interfaces.py	(revision 17200)
+++ /main/kofacustom.lpng/trunk/src/kofacustom/lpng/applicants/interfaces.py	(revision 17201)
@@ -253,5 +253,5 @@
     email = schema.ASCIILine(
         title = _(u'Email Address'),
-        required = True,
+        required = False,
         constraint=validate_email,
         )
@@ -313,5 +313,12 @@
         )
 
+    email = schema.ASCIILine(
+        title = _(u'Email Address'),
+        required = True,
+        constraint=validate_email,
+        )
+
 ICustomApplicantEdit['reg_number'].order = ICustomApplicant['reg_number'].order
+ICustomApplicantEdit['email'].order = ICustomApplicant['email'].order
 
 class ICustomApplicantOnlinePayment(INigeriaApplicantOnlinePayment):
Index: /main/kofacustom.lpng/trunk/src/kofacustom/lpng/browser/pages.py
===================================================================
--- /main/kofacustom.lpng/trunk/src/kofacustom/lpng/browser/pages.py	(revision 17200)
+++ /main/kofacustom.lpng/trunk/src/kofacustom/lpng/browser/pages.py	(revision 17201)
@@ -17,11 +17,18 @@
 ##
 import grok
-from waeup.kofa.interfaces import IKofaUtils, IKofaObject
+from zope.component import (
+    getUtility, queryUtility, createObject, getAllUtilitiesRegisteredFor,
+    getUtilitiesFor,
+    )
+from waeup.kofa.interfaces import IKofaUtils, IKofaObject, ICSVExporter
 from waeup.kofa.browser.pages import (
     SessionConfigurationAddFormPage, SessionConfigurationManageFormPage,
-    LoginPage, CertificatePage, CertificateManageFormPage)
+    LoginPage, CertificatePage, CertificateManageFormPage,
+    ExportCSVPage)
 from waeup.kofa.university.interfaces import ICertificate
 from kofacustom.lpng.interfaces import (
     ICustomSessionConfiguration, ICustomSessionConfigurationAdd)
+
+grok.templatedir('templates')
 
 class CustomSessionConfigurationAddFormPage(SessionConfigurationAddFormPage):
@@ -35,2 +42,14 @@
     form_fields = grok.AutoFields(ICustomSessionConfiguration)
 
+class CustomExportCSVPage(ExportCSVPage):
+
+    grok.template('datacenterexportpage')
+
+    def getExporters(self):
+        title_name_tuples = [
+            (u'Registrants', u'applicants'),
+            (u'Registrant Payments', u'applicantpayments'),
+            (u'Registrants Containers', u'applicantscontainers'),
+            (u'Users', u'users'),
+            ]
+        return sorted(title_name_tuples)
Index: /main/kofacustom.lpng/trunk/src/kofacustom/lpng/browser/templates/datacenterexportpage.pt
===================================================================
--- /main/kofacustom.lpng/trunk/src/kofacustom/lpng/browser/templates/datacenterexportpage.pt	(revision 17201)
+++ /main/kofacustom.lpng/trunk/src/kofacustom/lpng/browser/templates/datacenterexportpage.pt	(revision 17201)
@@ -0,0 +1,105 @@
+<p i18n:translate="">
+  Here you can create CSV files from parts of portal data except student data.
+  Please pick the type of objects you want to export from the
+  selection below. The file will be generated and then be
+  made available for you to download in the table below.
+  Files can only be downloaded within 24 hours after generation.
+  The download link disappears afterwards.
+</p>
+
+<br />
+
+<form  method="POST" class="form-inline">
+  <label for="exporter">
+    Exporter (Data Type):
+  </label>
+  <div class="form-group">
+    <select name="exporter" class="form-control half">
+      <span tal:repeat="items view/getExporters" tal:omit-tag="">
+        <option tal:define="name python: items[1]; title python: items[0]"
+          tal:attributes="value name">
+        <span tal:replace="title">TITLE
+        </span>
+        </option>
+      </span>
+    </select>
+  </div>
+  <div class="form-group">
+    <input i18n:translate="" type="submit" class="btn btn-primary"
+      name="CREATE" tal:attributes="value view/export_button" />
+  </div>
+  <div class="form-group">
+  <input type="submit" name="CANCEL" class="btn btn-default"
+      tal:attributes="value view/cancel_button"
+      />
+  </div>
+</form>
+
+<br /><br />
+
+<table i18n:domain="waeup.kofa" class="table table-condensed table-hover">
+  <thead>
+    <tr>
+      <th i18n:translate="">Export Number</th>
+      <th i18n:translate="">Exporter</th>
+      <th i18n:translate="">Filter</th>
+      <th i18n:translate="">Creator</th>
+      <th i18n:translate="">Creation Date</th>
+      <th i18n:translate="">Status</th>
+      <th>&nbsp;</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr tal:repeat="job view/entries">
+      <td>
+        <span tal:replace="job/job">12</span>
+      </td>
+      <td>
+        <span tal:replace="structure job/exporter">EXPORTER</span>
+      </td>
+      <td>
+        <span tal:replace="structure job/args">ARGS</span>
+      </td>
+      <td>
+        <span tal:replace="job/creator">CREATOR</span>
+      </td>
+      <td>
+        <span tal:replace="job/start_time">DATETIME</span>
+      </td>
+      <td>
+        <span tal:replace="job/status">STATUS</span>
+      </td>
+      <td nowrap>
+        <a href="" class="btn btn-default btn-xs" i18n:translate=""
+           tal:condition="job/show_refresh_button">
+          <img src="/static/img/actionicon_reload.png" />
+          Reload
+        </a>
+        <form method="POST">
+          <a href="" class="btn btn-primary btn-xs"
+                 tal:attributes="href job/download_url"
+                 tal:condition="job/show_download_button"
+                 i18n:translate="">
+            Download</a>
+          <input type="hidden" name="job_id"
+                 tal:attributes="value job/job" />
+          <input type="submit" class="btn btn-default btn-xs"
+                 name="DISCARD" value="Discard"
+                 tal:condition="job/show_discard_button"
+                 i18n:translate=""/>
+        </form>
+      </td>
+    </tr>
+  </tbody>
+</table>
+
+<form method="POST" i18n:domain="waeup.kofa">
+  <div class="form-group">
+    <input type="submit" class="btn btn-primary"
+      name="PURGE" value="Purge outdated exports"
+      data-toggle="tooltip"
+      title="All exports older than 24 hours will be discarded!"
+      i18n:translate=""
+      />
+  </div>
+</form>
Index: /main/kofacustom.lpng/trunk/src/kofacustom/lpng/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- /main/kofacustom.lpng/trunk/src/kofacustom/lpng/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 17200)
+++ /main/kofacustom.lpng/trunk/src/kofacustom/lpng/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 17201)
@@ -77,5 +77,8 @@
 
 msgid "Applicant admitted"
-msgstr "Applicant registered"
+msgstr "Registrant registered"
+
+msgid "Applicant Payments"
+msgstr "Registrant Payments"
 
 msgid "Student record created"
