Index: /main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py
===================================================================
--- /main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 17626)
+++ /main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 17627)
@@ -555,4 +555,26 @@
     @invariant
     def course_choice(applicant):
+
+        if applicant.course1:
+            if  applicant.jamb_score is None:
+                raise Invalid(_("Total JAMB score not set."))
+            if applicant.course1.custom_float_1 and applicant.course1.custom_float_1 > applicant.jamb_score:
+                raise Invalid(_("You do not meet the minimum cutoff mark for course %s. Cutoff score for this course is %s. Please consider selecting an alternative choice." % (
+                    applicant.course1.code, applicant.course1.custom_float_1)))
+
+        if applicant.course2:
+            if  applicant.jamb_score is None:
+                raise Invalid(_("Total JAMB score not set."))
+            if applicant.course2.custom_float_1 and applicant.course2.custom_float_1 > applicant.jamb_score:
+                raise Invalid(_("You do not meet the minimum cutoff mark for course %s. Cutoff score for this course is %s. Please consider selecting an alternative choice." % (
+                    applicant.course2.code, applicant.course2.custom_float_1)))
+
+        if applicant.course3:
+            if  applicant.jamb_score is None:
+                raise Invalid(_("Total JAMB score not set."))
+            if applicant.course3.custom_float_1 and applicant.course3.custom_float_1 > applicant.jamb_score:
+                raise Invalid(_("You do not meet the minimum cutoff mark for course %s. Cutoff score for this course is %s. Please consider selecting an alternative choice." % (
+                    applicant.course3.code, applicant.course3.custom_float_1)))
+
         if applicant.course1 == applicant.course2:
             raise Invalid(_("2nd choice course must differ from 1st choice course."))
Index: /main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py
===================================================================
--- /main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py	(revision 17626)
+++ /main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py	(revision 17627)
@@ -53,5 +53,5 @@
     SEPARATORS_DICT = {
         'form.applicant_id': _(u'Base Data'),
-        #'form.course1': _(u'Programmes/Courses Desired'),
+        'form.course1': _(u'JAMB Course: '),
         'form.fst_sit_fname': _(u'1st Sitting'),
         'form.scd_sit_fname': _(u'2nd Sitting'),
Index: /main/waeup.aaue/trunk/src/waeup/aaue/browser/pages.py
===================================================================
--- /main/waeup.aaue/trunk/src/waeup/aaue/browser/pages.py	(revision 17626)
+++ /main/waeup.aaue/trunk/src/waeup/aaue/browser/pages.py	(revision 17627)
@@ -21,10 +21,39 @@
     SessionConfigurationManageFormPage,
     ConfigurationContainerManageFormPage,
-    DatacenterPage, ExportCSVPage)
+    DatacenterPage, ExportCSVPage,
+    CertificatePage, CertificateManageFormPage)
 from waeup.kofa.browser.reports import ReportsContainerPage
 from waeup.kofa.interfaces import IConfigurationContainer
+from waeup.kofa.university.interfaces import ICertificate
 from waeup.aaue.interfaces import (
     ICustomSessionConfiguration,
     ICustomSessionConfigurationAdd)
+
+class CustomCertificatePage(CertificatePage):
+    """Index page for certificates.
+    """
+    form_fields = grok.AutoFields(ICertificate).omit(
+        'custom_float_2',
+        'school_fee_1',
+        'school_fee_2',
+        'school_fee_3',
+        'school_fee_4',
+        'custom_textline_1',
+        'custom_textline_2',
+        )
+
+class CustomCertificateManageFormPage(CertificateManageFormPage):
+    """Manage the properties of a `Certificate` instance.
+    """
+    form_fields = grok.AutoFields(ICertificate).omit(
+        'ratio',
+        'custom_float_2',
+        'school_fee_1',
+        'school_fee_2',
+        'school_fee_3',
+        'school_fee_4',
+        'custom_textline_1',
+        'custom_textline_2',
+        'code')
 
 class CustomConfigurationContainerManageFormPage(
Index: /main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- /main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 17626)
+++ /main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 17627)
@@ -125,20 +125,4 @@
 msgstr "<b>Units: ${a}</b>"
 
-#: school_fee_1
-msgid "Initial School Fee"
-msgstr "School Fees 1 (not used)"
-
-#: school_fee_2
-msgid "Returning School Fee"
-msgstr "School Fees 2 (not used)"
-
-#: school_fee_3
-msgid "Foreigner Initial School Fee"
-msgstr "School Fees 3 (not used)"
-
-#: school_fee_4
-msgid "Foreigner Returning School Fee"
-msgstr "School Fees 4 (not used)"
-
 msgid "Registration Number"
 msgstr "(JAMB) Registration Number"
@@ -206,9 +190,21 @@
 msgstr "Result Sheet"
 
+#: school_fee_1
+msgid "Initial School Fee"
+msgstr "School Fees 1 (not used)"
+
+#: school_fee_2
+msgid "Returning School Fee"
+msgstr "School Fees 2 (not used)"
+
+#: school_fee_3
+msgid "Foreigner Initial School Fee"
+msgstr "School Fees 3 (not used)"
+
+#: school_fee_4
+msgid "Foreigner Returning School Fee"
+msgstr "School Fees 4 (not used)"
+
 #: waeup/kofa/university/interfaces.py:311
 msgid "Custom Float 1 (not used)"
-msgstr "Cumulative Units Taken"
-
-#: waeup/kofa/university/interfaces.py:316
-msgid "Custom Float 2 (not used)"
-msgstr "Cumulative Units Passed"
+msgstr "Cutoff JAMB Score"
