Uploaded image for project: 'OpenOLAT'
  1. OpenOLAT
  2. OO-623

Support for externally managed groups and courses (lifecycle)

    XMLWordPrintable

    Details

      Description

      Problem

      When creating groups and courses via the REST API two major problems arise:

      1: Most external system have their own ID to identify the synchronized groups and courses. When creating them in OpenOLAT via REST API, some mapping table has to be generated to link the external system and the OpenOLAT system together.

      2: The lifecycle normally does not stop after creation of the resource. The external system should be able to manage the entire lifecycle and tell the system what elements are remotely managed.

      The goal of this issue is to address both problems.

      Solution

      New fields are added to both the groups and the learning resources to hold an optional external ID (externalId).

      In case of the course an additional optional external reference is added which does not represent the external technical object identifier but rather an identifier with some business meaning (externalRef). For example, "12345" could be an external course identifier from the external systems database used during a sync process while "HS2013-15A" could be the external reference which is useful for humans to identify the course.

      In addition, both groups and learning resources get a new optional field "managedFlagsString" to configure the elements of the resource which are managed. More about this later.

      The new fields externalId, externalRef and managedFlagsString are optional and can only be set via REST API.

      Administration

      The new fields and flags can be enabled/disabled int the REST admin configuration panel. This will enable/disable the interpretation of said managed flags and show/hide the external ID and reference in search fields, table rows and detail pages.

      User interface

      As soon as the managed fields are enabled, the corresponding GUI elements are disabled, even for administrator. E.g. when setting the "editcontent" flag in a managed courses, the course author will not be able to launch the course editor anymore. In a group with the managed flag "tools", the group owners can not ad or remove group tools such as the wiki. Then disabling the membersmanagement in courses it is still possible to manage the associated groups unless the group membersmanagement is also set to be managed. When setting the managed flag "groups" in a course and the managed flag "resources" in groups, the group-course associated can not be modified neither from the course nor from the group administrative environment.

      Managed fields
      Managed resource can be fully managed or partly managed. The configuration is a simple string separated by comas listing the managed flags.

      Courses:

       all,
         editcontent(all),
         details(all),//details tab
           title(details,all),
           description(details,all),  
         settings(all),//max num of participants...
           access(settings,all),
           chat(settings,all),
           layout(settings,all),
           resourcefolder(settings,all),
           efficencystatement(settings,all),
           calendar(settings,all),
           glossary(settings,all), 
         bookings(all),// change booking rules
         membersmanagement(all),
         groups(all),
         close(all),
         copy(all),
         delete(all);;
      

      Groups:

      all,
        details(all),//details tab
          title(details,all),
          description(details,all),
          settings(details,all),//max num of participants...
        tools(all),//tools tab
        members(all),//members tab
          display(members,all),// members display options
          membersmanagement(members,all),
        resources(all),//add/remove courses
        bookings(all),// change booking rules
        delete(all);
      

      Example configuration:

      // managed externally, blocked in OpenOLAT GUI: title,description,settings,tools,display
      // managed in OpenOLAT GUI: membersmanagement,resources,bookings,delete
      managedFlagsString : details,tools,display
      

      API
      The REST API allows querying the new attributes:

      // Suche Gruppe mit externe Identifier
      GET /groups?externalId=xxx&managed=true
      
      // Suche nach Kurse / Repository entries
      GET /repo/entries?managed=true&externalId=xyz&externalRef=abc&resourceType=CourseModule
      
      // Suche nach Benutzer
      GET /users?login="test1"
      
      // Gruppen wo der Benutzer Mitglieder ist (nicht in waiting list, nicht reserviert)
      // Achtung: GET /users/{identityKey}/groups/infos ist nicht empfohlen. 
      // Die Methode sucht mehr Informationen und die Performance sind schlechter.
      GET /users/{identityKey}/groups 
      

        Attachments

          Activity

            People

            • Assignee:
              srosse Stéphane Rossé
              Reporter:
              gnaegi Florian Gnägi
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 0 minutes
                0m
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 3 days, 4 hours, 30 minutes
                3d 4h 30m