Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicants.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicants.py	(revision 6321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicants.py	(revision 6322)
@@ -47,8 +47,7 @@
     def __init__(self):
         super(Applicant, self).__init__()
+        timestamp = datetime.now().strftime("%d/%m/%Y %H:%M")
         #Initialize workflow state...
         IWorkflowInfo(self).fireTransition('init')
-        timestamp = datetime.now().strftime("%d/%m/%Y %H:%M")
-        self.messages = u'%s - Initialize application' % timestamp
 
 # Set all attributes of Applicant required in IApplicant as field
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 6321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 6322)
@@ -76,7 +76,7 @@
 TRANSITION_OBJECTS = create_workflow()
 
-TRANSITION_DICT = dict([
-    (transition_object.transition_id,transition_object.title)
-    for transition_object in TRANSITION_OBJECTS])
+#TRANSITION_DICT = dict([
+#    (transition_object.transition_id,transition_object.title)
+#    for transition_object in TRANSITION_OBJECTS])
 
 class ApplicantsRootPage(WAeUPPage):
@@ -419,8 +419,4 @@
         if state == INITIALIZED:
             IWorkflowInfo(self.context[pin]).fireTransition('start')
-            timestamp = datetime.now().strftime("%d/%m/%Y %H:%M")
-            transition_title = TRANSITION_DICT['start']
-            self.context[pin].messages += '<br />%s - %s' % (
-                timestamp,transition_title)
         self.redirect(self.url(self.context[pin], 'edit'))
         return
@@ -496,4 +492,5 @@
     form_fields['date_of_birth'].custom_widget = FriendlyDateWidget('le-year')
     grok.template('form_edit')
+    manage_applications = True
     pnav = 3
 
@@ -551,4 +548,6 @@
     form_fields['date_of_birth'].custom_widget = FriendlyDateWidget('le-year')
     grok.template('form_edit')
+    manage_applications = False
+
 
     def emitLockMessage(self):
@@ -566,5 +565,6 @@
 
     def dataNotComplete(self):
-        if self.context.confirm_passport is not True:
+        #import pdb; pdb.set_trace()
+        if not self.request.form.get('confirm_passport', False):
             return 'Passport confirmation box not ticked.'
         if len(self.errors) > 0:
@@ -572,8 +572,4 @@
         return False
 
-    @property
-    def getTransitions(self):
-        return None
-
     @grok.action('Save')
     def save(self, **data):
@@ -597,7 +593,8 @@
             return
         state = IWorkflowState(self.context).getState()
-        # Cannot happen but anyway ...
+        # This shouldn't happen, but the application officer
+        # might have forgotten to lock the form after changing the state
         if state != STARTED:
-            self.flash('This form cannot be submitted.')
+            self.flash('This form cannot be submitted. Wrong state!')
             return
         IWorkflowInfo(self.context).fireTransition('submit')
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_edit.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_edit.pt	(revision 6321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_edit.pt	(revision 6322)
@@ -54,5 +54,5 @@
         </tr>
       </tal:block>
-        <tr tal:condition="view/getTransitions">
+        <tr tal:condition="view/manage_applications">
         <td class="label"><label>Application Transition:</label></td>
         <td>
@@ -68,4 +68,9 @@
   </table>
 
+  <p tal:condition="not: view/manage_applications">
+    <input class="checkboxType" id="confirm_passport" name="confirm_passport" type="checkbox" value="True"/>
+    I confirm that the Passport Photograph uploaded on this form is a true picture of me.
+  </p>
+
   <div id="actionsView">
     <span class="actionButtons" tal:condition="view/availableActions">
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 6321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 6322)
@@ -347,9 +347,5 @@
         max_size = 20480,
         )
-    confirm_passport = schema.Bool(
-        title = u"Passport picture confirmed",
-        default = False,
-        required = True,
-        )
+
     #
     # Process Data
@@ -408,6 +404,4 @@
     omit fields. This has to be done in the respective form page.
     """
-    application_state = Attribute("The workflow state of an applicant object.")
-
     screening_score = schema.Int(
         title = u'Screening Score',
@@ -427,9 +421,9 @@
         readonly = True,
         )
-    entry_session = schema.TextLine(
-        # XXX: should be choice
+    entry_session = schema.Choice(
+        source = entry_session_vocab,
         title = u'Entry Session',
         required = False,
-        readonly = True,
+        readonly = True
         )
     notice = schema.Text(
@@ -437,9 +431,4 @@
         required = False,
         readonly = True,
-        )
-    confirm_passport = schema.Bool(
-        title = u"I confirm that the Passport Photograph uploaded on this form is a true picture of me.",
-        default = False,
-        required = True,
         )
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py	(revision 6321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py	(revision 6322)
@@ -25,4 +25,5 @@
         source = None,
         condition = NullCondition,
+        msg = 'appplication process initialized',
         destination = INITIALIZED)
 
@@ -30,4 +31,5 @@
         transition_id = 'start',
         title = 'Start application',
+        msg = 'appplication process started',
         source = INITIALIZED,
         destination = STARTED)
@@ -36,4 +38,5 @@
         transition_id = 'submit',
         title = 'Submit application',
+        msg = 'appplication record submitted',
         source = STARTED,
         destination = SUBMITTED)
@@ -42,4 +45,5 @@
         transition_id = 'admit',
         title = 'Admit applicant',
+        msg = 'appplicant admitted',
         source = SUBMITTED,
         destination = ADMITTED)
@@ -48,4 +52,5 @@
         transition_id = 'refuse1',
         title = 'Refuse application',
+        msg = 'appplication refused',
         source = SUBMITTED,
         destination = NOT_ADMITTED)
@@ -54,4 +59,5 @@
         transition_id = 'refuse2',
         title = 'Refuse application',
+        msg = 'appplication refused',
         source = ADMITTED,
         destination = NOT_ADMITTED)
@@ -60,4 +66,5 @@
         transition_id = 'create',
         title = 'Create student record',
+        msg = 'student record created',
         source = ADMITTED,
         destination = CREATED)
@@ -66,4 +73,5 @@
         transition_id = 'reset1',
         title = 'Reset application',
+        msg = 'appplication record reset',
         source = SUBMITTED,
         destination = STARTED)
@@ -72,4 +80,5 @@
         transition_id = 'reset2',
         title = 'Reset application',
+        msg = 'appplication record reset',
         source = ADMITTED,
         destination = STARTED)
@@ -78,4 +87,5 @@
         transition_id = 'reset3',
         title = 'Reset application',
+        msg = 'appplication record reset',
         source = NOT_ADMITTED,
         destination = STARTED)
@@ -84,4 +94,5 @@
         transition_id = 'reset4',
         title = 'Reset application',
+        msg = 'appplication record reset',
         source = CREATED,
         destination = STARTED)
@@ -161,5 +172,4 @@
     """
     timestamp = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
-    comment = event.comment or '(no comment)'
     # XXX: `messages` is meta data which shouldn't really be part of
     #      the Applicant class. Furthermore we should not store HTML
@@ -169,10 +179,12 @@
     #      to finetune transitions instead of doing that manually in
     #      UI stuff.
-    msg = '%s - %s to %s: %s: %s' % (
-        timestamp, event.source, event.destination, event.transition.title,
-        comment)
+    msg = '%s - %s (new state: %s)' % (
+        timestamp, event.transition.user_data['msg'], event.destination)
     msgs = getattr(obj, 'messages', None)
-    if msgs != '':
+    if msgs:
         msgs += '<br />'
-    obj.messages += msg
+        msgs += msg
+    else:
+        msgs = msg
+    obj.messages = msgs
     return
