Index: main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py	(revision 15537)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/browser.py	(revision 15574)
@@ -35,5 +35,6 @@
     StudentActivateView, StudentDeactivateView,
     ExportPDFTranscriptSlip,
-    PaymentsManageFormPage)
+    PaymentsManageFormPage,
+    StartClearancePage)
 from waeup.kofa.students.workflow import (CREATED, ADMITTED, PAID,
     CLEARANCE, REQUESTED, RETURNING, CLEARED, REGISTERED, VALIDATED,
@@ -95,4 +96,12 @@
         'payment_date'].custom_widget = FriendlyDatetimeDisplayWidget('le')
 
+class CustomStartClearancePage(StartClearancePage):
+
+    @property
+    def with_ac(self):
+        if self.context.faccode == 'DCOEM':
+            return False
+        return True
+
 class CustomStudentClearanceEditFormPage(NigeriaStudentClearanceEditFormPage):
     """ View to edit student clearance data by student
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py	(revision 15537)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py	(revision 15574)
@@ -45,4 +45,5 @@
 
 SAMPLE_FPM = os.path.join(os.path.dirname(__file__), 'sample.fpm')
+SAMPLE_IMAGE = os.path.join(os.path.dirname(__file__), 'test_image.jpg')
 
 class OfficerUITests(StudentsFullSetup):
@@ -1167,2 +1168,35 @@
         self.assertEqual(self.student['payments'].values()[2].amount_auth, 987.0)
         return
+
+    def test_student_clearance(self):
+        # create some passport file for `student`
+        storage = getUtility(IExtFileStore)
+        image_path = os.path.join(os.path.dirname(__file__), 'test_image.jpg')
+        self.image_contents = open(image_path, 'rb').read()
+        file_id = IFileStoreNameChooser(self.student).chooseName(
+            attr='passport.jpg')
+        storage.createFile(file_id, StringIO(self.image_contents))
+        IWorkflowInfo(self.student).fireTransition('admit')
+        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()
+        self.assertMatches(
+            '...You logged in...', self.browser.contents)
+        self.browser.getLink("Base Data").click()
+        self.browser.getLink("Download admission letter").click()
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertEqual(self.browser.headers['Content-Type'], 'application/pdf')
+        path = os.path.join(samples_dir(), 'admission_slip.pdf')
+        open(path, 'wb').write(self.browser.contents)
+        print "Sample PDF admission_slip.pdf written to %s" % path
+        self.browser.open(self.student_path + '/start_clearance')
+        # Regular students have to enter an access code
+        self.browser.getControl("Start clearance now").click()
+        self.assertTrue('Activation code is invalid' in self.browser.contents)
+        # DCOEM students can start clearance without access code
+        self.app['faculties']['fac1'].code = 'DCOEM'
+        self.browser.open(self.student_path + '/start_clearance')
+        self.browser.getControl("Start clearance now").click()
+        self.assertMatches('...Clearance process has been started...',
+                           self.browser.contents)
Index: main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py
===================================================================
--- main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 15537)
+++ main/waeup.uniben/trunk/src/waeup/uniben/students/utils.py	(revision 15574)
@@ -300,4 +300,6 @@
             #    'MBBSMED', 'MBBSNDU', 'BSCPTY', 'BSCPST'):
                 amount = 80000.0
+            elif student.faccode == 'DCOEM':
+                return _('Acceptance fee payment not necessary.'), None
             else:
                 amount = 60000.0
