Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicant.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicant.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/applicant.py	(revision 7364)
@@ -71,5 +71,5 @@
 
     @property
-    def fullname(self):
+    def display_fullname(self):
         middlename = getattr(self, 'middlename', None)
         sirp_utils = getUtility(ISIRPUtils)
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/authentication.py	(revision 7364)
@@ -38,5 +38,5 @@
     @property
     def title(self):
-        return self.context.fullname
+        return self.context.display_fullname
 
     @property
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser.py	(revision 7364)
@@ -563,5 +563,5 @@
     def label(self):
         return '%s: Online Payment Ticket %s' % (
-            self.context.__parent__.fullname,self.context.p_id)
+            self.context.__parent__.display_fullname,self.context.p_id)
 
 class PaymentReceiptActionButton(ManageActionButton):
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainermanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainermanagepage.pt	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/browser_templates/applicantscontainermanagepage.pt	(revision 7364)
@@ -84,5 +84,5 @@
             </td>
             <td>
-              <span tal:replace="appl/fullname">Fullname
+              <span tal:replace="appl/display_fullname">Fullname
               </span>
             </td>
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/interfaces.py	(revision 7364)
@@ -384,5 +384,5 @@
     history = Attribute('Object history, a list of messages.')
     state = Attribute('The application state of an applicant')
-    fullname = Attribute('The fullname of an applicant')
+    display_fullname = Attribute('The fullname of an applicant')
     application_date = Attribute('Date of submission, used for export only')
     password = Attribute('Encrypted password of a applicant')
Index: main/waeup.sirp/trunk/src/waeup/sirp/applicants/tests/test_authentication.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/applicants/tests/test_authentication.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/applicants/tests/test_authentication.py	(revision 7364)
@@ -60,5 +60,5 @@
 class FakeApplicant(object):
     applicant_id = 'test_appl'
-    fullname = 'Tilman Gause'
+    display_fullname = 'Tilman Gause'
     password = None
     email = None
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7364)
@@ -231,5 +231,5 @@
         """
         if IStudentNavigation.providedBy(self.context):
-            return self.context.getStudent().fullname
+            return self.context.getStudent().display_fullname
         return
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/showstudentspage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/showstudentspage.pt	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/showstudentspage.pt	(revision 7364)
@@ -19,5 +19,5 @@
       <span tal:content="item/student_id">A123456</span></a>
     </td>
-	  <td tal:content="item/fullname">FULLNAME</td>
+	  <td tal:content="item/display_fullname">FULLNAME</td>
     <td tal:content="item/state">STATE</td>
     <td>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/authentication.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/authentication.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/authentication.py	(revision 7364)
@@ -50,5 +50,5 @@
     @property
     def title(self):
-        return self.context.fullname
+        return self.context.display_fullname
 
     @property
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 7364)
@@ -100,5 +100,5 @@
 
     def title(self):
-        return self.context.fullname
+        return self.context.display_fullname
 
 class SudyCourseBreadcrumb(Breadcrumb):
@@ -347,5 +347,5 @@
     @property
     def label(self):
-        return '%s: Base Data' % self.context.fullname
+        return '%s: Base Data' % self.context.display_fullname
 
     @property
@@ -378,5 +378,5 @@
 
     def label(self):
-        return u'Send message to %s' % self.context.fullname
+        return u'Send message to %s' % self.context.display_fullname
 
     @grok.action('Send message now')
@@ -484,5 +484,5 @@
     @property
     def label(self):
-        return '%s: Clearance Data' % self.context.fullname
+        return '%s: Clearance Data' % self.context.display_fullname
 
 class StudentClearanceManageActionButton(ManageActionButton):
@@ -546,5 +546,5 @@
     @property
     def label(self):
-        return 'Clearance Slip of %s' % self.context.fullname
+        return 'Clearance Slip of %s' % self.context.display_fullname
 
     def render(self):
@@ -638,5 +638,5 @@
     @property
     def label(self):
-        return '%s: Personal Data' % self.context.fullname
+        return '%s: Personal Data' % self.context.display_fullname
 
 class StudentPersonalManageActionButton(ManageActionButton):
@@ -677,5 +677,5 @@
     @property
     def label(self):
-        return '%s: Study Course' % self.context.__parent__.fullname
+        return '%s: Study Course' % self.context.__parent__.display_fullname
 
     @property
@@ -800,5 +800,5 @@
     def label(self):
         return '%s: Study Level %s' % (
-            self.context.getStudent().fullname,self.context.level_title)
+            self.context.getStudent().display_fullname,self.context.level_title)
 
     @property
@@ -1064,5 +1064,5 @@
     def label(self):
         return '%s: Course Ticket %s' % (
-            self.context.getStudent().fullname,self.context.code)
+            self.context.getStudent().display_fullname,self.context.code)
 
 class CourseTicketManageActionButton(ManageActionButton):
@@ -1111,5 +1111,5 @@
 #    @property
 #    def label(self):
-#        return '%s: Payments' % self.context.__parent__.fullname
+#        return '%s: Payments' % self.context.__parent__.display_fullname
 
 #    def update(self):
@@ -1138,5 +1138,5 @@
     @property
     def label(self):
-        return '%s: Payments' % self.context.__parent__.fullname
+        return '%s: Payments' % self.context.__parent__.display_fullname
 
     def update(self):
@@ -1262,5 +1262,5 @@
     def label(self):
         return '%s: Online Payment Ticket %s' % (
-            self.context.getStudent().fullname,self.context.p_id)
+            self.context.getStudent().display_fullname,self.context.p_id)
 
 class PaymentReceiptActionButton(ManageActionButton):
@@ -1384,5 +1384,5 @@
 #    @property
 #    def label(self):
-#        return '%s: Accommodation Data' % self.context.__parent__.fullname
+#        return '%s: Accommodation Data' % self.context.__parent__.display_fullname
 
 # This manage form page is for both students and students officers.
@@ -1401,5 +1401,5 @@
     @property
     def label(self):
-        return '%s: Accommodation' % self.context.__parent__.fullname
+        return '%s: Accommodation' % self.context.__parent__.display_fullname
 
     def update(self):
@@ -1681,5 +1681,5 @@
     @property
     def label(self):
-        return '%s: History' % self.context.fullname
+        return '%s: History' % self.context.display_fullname
 
 # Pages for students only
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/containermanagepage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/containermanagepage.pt	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/containermanagepage.pt	(revision 7364)
@@ -43,5 +43,5 @@
           <span tal:content="item/student_id">A123456</span></a>
         </td>
-    	  <td tal:content="item/fullname">Bob</td>
+    	  <td tal:content="item/display_fullname">Bob</td>
     	</tr>
       </tbody>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/containerpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/containerpage.pt	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/containerpage.pt	(revision 7364)
@@ -45,5 +45,5 @@
           <span tal:content="item/matric_number">9999999</span></a>
         </td>
-        <td tal:content="item/fullname">Bob</td>
+        <td tal:content="item/display_fullname">Bob</td>
       </tr>
       </tbody>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/catalog.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/catalog.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/catalog.py	(revision 7364)
@@ -56,5 +56,5 @@
         self.url = view.url(context)
         self.student_id = context.student_id
-        self.fullname = context.fullname
+        self.display_fullname = context.display_fullname
         self.reg_number = context.reg_number
         self.matric_number = context.matric_number
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 7364)
@@ -115,5 +115,6 @@
     faccode = Attribute('The faculty code of any chosen study course')
     current_session = Attribute('The current session of the student')
-    fullname = Attribute('The fullname of an applicant')
+    fullname = Attribute('All name parts separated by hyphens')
+    display_fullname = Attribute('The fullname of an applicant')
 
     def loggerInfo(ob_class, comment):
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/student.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/student.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/student.py	(revision 7364)
@@ -64,8 +64,17 @@
 
     @property
-    def fullname(self):
+    def display_fullname(self):
         middlename = getattr(self, 'middlename', None)
         sirp_utils = getUtility(ISIRPUtils)
         return sirp_utils.fullname(self.firstname, self.lastname, middlename)
+
+    @property
+    def fullname(self):
+        middlename = getattr(self, 'middlename', None)
+        if middlename:
+            return '%s-%s-%s' % (self.firstname.lower(),
+                middlename.lower(), self.lastname.lower())
+        else:
+            return '%s-%s' % (self.firstname.lower(), self.lastname.lower())
 
     @property
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_authentication.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_authentication.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_authentication.py	(revision 7364)
@@ -61,5 +61,5 @@
 class FakeStudent(object):
     student_id = 'test_stud'
-    fullname = 'Test User'
+    display_fullname = 'Test User'
     password = None
     email = None
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py	(revision 7364)
@@ -279,5 +279,5 @@
         self.assertTrue('Anna Tester' in self.browser.contents)
 
-        # We can find a student with a certain fullname
+        # We can find a student by searching for all kind of name parts
         self.browser.open(self.manage_container_path)
         self.browser.getControl("Search").click()
@@ -285,4 +285,39 @@
         self.browser.getControl(name="searchtype").value = ['fullname']
         self.browser.getControl(name="searchterm").value = 'Anna Tester'
+        self.browser.getControl("Search").click()
+        self.assertTrue('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'Anna'
+        self.browser.getControl("Search").click()
+        self.assertTrue('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'Tester'
+        self.browser.getControl("Search").click()
+        self.assertTrue('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'An'
+        self.browser.getControl("Search").click()
+        self.assertFalse('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'An*'
+        self.browser.getControl("Search").click()
+        self.assertTrue('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'tester'
+        self.browser.getControl("Search").click()
+        self.assertTrue('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'Tester Ana'
+        self.browser.getControl("Search").click()
+        self.assertFalse('Anna Tester' in self.browser.contents)
+        self.browser.open(self.manage_container_path)
+        self.browser.getControl(name="searchtype").value = ['fullname']
+        self.browser.getControl(name="searchterm").value = 'Tester Anna'
         self.browser.getControl("Search").click()
         self.assertTrue('Anna Tester' in self.browser.contents)
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_student.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_student.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_student.py	(revision 7364)
@@ -39,4 +39,6 @@
         super(StudentTest, self).setUp()
         self.student = Student()
+        self.student.firstname = u'Anna'
+        self.student.lastname = u'Tester'
         self.studycourse = StudentStudyCourse()
         self.studylevel = StudentStudyLevel()
Index: main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py	(revision 7363)
+++ main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py	(revision 7364)
@@ -20,4 +20,5 @@
 import grok
 import smtplib
+from string import capwords
 from email.mime.text import MIMEText
 from waeup.sirp.interfaces import ISIRPUtils
@@ -57,5 +58,5 @@
         # We do not necessarily have the middlename attribute
         if middlename:
-            return '%s %s %s' % (firstname, middlename, lastname)
+            return capwords('%s %s %s' % (firstname, middlename, lastname))
         else:
-            return '%s %s' % (firstname, lastname)
+            return capwords('%s %s' % (firstname, lastname))
