Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py	(revision 9155)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser.py	(revision 9156)
@@ -18,5 +18,9 @@
 import grok
 from zope.i18n import translate
+from hurry.workflow.interfaces import IWorkflowInfo
+from waeup.kofa.interfaces import ADMITTED
+from waeup.kofa.interfaces import MessageFactory as _
 from waeup.kofa.widgets.datewidget import FriendlyDatetimeDisplayWidget
+from waeup.kofa.students.browser import StartClearancePage
 from kofacustom.nigeria.students.browser import (
     NigeriaOnlinePaymentDisplayFormPage,
@@ -49,2 +53,26 @@
     form_fields['creation_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
     form_fields['payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
+
+class CustomStartClearancePage(StartClearancePage):
+
+    grok.template('startclearance')
+
+    def update(self, SUBMIT=None):
+        if not self.context.state == ADMITTED:
+            self.flash(_("Wrong state"))
+            self.redirect(self.url(self.context))
+            return
+        if not self.portrait_uploaded:
+            self.flash(_("No portrait uploaded."))
+            self.redirect(self.url(self.context, 'change_portrait'))
+            return
+        if not self.all_required_fields_filled:
+            self.flash(_("Not all required fields filled."))
+            self.redirect(self.url(self.context, 'edit_base'))
+            return
+        if SUBMIT is None:
+            return
+        IWorkflowInfo(self.context).fireTransition('start_clearance')
+        self.flash(_('Clearance process has been started.'))
+        self.redirect(self.url(self.context,'cedit'))
+        return
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser_templates/startclearance.pt
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser_templates/startclearance.pt	(revision 9156)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/browser_templates/startclearance.pt	(revision 9156)
@@ -0,0 +1,11 @@
+<form method="POST" i18n:domain="waeup.fceokene">
+
+  <p i18n:translate="">
+    You data have been approved. You can start clearance now by
+    clicking the button below.
+  </p>
+
+  <input type="submit" name="SUBMIT" class="btn primary"
+         tal:attributes="value view/buttonname" />
+
+</form>
Index: main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py
===================================================================
--- main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 9155)
+++ main/waeup.fceokene/trunk/src/waeup/fceokene/students/tests/test_browser.py	(revision 9156)
@@ -20,10 +20,11 @@
 import tempfile
 from StringIO import StringIO
-from hurry.workflow.interfaces import IWorkflowState
+from hurry.workflow.interfaces import IWorkflowState, IWorkflowInfo
 from zope.component.hooks import setSite, clearSite
 from zope.component import getUtility, createObject
 from zope.interface import verify
 from waeup.kofa.app import University
-from waeup.kofa.students.tests.test_browser import StudentsFullSetup
+from waeup.kofa.students.tests.test_browser import (
+    StudentsFullSetup, SAMPLE_IMAGE)
 from waeup.kofa.testing import FunctionalTestCase
 from waeup.kofa.interfaces import (
@@ -247,2 +248,23 @@
         self.assertEqual(error, u'Previous session payment not yet implemented.')
         return
+
+    def test_student_start_clearance(self):
+        self.browser.open(self.login_path)
+        self.browser.getControl(name="form.login").value = self.student_id
+        self.browser.getControl(name="form.password").value = 'spwd'
+        self.browser.getControl("Login").click()
+
+        IWorkflowInfo(self.student).fireTransition('admit')
+        self.browser.open(self.student_path + '/change_portrait')
+        image = open(SAMPLE_IMAGE, 'rb')
+        ctrl = self.browser.getControl(name='passportuploadedit')
+        file_ctrl = ctrl.mech_control
+        file_ctrl.add_file(image, filename='my_photo.jpg')
+        self.browser.getControl(
+            name='upload_passportuploadedit').click()
+        self.browser.open(self.student_path + '/start_clearance')
+        # In Okene the students can just start clearance without entering
+        # an activation code.
+        self.browser.getControl("Start clearance now").click()
+        self.assertMatches('...Clearance process has been started...',
+                           self.browser.contents)
