Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/browser/templates/customersitelayout.pt
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/browser/templates/customersitelayout.pt	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/browser/templates/customersitelayout.pt	(revision 11964)
@@ -30,4 +30,5 @@
     <ul class="nav ikoba-navbar-left">
         <tal:primary_nav content="structure provider:primary_nav" />
+        <tal:primary_nav content="structure provider:primary_nav_customer" />
     </ul>
     <!-- /Diazo element-->
@@ -71,4 +72,18 @@
 
     <!-- Diazo element-->
+    <span tal:condition="layout/getCustomerName">
+      <div class="wfstatus">
+            <span tal:replace="python:context.customer.customer_id">
+              Id
+            </span>
+            &bull;
+            <span tal:replace="python:context.customer.translated_state">
+              State
+            </span>
+      </div>
+    </span>
+    <!-- /Diazo element-->
+
+    <!-- Diazo element-->
     <div class="ikoba-content">
       <div class="actionbar" tal:condition="provider:actionbar">
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/browser/templates/staffsitelayout.pt
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/browser/templates/staffsitelayout.pt	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/browser/templates/staffsitelayout.pt	(revision 11964)
@@ -30,5 +30,5 @@
 
     <!-- Diazo element-->
-    <ul class="nav ikoba-navbar-left"> 
+    <ul class="nav ikoba-navbar-left">
       <tal:primary_nav content="structure provider:primary_nav" />
     </ul>
@@ -73,5 +73,25 @@
 
     <!-- Diazo element-->
+    <span tal:condition="layout/getCustomerName">
+      <div class="wfstatus">
+            <span tal:replace="python:context.customer.customer_id">
+              Id
+            </span>
+            &bull;
+            <span tal:replace="python:context.customer.translated_state">
+              State
+            </span>
+      </div>
+    </span>
+    <!-- /Diazo element-->
+
+    <!-- Diazo element-->
     <div class="sidebar well">
+        <div tal:condition="layout/getCustomerName">
+          <div class="ikoba-sidebar-title" tal:content="layout/getCustomerName">STUDENTNAME</div>
+          <ul class="nav">
+            <tal:left content="structure provider:left_customermanage" />
+          </ul>
+        </div>
         <div tal:condition="layout/isAuthenticated">
           <div class="ikoba-sidebar-title" tal:content="layout/getUserTitle">USERNAME</div>
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/batching.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/batching.py	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/batching.py	(revision 11964)
@@ -37,5 +37,5 @@
 from waeup.ikoba.interfaces import (
     IBatchProcessor, FatalCSVError, IObjectConverter, IUserAccount,
-    IObjectHistory, VALIDATED, REGISTERED, IGNORE_MARKER)
+    IObjectHistory, IGNORE_MARKER)
 from waeup.ikoba.interfaces import IIkobaUtils
 from waeup.ikoba.interfaces import MessageFactory as _
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/customer.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/customer.py	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/customer.py	(revision 11964)
@@ -37,5 +37,5 @@
     IObjectHistory, IUserAccount, IFileStoreNameChooser, IFileStoreHandler,
     IIkobaUtils, registration_states_vocab, IExtFileStore,
-    CREATED, ADMITTED, CLEARANCE, PAID, REGISTERED, VALIDATED, RETURNING)
+    CREATED, REQUESTED, APPROVED)
 from waeup.ikoba.customers.export import EXPORTER_NAMES
 from waeup.ikoba.customers.interfaces import (
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data.csv
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data.csv	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data.csv	(revision 11964)
@@ -1,10 +1,10 @@
 customer_id,firstname,lastname,reg_number,date_of_birth,,phone,sex,state
-X666666,Aaren,Pieri,1,1990-01-02,aa@aa.ng,1234,M,courses validated
-Y777777,Claus,Finau,2,1990-01-03,aa@aa.ng,1234,m,courses validated
-,Susann,Berson,3,1990-01-04,aa@aa.ng,1234,F,courses validated
-,Else,Mueller,4,1990-01-05,aa@aa.ng,1234,f,school fee paid
-X888888,Alfons,Meier,5,1990-01-02,aa@aa.ng,1234,m,courses validated
-X999999,Herbert,Mueller,6,1990-01-02,aa@aa.ng,1234,m,courses registered
-X111111,Fabian,Riester,7,1990-01-02,aa@aa.ng,1234,m,courses validated
-X222222,Thomas,Kinderman,8,1990-01-02,aa@aa.ng,1234,m,courses validated
-X333333,Paula,Schall,9,1990-01-02,aa@aa.ng,1234,m,courses registered
+X666666,Aaren,Pieri,1,1990-01-02,aa@aa.ng,1234,M,requested
+Y777777,Claus,Finau,2,1990-01-03,aa@aa.ng,1234,m,requested
+,Susann,Berson,3,1990-01-04,aa@aa.ng,1234,F,requested
+,Else,Mueller,4,1990-01-05,aa@aa.ng,1234,f,approved
+X888888,Alfons,Meier,5,1990-01-02,aa@aa.ng,1234,m,requested
+X999999,Herbert,Mueller,6,1990-01-02,aa@aa.ng,1234,m,approved
+X111111,Fabian,Riester,7,1990-01-02,aa@aa.ng,1234,m,requested
+X222222,Thomas,Kinderman,8,1990-01-02,aa@aa.ng,1234,m,requested
+X333333,Paula,Schall,9,1990-01-02,aa@aa.ng,1234,m,approved
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_duplicates.csv
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_duplicates.csv	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_duplicates.csv	(revision 11964)
@@ -1,5 +1,5 @@
 customer_id,firstname,lastname,reg_number,date_of_birth,email,phone,password,sex,state
-A123456,Aaren,Pieri,1,1990-01-02#,aa@aa.ng,1234,mypw1,m,clearance started
-C123456,Aaren,Berson,2,1990-01-04,aa@aa.ng,1234,mypw1,m,admitted
+A123456,Aaren,Pieri,1,1990-01-02#,aa@aa.ng,1234,mypw1,m,requested
+C123456,Aaren,Berson,2,1990-01-04,aa@aa.ng,1234,mypw1,m,approved
 F123456,Frank,Meyer,1,1990-01-06,aa@aa.ng,1234,,m,
 A123456,Uli,Schulz,3,1990-01-07,aa@aa.ng,1234,,m,
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_update.csv
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_update.csv	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/sample_customer_data_update.csv	(revision 11964)
@@ -1,4 +1,4 @@
 reg_number,date_of_birth,state
-1,1980-01-02,admitted
+1,1980-01-02,approved
 2,1980-01-03,
 3,1980-01-04,
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_batching.py	(revision 11964)
@@ -171,5 +171,5 @@
         initial_cust_id = self.app['customers']._curr_cust_id
         errs, inv_errs, conv_dict = self.processor.checkConversion(
-            dict(reg_number='1', state='admitted'))
+            dict(reg_number='1', state='approved'))
         self.assertEqual(len(errs),0)
         # Empty state is allowed
@@ -206,5 +206,5 @@
         self.assertEqual(self.app['customers']['X666666'].reg_number,'1')
         self.assertEqual(
-            self.app['customers']['X666666'].state, 'courses validated')
+            self.app['customers']['X666666'].state, 'requested')
         # Two new customer_ids have been created.
         self.assertEqual(self.app['customers']._curr_cust_id, 1000003)
@@ -219,8 +219,7 @@
         self.assertEqual(num_warns,0)
         # state has changed
-        self.assertEqual(self.app['customers']['X666666'].state,'admitted')
+        self.assertEqual(self.app['customers']['X666666'].state,'approved')
         # state has not changed
-        self.assertEqual(self.app['customers']['Y777777'].state,
-                         'courses validated')
+        self.assertEqual(self.app['customers']['Y777777'].state, 'requested')
         shutil.rmtree(os.path.dirname(fin_file))
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py	(revision 11964)
@@ -26,4 +26,7 @@
     default_fileupload_template)
 
+grok.context(IIkobaObject) # Make IKofaObject the default context
+grok.templatedir('browser_templates')
+
 class CustomersTab(PrimaryNavTab):
     """Customers tab in primary navigation.
@@ -41,2 +44,57 @@
     def link_target(self):
         return self.view.application_url('customers')
+
+class PrimaryCustomerNavManager(grok.ViewletManager):
+    """Viewlet manager for the primary navigation tab.
+    """
+    grok.name('primary_nav_customer')
+
+class PrimaryCustomerNavTab(grok.Viewlet):
+    """Base for primary customer nav tabs.
+    """
+    grok.baseclass()
+    grok.viewletmanager(PrimaryCustomerNavManager)
+    template = default_primary_nav_template
+    grok.order(1)
+    grok.require('waeup.Authenticated')
+    pnav = 0
+    tab_title = u'Some Text'
+
+    @property
+    def link_target(self):
+        return self.view.application_url()
+
+    @property
+    def active(self):
+        view_pnav = getattr(self.view, 'pnav', 0)
+        if view_pnav == self.pnav:
+            return 'active'
+        return ''
+
+class MyCustomerDataTab(PrimaryCustomerNavTab):
+    """MyData dropdown tab in primary navigation.
+    """
+    grok.order(3)
+    grok.require('waeup.viewMyCustomerDataTab')
+    grok.template('mydatadropdowntabs')
+    grok.name('mycustomerdatatab')
+    pnav = 4
+    tab_title = _(u'My Data')
+
+    @property
+    def active(self):
+        view_pnav = getattr(self.view, 'pnav', 0)
+        if view_pnav == self.pnav:
+            return 'active dropdown'
+        return 'dropdown'
+
+    @property
+    def targets(self):
+        customer = grok.getSite()['customers'][self.request.principal.id]
+        customer_url = self.view.url(customer)
+        targets = []
+        targets += [
+            {'url':customer_url, 'title':'Base Data'},
+            {'url':customer_url + '/history', 'title':_('History')},
+            ]
+        return targets
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/workflow.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/workflow.py	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/workflow.py	(revision 11964)
@@ -25,6 +25,5 @@
 from waeup.ikoba.interfaces import (
     IObjectHistory, IIkobaWorkflowInfo, IIkobaUtils,
-    CREATED, ADMITTED, CLEARANCE, REQUESTED, CLEARED, PAID, RETURNING,
-    REGISTERED, VALIDATED, GRADUATED, TRANSCRIPT)
+    CREATED, REQUESTED, APPROVED)
 from waeup.ikoba.interfaces import MessageFactory as _
 from waeup.ikoba.workflow import IkobaWorkflow, IkobaWorkflowInfo
@@ -33,6 +32,5 @@
 
 
-IMPORTABLE_STATES = (ADMITTED, CLEARANCE, REQUESTED, CLEARED, PAID, RETURNING,
-    REGISTERED, VALIDATED, GRADUATED)
+IMPORTABLE_STATES = (REQUESTED, APPROVED)
 
 REGISTRATION_TRANSITIONS = (
@@ -42,167 +40,42 @@
         source = None,
         condition = NullCondition,
-        msg = _('Record created'),
+        msg = _('Customer record created'),
         destination = CREATED),
 
     Transition(
-        transition_id = 'admit',
-        title = _('Admit customer'),
-        msg = _('Admitted'),
-        source = CREATED,
-        destination = ADMITTED),
+        transition_id = 'request',
+        title = _('Request registration'),
+        msg = _('Customer registration requested'),
+        source = REQUESTED,
+        destination = APPROVED),
+
+    Transition(
+        transition_id = 'approve',
+        title = _('Approve customer'),
+        msg = _('Customer registration approved'),
+        source = REQUESTED,
+        destination = APPROVED),
 
     Transition(
         transition_id = 'reset1',
         title = _('Reset customer'),
-        msg = _('Reset to initial state'),
-        source = ADMITTED,
+        msg = _('Reset to initial customer state'),
+        source = APPROVED,
         destination = CREATED),
 
     Transition(
-        transition_id = 'start_clearance',
-        title = _('Start clearance'),
-        msg = _('Clearance started'),
-        source = ADMITTED,
-        destination = CLEARANCE),
-
-    Transition(
         transition_id = 'reset2',
-        title = _('Reset to admitted'),
-        msg = _("Reset to 'admitted'"),
-        source = CLEARANCE,
-        destination = ADMITTED),
-
-    Transition(
-        transition_id = 'request_clearance',
-        title = _('Request clearance'),
-        msg = _('Clearance requested'),
-        source = CLEARANCE,
+        title = _('Reset to requested'),
+        msg = _("Reset to 'requested'"),
+        source = APPROVED,
         destination = REQUESTED),
 
     Transition(
         transition_id = 'reset3',
-        title = _('Reset to clearance started'),
-        msg = _("Reset to 'clearance started'"),
+        title = _('Reset customer'),
+        msg = _("Reset to initial state"),
         source = REQUESTED,
-        destination = CLEARANCE),
+        destination = CREATED),
 
-    Transition(
-        transition_id = 'clear',
-        title = _('Clear customer'),
-        msg = _('Cleared'),
-        source = REQUESTED,
-        destination = CLEARED),
-
-    Transition(
-        transition_id = 'reset4',
-        title = _('Reset to clearance started'),
-        msg = _("Reset to 'clearance started'"),
-        source = CLEARED,
-        destination = CLEARANCE),
-
-    Transition(
-        transition_id = 'pay_first_school_fee',
-        title = _('Pay school fee'),
-        msg = _('First school fee payment made'),
-        source = CLEARED,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'approve_first_school_fee',
-        title = _('Approve payment'),
-        msg = _('First school fee payment approved'),
-        source = CLEARED,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'reset5',
-        title = _('Reset to cleared'),
-        msg = _("Reset to 'cleared'"),
-        source = PAID,
-        destination = CLEARED),
-
-    Transition(
-        transition_id = 'pay_school_fee',
-        title = _('Pay school fee'),
-        msg = _('School fee payment made'),
-        source = RETURNING,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'pay_pg_fee',
-        title = _('Pay PG school fee'),
-        msg = _('PG school fee payment made'),
-        source = PAID,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'approve_school_fee',
-        title = _('Approve school fee payment'),
-        msg = _('School fee payment approved'),
-        source = RETURNING,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'approve_pg_fee',
-        title = _('Approve PG school fee payment'),
-        msg = _('PG school fee payment approved'),
-        source = PAID,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'reset6',
-        title = _('Reset to returning'),
-        msg = _("Reset to 'returning'"),
-        source = PAID,
-        destination = RETURNING),
-
-    Transition(
-        transition_id = 'register_courses',
-        title = _('Register courses'),
-        msg = _('Courses registered'),
-        source = PAID,
-        destination = REGISTERED),
-
-    Transition(
-        transition_id = 'reset7',
-        title = _('Reset to school fee paid'),
-        msg = _("Reset to 'school fee paid'"),
-        source = REGISTERED,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'validate_courses',
-        title = _('Validate courses'),
-        msg = _('Courses validated'),
-        source = REGISTERED,
-        destination = VALIDATED),
-
-    Transition(
-        transition_id = 'bypass_validation',
-        title = _('Return and bypass validation'),
-        msg = _("Course validation bypassed"),
-        source = REGISTERED,
-        destination = RETURNING),
-
-    Transition(
-        transition_id = 'reset8',
-        title = _('Reset to school fee paid'),
-        msg = _("Reset to 'school fee paid'"),
-        source = VALIDATED,
-        destination = PAID),
-
-    Transition(
-        transition_id = 'return',
-        title = _('Return'),
-        msg = _("Returned"),
-        source = VALIDATED,
-        destination = RETURNING),
-
-    Transition(
-        transition_id = 'reset9',
-        title = _('Reset to courses validated'),
-        msg = _("Reset to 'courses validated'"),
-        source = RETURNING,
-        destination = VALIDATED),
     )
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/interfaces.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/interfaces.py	(revision 11963)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/interfaces.py	(revision 11964)
@@ -46,15 +46,6 @@
 
 CREATED = 'created'
-ADMITTED = 'admitted'
-CLEARANCE = 'clearance started'
-REQUESTED = 'clearance requested'
-CLEARED = 'cleared'
-PAID = 'school fee paid'
-RETURNING = 'returning'
-REGISTERED = 'courses registered'
-VALIDATED = 'courses validated'
-GRADUATED = 'graduated'
-TRANSCRIPT = 'transcript requested'
-
+REQUESTED = 'requested'
+APPROVED = 'approved'
 
 #: A dict giving job status as tuple (<STRING>, <TRANSLATED_STRING>),
@@ -93,12 +84,6 @@
 registration_states_vocab = SimpleIkobaVocabulary(
     (_('created'), CREATED),
-    (_('admitted'), ADMITTED),
-    (_('clearance started'), CLEARANCE),
-    (_('clearance requested'), REQUESTED),
-    (_('cleared'), CLEARED),
-    (_('school fee paid'), PAID),
-    (_('courses registered'), REGISTERED),
-    (_('courses validated'), VALIDATED),
-    (_('returning'), RETURNING),
+    (_('requested'), REQUESTED),
+    (_('approved'), APPROVED),
     )
 
