Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 16185)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 16186)
@@ -4,4 +4,8 @@
 1.6.1.dev0 (unreleased)
 =======================
+
+* `reg_number` is no longer a required field in `IApplicantBaseData`.
+
+* Add `entry_session` to student data exporters.
 
 * Add `DownloadTranscript` permission.
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py	(revision 16185)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py	(revision 16186)
@@ -379,5 +379,5 @@
         title = _(u'Registration Number'),
         readonly = False,
-        required = True,
+        required = False,
         source = contextual_reg_num_source,
         )
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/export.py	(revision 16185)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/export.py	(revision 16186)
@@ -328,5 +328,5 @@
     fields = tuple(sorted(iface_names(IStudent))) + (
         'password', 'state', 'history', 'certcode', 'is_postgrad',
-        'current_level', 'current_session')
+        'current_level', 'current_session', 'entry_session')
     title = _(u'Students (Data Backup)')
 
@@ -371,5 +371,6 @@
         'current_level',
         'current_session',
-        'current_verdict')
+        'current_verdict',
+        'entry_session')
     title = _(u'Students (Trimmed Data)')
 
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 16185)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 16186)
@@ -3953,5 +3953,5 @@
             'sex,student_id,suspended,suspended_comment,'
             'password,state,history,certcode,is_postgrad,'
-            'current_level,current_session\r\n'
+            'current_level,current_session,entry_session\r\n'
             ',,1981-02-04#,aa@aa.ng,,Anna,,Tester,234,,,,,,,'
             '1234#,123,m,K1000000,0,,{SSHA}' in self.browser.contents)
@@ -4084,5 +4084,5 @@
             'sex,student_id,suspended,suspended_comment,'
             'password,state,history,certcode,is_postgrad,'
-            'current_level,current_session\r\n'
+            'current_level,current_session,entry_session\r\n'
             ',,1981-02-04#,aa@aa.ng,,Anna,,Tester,234,,,,,,,'
             '1234#,123,m,K1000000,0,,{SSHA}' in self.browser.contents)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_export.py	(revision 16185)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_export.py	(revision 16186)
@@ -168,57 +168,10 @@
             'perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'password,state,history,'
-            'certcode,is_postgrad,current_level,current_session\r\n'
+            'password,state,history,certcode,is_postgrad,'
+            'current_level,current_session,entry_session\r\n'
             'my adm code,my clr code,'
             '1981-02-04#,anna@sample.com,,Anna,,Tester,234,M.,NG,,,'
             '"Studentroad 21\nLagos 123456\n",,+234-123-12345#,123,f,'
             'A111111,0,,,created'
-            in result
-            )
-        return
-
-
-class StudentTrimmedDataExporterTest(StudentImportExportSetup):
-
-    layer = FunctionalLayer
-
-    std_csv_entry = (
-        'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
-        'Anna,,Tester,234,M.,NG,,,"Studentroad 21\nLagos 123456\n",,'
-        '+234-123-12345#,123,f,A111111,0,,,created'
-        )
-
-    def setUp(self):
-        super(StudentTrimmedDataExporterTest, self).setUp()
-        self.setup_for_export()
-        return
-
-    def test_ifaces(self):
-        # make sure we fullfill interface contracts
-        obj = TrimmedDataExporter()
-        verifyObject(ICSVStudentExporter, obj)
-        verifyClass(ICSVStudentExporter, TrimmedDataExporter)
-        return
-
-    def test_get_as_utility(self):
-        # we can get an student exporter as utility
-        result = queryUtility(ICSVExporter, name="trimmed")
-        self.assertTrue(result is not None)
-        return
-
-    def test_export(self):
-        # we can really export students
-        # set values we can expect in export file
-        self.setup_student(self.student)
-        exporter = TrimmedDataExporter()
-        exporter.export([self.student], self.outfile)
-        result = open(self.outfile, 'rb').read()
-        self.assertTrue(
-            'student_id,matric_number,reg_number,firstname,middlename,'
-            'lastname,sex,email,phone,nationality,date_of_birth,state,'
-            'current_mode,certcode,faccode,depcode,current_level,'
-            'current_session,current_verdict\r\n'
-            'A111111,234,123,Anna,M.,Tester,f,anna@sample.com,+234-123-12345#,'
-            'NG,1981-02-04#,created,ug_ft,CERT1,NA,NA,200,2012,0'
             in result
             )
@@ -238,6 +191,6 @@
             'perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'password,state,history,certcode,'
-            'is_postgrad,current_level,current_session\r\n'
+            'password,state,history,certcode,is_postgrad,'
+            'current_level,current_session,entry_session\r\n'
             'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
             'Anna,,Tester,234,M.,NG,,,"Studentroad 21\nLagos 123456\n"'
@@ -259,6 +212,6 @@
             'perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'password,state,history,certcode,'
-            'is_postgrad,current_level,current_session\r\n'
+            'password,state,history,certcode,is_postgrad,'
+            'current_level,current_session,entry_session\r\n'
             'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
             'Anna,,Tester,234,M.,NG,,,"Studentroad 21\nLagos 123456\n"'
@@ -373,4 +326,52 @@
         self.assertTrue(self.std_csv_entry in result1)
         self.assertTrue(self.std_csv_entry not in result2)
+        return
+
+
+
+class StudentTrimmedDataExporterTest(StudentImportExportSetup):
+
+    layer = FunctionalLayer
+
+    std_csv_entry = (
+        'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
+        'Anna,,Tester,234,M.,NG,,,"Studentroad 21\nLagos 123456\n",,'
+        '+234-123-12345#,123,f,A111111,0,,,created'
+        )
+
+    def setUp(self):
+        super(StudentTrimmedDataExporterTest, self).setUp()
+        self.setup_for_export()
+        return
+
+    def test_ifaces(self):
+        # make sure we fullfill interface contracts
+        obj = TrimmedDataExporter()
+        verifyObject(ICSVStudentExporter, obj)
+        verifyClass(ICSVStudentExporter, TrimmedDataExporter)
+        return
+
+    def test_get_as_utility(self):
+        # we can get an student exporter as utility
+        result = queryUtility(ICSVExporter, name="trimmed")
+        self.assertTrue(result is not None)
+        return
+
+    def test_export_all(self):
+        # we can really export students
+        # set values we can expect in export file
+        self.setup_student(self.student)
+        exporter = TrimmedDataExporter()
+        exporter.export_all(self.app, self.outfile)
+        result = open(self.outfile, 'rb').read()
+        self.assertTrue(
+            'student_id,matric_number,reg_number,firstname,middlename,'
+            'lastname,sex,email,phone,nationality,date_of_birth,state,'
+            'current_mode,certcode,faccode,depcode,current_level,'
+            'current_session,current_verdict,entry_session\r\n'
+            'A111111,234,123,Anna,M.,Tester,f,anna@sample.com,+234-123-12345#,'
+            'NG,1981-02-04#,created,ug_ft,CERT1,NA,NA,200,2012,0,2010'
+            in result
+            )
         return
 
