Index: main/waeup.kofa/trunk/docs/source/userdocs/applicants/interfaces.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/applicants/interfaces.rst	(revision 13169)
+++ main/waeup.kofa/trunk/docs/source/userdocs/applicants/interfaces.rst	(revision 13170)
@@ -36,5 +36,5 @@
 
 The applicants root contains the various `ApplicantsContainer`
-objects.
+objects and is also a configuration object.
 
 .. literalinclude:: ../../../../src/waeup/kofa/applicants/interfaces.py
Index: main/waeup.kofa/trunk/docs/source/userdocs/hostels.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/hostels.rst	(revision 13169)
+++ main/waeup.kofa/trunk/docs/source/userdocs/hostels.rst	(revision 13170)
@@ -24,5 +24,5 @@
 -------------------
 
-The unique hostels container serves also as a configuration object. It defines for which academic session booking is enabled. The student's `current_session` must match `accommodation_session`. It also defines the booking period and the registration workflow states for which booking is allowed, see :ref:`bed_tickets`. The only property attribute is `expired` which returns True if the current datetime is within the booking period.
+The unique hostels container serves also as a configuration object. It defines for which academic session booking is enabled. The student's `current_session` must match the `accommodation_session`. It also defines the booking period and the registration workflow states for which booking is allowed, see :ref:`bed_tickets`. The only property attribute is `expired` which returns True if the current datetime is within the booking period.
 
 .. literalinclude:: ../../../src/waeup/kofa/hostels/interfaces.py
@@ -57,5 +57,32 @@
    :pyobject: IBed
 
-The `bed_id` contains the 'coordinates' of the bed. It tells us precisely in which hostel, in which block, on which floor and in which room the bed can be found. The bed id is composed as follows: ``[hostel id]_[block letter]_[room number]_[bed letter]``. The room number contains the floor level: :code:`room_nr = floor*100 + room`. Example: ``hall-1_A_101_C`` means, the bed is located in Hostel 1, block A, 1st floor, room 101 (or 1) and labelled with 'C'.
+The `bed_id` contains the 'coordinates' of the bed. It tells us precisely in which hostel, in which block, on which floor and in which room the bed can be found. The bed id is composed as follows: ``[hostel id]_[block letter]_[room number]_[bed letter]``. The room number contains the floor level: :code:`room_nr = floor*100 + room`. Example: ``hall-1_A_101_C`` means that the bed is located in Hostel 1, block A, 1st floor, room 101 (or 1) and labelled with 'C'.
 
-The `bed_type` attribute is similarly being constructed. It describes which kind of student can be allocated: ``[special handling code]_[sex]_[stage]``. Example: ``regular_female_re`` means, this bed can be booked by regular female returning students. Other stages are: ``fr`` (fresh), ``pr`` (pre-study), ``fi`` (final-year) and ``all`` (all students).
+The `bed_type` attribute is similarly being constructed. It describes which kind of student can be allocated: ``[special handling code]_[sex]_[stage]``. Example: ``regular_female_re`` means that this bed can be booked by regular female returning students. Other stages are: ``fr`` (fresh), ``pr`` (pre-study), ``fi`` (final-year) and ``all`` (all students).
+
+Beds of each hostel are consecutively numbered (`bed_number`).
+
+Except for `owner`, all attributes of bed objects are being determined by the system, no matter if they are property or schema field attrributes. They can neither be edited nor imported (there is no batch processor for beds). The `owner` attribute contains the student id, if the bed is occupied. This attribute is either set by Kofa when the student creates a bed ticket (see :ref:`bed_tickets`), or can be set via the `BedManageFormPage`, see below. The `allowed_owners` schema invariant ensures (1) that the selected user exists, (2) that the student's current session corresponds with the accommodation session and (3) that the student doesn't reside in another bed.
+
+Browser Pages
+=============
+
+Update Beds
+-----------
+
+Hostels are empty after creation and configuration. They do not contain any bed. The hostel's :py:meth:`Hostel.updateBeds<waeup.kofa.hostels.hostel.Hostel.updateBeds>` method must be called to fill the hostel with beds according to the hostel's configuration parameters. This is done by the same-named action of the `HostelManageFormPage`. `Hostel.updateBeds` iterates over all block letters, floor levels, room numbers and bed letters set on the `HostelManageFormPage`, adds a bed and determines `bed_id`, `bed type` as well as the consecutive `bed_number` which are stored with the bed. This is quite straight.
+
+As the method's name already promises, it does not only add beds to an empty hostel container, but also updates existing beds after re-configuration. It does this by removing all empty beds before the iteration starts. Occupied beds remain in hostel but get the bed number ``9999``. When iterating over the newly configured blocks, floors, rooms and bed letters, Kofa checks first, if the bed belongs to the remaining beds which could not be removed because they are occupied. If so, the bed type is adjusted and the bed number changed. The bed remains occupied by the same student, no matter if the student meets the newly configured conditions or not.
+
+It might happen that a room for male students is converted into a room for female students, but a male student still resides in this room. This has to be checked and the student has to be relocated manually, see :ref:`student_relocation`. Moreover, due to the reconfiguration of the hostel, an occupied bed may no longer exist or offered for booking. This is then indicated by the bed number ``9999``. Also these students must be relocated manually.
+
+
+Switch Reservations
+-------------------
+
+Release Beds
+------------
+
+Manage Bed
+----------
+
Index: main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst	(revision 13169)
+++ main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst	(revision 13170)
@@ -308,6 +308,8 @@
 ===========
 
-Allocation
-----------
+.. _bed_allocation:
+
+Bed Allocation
+--------------
 
 Students can obtain a bed ticket if a series of conditions is met:
@@ -354,6 +356,8 @@
 
 
-Relocation
-----------
+.. _student_relocation:
+
+Student Relocation
+------------------
 
 Officers with `ManageHostels` permission do see a 'Relocate student'
Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/browser.py	(revision 13169)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/browser.py	(revision 13170)
@@ -141,5 +141,6 @@
             for id in child_id:
                 deleted.append(id)
-            self.context.writeLogMessage(self, 'deleted: % s' % ', '.join(deleted))
+            self.context.writeLogMessage(
+                self, 'deleted: % s' % ', '.join(deleted))
         delSubobjects(self, redirect='@@manage', tab='2')
         return
Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/hostel.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/hostel.py	(revision 13169)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/hostel.py	(revision 13170)
@@ -118,5 +118,5 @@
                         if uid in self:
                             bed = self[uid]
-                            # Renumber remaining beds
+                            # Renumber remaining bed
                             bed.bed_number = len(self) + 1 - remaining
                             remaining -= 1
@@ -157,5 +157,5 @@
 
     # The following property attributes are only needed
-    # for the exporter to ease evaluation with  Excel.
+    # for the exporter to ease evaluation with Excel.
 
     @property
Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/interfaces.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/interfaces.py	(revision 13169)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/interfaces.py	(revision 13170)
@@ -215,5 +215,12 @@
     """
 
-    coordinates = Attribute('The coordinates of the bed from bed_id')
+    coordinates = Attribute('Coordinates tuple derived from bed_id')
+    hall = Attribute('Hall id, for exporter only')
+    block = Attribute('Block letter, for exporter only')
+    room = Attribute('Room number, for exporter only')
+    bed = Attribute('Bed letter, for exporter only')
+    special_handling = Attribute('Special handling code, for exporter only')
+    sex = Attribute('Sex, for exporter only')
+    bt = Attribute('Last part of bed type, for exporter only')
 
     def bookBed(student_id):
@@ -267,5 +274,6 @@
             allocated_bed = [bed.bed_id for bed in beds][0]
             raise Invalid(_(
-                "This student resides in bed ${a}.", mapping = {'a':allocated_bed}))
+                "This student resides in bed ${a}.",
+                mapping = {'a':allocated_bed}))
 
     def writeLogMessage(view, message):
Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py	(revision 13169)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py	(revision 13170)
@@ -77,7 +77,10 @@
                 IBed, Bed)
             )
+        bed = Bed()
+        bed.bed_id = u'a_b_c_d'
+        bed.bed_type = u'a_b_c'
         self.assertTrue(
             verifyObject(
-                IBed, Bed())
+                IBed, bed)
             )
         return
