Index: main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 13792)
+++ main/waeup.aaue/trunk/src/waeup/aaue/locales/en/LC_MESSAGES/waeup.kofa.po	(revision 13793)
@@ -59,9 +59,7 @@
 "submit your application."
 
-#: waeup/kofa/interfaces.py:718
 msgid "Next Matriculation Number Integer"
 msgstr "Next PTP Matriculation Number Integer"
 
-#: waeup/kofa/interfaces.py:719
 msgid "Integer used for constructing the next matriculation number"
 msgstr ""
@@ -69,13 +67,13 @@
 "students"
 
-#: waeup/kofa/interfaces.py:727
 msgid "Next Matriculation Number Integer 2"
 msgstr "Next Regular Matriculation Number Integer"
 
-#: waeup/kofa/interfaces.py:736
 msgid "Next Matriculation Number Integer 3"
 msgstr "Next Postgraduate Matriculation Number Integer"
 
-#: waeup/kofa/interfaces.py:728
+msgid "Next Matriculation Number Integer 4"
+msgstr "Next Diploma Matriculation Number Integer"
+
 msgid "2nd integer used for constructing the next matriculation number"
 msgstr ""
@@ -83,8 +81,12 @@
 "students"
 
-#: waeup/kofa/interfaces.py:737
 msgid "3rd integer used for constructing the next matriculation number"
 msgstr ""
 "Integer used for constructing the next matriculation number of postgraduate "
+"students"
+
+msgid "4th integer used for constructing the next matriculation number"
+msgstr ""
+"Integer used for constructing the next matriculation number of diploma "
 "students"
 
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_utils.py	(revision 13792)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/tests/test_utils.py	(revision 13793)
@@ -129,4 +129,5 @@
         site['configuration'].next_matric_integer_2 = 1
         site['configuration'].next_matric_integer_3 = 1
+        site['configuration'].next_matric_integer_4 = 1
         self.student.matric_number = None
         #msg, mnumber = utils.setMatricNumber(self.student)
@@ -165,4 +166,11 @@
         self.assertEqual(self.student.matric_number, 'AAU/SPS/ABC/dep1/04/AGRB/00001')
         self.assertEqual(site['configuration'].next_matric_integer_3, 2)
+        # Diploma Students get a matric number with leading 'IOS'
+        # and the dp counter which is next_matric_integer_3.
+        self.student['studycourse'].certificate.study_mode = 'dp_ft'
+        self.student.matric_number = None
+        msg, mnumber = utils.setMatricNumber(self.student)
+        self.assertEqual(self.student.matric_number, 'IOE/DIP/04/00001')
+        self.assertEqual(site['configuration'].next_matric_integer_4, 2)
         # Foundation programme students don't get matric number.
         self.student.matric_number = None
Index: main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 13792)
+++ main/waeup.aaue/trunk/src/waeup/aaue/students/utils.py	(revision 13793)
@@ -54,4 +54,7 @@
             grok.getSite()['configuration'].next_matric_integer_3 += 1
             return
+        elif student.current_mode in ('dp_ft',):
+            grok.getSite()['configuration'].next_matric_integer_4 += 1
+            return
         grok.getSite()['configuration'].next_matric_integer_2 += 1
         return
@@ -91,4 +94,9 @@
             return None, "PTP/%s/%s/%s/%05d" % (
                 faccode, depcode, year, next_integer)
+        if student.current_mode in ('dp_ft',):
+            next_integer = grok.getSite()['configuration'].next_matric_integer_4
+            if next_integer == 0:
+                return _('Matriculation number cannot be set.'), None
+            return None, "IOE/DIP/%s/%05d" % (year, next_integer)
         next_integer = grok.getSite()['configuration'].next_matric_integer_2
         if next_integer == 0:
