Index: main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py	(revision 9961)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py	(revision 9962)
@@ -428,31 +428,20 @@
         entry_mode = row.get('entry_mode', None)
         certificate = row.get('certificate', None)
-        # If students are being transferred a new studycourse is created and
-        # the old one is moved.
+        current_session = row.get('current_session', None)
+        student = self.getParent(row, site)
         if entry_mode == 'transfer':
-            studycourse = createObject(u'waeup.StudentStudyCourse')
-            student = obj.__parent__
-            studycourse.entry_session = obj.entry_session
-            if 'studycourse_1' in student.keys():
-                student['studycourse_2'] = obj
-            else:
-                student['studycourse_1'] = obj
-            del student['studycourse']
-            student['studycourse'] = studycourse
-            student.__parent__.logger.info(
-                '%s - transferred from %s to %s' % (
-                student.student_id, obj.certificate.code, certificate.code))
-            history = IObjectHistory(student)
-            history.addMessage('Transferred from %s to %s' % (
-                obj.certificate.code, certificate.code))
+            # We do not expect any error here since we
+            # checked all constraints in checkConversion and
+            # in checkUpdateRequirements
+            student.transfer(
+                certificate=certificate, current_session=current_session)
             obj = student['studycourse']
         items_changed = super(StudentStudyCourseProcessor, self).updateEntry(
             obj, row, site, filename)
-        parent = self.getParent(row, site)
-        parent.__parent__.logger.info(
+        student.__parent__.logger.info(
             '%s - %s - %s - updated: %s'
-            % (self.name, filename, parent.student_id, items_changed))
+            % (self.name, filename, student.student_id, items_changed))
         # Update the students_catalog
-        notify(grok.ObjectModifiedEvent(obj.__parent__))
+        notify(grok.ObjectModifiedEvent(student))
         return
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py	(revision 9961)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py	(revision 9962)
@@ -460,11 +460,4 @@
         )
 
-    entry_mode = schema.Choice(
-        title = _(u'Entry Mode'),
-        source = StudyModeSource(),
-        required = False,
-        readonly = False,
-        )
-
     entry_session = schema.Choice(
         title = _(u'Entry Session'),
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/student.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/student.py	(revision 9961)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/student.py	(revision 9962)
@@ -225,34 +225,34 @@
 
         """
-        studycourse = createObject(u'waeup.StudentStudyCourse')
+        newcourse = createObject(u'waeup.StudentStudyCourse')
         try:
-            studycourse.certificate = certificate
-            studycourse.entry_mode = 'transfer'
-            studycourse.current_session = current_session
-            studycourse.current_level = current_level
-            studycourse.current_verdict = current_verdict
-            studycourse.previous_verdict = previous_verdict
+            newcourse.certificate = certificate
+            newcourse.entry_mode = 'transfer'
+            newcourse.current_session = current_session
+            newcourse.current_level = current_level
+            newcourse.current_verdict = current_verdict
+            newcourse.previous_verdict = previous_verdict
         except ConstraintNotSatisfied:
             return -1
-        old = self['studycourse']
-        if getattr(old, 'entry_session', None) is None or\
-            getattr(old, 'certificate', None) is None:
+        oldcourse = self['studycourse']
+        if getattr(oldcourse, 'entry_session', None) is None or\
+            getattr(oldcourse, 'certificate', None) is None:
             return -2
-        studycourse.entry_session = old.entry_session
+        newcourse.entry_session = oldcourse.entry_session
         # Students can be transferred only two times.
         if 'studycourse_1' in self.keys():
             if 'studycourse_2' in self.keys():
                 return -3
-            self['studycourse_2'] = old
+            self['studycourse_2'] = oldcourse
         else:
-            self['studycourse_1'] = old
+            self['studycourse_1'] = oldcourse
         del self['studycourse']
-        self['studycourse'] = studycourse
+        self['studycourse'] = newcourse
         self.__parent__.logger.info(
             '%s - transferred from %s to %s' % (
-            self.student_id, old.certificate.code, studycourse.certificate.code))
+            self.student_id, oldcourse.certificate.code, newcourse.certificate.code))
         history = IObjectHistory(self)
         history.addMessage('Transferred from %s to %s' % (
-            old.certificate.code, studycourse.certificate.code))
+            oldcourse.certificate.code, newcourse.certificate.code))
         return
 
