Index: main/waeup.sirp/trunk/src/waeup/sirp/hostels/tests.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/hostels/tests.py	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/hostels/tests.py	(revision 7357)
@@ -109,5 +109,6 @@
         # Add student with subobjects
         student = Student()
-        student.fullname = u'Anna Tester'
+        student.firstname = u'Anna'
+        student.lastname = u'Tester'
         student.reg_number = u'123'
         student.matric_number = u'234'
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser.py	(revision 7357)
@@ -319,6 +319,6 @@
     grok.require('waeup.manageStudent')
     grok.name('addstudent')
-    grok.template('studentaddpage')
-    form_fields = grok.AutoFields(IStudent)
+    form_fields = grok.AutoFields(IStudent).select(
+        'firstname', 'middlename', 'lastname')
     title = 'Students'
     label = 'Add student'
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studentaddpage.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/studentaddpage.pt	(revision 7356)
+++ 	(revision )
@@ -1,26 +1,0 @@
-<h2 i18n:translate=""
-    tal:condition="view/label"
-    tal:content="view/label">Label</h2>
-
-<form method="POST">
-  <table>
-    <tbody>
-      <tr>
-    	<td><label for="form.fullname">Full Name:</label></td>
-    	<td>
-         <input name="form.fullname" type="text" size="30" maxlength="30"
-                value="" />
-    	</td>
-      </tr>
-      <tr>
-        <td>
-            <div class="actionButtons" tal:condition="view/availableActions">
-                <span tal:repeat="action view/actions" tal:omit-tag="">
-                    <input tal:replace="structure action/render"/>
-                </span>
-            </div>
-        </td>
-      </tr>
-    </tbody>
-  </table>
-</form>
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/interfaces.py	(revision 7357)
@@ -115,4 +115,5 @@
     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')
 
     def loggerInfo(ob_class, comment):
@@ -126,7 +127,16 @@
         )
 
-    fullname = schema.TextLine(
-        title = u'Full Name',
-        default = None,
+    firstname = schema.TextLine(
+        title = u'First Name',
+        required = True,
+        )
+
+    middlename = schema.TextLine(
+        title = u'Middle Name',
+        required = False,
+        )
+
+    lastname = schema.TextLine(
+        title = u'Last Name (Surname)',
         required = True,
         )
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/student.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/student.py	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/student.py	(revision 7357)
@@ -62,4 +62,14 @@
 
     @property
+    def fullname(self):
+        # We do not necessarily have the middlename attribute
+        middlename = getattr(self, 'middlename', None)
+        if middlename:
+            return '%s %s %s' % (self.firstname,
+                middlename, self.lastname)
+        else:
+            return '%s %s' % (self.firstname, self.lastname)
+
+    @property
     def state(self):
         state = IWorkflowState(self).getState()
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/sample_student_data.csv
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/sample_student_data.csv	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/sample_student_data.csv	(revision 7357)
@@ -1,4 +1,4 @@
-firstname,lastname,fullname,reg_number,date_of_birth,matric_number,email,phone
-Aaren,Pieri,Aaren Pieri,1,1990-01-02,100000,aa@aa.ng,1234
-Aaren,Finau,Aaren Finau,2,1990-01-03,100001,aa@aa.ng,1234
-Aaren,Berson,Aaren Berson,3,1990-01-04,100002,aa@aa.ng,1234
+firstname,lastname,reg_number,date_of_birth,matric_number,email,phone
+Aaren,Pieri,1,1990-01-02,100000,aa@aa.ng,1234
+Aaren,Finau,2,1990-01-03,100001,aa@aa.ng,1234
+Aaren,Berson,3,1990-01-04,100002,aa@aa.ng,1234
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/sample_student_data_migration.csv
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/sample_student_data_migration.csv	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/sample_student_data_migration.csv	(revision 7357)
@@ -1,4 +1,4 @@
-student_id,firstname,lastname,fullname,reg_number,date_of_birth,matric_number,email,phone
-A123456,Aaren,Pieri,Aaren Pieri,1,1990-01-02,100000,aa@aa.ng,1234
-B123456,Aaren,Finau,Aaren Finau,2,1990-01-03,100001,aa@aa.ng,1234
-C123456,Aaren,Berson,Aaren Berson,3,1990-01-04,100002,aa@aa.ng,1234
+student_id,firstname,lastname,reg_number,date_of_birth,matric_number,email,phone
+A123456,Aaren,Pieri,1,1990-01-02,100000,aa@aa.ng,1234
+B123456,Aaren,Finau,2,1990-01-03,100001,aa@aa.ng,1234
+C123456,Aaren,Berson,3,1990-01-04,100002,aa@aa.ng,1234
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_batching.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_batching.py	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_batching.py	(revision 7357)
@@ -93,5 +93,6 @@
         # Add student with subobjects
         student = Student()
-        student.fullname = u'Anna Tester'
+        student.firstname = u'Anna'
+        student.lastname = u'Tester'
         student.reg_number = u'123'
         student.matric_number = u'234'
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 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py	(revision 7357)
@@ -87,5 +87,6 @@
         # Add student with subobjects
         student = Student()
-        student.fullname = u'Anna Tester'
+        student.firstname = u'Anna'
+        student.lastname = u'Tester'
         student.reg_number = u'123'
         student.matric_number = u'234'
@@ -245,5 +246,6 @@
         self.assertEqual(self.browser.headers['Status'], '200 Ok')
         self.assertEqual(self.browser.url, self.add_student_path)
-        self.browser.getControl(name="form.fullname").value = 'Bob Tester'
+        self.browser.getControl(name="form.firstname").value = 'Bob'
+        self.browser.getControl(name="form.lastname").value = 'Tester'
         self.browser.getControl("Create student record").click()
         self.assertTrue('Student record created' in self.browser.contents)
@@ -323,5 +325,6 @@
         # Managers can edit base data and fire transitions
         self.browser.getControl(name="transition").value = ['admit']
-        self.browser.getControl(name="form.fullname").value = 'John Tester'
+        self.browser.getControl(name="form.firstname").value = 'John'
+        self.browser.getControl(name="form.lastname").value = 'Tester'
         self.browser.getControl(name="form.reg_number").value = '345'
         self.browser.getControl(name="password").value = 'secret'
@@ -375,5 +378,6 @@
         # Lazy student is studying CERT1
         lazystudent = Student()
-        lazystudent.fullname = u'Lazy Student'
+        lazystudent.firstname = u'Lazy'
+        lazystudent.lastname = u'Student'
         self.app['students'].addStudent(lazystudent)
         student_id = lazystudent.student_id
@@ -633,8 +637,8 @@
         # Prepare a csv file for students
         open('students.csv', 'wb').write(
-"""firstname,lastname,fullname,reg_number,date_of_birth,matric_number,email,phone
-Aaren,Pieri,Aaren Pieri,1,1990-01-02,100000,aa@aa.ng,1234
-Claus,Finau,Claus Finau,2,1990-01-03,100001,aa@aa.ng,1234
-Brit,Berson,Brit Berson,3,1990-01-04,100001,aa@aa.ng,1234
+"""firstname,lastname,reg_number,date_of_birth,matric_number,email,phone
+Aaren,Pieri,1,1990-01-02,100000,aa@aa.ng,1234
+Claus,Finau,2,1990-01-03,100001,aa@aa.ng,1234
+Brit,Berson,3,1990-01-04,100001,aa@aa.ng,1234
 """)
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
@@ -734,5 +738,6 @@
         # ... but not other students
         other_student = Student()
-        other_student.fullname = u'Dep2 Student'
+        other_student.firstname = u'Dep2'
+        other_student.lastname = u'Student'
         self.app['students'].addStudent(other_student)
         other_student_path = (
@@ -815,5 +820,6 @@
         # ... but not other students
         other_student = Student()
-        other_student.fullname = u'Dep2 Student'
+        other_student.firstname = u'Dep2'
+        other_student.lastname = u'Student'
         self.app['students'].addStudent(other_student)
         other_student_path = (
@@ -924,5 +930,6 @@
         student = Student()
         student.reg_number = u'123456'
-        student.fullname = u'Klaus Tester'
+        student.firstname = u'Klaus'
+        student.lastname = u'Tester'
         self.app['students'].addStudent(student)
         setpassword_path = 'http://localhost/app/setpassword'
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_catalog.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_catalog.py	(revision 7356)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_catalog.py	(revision 7357)
@@ -56,5 +56,6 @@
         # Create student with studycourse subobject
         student = Student()
-        student.fullname = u'Bob Tester'
+        student.firstname = u'Bob'
+        student.lastname = u'Tester'
         self.app['students'].addStudent(student)
         self.student_id = student.student_id
