Index: main/waeup.ikoba/trunk/src/waeup/ikoba/locales/en/LC_MESSAGES/waeup.ikoba.po
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/locales/en/LC_MESSAGES/waeup.ikoba.po	(revision 11980)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/locales/en/LC_MESSAGES/waeup.ikoba.po	(revision 12192)
@@ -15,5 +15,5 @@
 msgstr ""
 "Project-Id-Version: WAeUP.KOFA\n"
-"POT-Creation-Date: Mon Nov 17 13:28:06 2014\n"
+"POT-Creation-Date: Wed Dec 10 17:36:11 2014\n"
 "PO-Revision-Date: 2014-11-13 14:47+0100\n"
 "Last-Translator: Henrik Bettermann <henrik@waeup.org>\n"
@@ -35,5 +35,5 @@
 msgstr ""
 
-#: waeup/ikoba/browser/breadcrumbs.py:119 waeup/ikoba/browser/pages.py:471
+#: waeup/ikoba/browser/breadcrumbs.py:119 waeup/ikoba/browser/pages.py:470
 msgid "Administration"
 msgstr ""
@@ -44,16 +44,16 @@
 msgstr ""
 
-#: waeup/ikoba/browser/breadcrumbs.py:144 waeup/ikoba/browser/pages.py:518
+#: waeup/ikoba/browser/breadcrumbs.py:133 waeup/ikoba/browser/pages.py:517
 #: waeup/ikoba/browser/viewlets.py:329 waeup/ikoba/browser/viewlets.py:554
 msgid "Portal Users"
 msgstr ""
 
-#: waeup/ikoba/browser/breadcrumbs.py:151 waeup/ikoba/browser/pages.py:863
-#: waeup/ikoba/browser/pages.py:1458 waeup/ikoba/browser/viewlets.py:338
+#: waeup/ikoba/browser/breadcrumbs.py:140 waeup/ikoba/browser/pages.py:779
+#: waeup/ikoba/browser/pages.py:1374 waeup/ikoba/browser/viewlets.py:338
 #: waeup/ikoba/browser/viewlets.py:563
 msgid "Data Center"
 msgstr ""
 
-#: waeup/ikoba/browser/breadcrumbs.py:158 waeup/ikoba/browser/reports.py:37
+#: waeup/ikoba/browser/breadcrumbs.py:147 waeup/ikoba/browser/reports.py:37
 #: waeup/ikoba/browser/viewlets.py:347 waeup/ikoba/browser/viewlets.py:572
 msgid "Reports"
@@ -73,189 +73,180 @@
 
 #: waeup/ikoba/browser/interfaces.py:182
-#: waeup/ikoba/customers/interfaces.py:217 waeup/ikoba/interfaces.py:444
-#: waeup/ikoba/interfaces.py:520
+#: waeup/ikoba/customers/interfaces.py:195
+#: waeup/ikoba/customers/interfaces.py:223 waeup/ikoba/interfaces.py:436
+#: waeup/ikoba/interfaces.py:512
 msgid "Email Address"
 msgstr ""
 
-#: waeup/ikoba/browser/layout.py:102
+#: waeup/ikoba/browser/layout.py:102 waeup/ikoba/customers/browser.py:860
+#: waeup/ikoba/customers/browser.py:1202
 msgid "Are you sure?"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1005
-msgid "Only csv files are allowed."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1013
-msgid "File with same name was uploaded earlier."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1024
-msgid ""
-"Your file contains forbidden characters or has invalid CSV format. First "
-"problematic line detected: line %s. Please replace."
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:113
+#: waeup/ikoba/browser/pages.py:1052 waeup/ikoba/browser/pages.py:1081
+#: waeup/ikoba/browser/pages.py:1184 waeup/ikoba/browser/pages.py:1296
+msgid "Process CSV file"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1084
+msgid "Back to step 1"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1085
+msgid "Proceed to step 3"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/browser/pages.py:112
 msgid "Local role successfully removed: ${a}"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1136 waeup/ikoba/browser/pages.py:1165
-#: waeup/ikoba/browser/pages.py:1268 waeup/ikoba/browser/pages.py:1380
-msgid "Process CSV file"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1168
-msgid "Back to step 1"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1169
-msgid "Proceed to step 3"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1212
+#: waeup/ikoba/browser/pages.py:1128
 msgid "Double headers: each column name may only appear once. "
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1220
+#: waeup/ikoba/browser/pages.py:1136
 msgid "Replace imported file!"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1233 waeup/ikoba/browser/pages.py:1356
+#: waeup/ikoba/browser/pages.py:1149 waeup/ikoba/browser/pages.py:1272
 msgid "Import aborted."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1245
+#: waeup/ikoba/browser/pages.py:1161
 msgid "Update mode only!"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:126 waeup/ikoba/browser/pages.py:872
-#: waeup/ikoba/customers/browser.py:156
+#: waeup/ikoba/browser/pages.py:1187 waeup/ikoba/browser/pages.py:1415
+msgid "Reset"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1188
+msgid "Set headerfields"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1189
+msgid "Back to step 2"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1190
+msgid "Perform import"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:125 waeup/ikoba/browser/pages.py:788
+#: waeup/ikoba/customers/browser.py:197
 msgid "No item selected."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1271 waeup/ikoba/browser/pages.py:1499
-msgid "Reset"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1272
-msgid "Set headerfields"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1273
-msgid "Back to step 2"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1274
-msgid "Perform import"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1339
+#: waeup/ikoba/browser/pages.py:1255
 msgid "Edit headers or replace imported file!"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1382
+#: waeup/ikoba/browser/pages.py:1298
 msgid "Process next"
 msgstr ""
 
 #. Default: ""
+#: waeup/ikoba/browser/pages.py:1348
+msgid "Processing of ${a} rows failed."
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/browser/pages.py:1350
+msgid "Successfully processed ${a} rows."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1358
+msgid "Show logfiles"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1361
+msgid "Show"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1376 waeup/ikoba/browser/viewlets.py:185
+msgid "Search"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1378
+msgid "Enter a regular expression here..."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1386
+msgid "Log files can only be searched on Unix-based operating systems."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1401
+msgid "Invalid search expression."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1404
+msgid "No search results found."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1412
+msgid "Edit data center settings"
+msgstr ""
+
+#. Default: ""
 #: waeup/ikoba/browser/pages.py:1432
-msgid "Processing of ${a} rows failed."
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:1434
-msgid "Successfully processed ${a} rows."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1442
-msgid "Show logfiles"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1445
-msgid "Show"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1460 waeup/ikoba/browser/viewlets.py:185
-msgid "Search"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1462
-msgid "Enter a regular expression here..."
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:147 waeup/ikoba/customers/browser.py:169
+msgid "File already existed (not copied): ${a}"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/browser/pages.py:1435
+msgid "Given storage path cannot be used: ${a}"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1439
+msgid "New storage path succefully set."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1451
+msgid "Download portal data as CSV file"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:1453
+msgid "Create CSV file"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/browser/pages.py:146 waeup/ikoba/customers/browser.py:210
+#: waeup/ikoba/customers/browser.py:790 waeup/ikoba/customers/browser.py:1125
 msgid "Successfully removed: ${a}"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1470
-msgid "Log files can only be searched on Unix-based operating systems."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1485
-msgid "Invalid search expression."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1488
-msgid "No search results found."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1496
-msgid "Edit data center settings"
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:1516
-msgid "File already existed (not copied): ${a}"
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:1519
-msgid "Given storage path cannot be used. ${a}"
+#: waeup/ikoba/browser/pages.py:1479
+msgid "Discarded export"
 msgstr ""
 
 #: waeup/ikoba/browser/pages.py:1523
-msgid "New storage path succefully set."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1535
-msgid "Download portal data as CSV file"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1537
-msgid "Create CSV file"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1563
-msgid "Discarded export"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:1607
 msgid "Send me a new password"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1633 waeup/ikoba/customers/browser.py:456
+#: waeup/ikoba/browser/pages.py:1549 waeup/ikoba/customers/browser.py:507
+#: waeup/ikoba/customers/browser.py:589
 msgid "Send login credentials to email address"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1644
+#: waeup/ikoba/browser/pages.py:1560
 msgid "No record found."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:1658 waeup/ikoba/customers/browser.py:502
+#: waeup/ikoba/browser/pages.py:1574 waeup/ikoba/customers/browser.py:553
 msgid "You have successfully requested a password for the"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:1662
+#: waeup/ikoba/browser/pages.py:1578
 msgid "An email with your user name and password has been sent to ${a}."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:189 waeup/ikoba/customers/browser.py:341
+#: waeup/ikoba/browser/pages.py:188 waeup/ikoba/customers/browser.py:77
+#: waeup/ikoba/customers/browser.py:388
 msgid "Form has been saved."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:260 waeup/ikoba/browser/viewlets.py:266
+#: waeup/ikoba/browser/pages.py:259 waeup/ikoba/browser/viewlets.py:266
 #: waeup/ikoba/browser/templates/staffsitelayout.pt:40
 #: waeup/ikoba/browser/templates/customersitelayout.pt:39
@@ -263,64 +254,66 @@
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:271
+#: waeup/ikoba/browser/pages.py:270
 msgid "You logged in."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:308
+#: waeup/ikoba/browser/pages.py:307
 msgid "Your account has been temporarily deactivated."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:316
+#: waeup/ikoba/browser/pages.py:315
 msgid "Your account has been deactivated."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:319
+#: waeup/ikoba/browser/pages.py:318
 msgid "You entered invalid credentials."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:334
+#: waeup/ikoba/browser/pages.py:333
 msgid "You have been logged out. Thanks for using WAeUP Ikoba!"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:376
+#: waeup/ikoba/browser/pages.py:375
 msgid "Contact ${a}"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:382 waeup/ikoba/browser/pages.py:662
+#: waeup/ikoba/browser/pages.py:381 waeup/ikoba/browser/pages.py:661
 msgid "Send message now"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:401 waeup/ikoba/browser/pages.py:434
-#: waeup/ikoba/browser/pages.py:679 waeup/ikoba/customers/browser.py:297
+#: waeup/ikoba/browser/pages.py:400 waeup/ikoba/browser/pages.py:433
+#: waeup/ikoba/browser/pages.py:678 waeup/ikoba/customers/browser.py:343
 msgid "Your message has been sent."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:421
+#: waeup/ikoba/browser/pages.py:420
 msgid "Send now"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:436
+#: waeup/ikoba/browser/pages.py:435
 msgid "A smtp server error occurred."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:461
+#: waeup/ikoba/browser/pages.py:460
 msgid "<h1>Welcome to WAeUP.Ikoba</h1>"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:519 waeup/ikoba/customers/viewlets.py:176
+#: waeup/ikoba/browser/pages.py:518 waeup/ikoba/customers/viewlets.py:205
+#: waeup/ikoba/customers/viewlets.py:326 waeup/ikoba/customers/viewlets.py:406
+#: waeup/ikoba/products/viewlets.py:60 waeup/ikoba/products/viewlets.py:79
 msgid "Manage"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:520 waeup/ikoba/browser/viewlets.py:175
+#: waeup/ikoba/browser/pages.py:519 waeup/ikoba/browser/viewlets.py:175
 msgid "Remove"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:527
+#: waeup/ikoba/browser/pages.py:526
 msgid "User account ${a} successfully deleted."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:564 waeup/ikoba/browser/pages.py:566
+#: waeup/ikoba/browser/pages.py:563 waeup/ikoba/browser/pages.py:565
 #: waeup/ikoba/browser/viewlets.py:403
 msgid "Add user"
@@ -328,140 +321,119 @@
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:588
+#: waeup/ikoba/browser/pages.py:587
 msgid "User account ${a} successfully added."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:609
+#: waeup/ikoba/browser/pages.py:608
 msgid "Edit user ${a}"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:617 waeup/ikoba/browser/pages.py:748
-#: waeup/ikoba/browser/pages.py:761 waeup/ikoba/browser/pages.py:844
-#: waeup/ikoba/browser/pages.py:1498 waeup/ikoba/customers/browser.py:319
-#: waeup/ikoba/customers/browser.py:368 waeup/ikoba/customers/browser.py:561
-#: waeup/ikoba/customers/browser.py:576
+#: waeup/ikoba/browser/pages.py:616 waeup/ikoba/browser/pages.py:755
+#: waeup/ikoba/browser/pages.py:1414 waeup/ikoba/customers/browser.py:366
+#: waeup/ikoba/customers/browser.py:416 waeup/ikoba/customers/browser.py:675
+#: waeup/ikoba/customers/browser.py:691 waeup/ikoba/customers/browser.py:872
+#: waeup/ikoba/customers/browser.py:890 waeup/ikoba/customers/browser.py:929
+#: waeup/ikoba/customers/browser.py:1213 waeup/ikoba/customers/browser.py:1236
+#: waeup/ikoba/customers/browser.py:1275 waeup/ikoba/products/browser.py:92
+#: waeup/ikoba/products/browser.py:104 waeup/ikoba/products/browser.py:174
+#: waeup/ikoba/products/browser.py:181
 msgid "Save"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:643
+#: waeup/ikoba/browser/pages.py:642
 msgid "User settings have been saved."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:646 waeup/ikoba/browser/pages.py:824
-#: waeup/ikoba/browser/pages.py:850 waeup/ikoba/browser/pages.py:1167
-#: waeup/ikoba/browser/pages.py:1270
+#: waeup/ikoba/browser/pages.py:645 waeup/ikoba/browser/pages.py:1083
+#: waeup/ikoba/browser/pages.py:1186 waeup/ikoba/customers/browser.py:831
+#: waeup/ikoba/customers/browser.py:1166 waeup/ikoba/products/browser.py:92
+#: waeup/ikoba/products/browser.py:93 waeup/ikoba/products/browser.py:108
+#: waeup/ikoba/products/browser.py:174 waeup/ikoba/products/browser.py:185
 msgid "Cancel"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:660 waeup/ikoba/customers/browser.py:278
+#: waeup/ikoba/browser/pages.py:659 waeup/ikoba/customers/browser.py:324
 msgid "Send message to ${a}"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:689 waeup/ikoba/browser/viewlets.py:354
+#: waeup/ikoba/browser/pages.py:688 waeup/ikoba/browser/viewlets.py:354
 msgid "My Preferences"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:702 waeup/ikoba/browser/viewlets.py:370
+#: waeup/ikoba/browser/pages.py:701 waeup/ikoba/browser/viewlets.py:370
 msgid "My Roles"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:733
+#: waeup/ikoba/browser/pages.py:732
 msgid "View portal configuration"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:747
+#: waeup/ikoba/browser/pages.py:745
 msgid "Edit portal configuration"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:748 waeup/ikoba/browser/pages.py:788
+#: waeup/ikoba/browser/pages.py:761
 msgid "Update plugins"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:750 waeup/ikoba/browser/pages.py:767
-#: waeup/ikoba/browser/pages.py:804
-msgid "Add session configuration"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:751 waeup/ikoba/browser/pages.py:783
-#: waeup/ikoba/browser/pages.py:866 waeup/ikoba/customers/browser.py:125
-msgid "Remove selected"
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:779
-msgid "Session ${a} Configuration"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:789
+#: waeup/ikoba/browser/pages.py:762
 msgid "For experts only!"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:790
+#: waeup/ikoba/browser/pages.py:763
 msgid ""
 "Plugins may only be updated after software upgrades. Are you really sure?"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:795
+#: waeup/ikoba/browser/pages.py:768
 msgid "Plugins were updated. See log file for details."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:808
-msgid "Add Session Configuration"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:819
-msgid "The session chosen already exists."
-msgstr ""
-
-#. Default: ""
-#: waeup/ikoba/browser/pages.py:841
-msgid "Edit academic session ${a} configuration"
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:883
+#: waeup/ikoba/browser/pages.py:782 waeup/ikoba/customers/browser.py:166
+#: waeup/ikoba/products/browser.py:93 waeup/ikoba/products/browser.py:95
+msgid "Remove selected"
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:799
 msgid "OSError: The file could not be deleted."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:887
+#: waeup/ikoba/browser/pages.py:803
 msgid "Successfully deleted: ${a}"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:898
+#: waeup/ikoba/browser/pages.py:814
 msgid "Processed Files"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:900 waeup/ikoba/browser/pages.py:916
-#: waeup/ikoba/browser/pages.py:1138 waeup/ikoba/browser/pages.py:1444
-#: waeup/ikoba/browser/pages.py:1461 waeup/ikoba/browser/pages.py:1500
-#: waeup/ikoba/browser/pages.py:1538
+#: waeup/ikoba/browser/pages.py:816 waeup/ikoba/browser/pages.py:832
+#: waeup/ikoba/browser/pages.py:1054 waeup/ikoba/browser/pages.py:1360
+#: waeup/ikoba/browser/pages.py:1377 waeup/ikoba/browser/pages.py:1416
+#: waeup/ikoba/browser/pages.py:1454
 msgid "Back to Data Center"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:912
+#: waeup/ikoba/browser/pages.py:828
 msgid "Upload portal data as CSV file"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:915
+#: waeup/ikoba/browser/pages.py:831
 msgid "Upload"
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:92
-msgid "No local role selected."
-msgstr ""
-
-#: waeup/ikoba/browser/pages.py:955
+#: waeup/ikoba/browser/pages.py:871
 msgid "Import Manager"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:957
+#: waeup/ikoba/browser/pages.py:873
 msgid "${a}: ${b} uploaded"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/browser/pages.py:961
+#: waeup/ikoba/browser/pages.py:877
 msgid ""
 "File: ${a}\n"
@@ -475,15 +447,33 @@
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:980
+#: waeup/ikoba/browser/pages.py:896
 msgid "All import managers have been notified by email."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:982 waeup/ikoba/browser/pages.py:1665
-#: waeup/ikoba/customers/browser.py:299
+#: waeup/ikoba/browser/pages.py:898 waeup/ikoba/browser/pages.py:1581
+#: waeup/ikoba/customers/browser.py:345
 msgid "An smtp server error occurred."
 msgstr ""
 
-#: waeup/ikoba/browser/pages.py:990
+#: waeup/ikoba/browser/pages.py:906
 msgid "Maximum number of files in the data center exceeded."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:91
+msgid "No local role selected."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:921
+msgid "Only csv files are allowed."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:929
+msgid "File with same name was uploaded earlier."
+msgstr ""
+
+#: waeup/ikoba/browser/pages.py:940
+msgid ""
+"Your file contains forbidden characters or has invalid CSV format. First "
+"problematic line detected: line %s. Please replace."
 msgstr ""
 
@@ -521,17 +511,4 @@
 #: waeup/ikoba/browser/templates/changepw.pt:8
 msgid "solve_captcha"
-msgstr ""
-
-#: waeup/ikoba/browser/templates/configurationmanagepage.pt:34
-#: waeup/ikoba/browser/templates/userscontainerpage.pt:5
-msgid "Name"
-msgstr ""
-
-#: waeup/ikoba/browser/templates/configurationmanagepage.pt:5
-msgid "Site Settings"
-msgstr ""
-
-#: waeup/ikoba/browser/templates/configurationmanagepage.pt:9
-msgid "Session Configurations"
 msgstr ""
 
@@ -767,5 +744,5 @@
 
 #: waeup/ikoba/browser/templates/loginpage.pt:13
-msgid "Notice: User names, Ids and passwords are case sensitive."
+msgid "Notice: User names, ids and passwords are case sensitive."
 msgstr ""
 
@@ -775,16 +752,21 @@
 msgstr ""
 
-#. Default: "You don't have an account because you are a new customer, or your customer record has just been created? Acquire a Password Activation Code (PWD) and inititialize your customer account <strong><a href=\"setpassword\"> here</a></strong>."
+#. Default: "You don't have an account because you are a new customer, or your customer record has been created for you? Acquire a Password Activation Code (PWD) and inititialize your customer account <strong><a href=\"setpassword\"> here</a></strong>."
 #: waeup/ikoba/browser/templates/loginpage.pt:23
 msgid "login_trouble2"
 msgstr ""
 
-#. Default: "You don't have an account because you are a new customer, or your customer record has just been created? Inititialize your customer account <strong><a href=\"requestpw\"> here</a></strong>."
+#. Default: "You don't have an account because you are a new customer? Create your customer account <strong><a href=\"createaccount\"> here</a></strong>."
 #: waeup/ikoba/browser/templates/loginpage.pt:28
 msgid "login_trouble4"
 msgstr ""
 
-#. Default: "Or simply forgot your customer id password? Then request a new password <strong><a href=\"changepw\"> here</a></strong>."
+#. Default: "You don't have an account because you are a new customer and your customer record has been created for you? Inititialize your customer account <strong><a href=\"requestpw\"> here</a></strong>."
 #: waeup/ikoba/browser/templates/loginpage.pt:32
+msgid "login_trouble5"
+msgstr ""
+
+#. Default: "Or simply forgot your id or password? Then request a new password <strong><a href=\"changepw\"> here</a></strong>."
+#: waeup/ikoba/browser/templates/loginpage.pt:36
 msgid "login_trouble3"
 msgstr ""
@@ -850,5 +832,5 @@
 #: waeup/ikoba/browser/templates/staffsitelayout.pt:6
 #: waeup/ikoba/browser/templates/customersitelayout.pt:4
-msgid "WAeUP.Ikoba - Application and Registration System"
+msgid "WAeUP.Ikoba - Registration and Application System"
 msgstr ""
 
@@ -867,9 +849,11 @@
 msgstr ""
 
-#: waeup/ikoba/browser/templates/userscontainerpage.pt:4
-msgid "Id"
+#: waeup/ikoba/browser/templates/userscontainerpage.pt:5
+#: waeup/ikoba/products/browser_templates/productmanagepage.pt:37
+msgid "Name"
 msgstr ""
 
 #: waeup/ikoba/browser/templates/userscontainerpage.pt:7
+#: waeup/ikoba/products/browser_templates/productmanagepage.pt:9
 msgid "Local Roles"
 msgstr ""
@@ -883,5 +867,5 @@
 msgstr ""
 
-#: waeup/ikoba/browser/viewlets.py:387 waeup/ikoba/customers/viewlets.py:168
+#: waeup/ikoba/browser/viewlets.py:387 waeup/ikoba/customers/viewlets.py:196
 msgid "Send email"
 msgstr ""
@@ -916,122 +900,183 @@
 
 #: waeup/ikoba/browser/viewlets.py:93 waeup/ikoba/browser/viewlets.py:155
+#: waeup/ikoba/customers/viewlets.py:276 waeup/ikoba/customers/viewlets.py:341
+#: waeup/ikoba/customers/viewlets.py:415
 msgid "Edit"
 msgstr ""
 
-#: waeup/ikoba/customers/batching.py:139 waeup/ikoba/customers/workflow.py:42
+#: waeup/ikoba/customers/batching.py:144 waeup/ikoba/customers/workflow.py:49
 msgid "Customer record created"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/batching.py:194
+#: waeup/ikoba/customers/batching.py:199
 msgid "State '${a}' set"
 msgstr ""
 
-#: waeup/ikoba/customers/batching.py:57
+#: waeup/ikoba/customers/batching.py:379
+msgid "CustomerDocument Processor"
+msgstr ""
+
+#: waeup/ikoba/customers/batching.py:476
+msgid "Contract Processor"
+msgstr ""
+
+#: waeup/ikoba/customers/batching.py:62
 msgid "Customer Processor"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:100 waeup/ikoba/customers/browser.py:141
+#: waeup/ikoba/customers/browser.py:1063 waeup/ikoba/customers/export.py:200
+#: waeup/ikoba/customers/viewlets.py:158
+msgid "Contracts"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/customers/browser.py:1103
+msgid "${a}: Contracts"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1106
+msgid "Remove selected contracts"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1112
+msgid "No contract selected."
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1141 waeup/ikoba/customers/viewlets.py:387
+msgid "Add contract"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1149
+msgid "Create contract"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:122
+msgid "Find customers"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:123 waeup/ikoba/customers/browser.py:165
+msgid "Find customer(s)"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1241
+msgid "Apply now (final submit)"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1257
+msgid "Trigger contract transition"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1303
+msgid "Contracts of"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:1311
+msgid "Customer Contracts"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:140 waeup/ikoba/customers/browser.py:182
 msgid "Empty search string"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:106 waeup/ikoba/customers/browser.py:147
+#: waeup/ikoba/customers/browser.py:146 waeup/ikoba/customers/browser.py:188
 msgid "Only year dates allowed (e.g. 2011)."
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:112 waeup/ikoba/customers/browser.py:154
+#: waeup/ikoba/customers/browser.py:152 waeup/ikoba/customers/browser.py:195
 msgid "No customer found."
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:123 waeup/ikoba/customers/viewlets.py:152
+#: waeup/ikoba/customers/browser.py:164 waeup/ikoba/customers/viewlets.py:178
 msgid "Manage customer section"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:181 waeup/ikoba/customers/viewlets.py:159
+#: waeup/ikoba/customers/browser.py:223 waeup/ikoba/customers/viewlets.py:186
 msgid "Add customer"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:184
+#: waeup/ikoba/customers/browser.py:226
 msgid "Create customer record"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:189
+#: waeup/ikoba/customers/browser.py:231
 msgid "Customer record created."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/browser.py:203
+#: waeup/ikoba/customers/browser.py:246
 msgid "Set temporary password for ${a}"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:225
+#: waeup/ikoba/customers/browser.py:269
 msgid "Login now"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/browser.py:229
+#: waeup/ikoba/customers/browser.py:273
 msgid "Login as ${a}"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:235
+#: waeup/ikoba/customers/browser.py:279
 msgid "You successfully logged in as customer."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/browser.py:253
+#: waeup/ikoba/customers/browser.py:298
 msgid "${a}: Base Data (account deactivated)"
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/browser.py:255
+#: waeup/ikoba/customers/browser.py:300
 msgid "${a}: Base Data"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:261
+#: waeup/ikoba/customers/browser.py:306
 msgid "set"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:262
+#: waeup/ikoba/customers/browser.py:307
 msgid "unset"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:311
+#: waeup/ikoba/customers/browser.py:358
 msgid "Manage base data"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:353
+#: waeup/ikoba/customers/browser.py:401
 msgid "Trigger registration transition"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:365
+#: waeup/ikoba/customers/browser.py:413 waeup/ikoba/customers/browser.py:926
+#: waeup/ikoba/customers/browser.py:1272
 msgid "No transition"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:389
+#: waeup/ikoba/customers/browser.py:438
 msgid "Customer account has been activated."
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:408
+#: waeup/ikoba/customers/browser.py:458
 msgid "Customer account has been deactivated."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/browser.py:426
+#: waeup/ikoba/customers/browser.py:477
 msgid "${a}: History"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:436
+#: waeup/ikoba/customers/browser.py:487
 msgid "Request password for first-time login"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:470
+#: waeup/ikoba/customers/browser.py:521
 msgid "An error occurred."
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:476 waeup/ikoba/customers/browser.py:488
+#: waeup/ikoba/customers/browser.py:527 waeup/ikoba/customers/browser.py:539
 msgid "No customer record found."
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:479
+#: waeup/ikoba/customers/browser.py:530
 msgid ""
 "Your password has already been set and used. Please proceed to the login "
@@ -1039,38 +1084,136 @@
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:522
-msgid "Your password request was successful."
-msgstr ""
-
-#: waeup/ikoba/customers/browser.py:537
+#: waeup/ikoba/customers/browser.py:574
+msgid "Create customer account"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:612
+msgid "You have successfully created a customer account for the"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:63
+msgid ""
+"You can not edit your document after final submission. You really want to "
+"submit?"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:633
+msgid "Your request was successful."
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:649
 msgid "Upload files"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:558
+#: waeup/ikoba/customers/browser.py:672
 msgid "Edit base data"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:57 waeup/ikoba/customers/export.py:115
-#: waeup/ikoba/customers/viewlets.py:48
+#: waeup/ikoba/customers/browser.py:688 waeup/ikoba/customers/viewlets.py:286
+msgid "Change password"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:702
+msgid "Password changed."
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:728 waeup/ikoba/customers/viewlets.py:164
+msgid "Documents"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/customers/browser.py:768
+msgid "${a}: Documents"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:771
+msgid "Remove selected documents"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:777
+msgid "No document selected."
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:806 waeup/ikoba/customers/viewlets.py:307
+msgid "Add document"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:814 waeup/ikoba/documents/workflow.py:40
+msgid "Create document"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/customers/browser.py:824 waeup/ikoba/customers/browser.py:1159
+msgid "${a} created."
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/customers/browser.py:848 waeup/ikoba/customers/browser.py:870
+#: waeup/ikoba/customers/browser.py:1191 waeup/ikoba/customers/browser.py:1211
+msgid "${a}"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:87
+msgid "The requested form is locked (read-only)."
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:895
+msgid "Final Submit"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:899 waeup/ikoba/customers/browser.py:1245
+msgid "Form has been submitted."
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:911
+msgid "Trigger document transition"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:957
+msgid "Documents of"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:96 waeup/ikoba/customers/export.py:135
+#: waeup/ikoba/customers/viewlets.py:52
 msgid "Customers"
 msgstr ""
 
-#: waeup/ikoba/customers/browser.py:573 waeup/ikoba/customers/viewlets.py:243
-msgid "Change password"
-msgstr ""
-
-#: waeup/ikoba/customers/browser.py:587
-msgid "Password changed."
-msgstr ""
-
-#: waeup/ikoba/customers/browser.py:82
-msgid "Find customers"
-msgstr ""
-
-#: waeup/ikoba/customers/browser.py:83 waeup/ikoba/customers/browser.py:124
-msgid "Find customer(s)"
-msgstr ""
-
-#: waeup/ikoba/customers/browser_templates/containermanagepage.pt:59
+#: waeup/ikoba/customers/browser.py:965 waeup/ikoba/customers/export.py:169
+msgid "Customer Documents"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:971 waeup/ikoba/customers/browser.py:1317
+#: waeup/ikoba/browser/templates/userscontainerpage.pt:4
+#: waeup/ikoba/customers/browser_templates/contractsmanagepage.pt:8
+#: waeup/ikoba/customers/browser_templates/documentsmanagepage.pt:8
+msgid "Id"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:972 waeup/ikoba/customers/browser.py:1318
+#: waeup/ikoba/customers/browser_templates/contractsmanagepage.pt:9
+#: waeup/ikoba/customers/browser_templates/documentsmanagepage.pt:9
+#: waeup/ikoba/products/browser_templates/containerpage.pt:9
+#: waeup/ikoba/products/browser_templates/containermanagepage.pt:38
+msgid "Title"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:973 waeup/ikoba/customers/browser.py:1319
+#: waeup/ikoba/customers/browser_templates/contractsmanagepage.pt:10
+#: waeup/ikoba/customers/browser_templates/documentsmanagepage.pt:10
+msgid "Type"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:974 waeup/ikoba/customers/browser.py:1320
+#: waeup/ikoba/customers/browser_templates/containerpage.pt:33
+msgid "State"
+msgstr ""
+
+#: waeup/ikoba/customers/browser.py:975 waeup/ikoba/customers/browser.py:1321
+#: waeup/ikoba/customers/browser_templates/contractsmanagepage.pt:12
+#: waeup/ikoba/customers/browser_templates/documentsmanagepage.pt:12
+msgid "Last Transition"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/containermanagepage.pt:56
 msgid "Select all"
 msgstr ""
@@ -1091,19 +1234,10 @@
 msgstr ""
 
-#: waeup/ikoba/customers/browser_templates/containerpage.pt:15
-#: waeup/ikoba/customers/browser_templates/containermanagepage.pt:15
-msgid "who requested transcript (search term omitted)"
-msgstr ""
-
-#: waeup/ikoba/customers/browser_templates/containerpage.pt:26
+#: waeup/ikoba/customers/browser_templates/containerpage.pt:23
 msgid "Search Results"
 msgstr ""
 
-#: waeup/ikoba/customers/browser_templates/containerpage.pt:35
+#: waeup/ikoba/customers/browser_templates/containerpage.pt:32
 msgid "Reg. Number"
-msgstr ""
-
-#: waeup/ikoba/customers/browser_templates/containerpage.pt:36
-msgid "State"
 msgstr ""
 
@@ -1113,4 +1247,35 @@
 msgstr ""
 
+#: waeup/ikoba/customers/browser_templates/contractaddform.pt:7
+msgid "Contract Type"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/contractpage.pt:15
+msgid "Contract Type:"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/createaccount.pt:18
+msgid ""
+"A customer record will be created and your login credentials will be sent to "
+"the email address given above. To be able to proceed you must provide a "
+"valid email address!"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/documentaddform.pt:7
+msgid "Document Type"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/documenteditpage.pt:12
+msgid "Files"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/documenteditpage.pt:7
+msgid "Metadata"
+msgstr ""
+
+#: waeup/ikoba/customers/browser_templates/documentpage.pt:16
+msgid "Document Type:"
+msgstr ""
+
 #. Default: "Ikoba is creating a temporary customer password which will replace the original password chosen by the customer. The password will be valid for ${minutes} minutes. The customer can't login during this time period. After expiration the customer can login with the original password again."
 #: waeup/ikoba/customers/browser_templates/loginasstep1.pt:6
@@ -1125,5 +1290,5 @@
 #: waeup/ikoba/customers/browser_templates/requestpw.pt:18
 msgid ""
-"Your student record will be looked up and your login credentials will be "
+"Your customer record will be looked up and your login credentials will be "
 "sent to the email address given above. To be able to proceed you must "
 "provide a valid email address!"
@@ -1131,4 +1296,5 @@
 
 #: waeup/ikoba/customers/browser_templates/requestpw.pt:8
+#: waeup/ikoba/customers/browser_templates/createaccount.pt:8
 msgid "Please solve the captcha<br />to prevent misuse of this service:"
 msgstr ""
@@ -1170,5 +1336,18 @@
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:113
+#: waeup/ikoba/customers/contracts.py:145
+msgid "Attached documents must be verified first."
+msgstr ""
+
+#: waeup/ikoba/customers/documents.py:147
+msgid "No file uploaded."
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/customers/fileviewlets.py:106
+msgid "File ${a} uploaded."
+msgstr ""
+
+#: waeup/ikoba/customers/fileviewlets.py:123
 #: waeup/ikoba/browser/templates/datacenterfinishedpage.pt:9
 #: waeup/ikoba/browser/templates/datacenterpage.pt:17
@@ -1177,356 +1356,531 @@
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:114
+#: waeup/ikoba/customers/fileviewlets.py:124
 msgid "Scan"
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:137
+#: waeup/ikoba/customers/fileviewlets.py:145
 msgid "Upload selected file"
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:138
+#: waeup/ikoba/customers/fileviewlets.py:146
 msgid "Delete"
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:175
+#: waeup/ikoba/customers/fileviewlets.py:183
 msgid "No local file selected."
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:188
+#: waeup/ikoba/customers/fileviewlets.py:229
 #: waeup/ikoba/customers/browser_templates/basemanagepage.pt:12
 msgid "Passport Picture"
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:198
+#: waeup/ikoba/customers/fileviewlets.py:241
 msgid "Passport Picture (jpg only)"
 msgstr ""
 
-#. Default: ""
-#: waeup/ikoba/customers/files.py:48
+#: waeup/ikoba/customers/fileviewlets.py:271
+#: waeup/ikoba/customers/fileviewlets.py:272
+#: waeup/ikoba/customers/fileviewlets.py:292
+#: waeup/ikoba/customers/fileviewlets.py:293
+msgid "Sample Scan"
+msgstr ""
+
+#: waeup/ikoba/customers/fileviewlets.py:315
+#: waeup/ikoba/customers/fileviewlets.py:316
+msgid "PDF File"
+msgstr ""
+
+#: waeup/ikoba/customers/fileviewlets.py:336
+#: waeup/ikoba/customers/fileviewlets.py:337
+msgid "PDF Scan"
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/customers/fileviewlets.py:58
 msgid "${a} deleted."
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:62
+#: waeup/ikoba/customers/fileviewlets.py:73
 msgid "Uploaded file is too big."
 msgstr ""
 
-#: waeup/ikoba/customers/files.py:74
+#: waeup/ikoba/customers/fileviewlets.py:85
 msgid "Could not determine file type."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/files.py:79
+#: waeup/ikoba/customers/fileviewlets.py:90
 msgid "${a} file extension expected."
 msgstr ""
 
 #. Default: ""
-#: waeup/ikoba/customers/files.py:85
+#: waeup/ikoba/customers/fileviewlets.py:96
 msgid "Only the following extensions are allowed: ${a}"
 msgstr ""
 
-#. Default: ""
-#: waeup/ikoba/customers/files.py:95
-msgid "File ${a} uploaded."
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:104
+#: waeup/ikoba/customers/interfaces.py:103
+#: waeup/ikoba/customers/interfaces.py:213
+msgid "Middle Name"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:108
+#: waeup/ikoba/customers/interfaces.py:218
+msgid "Last Name (Surname)"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:113
+msgid "Sex"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:119
+#: waeup/ikoba/customers/interfaces.py:156
+#: waeup/ikoba/customers/interfaces.py:185
+msgid "Registration Number"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:126
+msgid "Email"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:131 waeup/ikoba/interfaces.py:441
+#: waeup/ikoba/interfaces.py:519
+msgid "Phone"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:284
+msgid "Contract Title"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:289
+#: waeup/ikoba/documents/interfaces.py:63
+msgid "Last Transition Date"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:295
+#: waeup/ikoba/customers/interfaces.py:307
+#: waeup/ikoba/customers/interfaces.py:331
+msgid "Product"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:319
+#: waeup/ikoba/customers/interfaces.py:337
+msgid "Document"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:79
 msgid "Account suspended"
 msgstr ""
 
-#: waeup/ikoba/customers/interfaces.py:110
+#: waeup/ikoba/customers/interfaces.py:85
 msgid "Reasons for Deactivation"
 msgstr ""
 
-#: waeup/ikoba/customers/interfaces.py:112
+#: waeup/ikoba/customers/interfaces.py:87
 msgid ""
 "This message will be shown if and only if deactivated customers try to login."
 msgstr ""
 
-#: waeup/ikoba/customers/interfaces.py:118
-#: waeup/ikoba/customers/browser_templates/containerpage.pt:34
-msgid "Student Id"
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:123
-#: waeup/ikoba/customers/interfaces.py:212
+#: waeup/ikoba/customers/interfaces.py:93
+#: waeup/ikoba/customers/browser_templates/containerpage.pt:31
+msgid "Customer Id"
+msgstr ""
+
+#: waeup/ikoba/customers/interfaces.py:98
+#: waeup/ikoba/customers/interfaces.py:190
+#: waeup/ikoba/customers/interfaces.py:208
 msgid "First Name"
 msgstr ""
 
-#: waeup/ikoba/customers/interfaces.py:128
-msgid "Middle Name"
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:133
-msgid "Last Name (Surname)"
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:138
-msgid "Sex"
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:144
-#: waeup/ikoba/customers/interfaces.py:180
-#: waeup/ikoba/customers/interfaces.py:207
-msgid "Registration Number"
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:151
-msgid "Email"
-msgstr ""
-
-#: waeup/ikoba/customers/interfaces.py:156 waeup/ikoba/interfaces.py:449
-#: waeup/ikoba/interfaces.py:527
-msgid "Phone"
-msgstr ""
-
-#: waeup/ikoba/customers/viewlets.py:105 waeup/ikoba/customers/viewlets.py:145
-msgid "History"
-msgstr ""
-
-#: waeup/ikoba/customers/viewlets.py:124 waeup/ikoba/customers/viewlets.py:140
+#: waeup/ikoba/customers/utils.py:160
+msgid "Name:"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:179
+msgid "Date of Birth:"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:239
+#: waeup/ikoba/customers/browser_templates/documentpage.pt:25
+msgid "Connected Files"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:302 waeup/ikoba/customers/utils.py:310
+#: waeup/ikoba/documents/utils.py:39
+msgid "created"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:303
+msgid "started"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:304
+msgid "requested"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:305 waeup/ikoba/customers/utils.py:312
+msgid "approved"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:311
+msgid "submitted for approval"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:313 waeup/ikoba/documents/utils.py:42
+msgid "rejected"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:314 waeup/ikoba/documents/utils.py:43
+msgid "expired"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:364 waeup/ikoba/customers/viewlets.py:135
+#: waeup/ikoba/customers/viewlets.py:152
 #: waeup/ikoba/customers/browser_templates/basemanagepage.pt:8
 msgid "Base Data"
 msgstr ""
 
-#: waeup/ikoba/customers/viewlets.py:185
-msgid "Trigger transition"
-msgstr ""
-
-#: waeup/ikoba/customers/viewlets.py:194
+#. Default: ""
+#: waeup/ikoba/customers/utils.py:386
+msgid "${a} Workflow History"
+msgstr ""
+
+#: waeup/ikoba/customers/utils.py:392
+msgid "Customer Workflow History"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:112
+msgid "My Contracts"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:113
+msgid "My Documents"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:114 waeup/ikoba/customers/viewlets.py:170
+msgid "History"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:215 waeup/ikoba/customers/viewlets.py:357
+#: waeup/ikoba/customers/viewlets.py:431
+msgid "Transition"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:225
 msgid "Login as customer"
 msgstr ""
 
-#: waeup/ikoba/customers/viewlets.py:202
+#: waeup/ikoba/customers/viewlets.py:234
 msgid "Deactivate account"
 msgstr ""
 
-#: waeup/ikoba/customers/viewlets.py:214 waeup/ikoba/customers/viewlets.py:234
+#: waeup/ikoba/customers/viewlets.py:246 waeup/ikoba/customers/viewlets.py:267
 msgid "'A history message will be added. Are you sure?'"
 msgstr ""
 
-#: waeup/ikoba/customers/viewlets.py:222
+#: waeup/ikoba/customers/viewlets.py:255
 msgid "Activate account"
 msgstr ""
 
-#: waeup/ikoba/customers/viewlets.py:89
+#: waeup/ikoba/customers/viewlets.py:296
+msgid "Change portrait"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:317
+msgid "Download documents overview"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:366 waeup/ikoba/customers/viewlets.py:440
+#: waeup/ikoba/products/viewlets.py:69
+msgid "View"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:377
+msgid "Download document slip"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:397
+msgid "Download contracts overview"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:451
+msgid "Download contract slip"
+msgstr ""
+
+#: waeup/ikoba/customers/viewlets.py:96
 msgid "My Data"
 msgstr ""
 
-#: waeup/ikoba/customers/vocabularies.py:54
+#: waeup/ikoba/customers/vocabularies.py:55
 msgid "male"
 msgstr ""
 
-#: waeup/ikoba/customers/vocabularies.py:56
+#: waeup/ikoba/customers/vocabularies.py:57
 msgid "female"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:39
+#: waeup/ikoba/customers/workflow.py:153
+msgid "Create contract record"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:156
+msgid "Contract record created"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:161
+msgid "Submit for approval"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:162
+msgid "Submitted for approval"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:168
+msgid "Approve"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:169
+msgid "Approved"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:175 waeup/ikoba/documents/workflow.py:62
+msgid "Reject"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:176 waeup/ikoba/documents/workflow.py:63
+msgid "REJECTED"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:203 waeup/ikoba/customers/workflow.py:204
+#: waeup/ikoba/documents/workflow.py:90 waeup/ikoba/documents/workflow.py:91
+msgid "Set to expired"
+msgstr ""
+
+#: waeup/ikoba/customers/workflow.py:46
 msgid "Create customer"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:47
+#: waeup/ikoba/customers/workflow.py:54
 msgid "Start registration"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:50
+#: waeup/ikoba/customers/workflow.py:57
 msgid "Customer registration started"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:55
+#: waeup/ikoba/customers/workflow.py:62
 msgid "Request registration"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:56
+#: waeup/ikoba/customers/workflow.py:63
 msgid "Customer registration requested"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:62
+#: waeup/ikoba/customers/workflow.py:69
 msgid "Approve customer"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:63
+#: waeup/ikoba/customers/workflow.py:70
 msgid "Customer registration approved"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:69
+#: waeup/ikoba/customers/workflow.py:76
 msgid "Reject customer"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:70
+#: waeup/ikoba/customers/workflow.py:77
 msgid "Customer registration rejected"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:76 waeup/ikoba/customers/workflow.py:90
+#: waeup/ikoba/customers/workflow.py:83 waeup/ikoba/customers/workflow.py:97
 msgid "Reset customer"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:77
+#: waeup/ikoba/customers/workflow.py:84
 msgid "Reset to initial customer state"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:83
+#: waeup/ikoba/customers/workflow.py:90
 msgid "Reset to requested"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:84
+#: waeup/ikoba/customers/workflow.py:91
 msgid "Reset to 'requested'"
 msgstr ""
 
-#: waeup/ikoba/customers/workflow.py:91
+#: waeup/ikoba/customers/workflow.py:98 waeup/ikoba/customers/workflow.py:182
+#: waeup/ikoba/customers/workflow.py:183 waeup/ikoba/customers/workflow.py:189
+#: waeup/ikoba/customers/workflow.py:190 waeup/ikoba/customers/workflow.py:196
+#: waeup/ikoba/customers/workflow.py:197 waeup/ikoba/customers/workflow.py:210
+#: waeup/ikoba/customers/workflow.py:211 waeup/ikoba/documents/workflow.py:69
+#: waeup/ikoba/documents/workflow.py:70 waeup/ikoba/documents/workflow.py:76
+#: waeup/ikoba/documents/workflow.py:77 waeup/ikoba/documents/workflow.py:83
+#: waeup/ikoba/documents/workflow.py:84 waeup/ikoba/documents/workflow.py:97
+#: waeup/ikoba/documents/workflow.py:98
 msgid "Reset to initial state"
 msgstr ""
 
+#: waeup/ikoba/documents/interfaces.py:58
+msgid "Document Title"
+msgstr ""
+
+#: waeup/ikoba/documents/utils.py:40
+msgid "submitted for verification"
+msgstr ""
+
+#: waeup/ikoba/documents/utils.py:41
+msgid "verified"
+msgstr ""
+
+#: waeup/ikoba/documents/workflow.py:43
+msgid "Document created"
+msgstr ""
+
+#: waeup/ikoba/documents/workflow.py:48
+msgid "Submit for verification"
+msgstr ""
+
+#: waeup/ikoba/documents/workflow.py:49
+msgid "Submitted for verification"
+msgstr ""
+
+#: waeup/ikoba/documents/workflow.py:55
+msgid "Verify"
+msgstr ""
+
+#: waeup/ikoba/documents/workflow.py:56
+msgid "Verified"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:213
+msgid "Subject"
+msgstr ""
+
 #: waeup/ikoba/interfaces.py:217
-msgid "Subject"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:221
 msgid "Grade"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:377
+#: waeup/ikoba/interfaces.py:369
 msgid "Processor name"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:403
+#: waeup/ikoba/interfaces.py:395
 msgid "Email Address:"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:410
+#: waeup/ikoba/interfaces.py:402
 msgid "Email to:"
 msgstr ""
 
+#: waeup/ikoba/interfaces.py:409
+msgid "Subject:"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:413
+msgid "Full Name:"
+msgstr ""
+
 #: waeup/ikoba/interfaces.py:417
-msgid "Subject:"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:421
-msgid "Full Name:"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:425
 msgid "Text:"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:454 waeup/ikoba/interfaces.py:510
+#: waeup/ikoba/interfaces.py:446 waeup/ikoba/interfaces.py:502
 msgid "Public Name"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:464 waeup/ikoba/interfaces.py:465
+#: waeup/ikoba/interfaces.py:456 waeup/ikoba/interfaces.py:457
 msgid "Number of failed logins"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:471
+#: waeup/ikoba/interfaces.py:463
 msgid "Timestamp"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:472
+#: waeup/ikoba/interfaces.py:464
 msgid "Timestamp of last failed login or `None`"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:501
+#: waeup/ikoba/interfaces.py:493
+#: waeup/ikoba/products/browser_templates/productmanagepage.pt:35
 msgid "User Id"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:506
-#: waeup/ikoba/customers/browser_templates/containerpage.pt:37
+#: waeup/ikoba/interfaces.py:498
+#: waeup/ikoba/customers/browser_templates/containerpage.pt:34
 msgid "Full Name"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:516
+#: waeup/ikoba/interfaces.py:508
 msgid "Description/Notice"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:533
+#: waeup/ikoba/interfaces.py:525
 #: waeup/ikoba/browser/templates/userscontainerpage.pt:6
 msgid "Portal Roles"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:55
+#: waeup/ikoba/interfaces.py:572
+msgid "Name of Company"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:573
+msgid "Sample Company"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:578
+msgid "Abbreviated Title of Company"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:584
+msgid "Content in HTML format"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:596
+msgid "Name of Administrator"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:602
+msgid "Email Address of Administrator"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:609
+msgid "Subject of Email to Administrator"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:610
+msgid "Ikoba Contact"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:615
+msgid "SMTP mailer to use when sending mail"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:622
+msgid "Captcha used for public registration pages"
+msgstr ""
+
+#: waeup/ikoba/interfaces.py:64
 msgid "new"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:56
+#: waeup/ikoba/interfaces.py:65
 msgid "completed"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:57
+#: waeup/ikoba/interfaces.py:66
 msgid "pending"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:58
+#: waeup/ikoba/interfaces.py:67
 msgid "active"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:580
-msgid "Name of Company"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:581
-msgid "Sample Company"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:586
-msgid "Abbreviated Title of Company"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:59
+#: waeup/ikoba/interfaces.py:68
 msgid "assigned"
 msgstr ""
 
-#: waeup/ikoba/interfaces.py:592
-msgid "Content in HTML format"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:60
+#: waeup/ikoba/interfaces.py:69
 msgid "callbacks"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:604
-msgid "Name of Administrator"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:610
-msgid "Email Address of Administrator"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:617
-msgid "Subject of Email to Administrator"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:618
-msgid "Ikoba Contact"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:623
-msgid "SMTP mailer to use when sending mail"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:630
-msgid "Captcha used for public registration pages"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:642
-msgid "Period"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:660
-msgid "Academic Session"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:86
-msgid "created"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:87
-msgid "started"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:88
-msgid "requested"
-msgstr ""
-
-#: waeup/ikoba/interfaces.py:89
-msgid "approved"
 msgstr ""
 
@@ -1559,17 +1913,17 @@
 msgstr ""
 
-#: waeup/ikoba/payments/interfaces.py:106
+#: waeup/ikoba/payments/interfaces.py:100
 msgid "Activation Code"
 msgstr ""
 
-#: waeup/ikoba/payments/interfaces.py:113
+#: waeup/ikoba/payments/interfaces.py:107
 msgid "Response Amount Approved"
 msgstr ""
 
-#: waeup/ikoba/payments/interfaces.py:120
+#: waeup/ikoba/payments/interfaces.py:114
 msgid "Response Code"
 msgstr ""
 
-#: waeup/ikoba/payments/interfaces.py:127
+#: waeup/ikoba/payments/interfaces.py:121
 msgid "Response Description"
 msgstr ""
@@ -1596,20 +1950,16 @@
 
 #: waeup/ikoba/payments/interfaces.py:69
-msgid "Payment Session"
-msgstr ""
-
-#: waeup/ikoba/payments/interfaces.py:75
 msgid "Payment State"
 msgstr ""
 
+#: waeup/ikoba/payments/interfaces.py:76
+msgid "Ticket Creation Date"
+msgstr ""
+
 #: waeup/ikoba/payments/interfaces.py:82
-msgid "Ticket Creation Date"
+msgid "Payment Date"
 msgstr ""
 
 #: waeup/ikoba/payments/interfaces.py:88
-msgid "Payment Date"
-msgstr ""
-
-#: waeup/ikoba/payments/interfaces.py:94
 msgid "Amount Authorized"
 msgstr ""
@@ -1620,4 +1970,80 @@
 msgstr ""
 
+#: waeup/ikoba/products/batching.py:52
+msgid "Product Processor"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:129
+msgid "Create product"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:136
+msgid "The Id chosen already exists."
+msgstr ""
+
+#. Default: ""
+#: waeup/ikoba/products/browser.py:140
+msgid "Product ${a} added."
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:175 waeup/ikoba/products/browser.py:194
+msgid "Remove selected local roles"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:176 waeup/ikoba/products/browser.py:190
+msgid "Add local role"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:179
+msgid "Manage product "
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:58 waeup/ikoba/products/browser.py:78
+#: waeup/ikoba/products/export.py:40 waeup/ikoba/products/viewlets.py:49
+#: waeup/ikoba/products/browser_templates/containermanagepage.pt:11
+#: waeup/ikoba/products/browser_templates/containermanagepage.pt:30
+msgid "Products"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:90
+msgid "Manage product section"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:93 waeup/ikoba/products/browser.py:113
+#: waeup/ikoba/products/browser.py:126
+msgid "Add product"
+msgstr ""
+
+#: waeup/ikoba/products/browser.py:98
+msgid "You are not allowed to remove products."
+msgstr ""
+
+#: waeup/ikoba/products/browser_templates/containerpage.pt:1
+msgid "There are no subobjects registered yet."
+msgstr ""
+
+#: waeup/ikoba/products/browser_templates/productmanagepage.pt:39
+msgid "Local Role"
+msgstr ""
+
+#: waeup/ikoba/products/browser_templates/productmanagepage.pt:6
+#: waeup/ikoba/products/browser_templates/containermanagepage.pt:6
+msgid "Settings"
+msgstr ""
+
+#: waeup/ikoba/products/interfaces.py:46
+#: waeup/ikoba/products/browser_templates/containerpage.pt:8
+#: waeup/ikoba/products/browser_templates/containermanagepage.pt:36
+msgid "Product Id"
+msgstr ""
+
+#: waeup/ikoba/products/interfaces.py:52
+msgid "Product Title"
+msgstr ""
+
+#: waeup/ikoba/products/interfaces.py:58
+msgid "Contract Category"
+msgstr ""
+
 #: waeup/ikoba/reports.py:175
 msgid "Unnamed Report"
@@ -2624,5 +3050,5 @@
 msgstr ""
 
-#: waeup/ikoba/utils/utils.py:210
+#: waeup/ikoba/utils/utils.py:145
 msgid ""
 "Fullname: ${a}\n"
@@ -2634,10 +3060,10 @@
 msgstr ""
 
-#: waeup/ikoba/utils/utils.py:262
+#: waeup/ikoba/utils/utils.py:197
 msgid ""
 "Dear ${a},\n"
 "\n"
 "${b}\n"
-"Application and Registration Portal of\n"
+"Registration and Application Portal of\n"
 "${c}.\n"
 "\n"
