Index: /main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 6643)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 6644)
@@ -762,5 +762,6 @@
         self.flash('Form has been saved.')
         ob_class = self.__implemented__.__name__.replace('waeup.sirp.','')
-        self.context.loggerInfo(ob_class, 'saved: % s' % fields_string)
+        if fields_string:
+            self.context.loggerInfo(ob_class, 'saved: % s' % fields_string)
         return
 
Index: /main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py	(revision 6643)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/applicants/workflow.py	(revision 6644)
@@ -8,4 +8,5 @@
 from waeup.sirp.interfaces import IObjectHistory, IWAeUPWorkflowInfo
 from waeup.sirp.workflow import WAeUPWorkflow, WAeUPWorkflowInfo
+from waeup.sirp.utils.helpers import get_current_principal
 
 INITIALIZED = 'initialized'
@@ -124,3 +125,10 @@
     history = IObjectHistory(obj)
     history.addMessage(msg)
+    # In some tests we don't have a an applicants root or a user
+    try:
+        user = get_current_principal()
+        applicants_root = grok.getSite()['applicants']
+        applicants_root.logger.info('%s - %s - %s' % (user.id,obj.access_code,msg))
+    except (TypeError, AttributeError):
+        pass
     return
Index: /main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 6643)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 6644)
@@ -309,5 +309,6 @@
         self.flash('Form has been saved.')
         ob_class = self.__implemented__.__name__.replace('waeup.sirp.','')
-        self.context.loggerInfo(ob_class, 'saved: % s' % fields_string)
+        if fields_string:
+            self.context.loggerInfo(ob_class, 'saved: % s' % fields_string)
         return
 
Index: /main/waeup.sirp/trunk/src/waeup/sirp/students/container.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/students/container.py	(revision 6643)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/students/container.py	(revision 6644)
@@ -58,5 +58,5 @@
     logger_filename = 'students.log'
 
-    def logger_info(self, target, ob_class, comment=None):
+    def logger_info(self, ob_class, target, comment=None):
         """Get the logger's info method.
         """
@@ -67,4 +67,4 @@
             user = user.id
         self.logger.info('%s - %s - %s - %s' % (
-                user, target, ob_class, comment))
+                user, ob_class, target, comment))
         return
Index: /main/waeup.sirp/trunk/src/waeup/sirp/students/workflow.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/students/workflow.py	(revision 6643)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/students/workflow.py	(revision 6644)
@@ -8,4 +8,5 @@
 from waeup.sirp.interfaces import IObjectHistory, IWAeUPWorkflowInfo
 from waeup.sirp.workflow import WAeUPWorkflow, WAeUPWorkflowInfo
+from waeup.sirp.utils.helpers import get_current_principal
 
 CREATED = 'created'
@@ -59,8 +60,15 @@
 @grok.subscribe(IStudent, IWorkflowTransitionEvent)
 def handle_student_transition_event(obj, event):
-    """Append message to student history when transition happened.
+    """Append message to student history and log file when transition happened.
     """
     msg = '%s' % event.transition.user_data['msg']
     history = IObjectHistory(obj)
     history.addMessage(msg)
+    # In some tests we don't have a students container or a user
+    try:
+        user = get_current_principal()
+        students_container = grok.getSite()['students']
+        students_container.logger.info('%s - %s - %s' % (user.id,obj.student_id,msg))
+    except (TypeError, AttributeError):
+        pass
     return
