Index: /main/waeup.fceokene/trunk/src/waeup/fceokene/applicants/applicant.py
===================================================================
--- /main/waeup.fceokene/trunk/src/waeup/fceokene/applicants/applicant.py	(revision 18066)
+++ /main/waeup.fceokene/trunk/src/waeup/fceokene/applicants/applicant.py	(revision 18067)
@@ -32,4 +32,9 @@
     grok.provides(ICustomApplicant)
 
+    applicant_student_mapping = NigeriaApplicant.applicant_student_mapping + [
+        ('nin', 'nin'),
+        ('jamb_reg_number', 'jamb_reg_number'),
+        ]
+
 # Set all attributes of CustomApplicant required in ICustomApplicant as field
 # properties. Doing this, we do not have to set initial attributes
Index: /main/waeup.fceokene/trunk/src/waeup/fceokene/applicants/interfaces.py
===================================================================
--- /main/waeup.fceokene/trunk/src/waeup/fceokene/applicants/interfaces.py	(revision 18066)
+++ /main/waeup.fceokene/trunk/src/waeup/fceokene/applicants/interfaces.py	(revision 18067)
@@ -426,4 +426,11 @@
         required = False,
         )
+    nin = schema.Int(
+        title = _(u'National Identity Number (NIN)'),
+        required = False,
+        readonly = False,
+        min=10000000000,
+        max=99999999999,
+        )
     notice = schema.Text(
         title = _(u'Notice'),
Index: /main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py
===================================================================
--- /main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py	(revision 18066)
+++ /main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py	(revision 18067)
@@ -36,5 +36,7 @@
     NigeriaOnlinePaymentAddFormPage,
     NigeriaExportPDFPaymentSlip,
+    NigeriaStudentClearanceDisplayFormPage,
     NigeriaStudentClearanceEditFormPage,
+    NigeriaStudentClearanceManageFormPage,
     NigeriaExportPDFClearanceSlip,
     NigeriaExportPDFCourseRegistrationSlip,
@@ -45,5 +47,7 @@
 
 from waeup.fceokene.students.interfaces import (
-    ICustomStudentOnlinePayment, ICustomUGStudentClearance,
+    ICustomStudentOnlinePayment,
+    ICustomUGStudentClearance,
+    ICustomPGStudentClearance,
     ICustomStudentStudyLevel)
 
@@ -149,4 +153,38 @@
         return False
 
+class CustomStudentClearanceDisplayFormPage(NigeriaStudentClearanceDisplayFormPage):
+    """ Page to display student clearance data
+    """
+
+    @property
+    def form_fields(self):
+        if self.context.is_postgrad:
+            form_fields = grok.AutoFields(
+                ICustomPGStudentClearance).omit('clearance_locked')
+        else:
+            form_fields = grok.AutoFields(
+                ICustomUGStudentClearance).omit('clearance_locked')
+        if not getattr(self.context, 'officer_comment'):
+            form_fields = form_fields.omit('officer_comment')
+        else:
+            form_fields['officer_comment'].custom_widget = BytesDisplayWidget
+        return form_fields
+
+
+class CustomStudentClearanceManageFormPage(NigeriaStudentClearanceManageFormPage):
+    """ Page to edit student clearance data
+    """
+
+    @property
+    def form_fields(self):
+        if self.context.is_postgrad:
+            form_fields = grok.AutoFields(
+                ICustomPGStudentClearance).omit('clr_code')
+        else:
+            form_fields = grok.AutoFields(
+                ICustomUGStudentClearance).omit('clr_code')
+        return form_fields
+
+
 class CustomExportPDFClearanceSlip(NigeriaExportPDFClearanceSlip):
     """Deliver a PDF slip of the context.
@@ -184,4 +222,16 @@
     def dataNotComplete(self):
         return False
+
+    @property
+    def form_fields(self):
+        if self.context.is_postgrad:
+            form_fields = grok.AutoFields(ICustomPGStudentClearance).omit(
+            'clearance_locked', 'nysc_location', 'clr_code', 'officer_comment',
+            'physical_clearance_date')
+        else:
+            form_fields = grok.AutoFields(ICustomUGStudentClearance).omit(
+            'clearance_locked', 'clr_code', 'officer_comment',
+            'physical_clearance_date')
+        return form_fields
 
 class CustomBedTicketAddPage(NigeriaBedTicketAddPage):
Index: /main/waeup.fceokene/trunk/src/waeup/fceokene/students/export.py
===================================================================
--- /main/waeup.fceokene/trunk/src/waeup/fceokene/students/export.py	(revision 18067)
+++ /main/waeup.fceokene/trunk/src/waeup/fceokene/students/export.py	(revision 18067)
@@ -0,0 +1,48 @@
+## $Id: export.py 17622 2023-10-26 12:55:48Z henrik $
+##
+## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+"""Exporters for student related stuff.
+"""
+from waeup.kofa.students.export import (
+    SchoolFeePaymentsOverviewExporter, StudentExporter)
+from waeup.fceokene.students.interfaces import (
+    ICustomStudent,
+    ICustomStudentStudyCourse,
+    ICustomStudentStudyLevel,
+    ICustomCourseTicket,
+    ICustomStudentOnlinePayment)
+from kofacustom.nigeria.students.export import (
+    NigeriaStudentExporter,
+    NigeriaStudentStudyCourseExporter,
+    NigeriaStudentStudyLevelExporter,
+    NigeriaCourseTicketExporter,
+    NigeriaStudentPaymentExporter,
+    NigeriaDataForBursaryExporter,
+    )
+from waeup.kofa.students.export import StudentPaymentExporter
+from waeup.kofa.utils.helpers import iface_names
+
+class CustomStudentExporter(NigeriaStudentExporter):
+    """Exporter for Students.
+    """
+
+    fields = tuple(sorted(iface_names(
+        ICustomStudent, omit=['loggerInfo']))) + (
+        'password', 'state', 'history', 'certcode', 'is_postgrad',
+        'current_level', 'current_session', 'entry_session')
+
+
Index: /main/waeup.fceokene/trunk/src/waeup/fceokene/students/interfaces.py
===================================================================
--- /main/waeup.fceokene/trunk/src/waeup/fceokene/students/interfaces.py	(revision 18066)
+++ /main/waeup.fceokene/trunk/src/waeup/fceokene/students/interfaces.py	(revision 18067)
@@ -90,4 +90,17 @@
         readonly = False,
         )
+    jamb_reg_number = schema.TextLine(
+        title = _(u'JAMB Registration Number'),
+        required = False,
+        readonly = False,
+        )
+
+    nin = schema.Int(
+        title = _(u'National Identity Number (NIN)'),
+        required = False,
+        readonly = False,
+        min=10000000000,
+        max=99999999999,
+        )
 
     fst_sit_fname = schema.TextLine(
