Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicants.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicants.py	(revision 6338)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicants.py	(revision 6339)
@@ -27,5 +27,5 @@
 from zope.schema.fieldproperty import FieldProperty
 from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
-from waeup.sirp.interfaces import IWAeUPSIRPPluggable
+from waeup.sirp.interfaces import IWAeUPSIRPPluggable, IObjectHistory
 from waeup.sirp.app import University
 from waeup.sirp.applicants.interfaces import (
@@ -54,4 +54,9 @@
         state = IWorkflowState(self).getState()
         return state
+
+    @property
+    def history(self):
+        history = IObjectHistory(self)
+        return history
 
 # Set all attributes of Applicant required in IApplicant as field
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_display.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_display.pt	(revision 6338)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_display.pt	(revision 6339)
@@ -5,6 +5,6 @@
 <h2> ... <span tal:replace="context/state">Application State</span> ... </h2>
 
-<div class="workflow" tal:content="structure context/msgs">
-  Application Workflow
+<div class="workflow" tal:repeat="msg context/history/messages">
+  <span tal:replace="msg">message</span><br />
 </div>
 
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 6338)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/form_edit.pt	(revision 6339)
@@ -8,6 +8,7 @@
   <h2> ... <span tal:replace="context/state">Application State</span> ... </h2>
 
-  <div class="workflow" tal:content="structure context/msgs">Application Workflow</div>
-
+  <div class="workflow" tal:repeat="msg context/history/messages">
+    <span tal:replace="msg">message</span><br />
+  </div>
 
   <div class="form-status"
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 6338)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 6339)
@@ -283,5 +283,5 @@
     state, depending on use-case.
     """
-    msgs = Attribute('Workflow transitions with date of transition.')
+    history = Attribute('Object history, a list of messages.')
     state = Attribute('Returns the application state of an applicant')
 
@@ -402,7 +402,8 @@
     """An applicant.
 
-    Here we can repeat the fields from base data and set the `required` and
-    `readonly` attributes to True to further restrict the data access. We cannot
-    omit fields. This has to be done in the respective form page.
+    Here we can repeat the fields from base data and set the
+    `required` and `readonly` attributes to True to further restrict
+    the data access. We cannot omit fields. This has to be done in the
+    respective form page.
     """
     screening_score = schema.Int(
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py	(revision 6338)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py	(revision 6339)
@@ -10,4 +10,5 @@
     InvalidTransitionError, IWorkflowTransitionEvent)
 from waeup.sirp.applicants.interfaces import IApplicantBaseData
+from waeup.sirp.interfaces import IObjectHistory
 
 
@@ -172,13 +173,7 @@
     """
     timestamp = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
-    # XXX: We should not store HTML code but simple messages.
     msg = '%s - %s (new state: %s)' % (
         timestamp, event.transition.user_data['msg'], event.destination)
-    msgs = getattr(obj, 'msgs', None)
-    if msgs:
-        msgs += '<br />'
-        msgs += msg
-    else:
-        msgs = msg
-    obj.msgs = msgs
+    history = IObjectHistory(obj)
+    history.addMessage(msg)
     return
