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 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/browser/tests/test_browser.py	(revision 15143)
@@ -439,5 +439,5 @@
             'nationality,officer_comment,perm_address,personal_updated,'
             'phone,reg_number,sex,student_id,suspended,suspended_comment,'
-            'transcript_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/students/browser.py
===================================================================
--- /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser.py	(revision 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser.py	(revision 15143)
@@ -264,8 +264,5 @@
         form = self.request.form
         self.hitlist = []
-        if form.get('searchtype', None) == 'suspended':
-            self.searchtype = form['searchtype']
-            self.searchterm = None
-        elif form.get('searchtype', None) == 'transcript':
+        if form.get('searchtype', None) in ('suspended', TRANSREQ, TRANSVAL):
             self.searchtype = form['searchtype']
             self.searchterm = None
@@ -309,5 +306,5 @@
         form = self.request.form
         self.hitlist = []
-        if form.get('searchtype', None) == 'suspended':
+        if form.get('searchtype', None) in ('suspended', TRANSREQ, TRANSVAL):
             self.searchtype = form['searchtype']
             self.searchterm = None
@@ -1153,5 +1150,4 @@
     grok.name('validate_transcript')
     grok.require('waeup.processTranscript')
-    form_fields = grok.AutoFields(IStudentTranscript)
 
     def update(self, SUBMIT=None):
Index: /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/containermanagepage.pt
===================================================================
--- /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/containermanagepage.pt	(revision 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/containermanagepage.pt	(revision 15143)
@@ -17,6 +17,9 @@
         with deactivated account (search term omitted)
       </option>
-      <option i18n:translate="" value="transcript">
-        who requested transcript (search term omitted)
+      <option i18n:translate="" value="transcript requested">
+        in state 'transcript requested' (search term omitted)
+      </option>
+      <option i18n:translate="" value="transcript validated">
+        in state 'transcript validated' (search term omitted)
       </option>
     </select>
Index: /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/containerpage.pt
===================================================================
--- /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/containerpage.pt	(revision 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/containerpage.pt	(revision 15143)
@@ -17,6 +17,9 @@
         with deactivated account (search term omitted)
       </option>
-      <option i18n:translate="" value="transcript">
-        who requested transcript (search term omitted)
+      <option i18n:translate="" value="transcript requested">
+        in state 'transcript requested' (search term omitted)
+      </option>
+      <option i18n:translate="" value="transcript validated">
+        in state 'transcript validated' (search term omitted)
       </option>
     </select>
Index: /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/transcriptrelease.pt
===================================================================
--- /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/transcriptrelease.pt	(revision 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/browser_templates/transcriptrelease.pt	(revision 15143)
@@ -12,4 +12,9 @@
       </a>
     </li>
+    <li>
+      <a href="#tab3" data-toggle="tab">
+        <span i18n:translate="">View signatures</span>
+      </a>
+    </li>
   </ul>
 
@@ -20,5 +25,5 @@
         <tbody>
           <tr>
-            <td i18n:translate="">
+            <td class="fieldname" i18n:translate="">
             Comment:
             </td>
@@ -41,4 +46,8 @@
       <p tal:content="structure view/correspondence"></p>
     </div>
+
+    <div id="tab3" class="tab-pane">
+      <p tal:content="structure context/transcript_signees"></p>
+    </div>
   </div>
 
Index: /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/catalog.py
===================================================================
--- /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/catalog.py	(revision 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/catalog.py	(revision 15143)
@@ -29,4 +29,5 @@
 from waeup.kofa.students.interfaces import IStudent, ICourseTicket
 from waeup.kofa.university.vocabularies import course_levels
+from waeup.kofa.students.workflow import (TRANSREQ, TRANSVAL)
 
 class StudentsCatalog(grok.Indexes):
@@ -88,8 +89,7 @@
                 hitlist.append(StudentQueryResultItem(student, view=view))
         return hitlist
-    elif searchtype == 'transcript':
+    elif searchtype in (TRANSREQ, TRANSVAL):
         cat = queryUtility(ICatalog, name='students_catalog')
-        results = cat.searchResults(
-            state=('transcript requested', 'transcript requested'))
+        results = cat.searchResults(state=(searchtype, searchtype))
     else:
         # Temporary solution to display all students added
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 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/interfaces.py	(revision 15143)
@@ -219,4 +219,7 @@
     transcript_enabled = Attribute('True if transcript processing is enabled')
     clearance_locked = Attribute('True if clearance form is locked')
+    studycourse_locked = Attribute(
+        'True if nobody is allowed to change studycourse, studylecel or '
+        'course ticket data, neither through the UI nor via import')
 
     password = Attribute('Encrypted password')
@@ -376,4 +379,9 @@
     transcript_comment = schema.Text(
         title = _(u'Comment'),
+        required = False,
+        )
+
+    transcript_signees = schema.Text(
+        title = _(u'Signees'),
         required = False,
         )
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 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15143)
@@ -2146,5 +2146,5 @@
         # Officer can search for students in state 'transcript requested'
         self.browser.open(self.container_path)
-        self.browser.getControl(name="searchtype").value = ['transcript']
+        self.browser.getControl(name="searchtype").value = ['transcript requested']
         self.browser.getControl("Find student(s)").click()
         self.assertTrue('Anna Tester' in self.browser.contents)
@@ -3628,8 +3628,8 @@
             'officer_comment,perm_address,personal_updated,phone,reg_number,'
             'sex,student_id,suspended,suspended_comment,transcript_comment,'
-            'password,state,history,certcode,is_postgrad,current_level,'
-            'current_session\r\n'
+            'transcript_signees,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):
@@ -3734,8 +3734,8 @@
             'officer_comment,perm_address,personal_updated,phone,reg_number,'
             'sex,student_id,suspended,suspended_comment,transcript_comment,'
-            'password,state,history,certcode,is_postgrad,current_level,'
-            'current_session\r\n'
+            'transcript_signees,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 15142)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_export.py	(revision 15143)
@@ -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,password,state,history,certcode,is_postgrad,'
-            'current_level,current_session\r\n'
+            'transcript_comment,transcript_signees,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,password,state,history,certcode,'
+            'transcript_comment,transcript_signees,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,password,state,history,certcode,'
+            'transcript_comment,transcript_signees,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
             )
