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 15140)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/permissions.py	(revision 15141)
@@ -158,5 +158,6 @@
 class TranscriptOfficer(grok.Role):
     """The Transcript Officer is allowed to view, to validate and to
-    release student transcripts.
+    release student transcripts. The officer is also allowed to
+    manage student data (global role only).
     """
     grok.name('waeup.TranscriptOfficer')
@@ -167,4 +168,5 @@
                      'waeup.viewStudent',
                      'waeup.viewStudentsContainer',
+                     'waeup.manageStudent',
                      )
 
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 15140)
+++ /main/waeup.kofa/branches/henrik-transcript-workflow/src/waeup/kofa/students/tests/test_browser.py	(revision 15141)
@@ -2120,5 +2120,5 @@
         print "Sample PDF transcript.pdf written to %s" % path
 
-    def test_release_transcript(self):
+    def test_process_transcript(self):
         IWorkflowState(self.student).setState('transcript requested')
         notify(grok.ObjectModifiedEvent(self.student))
@@ -2151,12 +2151,38 @@
         self.browser.getLink("K1000000").click()
         self.assertFalse('Release transcript request' in self.browser.contents)
-        # Officer has to validate the transcript
+        # Officers can still edit studycourse, studylevel and course tickets.
+        self.browser.open(self.studycourse_path + '/manage')
+        self.assertTrue('Undergraduate Full-Time</option>' in self.browser.contents)
+        self.browser.getControl(name="form.certificate").value = ['CERT1']
+        self.browser.getControl(name="form.current_session").value = ['2004']
+        self.browser.getControl(name="form.current_verdict").value = ['A']
+        self.browser.getControl(name="form.entry_mode").value = ['ug_ft']
+        self.browser.getControl("Save").click()
+        self.browser.getControl(name="form.current_level").value = ['100']
+        self.browser.getControl("Save").click()
+        self.browser.getControl(name="addlevel").value = ['100']
+        self.browser.getControl(name="level_session").value = ['2004']
+        self.browser.getControl("Add study level").click()
+        self.browser.getLink("100").click()
+        self.browser.getLink("Manage").click()
+        self.browser.getControl(name="form.level_session").value = ['2002']
+        self.browser.getControl("Save").click()
+        self.browser.getLink("COURSE1").click()
+        self.browser.getLink("Manage").click()
+        self.browser.getControl("Save").click()
+        self.assertTrue('Form has been saved' in self.browser.contents)
+        # Officer can validate the transcript
+        self.browser.open(self.student_path)
         self.browser.getLink("Validate transcript").click()
-
-
-
-
-        self.assertTrue('Release transcript' in self.browser.contents)
-        # Now the transcript can be released.
+        # After validation all manage forms are locked.
+        self.browser.open(self.studycourse_path + '/manage')
+        self.assertTrue('The requested form is locked' in self.browser.contents)
+        self.assertFalse('Undergraduate Full-Time</option>' in self.browser.contents)
+        self.browser.open(self.studycourse_path + '/100/manage')
+        self.assertTrue('The requested form is locked' in self.browser.contents)
+        self.browser.open(self.studycourse_path + '/100/COURSE1/manage')
+        self.assertTrue('The requested form is locked' in self.browser.contents)
+        # Officer can release the transcript
+        self.browser.open(self.student_path)
         self.browser.getLink("Release transcript").click()
         self.assertTrue(' UTC K1000000 wrote:<br><br>Comment line 1 <br>'
