Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/browser.py	(revision 17627)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/browser.py	(revision 17632)
@@ -24,4 +24,6 @@
 from zope.catalog.interfaces import ICatalog
 from hurry.workflow.interfaces import IWorkflowState
+from zope.component import queryUtility
+from zope.catalog.interfaces import ICatalog
 from waeup.kofa.interfaces import (
     IExtFileStore, IFileStoreNameChooser, IKofaUtils)
@@ -609,14 +611,40 @@
             self.emit_lock_message()
             return
-        if getattr(
-            self.context.course1, 'code', 'nocourse') == self.request.form.get(
-            'form.course2', None):
+        course1_in_form = self.request.form.get('form.course1', None)
+        course2_in_form = self.request.form.get('form.course2', None)
+        course3_in_form = self.request.form.get('form.course3', None)
+        cat = queryUtility(ICatalog, name='certificates_catalog')
+        if course2_in_form:
+            if  not self.context.jamb_score:
+                self.flash(("Total JAMB score not set."), type='danger')
+                self.redirect(self.url(self.context))
+                return
+            results = list(
+                cat.searchResults(code=(course2_in_form, course2_in_form)))
+            cutoff = getattr(results[0], 'custom_float_1')
+            if cutoff and cutoff > self.context.jamb_score:
+                self.flash("You do not meet the minimum cutoff mark for your 2nd choice course. Please consider selecting an alternative choice.",
+                    type='danger')
+                self.redirect(self.url(self.context))
+                return
+        if course3_in_form:
+            if  not self.context.jamb_score:
+                self.flash(("Total JAMB score not set."), type='danger')
+                self.redirect(self.url(self.context))
+                return
+            results = list(
+                cat.searchResults(code=(course3_in_form, course3_in_form)))
+            cutoff = getattr(results[0], 'custom_float_1')
+            if cutoff and cutoff > self.context.jamb_score:
+                self.flash("You do not meet the minimum cutoff mark for your 3rd choice course. Please consider selecting an alternative choice.",
+                    type='danger')
+                self.redirect(self.url(self.context))
+                return
+        if getattr(self.context.course1, 'code', 'nocourse') == course2_in_form:
             self.flash(_('2nd choice course must differ from 1st choice course.'),
                        type='danger')
             self.redirect(self.url(self.context))
             return
-        if getattr(
-            self.context.course1, 'code', 'nocourse') == self.request.form.get(
-            'form.course3', None):
+        if getattr(self.context.course1, 'code', 'nocourse') == course3_in_form:
             self.flash(_('3rd choice course must differ from 1st choice course.'),
                        type='danger')
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 17627)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 17632)
@@ -154,5 +154,5 @@
 
     course1 = schema.Choice(
-        title = _(u'1st Choice Course of Study'),
+        title = _(u'1st Choice Course of Study (JAMB Course)'),
         source = AppCatCertificateSource(),
         required = False,
@@ -555,25 +555,4 @@
     @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:
@@ -1617,5 +1596,5 @@
 
     course1 = schema.Choice(
-        title = _(u'1st Choice Course of Study'),
+        title = _(u'1st Choice Course of Study (JAMB Course)'),
         source = AppCatCertificateSource(),
         required = True,
@@ -1675,5 +1654,6 @@
     # and no Invalid exception is raised.
     # NoInputData: NoInputD...course1'
-    # Therefore, we check and compare course1 on CustomApplicantEditFormPage.
+    # Therefore, we check and compare course1 on CustomApplicantEditFormPage. We
+    # do also cherck if the course choices meet tmeet the minimum cutoff mark for course.
     @invariant
     def course_choice(applicant):
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_browser.py	(revision 17627)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_browser.py	(revision 17632)
@@ -74,4 +74,5 @@
         self.app['configuration'].addSessionConfiguration(configuration)
         self.applicantscontainer.application_fee = 200.0
+        self.applicant.jamb_score = 1000000
         self.login()
         self.browser.open(self.edit_path)
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py	(revision 17627)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/utils.py	(revision 17632)
@@ -53,5 +53,5 @@
     SEPARATORS_DICT = {
         'form.applicant_id': _(u'Base Data'),
-        'form.course1': _(u'JAMB Course: '),
+        #'form.course1': _(u'JAMB Course: '),
         'form.fst_sit_fname': _(u'1st Sitting'),
         'form.scd_sit_fname': _(u'2nd Sitting'),
