Index: /main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/browser.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/browser.py	(revision 9637)
@@ -257,5 +257,5 @@
     """Link in upper left box to access code management.
     """
-    grok.order(4)
+    grok.order(5)
     grok.require('waeup.manageACBatches')
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/breadcrumbs.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/breadcrumbs.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/breadcrumbs.py	(revision 9637)
@@ -30,6 +30,7 @@
     IUniversity, IFacultiesContainer, IUsersContainer, IDataCenter, IFaculty,
     IDepartment, ICourse, ICertificate, ICoursesContainer, ICertificateCourse,
-    ICertificatesContainer,
+    ICertificatesContainer
     )
+from waeup.kofa.reports import IReportsContainer
 
 class Breadcrumb(grok.Adapter):
@@ -157,4 +158,11 @@
     grok.context(IDataCenter)
     title = _(u'Data Center')
+    parent_viewname = 'administration'
+
+class ReportsBreadcrumb(Breadcrumb):
+    """A breadcrumb for reports.
+    """
+    grok.context(IReportsContainer)
+    title = _(u'Reports')
     parent_viewname = 'administration'
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/reports.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/reports.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/reports.py	(revision 9637)
@@ -22,4 +22,5 @@
 from zope.location.location import located
 from waeup.kofa.interfaces import IJobManager
+from waeup.kofa.interfaces import MessageFactory as _
 from waeup.kofa.browser.layout import KofaPage
 from waeup.kofa.browser.resources import tabs
@@ -35,4 +36,5 @@
     grok.context(IReportsContainer)
     grok.require('waeup.manageReports')
+    label = _('Reports')
 
     def _report_url(self, job_id):
@@ -86,4 +88,5 @@
     grok.context(IReportsContainer)
     grok.require('waeup.manageReports')
+    label = _('Create report')
 
     def update(self, START_GENERATOR=None, generator=None):
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py	(revision 9637)
@@ -324,5 +324,5 @@
     """A link to portal configuration.
     """
-    grok.order(2)
+    grok.order(1)
     grok.require('waeup.managePortalConfiguration')
 
@@ -347,4 +347,13 @@
     link = u'datacenter'
     text = _(u'Data Center')
+
+class ManageReports(ManageLink):
+    """A link to reports, placed in upper left box.
+    """
+    grok.order(4)
+    grok.require('waeup.manageReports')
+
+    link = u'reports'
+    text = _(u'Reports')
 
 class MyPreferences(ManageLink):
@@ -658,4 +667,13 @@
     link_title = _('Data Center')
     target_viewname = 'datacenter'
+
+class AdminTaskReports(AdminTask):
+    """Entry on administration page that link to datacenter.
+    """
+    grok.order(3)
+    grok.require('waeup.manageReports')
+
+    link_title = _('Reports')
+    target_viewname = 'reports'
 
 # The SubobjectLister and its viewlets below are not used in Kofa.
Index: /main/waeup.kofa/trunk/src/waeup/kofa/permissions.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 9637)
@@ -225,5 +225,6 @@
                      'waeup.viewHostels', 'waeup.manageHostels',
                      'waeup.editUser',
-                     'waeup.loginAsStudent'
+                     'waeup.loginAsStudent',
+                     'waeup.manageReports',
                      )
 
@@ -252,5 +253,6 @@
                      'waeup.viewHostels', 'waeup.manageHostels',
                      #'waeup.editUser',
-                     #'waeup.loginAsStudent'
+                     #'waeup.loginAsStudent',
+                     'waeup.manageReports',
                      )
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 9637)
@@ -2111,13 +2111,17 @@
                 self.flash(_('You are not the owner of this access code.'))
                 return
-        if self.context.student.state == CLEARED:
-            IWorkflowInfo(self.context.student).fireTransition(
-                'pay_first_school_fee')
-        elif self.context.student.state == RETURNING:
-            IWorkflowInfo(self.context.student).fireTransition(
-                'pay_school_fee')
-        elif self.context.student.state == PAID:
-            IWorkflowInfo(self.context.student).fireTransition(
-                'pay_pg_fee')
+        try:
+            if self.context.student.state == CLEARED:
+                IWorkflowInfo(self.context.student).fireTransition(
+                    'pay_first_school_fee')
+            elif self.context.student.state == RETURNING:
+                IWorkflowInfo(self.context.student).fireTransition(
+                    'pay_school_fee')
+            elif self.context.student.state == PAID:
+                IWorkflowInfo(self.context.student).fireTransition(
+                    'pay_pg_fee')
+        except ConstraintNotSatisfied:
+            self.flash(_('An error occurred, please contact the system administrator.'))
+            return
         self.flash(_('Session started.'))
         self.redirect(self.url(self.context))
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/reports.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/reports.py	(revision 9636)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/reports.py	(revision 9637)
@@ -173,4 +173,6 @@
     grok.require('waeup.manageReports')
 
+    label = _('Create students report')
+
     @property
     def generator_name(self):
