Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/interfaces.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/interfaces.py	(revision 17175)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/interfaces.py	(revision 17176)
@@ -28,4 +28,5 @@
     bed_letters, blocks, SpecialHandlingSource,
     NOT_OCCUPIED)
+from waeup.kofa.students.interfaces import (IStudentsUtils)
 
 # Define a validation method for sort ids
@@ -285,12 +286,13 @@
             return
         catalog = getUtility(ICatalog, name='students_catalog')
+        accommodation_span = getUtility(IStudentsUtils).ACCOMMODATION_SPAN
         accommodation_session = getSite()['hostels'].accommodation_session
         students = catalog.searchResults(current_session=(
-            accommodation_session,accommodation_session))
+            accommodation_session-accommodation_span,accommodation_session))
         student_ids = [student.student_id for student in students]
         if not bed.owner in student_ids:
             raise Invalid(_(
                 "Either student does not exist or student "
-                "is not in accommodation session."))
+                "is not eligible to book accommodation."))
         catalog = getUtility(ICatalog, name='beds_catalog')
         beds = catalog.searchResults(owner=(bed.owner,bed.owner))
Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py	(revision 17175)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/tests.py	(revision 17176)
@@ -452,5 +452,5 @@
         self.assertMatches(
             "...Either student does not exist or student "
-            "is not in accommodation session...",
+            "is not eligible to book accommodation...",
             self.browser.contents)
         self.browser.getControl(name="form.owner").value = self.student_id
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 17175)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 17176)
@@ -2264,12 +2264,14 @@
             p_combi = [p_combi,]
         student = self.context.__parent__
+        students_utils = getUtility(IStudentsUtils)
         # The hostel_application payment category is temporarily used
         # by Uniben.
-        if p_category in ('bed_allocation', 'hostel_application') and student[
-            'studycourse'].current_session != grok.getSite()[
-            'hostels'].accommodation_session:
+        if p_category in (
+                'bed_allocation', 'hostel_application') and grok.getSite()[
+                    'hostels'].accommodation_session - student[
+                        'studycourse'].current_session > students_utils.ACCOMMODATION_SPAN:
                 self.flash(
-                    _('Your current session does not match ' + \
-                    'accommodation session.'), type="danger")
+                    _('Your current session does not allow ' + \
+                    'to book accommodation.'), type="danger")
                 return
         if 'maintenance' in p_category:
@@ -2279,5 +2281,4 @@
                            type="warning")
                 return
-        students_utils = getUtility(IStudentsUtils)
         error, payment = students_utils.setPaymentDetails(
             p_category, student, None, None, p_combi)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 17175)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 17176)
@@ -1416,5 +1416,5 @@
         self.app['hostels'].accommodation_session = 2011
         self.browser.getControl("Create ticket").click()
-        self.assertMatches('...Your current session does not match...',
+        self.assertMatches('...Your current session does not allow...',
                            self.browser.contents)
         self.app['hostels'].accommodation_session = 2004
@@ -1439,6 +1439,7 @@
         self.student['studycourse'].current_session = 2003
         self.browser.getControl("Book accommodation").click()
-        self.assertMatches('...Your current session does not match...',
-                           self.browser.contents)
+        self.assertMatches(
+            '...Your current session does not allow to book accommodation...',
+            self.browser.contents)
         self.student['studycourse'].current_session = 2004
         # All requirements are met and ticket can be created
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 17175)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/utils.py	(revision 17176)
@@ -654,4 +654,6 @@
         return d
 
+    ACCOMMODATION_SPAN = 0
+
     def checkAccommodationRequirements(self, student, acc_details):
         if acc_details.get('expired', False):
@@ -672,8 +674,8 @@
         if not student.state in acc_details['allowed_states']:
             return _("You are in the wrong registration state.")
-        if student['studycourse'].current_session != acc_details[
-            'booking_session']:
-            return _('Your current session does not '
-                     'match accommodation session.')
+        if  acc_details['booking_session'] - student[
+            'studycourse'].current_session > self.ACCOMMODATION_SPAN:
+            return _('Your current session does not allow ' + \
+                    'to book accommodation.')
         bsession = str(acc_details['booking_session'])
         if bsession in student['accommodation'].keys() \
