Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12500)
@@ -1382,4 +1382,28 @@
 
 
+class ContractOfficialUsePage(IkobaEditFormPage):
+    """ Page to manage a official use data of contract
+    """
+    grok.context(IContract)
+    grok.name('official_use')
+    grok.require('waeup.manageCustomer')
+    grok.template('contracteditpage')
+    pnav = 4
+    deletion_warning = _('Are you sure?')
+
+    @property
+    def form_fields(self):
+        return grok.AutoFields(self.context.ou_form_fields_interface)
+
+    @property
+    def label(self):
+        return self.context.title
+
+    @action(_('Save'), style='primary')
+    def save(self, **data):
+        msave(self, **data)
+        return
+
+
 class ContractEditFormPage(ContractManageFormPage):
     """ Page to edit a contract by customer only
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/contracts.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/contracts.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/contracts.py	(revision 12500)
@@ -31,6 +31,7 @@
 from waeup.ikoba.customers.interfaces import (
     IContractsContainer, ICustomerNavigation,
-    IContract, IContractProcess, IContractSelectProduct, ICustomersUtils,
-    ISampleContract, ISampleContractProcess, ISampleContractEdit)
+    IContract, IContractSelectProduct, ICustomersUtils,
+    ISampleContract, ISampleContractProcess, ISampleContractEdit,
+    ISampleContractOfficialUse)
 from waeup.ikoba.customers.utils import generate_contract_id
 from waeup.ikoba.utils.helpers import attrs_to_fields
@@ -64,12 +65,4 @@
 
     grok.baseclass()
-
-    check_docs_interface = None
-
-    contract_category = None
-
-    form_fields_interface = None
-
-    edit_form_fields_interface = None
 
     def __init__(self):
@@ -186,4 +179,6 @@
     edit_form_fields_interface = ISampleContractEdit
 
+    ou_form_fields_interface = ISampleContractOfficialUse
+
     check_docs_interface = ISampleContract
 
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/export.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/export.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/export.py	(revision 12500)
@@ -28,5 +28,5 @@
 from waeup.ikoba.customers.interfaces import (
     ICustomer, ICSVCustomerExporter,
-    ICustomerSampleDocument, ISampleContract)
+    ICustomerSampleDocument, ISampleContractProcess)
 from waeup.ikoba.utils.batching import ExporterBase
 from waeup.ikoba.utils.helpers import iface_names, to_timezone
@@ -242,5 +242,5 @@
     """
     grok.name('samplecontracts')
-    iface = ISampleContract
+    iface = ISampleContractProcess
     class_name = 'SampleContract'
     title = _(u'Customer Sample Contracts')
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12500)
@@ -321,5 +321,39 @@
 
 
-class IContractProcess(IContract):
+class IContractSelectProduct(Interface):
+    """Interface for for the ContractSelectProductPage.
+
+    """
+
+    product_object = schema.Choice(
+        title = _(u'Product'),
+        source = ConCatProductSource(),
+        required = True,
+        )
+
+
+class ISampleContract(IContract):
+    """A customer contract sample with document attached.
+
+    """
+
+    document_object = schema.Choice(
+        title = _(u'Document'),
+        source = CustomerDocumentSource(),
+        required = False,
+        )
+
+
+class ISampleContractOfficialUse(IIkobaObject):
+    """Interface for official use only.
+    """
+
+    comment = schema.Text(
+        title = _(u'Comment'),
+        required = False,
+        )
+
+
+class ISampleContractProcess(ISampleContract, ISampleContractOfficialUse):
     """Interface for processing contract data.
     """
@@ -334,18 +368,6 @@
 
 
-class IContractSelectProduct(Interface):
-    """Interface for for the ContractSelectProductPage.
-
-    """
-
-    product_object = schema.Choice(
-        title = _(u'Product'),
-        source = ConCatProductSource(),
-        required = True,
-        )
-
-
-class ISampleContract(IContract):
-    """A customer contract sample with document attached.
+class ISampleContractEdit(ISampleContract):
+    """Interface for editing sample contract data by customers.
 
     """
@@ -354,29 +376,4 @@
         title = _(u'Document'),
         source = CustomerDocumentSource(),
-        required = False,
-        )
-
-
-class ISampleContractProcess(ISampleContract):
-    """Interface for processing contract data.
-    """
-
-    product_options = schema.List(
-        title = _(u'Options/Fees'),
-        value_type = ProductOptionField(),
-        required = False,
-        readonly = False,
-        default = [],
-        )
-
-
-class ISampleContractEdit(ISampleContract):
-    """Interface for editing sample contract data by customers.
-
-    """
-
-    document_object = schema.Choice(
-        title = _(u'Document'),
-        source = CustomerDocumentSource(),
-        required = True,
-        )
+        required = True,
+        )
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12500)
@@ -1215,4 +1215,12 @@
         self.assertEqual(contract.state, 'approved')
 
+        # Even in state approved the official use data can be edited
+        self.browser.open(self.contracts_path + '/%s/index' % conid)
+        self.browser.getLink("Manage official data").click()
+        self.browser.getControl(name="form.comment").value = u'Nice place'
+        self.browser.getControl("Save").click()
+        self.assertEqual(contract.comment, 'Nice place')
+        self.assertTrue('Form has been saved.' in self.browser.contents)
+
         # Contracts can be removed
         self.browser.getLink("Contracts").click()
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_export.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_export.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_export.py	(revision 12500)
@@ -255,9 +255,9 @@
         self.assertEqual(
             result,
-            'class_name,contract_category,contract_id,document_object,'
+            'class_name,comment,contract_category,contract_id,document_object,'
             'history,last_product_id,'
             'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
-            'SampleContract,sample,CON1,,[],,,[],,{},,\r\n'
+            'SampleContract,,sample,CON1,,[],,,[],,{},,\r\n'
             )
         return
@@ -271,9 +271,9 @@
         result = open(self.outfile, 'rb').read()
         self.assertMatches(
-            'class_name,contract_category,contract_id,document_object,'
+            'class_name,comment,contract_category,contract_id,document_object,'
             'history,last_product_id,'
             'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
-            'SampleContract,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
+            'SampleContract,,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
             'Contract created by system\'],,'
             'SAM,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",'
@@ -291,9 +291,9 @@
         result = open(self.outfile, 'rb').read()
         self.assertMatches(
-            'class_name,contract_category,contract_id,document_object,'
+            'class_name,comment,contract_category,contract_id,document_object,'
             'history,last_product_id,'
             'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
-            'SampleContract,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
+            'SampleContract,,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
             'Contract created by system\'],,'
             'SAM,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",'
@@ -311,9 +311,9 @@
         result = open(self.outfile, 'rb').read()
         self.assertMatches(
-            'class_name,contract_category,contract_id,document_object,'
+            'class_name,comment,contract_category,contract_id,document_object,'
             'history,last_product_id,'
             'product_object,product_options,state,tc_dict,title,user_id\r\n'
 
-            'SampleContract,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
+            'SampleContract,,sample,CON1,DOC1,[u\'2014-12-04 12:10:46 UTC - '
             'Contract created by system\'],,'
             'SAM,"[(u\'Base Fee\', u\'800.6\', u\'USD\')]",'
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py	(revision 12491)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py	(revision 12500)
@@ -35,5 +35,6 @@
     DocumentsManageFormPage, DocumentDisplayFormPage, DocumentManageFormPage,
     ContractsFormPage, ContractDisplayFormPage,
-    ContractManageFormPage)
+    ContractManageFormPage,
+    ContractOfficialUsePage)
 
 grok.context(IIkobaObject)  # Make IIkobaObject the default context
@@ -405,4 +406,13 @@
 
 
+class ContractOUActionButton(ManageActionButton):
+    grok.order(2)
+    grok.context(IContract)
+    grok.view(ContractDisplayFormPage)
+    grok.require('waeup.manageCustomer')
+    text = _('Manage official data')
+    target = 'official_use'
+
+
 class ContractEditActionButton(ManageActionButton):
     grok.order(1)
@@ -421,5 +431,5 @@
 
 class ContractTrigTransActionButton(ManageActionButton):
-    grok.order(2)
+    grok.order(3)
     grok.context(IContract)
     grok.view(ContractDisplayFormPage)
@@ -440,6 +450,10 @@
 
 
+class ContractViewActionButton2(ContractViewActionButton):
+    grok.view(ContractOfficialUsePage)
+
+
 class PDFContractSlipActionButton(ManageActionButton):
-    grok.order(3)
+    grok.order(4)
     grok.context(IContract)
     grok.view(ContractDisplayFormPage)
