Index: main/waeup.kofa/trunk/src/waeup/kofa/university/department.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/department.py	(revision 13721)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/department.py	(revision 14511)
@@ -63,8 +63,17 @@
                  title=u'Unnamed Department',
                  title_prefix=u'department',
-                 code=u"NA", **kw):
+                 code=u"NA",
+                 officer_1=None,
+                 officer_2=None,
+                 officer_3=None,
+                 officer_4=None,
+                 **kw):
         super(Department, self).__init__(**kw)
         self.title = title
         self.title_prefix = title_prefix
+        self.officer_1 = officer_1
+        self.officer_2 = officer_2
+        self.officer_3 = officer_3
+        self.officer_4 = officer_4
         self.code = code
         self.courses = CoursesContainer()
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/export.py	(revision 13721)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/export.py	(revision 14511)
@@ -32,5 +32,6 @@
     grok.name('faculties')
 
-    fields = ('code', 'title', 'title_prefix', 'users_with_local_roles')
+    fields = ('code', 'title', 'title_prefix', 'users_with_local_roles',
+              'officer_1', 'officer_2')
 
     title = _(u'Faculties')
@@ -78,5 +79,6 @@
 
     fields = ('code', 'faculty_code', 'title', 'title_prefix',
-        'users_with_local_roles')
+              'users_with_local_roles',
+              'officer_1', 'officer_2','officer_3', 'officer_4')
 
     title = _(u'Departments')
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/facultiescontainer.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/facultiescontainer.py	(revision 13721)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/facultiescontainer.py	(revision 14511)
@@ -66,5 +66,5 @@
     """
     grok.implements(IKofaPluggable)
-    grok.name('faculties')
+    grok.name('academics')
 
     def setup(self, site, name, logger):
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/faculty.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/faculty.py	(revision 13721)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/faculty.py	(revision 14511)
@@ -24,5 +24,6 @@
 from zope.interface import implementedBy
 from zope.component import getUtility
-from waeup.kofa.interfaces import IKofaUtils
+from zope.schema import getFields
+from waeup.kofa.interfaces import IKofaUtils, IKofaPluggable
 from waeup.kofa.utils.batching import VirtualExportJobContainer
 from waeup.kofa.university.interfaces import (
@@ -67,9 +68,14 @@
                  title=u'Unnamed Faculty',
                  title_prefix=u'faculty',
-                 code=u'NA', **kw):
+                 code=u'NA',
+                 officer_1=None,
+                 officer_2=None,
+                 **kw):
         super(Faculty, self).__init__(**kw)
         self.title = title
         self.title_prefix = title_prefix
         self.code = code
+        self.officer_1 = officer_1
+        self.officer_2 = officer_2
 
     def traverse(self, name):
@@ -107,2 +113,35 @@
     def getInterfaces(self):
         return implementedBy(Faculty)
+
+class FacultiesPlugin(grok.GlobalUtility):
+    """A plugin that updates faculties.
+    """
+
+    grok.implements(IKofaPluggable)
+    grok.name('faculties')
+
+    deprecated_attributes = []
+
+    def setup(self, site, name, logger):
+        return
+
+    def update(self, site, name, logger):
+        items = getFields(IFaculty).items()
+        for faculty in site['faculties'].values():
+             # Add new attributes
+            for i in items:
+                if not hasattr(faculty,i[0]):
+                    setattr(faculty,i[0],i[1].missing_value)
+                    logger.info(
+                        'FacultiesPlugin: %s attribute %s added.' % (
+                        faculty.code,i[0]))
+            # Remove deprecated attributes
+            for i in self.deprecated_attributes:
+                try:
+                    delattr(faculty,i)
+                    logger.info(
+                        'FacultiesPlugin: %s attribute %s deleted.' % (
+                        faculty.code,i))
+                except AttributeError:
+                    pass
+        return
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/interfaces.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/interfaces.py	(revision 13721)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/interfaces.py	(revision 14511)
@@ -56,4 +56,16 @@
         )
 
+    officer_1 = schema.TextLine(
+        title = _(u'Faculty Officer 1'),
+        default = u'',
+        required = False,
+        )
+
+    officer_2 = schema.TextLine(
+        title = _(u'Faculty Officer 2'),
+        default = u'',
+        required = False,
+        )
+
 
 class IFacultiesContainer(IKofaContainer):
@@ -93,4 +105,28 @@
         required = False,
         default = False,
+        )
+
+    officer_1 = schema.TextLine(
+        title = _(u'Department Officer 1'),
+        default = u'',
+        required = False,
+        )
+
+    officer_2 = schema.TextLine(
+        title = _(u'Department Officer 2'),
+        default = u'',
+        required = False,
+        )
+
+    officer_3 = schema.TextLine(
+        title = _(u'Department Officer 3'),
+        default = u'',
+        required = False,
+        )
+
+    officer_4 = schema.TextLine(
+        title = _(u'Department Officer 4'),
+        default = u'',
+        required = False,
         )
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py	(revision 13721)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py	(revision 14511)
@@ -67,6 +67,7 @@
         self.assertEqual(
             result,
-            'code,title,title_prefix,users_with_local_roles\r\n'
-            'F1,Faculty of Cheese,faculty,[]\r\n'
+            'code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2\r\n'
+            'F1,Faculty of Cheese,faculty,[],,\r\n'
             )
         return
@@ -79,6 +80,7 @@
         self.assertEqual(
             result,
-            'code,title,title_prefix,users_with_local_roles\r\n'
-            'F1,Faculty of Cheese,faculty,[]\r\n'
+            'code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2\r\n'
+            'F1,Faculty of Cheese,faculty,[],,\r\n'
             )
         return
@@ -97,7 +99,8 @@
         self.assertEqual(
             result,
-            'code,title,title_prefix,users_with_local_roles\r\n'
-            'F1,Faculty of Cheese,faculty,[]\r\n'
-            'F2,Centre of Onion,centre,[]\r\n'
+            'code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2\r\n'
+            'F1,Faculty of Cheese,faculty,[],,\r\n'
+            'F2,Centre of Onion,centre,[],,\r\n'
             )
         return
@@ -115,7 +118,8 @@
         self.assertEqual(
             result,
-            'code,title,title_prefix,users_with_local_roles\r\n'
-            'F1,Faculty of Cheese,faculty,[]\r\n'
-            'F2,Centre of Onion,centre,[]\r\n'
+            'code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2\r\n'
+            'F1,Faculty of Cheese,faculty,[],,\r\n'
+            'F2,Centre of Onion,centre,[],,\r\n'
             )
         return
@@ -136,5 +140,6 @@
         container.addFaculty(self.fac1)
         container.addFaculty(self.fac2)
-        self.dept1 = Department('Department of Cheddar', 'department', 'D1')
+        self.dept1 = Department(
+            'Department of Cheddar', 'department', 'D1', 'HoCheese')
         self.dept2 = Department('Institue of Gouda', 'institute', 'D2')
         self.dept3 = Department('Department of Rings', 'department', 'D3')
@@ -170,7 +175,9 @@
         self.assertEqual(
             result,
-            'code,faculty_code,title,title_prefix,users_with_local_roles\r\n'
+            'code,faculty_code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2,officer_3,officer_4\r\n'
             'D1,F1,Department of Cheddar,department,'
-            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
+            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]",'
+            'HoCheese,,,\r\n'
             )
         return
@@ -182,8 +189,10 @@
         self.assertEqual(
             result,
-            'code,faculty_code,title,title_prefix,users_with_local_roles\r\n'
+            'code,faculty_code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2,officer_3,officer_4\r\n'
             'D1,F1,Department of Cheddar,department,'
-            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
-            'D2,F1,Institue of Gouda,institute,[]\r\n'
+            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]",'
+            'HoCheese,,,\r\n'
+            'D2,F1,Institue of Gouda,institute,[],,,,\r\n'
             )
         return
@@ -196,9 +205,11 @@
         self.assertEqual(
             result,
-            'code,faculty_code,title,title_prefix,users_with_local_roles\r\n'
+            'code,faculty_code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2,officer_3,officer_4\r\n'
             'D1,F1,Department of Cheddar,department,'
-            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
-            'D2,F1,Institue of Gouda,institute,[]\r\n'
-            'D3,F2,Department of Rings,department,[]\r\n'
+            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]",'
+            'HoCheese,,,\r\n'
+            'D2,F1,Institue of Gouda,institute,[],,,,\r\n'
+            'D3,F2,Department of Rings,department,[],,,,\r\n'
             )
         return
@@ -210,9 +221,11 @@
         self.assertEqual(
             result,
-            'code,faculty_code,title,title_prefix,users_with_local_roles\r\n'
+            'code,faculty_code,title,title_prefix,users_with_local_roles,'
+            'officer_1,officer_2,officer_3,officer_4\r\n'
             'D1,F1,Department of Cheddar,department,'
-            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]"\r\n'
-            'D2,F1,Institue of Gouda,institute,[]\r\n'
-            'D3,F2,Department of Rings,department,[]\r\n'
+            '"[{\'user_name\': u\'bob\', \'local_role\': u\'bobsrole\'}]",'
+            'HoCheese,,,\r\n'
+            'D2,F1,Institue of Gouda,institute,[],,,,\r\n'
+            'D3,F2,Department of Rings,department,[],,,,\r\n'
             )
         return
