Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/utils.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/utils.py	(revision 15869)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/applicants/utils.py	(revision 15870)
@@ -50,10 +50,10 @@
         'form.applicant_id': _(u'Base Data'),
         'form.course1': _(u'Programmes/Courses Desired'),
-        'form.hq_type': _(u'Higher Education Record (where applicable)'),
+        'form.hq_type': _(u'Higher Education Record (compulsory where applicable)'),
         'form.presently': _(u'Course or Programme Presently Attending'),
         'form.nysc_year': _(u'NYSC Information'),
         'form.employer': _(u'Employment History'),
-        'form.jamb_subjects': _(u'JAMB Data'),
-        'form.jamb_subjects_list': _(u'JAMB Data'),
+        'form.jamb_subjects': _(u'JAMB Data (compulsory where applicable)'),
+        'form.jamb_subjects_list': _(u'JAMB Data (compulsory where applicable)'),
         'form.notice': _(u'Application Process Information'),
         'form.pp_school': _(u'Post Primary School Qualification'),
Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/browser.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/browser.py	(revision 15869)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/browser.py	(revision 15870)
@@ -62,5 +62,6 @@
     """
     form_fields = grok.AutoFields(ICustomStudentBase).omit(
-        'student_id', 'adm_code', 'suspended')
+        'student_id', 'adm_code', 'suspended',
+        'financially_cleared_by', 'financial_clearance_date')
 
 class StudentBaseEditFormPage(NigeriaStudentBaseEditFormPage):
Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/tests/test_utils.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/tests/test_utils.py	(revision 15870)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/tests/test_utils.py	(revision 15870)
@@ -0,0 +1,40 @@
+## $Id: test_utils.py 15763 2019-11-07 06:39:29Z 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
+##
+import grok
+from hurry.workflow.interfaces import IWorkflowState
+from zope.component import getUtility, createObject
+from waeup.kofa.students.studylevel import StudentStudyLevel
+from waeup.kofa.students.tests.test_browser import StudentsFullSetup
+from waeup.kofa.students.interfaces import IStudentsUtils
+from waeup.kofa.students.studylevel import StudentStudyLevel
+from kofacustom.iuokada.testing import FunctionalLayer
+
+class StudentsUtilsTests(StudentsFullSetup):
+
+    layer = FunctionalLayer
+
+    def test_setMatricNumber(self):
+        IWorkflowState(self.student).setState('school fee paid')
+        site = grok.getSite()
+        utils = getUtility(IStudentsUtils)
+        site['configuration'].next_matric_integer = 21305
+        self.student.matric_number = None
+        msg, mnumber = utils.setMatricNumber(self.student)
+        self.assertEqual(self.student.matric_number, '04/021305')
+        self.assertEqual(msg, None)
+        return
Index: main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/workflow.py
===================================================================
--- main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/workflow.py	(revision 15870)
+++ main/kofacustom.iuokada/trunk/src/kofacustom/iuokada/students/workflow.py	(revision 15870)
@@ -0,0 +1,32 @@
+## $Id: workflow.py 15403 2019-05-07 08:50:16Z henrik $
+##
+## Copyright (C) 2019 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
+##
+"""Workflow for students.
+"""
+import grok
+from hurry.workflow.interfaces import IWorkflowState, IWorkflowTransitionEvent
+from waeup.kofa.students.interfaces import IStudent
+
+@grok.subscribe(IStudent, IWorkflowTransitionEvent)
+def additional_handle_student_transition_event(obj, event):
+    """Additionally reset library flag after school fee payment.
+    """
+    if event.transition.transition_id in (
+        'pay_school_fee', 'approve_school_fee',
+        'pay_pg_fee', 'approve_pg_fee'):
+        obj.library = False
+    return
