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.
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.
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.
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 resource can be fully managed or partly managed. The configuration is a simple string separated by comas listing the managed flags.
The REST API allows querying the new attributes: