A new module is implemented to auto-book courses based on course identifiers such as:
- course ID
- course external-ID
- course external-Reference
Those values are provided by an external system such as LDAP, Shibboleth or REST, however for this implementation only the Shibboleth process will be implemented.
The process looks like this:
- User loggs in via Shibboleth
- A shib-attribute contains a list of OO course identifiers (e.g. the external-reference)
- The list of course identifiers will be added to a new course-auto-booking database table if not already there
- For all entries in the course-auto-booking table where the "done" flag is not set, the course will be looked up
- If a course is found, the user is added as a course participant and the course-auto-booking entry is marked as "done"
- If a course is created or edited and the auto-booking is enabled, oo checks if there are auto-bookings available that should be processed. If course-auto-booking are found for the newly added ext-ref for example, those users are added immediately.
- If a course-auto-booking exists that is not set to "done" and a user is not participant, the user will be added as participant to the course and the course-auto-booking is marked as "done"
- All course-auto-booking that are set to "done" are not checked anymore. A manually removed participant will not be added again by OO.
- Deleting of an course-auto-booking does not remove the user from the course. Once added, the user remains in the course.
- If in the shib-attribute a course reference is removed, the course-auto-booking will not be deleted not will the user the removed from this course. New course references will be added only.
The course-auto-booking can be a separate table and a separate process or it can be implemented using the existing booking method concept. The booking method would have the advantage that the booking is visible in the booking listing in the course and remains even transparent even when the user has been removed by someone. But this is a bonus feature that should be implemented only if feasible and if it fits into the general implementation concept of the booking method.
- Implement the course-auto-booking modle, DAO's and manager to create the entries and add the course memberships. course-auto-booking should be aware of the following:
- Date when the course-auto-booking was added
- Date when the course-auto-booking was execute (set to done)
- Info about who created the course-auto-booking (Shibboleth, Identity)
- Implement a configuration in the Shibboleth module to enable the course mapping
- config for shib attribute name
- config for course-identifier extractor bean (comma separated, multi value etc, implement only what is needed by UHH to start with)
- config for course identifier type (course-ID, course-ext-ID, course-ext-Ref)
- Implement course sync in Shib manager, add to user sync method
- Implement simple listing of course-auto-booking's of a user in the user management
- If time allows: REST API to add course-auto-bookings