Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/pages.py	(revision 15155)
@@ -1039,5 +1039,5 @@
     grok.context(IUniversity)
     grok.template('mytranscriptrequests')
-    label =_('My Transcript Requests')
+    label =_('My ToDoList')
 
     @property
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/tests/test_browser.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/tests/test_browser.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/tests/test_browser.py	(revision 15155)
@@ -439,5 +439,4 @@
             'nationality,officer_comment,perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'transcript_comment,transcript_signees,'
             'password,state,history,certcode,is_postgrad,current_level,'
             'current_session\r\n')
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/viewlets.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/viewlets.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/viewlets.py	(revision 15155)
@@ -365,4 +365,23 @@
         return ''
 
+class TranscriptOfficerStudents(ManageLink):
+    """A link to transcript requests.
+    """
+    grok.order(6)
+    grok.require('waeup.Authenticated')
+
+    link = u'my_transcript_requests'
+    text = _(u'My ToDoList')
+
+    def render(self):
+        user_account = get_user_account(self.request)
+        if user_account:
+            local_roles = user_account.getLocalRoles()
+            if local_roles.has_key('waeup.local.TranscriptOfficer'):
+                url = self.view.url(grok.getSite(), self.link)
+                text = translate(self.text, context=self.request)
+                return u'<li><a href="%s">%s</a></li>' % (url, text)
+        return ''
+
 class MyPreferences(ManageLink):
     """A link to personal preferences, placed in upper left box.
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/permissions.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/permissions.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/permissions.py	(revision 15155)
@@ -393,27 +393,22 @@
     """The LocalTranscriptOfficer role can be assigned at faculty
     level. The role allows to view, to validate and to
-    release student transcripts.
+    release student transcripts at faculty level.
+    Local Transcript Officers get the TranscriptOfficer role
+    for this subset of students.
     """
     grok.name('waeup.local.TranscriptOfficer')
     grok.title(u'Transcript Officer')
-    grok.permissions('waeup.viewAcademics',
-                     'waeup.viewTranscript',
-                     'waeup.processTranscript',
-                     'waeup.viewStudent',
-                     )
+    grok.permissions('waeup.viewAcademics',)
 
 
 class LocalTranscriptSignee(grok.Role):
     """The LocalTranscriptSignee role can be assigned at faculty
-    level. The role allows to view and to sign student transcripts.
+    level. The role allows to view and to sign student transcripts
+    at faculty level. Local Transcript Signees  get the TranscriptSignee role
+    for this subset of students.
     """
     grok.name('waeup.local.TranscriptSignee')
     grok.title(u'Transcript Signee')
-    grok.permissions('waeup.viewAcademics',
-                     'waeup.viewTranscript',
-                     'waeup.signTranscript',
-                     'waeup.viewStudent',
-                     'waeup.viewStudentsContainer',
-                     )
+    grok.permissions('waeup.viewAcademics',)
 
 
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser.py	(revision 15155)
@@ -68,5 +68,5 @@
     IStudentsContainer, IStudent, IUGStudentClearance, IPGStudentClearance,
     IStudentPersonal, IStudentPersonalEdit, IStudentBase, IStudentStudyCourse,
-    IStudentStudyCourseTransfer, IStudentStudyCourseTranscript,
+    IStudentStudyCourseTransfer,
     IStudentAccommodation, IStudentStudyLevel, ICourseTicket, ICourseTicketAdd,
     IStudentPaymentsContainer, IStudentOnlinePayment, IStudentPreviousPayment,
@@ -1074,5 +1074,5 @@
     """ Page to request transcript by student
     """
-    grok.context(IStudentTranscript)
+    grok.context(IStudent)
     grok.name('request_transcript')
     grok.require('waeup.handleStudent')
@@ -1094,7 +1094,9 @@
             self.ac_series = self.request.form.get('ac_series', None)
             self.ac_number = self.request.form.get('ac_number', None)
-        if self.context.transcript_comment is not None:
-            self.correspondence = self.context.transcript_comment.replace(
-                '\n', '<br>')
+        if getattr(
+            self.context['studycourse'], 'transcript_comment', None) is not None:
+            self.correspondence = self.context[
+                'studycourse'].transcript_comment.replace(
+                    '\n', '<br>')
         else:
             self.correspondence = ''
@@ -1126,8 +1128,9 @@
         tz = getattr(queryUtility(IKofaUtils), 'tzinfo', pytz.utc)
         today = now(tz).strftime('%d/%m/%Y %H:%M:%S %Z')
-        old_transcript_comment = self.context.transcript_comment
+        old_transcript_comment = getattr(
+            self.context['studycourse'], 'transcript_comment', None)
         if old_transcript_comment == None:
             old_transcript_comment = ''
-        self.context.transcript_comment = '''On %s %s wrote:
+        self.context['studycourse'].transcript_comment = '''On %s %s wrote:
 
 %s
@@ -1147,5 +1150,5 @@
     """ View to validate transcript
     """
-    grok.context(IStudentTranscript)
+    grok.context(IStudentStudyCourse)
     grok.name('validate_transcript')
     grok.require('waeup.processTranscript')
@@ -1157,5 +1160,6 @@
             return
         # Fire transition
-        IWorkflowInfo(self.context).fireTransition('validate_transcript')
+        IWorkflowInfo(self.context.student).fireTransition(
+            'validate_transcript')
         self.flash(_('Transcript validated.'))
         self.redirect(self.url(self.context))
@@ -1185,8 +1189,9 @@
         tz = getattr(queryUtility(IKofaUtils), 'tzinfo', pytz.utc)
         today = now(tz).strftime('%d/%m/%Y %H:%M:%S %Z')
-        prev_transcript_signees = self.context.student.transcript_signees
+        prev_transcript_signees = getattr(
+            self.context, 'transcript_signees', None)
         if prev_transcript_signees == None:
             prev_transcript_signees = ''
-        self.context.student.transcript_signees = (
+        self.context.transcript_signees = (
             u"Electronically signed by %s (%s) on %s\n%s"
             % (self.request.principal.title, self.request.principal.id, today,
@@ -1201,9 +1206,8 @@
     """ Page to release transcript
     """
-    grok.context(IStudentTranscript)
+    grok.context(IStudentStudyCourse)
     grok.name('release_transcript')
     grok.require('waeup.processTranscript')
     grok.template('transcriptrelease')
-    form_fields = grok.AutoFields(IStudentTranscript)
     label = _('Release transcript')
     buttonname = _('Save comment and release transcript')
@@ -1212,14 +1216,14 @@
     def update(self, SUBMIT=None):
         super(StudentTranscriptReleaseFormPage, self).update()
-        if self.context.state != TRANSVAL:
+        if self.context.student.state != TRANSVAL:
             self.flash(_('Student is in wrong state.'), type="warning")
             self.redirect(self.url(self.context))
             return
-        if self.context.transcript_comment is not None:
+        if getattr(self.context, 'transcript_comment', None) is not None:
             self.correspondence = self.context.transcript_comment.replace(
                 '\n', '<br>')
         else:
             self.correspondence = ''
-        if self.context.transcript_signees is not None:
+        if getattr(self.context, 'transcript_signees', None) is not None:
             self.signees = self.context.transcript_signees.replace(
                 '\n', '<br><br>')
@@ -1229,5 +1233,5 @@
             return
         # Fire transition
-        IWorkflowInfo(self.context).fireTransition('release_transcript')
+        IWorkflowInfo(self.context.student).fireTransition('release_transcript')
         self.flash(_('Transcript released and final transcript file saved.'))
         comment = self.request.form.get('comment', '').replace('\r', '')
@@ -1246,5 +1250,5 @@
             self, 'comment: %s' % comment.replace('\n', '<br>'))
         # Produce transcript file
-        self.redirect(self.url(self.context) + '/studycourse/transcript.pdf')
+        self.redirect(self.url(self.context) + '/transcript.pdf')
         return
 
@@ -1253,5 +1257,5 @@
     for this page. It's an emergency page.
     """
-    grok.context(IStudentTranscript)
+    grok.context(IStudentStudyCourse)
     grok.name('manage_transcript_request')
     grok.require('waeup.processTranscript')
@@ -1301,5 +1305,4 @@
     grok.name('transcript.pdf')
     grok.require('waeup.viewTranscript')
-    form_fields = grok.AutoFields(IStudentStudyCourseTranscript)
     prefix = 'form'
     omit_fields = (
@@ -1332,5 +1335,6 @@
 
     def _sigsInFooter(self):
-        if self.context.student.transcript_signees:
+        if getattr(
+            self.context.student['studycourse'], 'transcript_signees', None):
             return ()
         return (_('CERTIFIED TRUE COPY'),)
@@ -1340,6 +1344,7 @@
 
     def _digital_sigs(self):
-        if self.context.student.transcript_signees:
-            return self.context.student.transcript_signees #.split('\n')
+        if getattr(
+            self.context.student['studycourse'], 'transcript_signees', None):
+            return self.context.student['studycourse'].transcript_signees 
         return ()
 
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/dynamicroles.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/dynamicroles.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/dynamicroles.py	(revision 15155)
@@ -46,4 +46,5 @@
         'waeup.local.LocalStudentsManager': 'waeup.StudentsManager',
         'waeup.local.LocalWorkflowManager': 'waeup.WorkflowManager',
+        'waeup.local.TranscriptOfficer': 'waeup.TranscriptOfficer',
         }
 
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/interfaces.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/interfaces.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/interfaces.py	(revision 15155)
@@ -374,5 +374,6 @@
 
 class IStudentTranscript(IKofaObject):
-    """Representation of student transcript data.
+    """Representation of student transcript data. Only used for
+    StudentTranscriptRequestManageFormPage.
     """
 
@@ -389,5 +390,5 @@
 
 class IStudent(IStudentBase,IUGStudentClearance,IPGStudentClearance,
-    IStudentPersonal, IStudentTranscript):
+    IStudentPersonal):
     """Representation of a student.
     """
@@ -536,22 +537,4 @@
 IStudentStudyCourseTransfer['current_level'].order = IStudentStudyCourse[
     'current_level'].order
-
-class IStudentStudyCourseTranscript(IKofaObject):
-    """An interface for student transcripts.
-    """
-    entry_mode = schema.Choice(
-        title = _(u'Entry Mode'),
-        source = StudyModeSource(),
-        required = True,
-        readonly = False,
-        )
-
-    entry_session = schema.Choice(
-        title = _(u'Entry Session'),
-        source = academic_sessions_vocab,
-        #default = datetime.now().year,
-        required = True,
-        readonly = False,
-        )
 
 class IStudentVerdictUpdate(IKofaObject):
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/permissions.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/permissions.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/permissions.py	(revision 15155)
@@ -159,5 +159,5 @@
     """The Transcript Officer is allowed to view, to validate and to
     release student transcripts. The officer is also allowed to
-    manage student data (global role only).
+    manage student data.
     """
     grok.name('waeup.TranscriptOfficer')
@@ -181,5 +181,4 @@
                      'waeup.signTranscript',
                      'waeup.viewStudent',
-                     'waeup.viewStudentsContainer',
                      )
 
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/studycourse.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/studycourse.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/studycourse.py	(revision 15155)
@@ -26,5 +26,5 @@
 from waeup.kofa.students.interfaces import (
     IStudentStudyCourse, IStudentNavigation, IStudentStudyLevel,
-    IStudentStudyCourseTranscript)
+    IStudentTranscript)
 from waeup.kofa.students.studylevel import CourseTicket
 from waeup.kofa.students.workflow import CLEARED, RETURNING, PAID
@@ -34,6 +34,5 @@
     """This is a container for study levels.
     """
-    grok.implements(IStudentStudyCourse, IStudentNavigation,
-        IStudentStudyCourseTranscript)
+    grok.implements(IStudentStudyCourse, IStudentNavigation)
     grok.provides(IStudentStudyCourse)
 
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15155)
@@ -2123,5 +2123,5 @@
         IWorkflowState(self.student).setState('transcript requested')
         notify(grok.ObjectModifiedEvent(self.student))
-        self.student.transcript_comment = (
+        self.student['studycourse'].transcript_comment = (
             u'On 07/08/2013 08:59:54 UTC K1000000 wrote:\n\nComment line 1 \n'
             'Comment line2\n\nDispatch Address:\nAddress line 1 \n'
@@ -2175,5 +2175,5 @@
         self.assertTrue('Form has been saved' in self.browser.contents)
         # Officer can validate the transcript
-        self.browser.open(self.student_path)
+        self.browser.open(self.studycourse_path + '/transcript')
         self.browser.getLink("Validate transcript").click()
         # After validation all manage forms are locked.
@@ -2207,7 +2207,7 @@
         self.assertTrue(
             u'Electronically signed by Ruth Gordon (mrtranscript) on '
-            in self.student.transcript_signees)
+            in self.student['studycourse'].transcript_signees)
         # Officer can release the transcript
-        self.browser.open(self.student_path)
+        self.browser.open(self.studycourse_path + '/transcript')
         self.browser.getLink("Release transcript").click()
         self.assertTrue(' UTC K1000000 wrote:<br><br>Comment line 1 <br>'
@@ -2220,5 +2220,5 @@
             'UTC mrtranscript wrote:\n\nHello,\nYour transcript has '
             'been sent to the address provided.\n\n'
-            in self.student.transcript_comment)
+            in self.student['studycourse'].transcript_comment)
         # The comment has been logged
         logfile = os.path.join(
@@ -2250,6 +2250,4 @@
                          'application/pdf')
         # Transcript views are no longer accesssible
-        self.browser.open(self.student_path)
-        self.assertFalse('studycourse/transcript' in self.browser.contents)
         self.browser.open(self.studycourse_path)
         self.assertFalse('studycourse/transcript' in self.browser.contents)
@@ -2264,6 +2262,6 @@
         self.assertFalse('Final Transcript' in self.browser.contents)
         # ... and transcript process information has been removed
-        self.assertEqual(self.student.transcript_comment, None)
-        self.assertEqual(self.student.transcript_signees, None)
+        self.assertEqual(self.student['studycourse'].transcript_comment, None)
+        self.assertEqual(self.student['studycourse'].transcript_signees, None)
 
     def test_landingpage_transcript_officer(self):
@@ -3430,5 +3428,5 @@
             '... UTC K1000000 wrote:\n\nComment line 1 \n'
             'Comment line2\n\nDispatch Address:\nAddress line 1 \n'
-            'Address line2\n\n', self.student.transcript_comment)
+            'Address line2\n\n', self.student['studycourse'].transcript_comment)
         # The comment has been logged
         logfile = os.path.join(
@@ -3699,9 +3697,9 @@
             'firstname,flash_notice,lastname,matric_number,middlename,nationality,'
             'officer_comment,perm_address,personal_updated,phone,reg_number,'
-            'sex,student_id,suspended,suspended_comment,transcript_comment,'
-            'transcript_signees,password,state,history,certcode,is_postgrad,'
+            'sex,student_id,suspended,suspended_comment,'
+            'password,state,history,certcode,is_postgrad,'
             'current_level,current_session\r\n'
             ',,1981-02-04#,aa@aa.ng,,Anna,,Tester,234,,,,,,'
-            '1234#,123,m,K1000000,0,,,,{SSHA}' in self.browser.contents)
+            '1234#,123,m,K1000000,0,,{SSHA}' in self.browser.contents)
 
     def test_payment_dates(self):
@@ -3805,9 +3803,9 @@
             'firstname,flash_notice,lastname,matric_number,middlename,nationality,'
             'officer_comment,perm_address,personal_updated,phone,reg_number,'
-            'sex,student_id,suspended,suspended_comment,transcript_comment,'
-            'transcript_signees,password,state,history,certcode,is_postgrad,'
+            'sex,student_id,suspended,suspended_comment,'
+            'password,state,history,certcode,is_postgrad,'
             'current_level,current_session\r\n'
             ',,1981-02-04#,aa@aa.ng,,Anna,,Tester,234,,,,,,'
-            '1234#,123,m,K1000000,0,,,,{SSHA}' in self.browser.contents)
+            '1234#,123,m,K1000000,0,,{SSHA}' in self.browser.contents)
         self.assertEqual(len(self.app['datacenter'].running_exports), 1)
         job_id = self.app['datacenter'].running_exports[0][0]
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_export.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_export.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_export.py	(revision 15155)
@@ -127,5 +127,5 @@
         'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
         'Anna,,Tester,234,M.,NG,,"Studentroad 21\nLagos 123456\n",,'
-        '+234-123-12345#,123,f,A111111,0,,,,,created'
+        '+234-123-12345#,123,f,A111111,0,,,created'
         )
 
@@ -160,10 +160,10 @@
             'nationality,officer_comment,perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'transcript_comment,transcript_signees,password,state,history,'
+            'password,state,history,'
             'certcode,is_postgrad,current_level,current_session\r\n'
             'my adm code,my clr code,'
             '1981-02-04#,anna@sample.com,,Anna,,Tester,234,M.,NG,,'
             '"Studentroad 21\nLagos 123456\n",,+234-123-12345#,123,f,'
-            'A111111,0,,,,,created'
+            'A111111,0,,,created'
             in result
             )
@@ -182,9 +182,9 @@
             'nationality,officer_comment,perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'transcript_comment,transcript_signees,password,state,history,certcode,'
+            'password,state,history,certcode,'
             'is_postgrad,current_level,current_session\r\n'
             'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
             'Anna,,Tester,234,M.,NG,,"Studentroad 21\nLagos 123456\n"'
-            ',,+234-123-12345#,123,f,A111111,0,,,,,created'
+            ',,+234-123-12345#,123,f,A111111,0,,,created'
             in result
             )
@@ -202,9 +202,9 @@
             'nationality,officer_comment,perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'transcript_comment,transcript_signees,password,state,history,certcode,'
+            'password,state,history,certcode,'
             'is_postgrad,current_level,current_session\r\n'
             'my adm code,my clr code,1981-02-04#,anna@sample.com,,'
             'Anna,,Tester,234,M.,NG,,"Studentroad 21\nLagos 123456\n"'
-            ',,+234-123-12345#,123,f,A111111,0,,,,,created'
+            ',,+234-123-12345#,123,f,A111111,0,,,created'
             in result
             )
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/viewlets.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/viewlets.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/viewlets.py	(revision 15155)
@@ -36,5 +36,5 @@
     IStudentsContainer, IStudent, IStudentStudyCourse, IStudentStudyLevel,
     ICourseTicket, IStudentOnlinePayment, IBedTicket,
-    IStudentPaymentsContainer, IStudentsUtils, IStudentTranscript
+    IStudentPaymentsContainer, IStudentsUtils,
     )
 from waeup.kofa.students.workflow import (
@@ -747,5 +747,5 @@
 class RequestTranscriptActionButton(ManageActionButton):
     grok.order(8)
-    grok.context(IStudentTranscript)
+    grok.context(IStudent)
     grok.view(StudentBaseDisplayFormPage)
     grok.require('waeup.handleStudent')
@@ -763,6 +763,6 @@
 class ValidateTranscriptActionButton(ManageActionButton):
     grok.order(8)
-    grok.context(IStudentTranscript)
-    grok.view(StudentBaseDisplayFormPage)
+    grok.context(IStudentStudyCourse)
+    grok.view(StudyCourseTranscriptPage)
     grok.require('waeup.processTranscript')
     text = _('Validate transcript')
@@ -772,5 +772,5 @@
     @property
     def target_url(self):
-        if self.context.state != TRANSREQ:
+        if self.context.student.state != TRANSREQ:
             return ''
         return self.view.url(self.view.context, self.target)
@@ -786,6 +786,6 @@
 class ReleaseTranscriptActionButton(ManageActionButton):
     grok.order(8)
-    grok.context(IStudentTranscript)
-    grok.view(StudentBaseDisplayFormPage)
+    grok.context(IStudentStudyCourse)
+    grok.view(StudyCourseTranscriptPage)
     grok.require('waeup.processTranscript')
     text = _('Release transcript')
@@ -795,5 +795,5 @@
     @property
     def target_url(self):
-        if self.context.state != TRANSVAL:
+        if self.context.student.state != TRANSVAL:
             return ''
         return self.view.url(self.view.context, self.target)
Index: main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/workflow.py
===================================================================
--- main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/workflow.py	(revision 15154)
+++ main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/workflow.py	(revision 15155)
@@ -303,6 +303,6 @@
             getUtility(IExtFileStore).deleteFileByContext(
                 obj, attr='final_transcript')
-        obj.transcript_comment = None
-        obj.transcript_signees = None
+        obj['studycourse'].transcript_comment = None
+        obj['studycourse'].transcript_signees = None
     # In some tests we don't have a students container
     try:
