External user data: behavior of SIS synchronization and API
External users are stored and managed outside the library’s scope, usually in another system maintained by the institution (for example, in a Student Information System). These users’ information is loaded into Alma and is synchronized on a regular basis. During SIS synchronization, the user data from the SIS overrides the user data in Alma:
Core user information
These fields are replaced by those in the input file. There are, However, several user fields that behave in a different manner:
This behavior is because these fields are not “pure user data” but a definition of the user’s library status. Hence, manual changes in the Alma UI (if done) take priority.
You can see in the Alma Edit user details page, that these fields are open for edit, while the other fields are not:
Pressing Yes means that most of the fields (e.g. middle name) will be overridden by the next synch, but the special fields (e.g. campus) will not be overridden.
Pressing No means that all fields will be overridden by the next synch, including the special fields.
The behavior of the above fields in case they are empty in the incoming record is different for the API and for SIS synchronization job
- API: if empty in the incoming record – existing value of the above fields will not be updated
- SIS synchronization job: if empty in the incoming record – existing values will be deleted, and if they cannot be empty (preferred_language for example) – they will be set to default values.
User Related segments
- phone numbers
- email addresses
An external user might have an external and internal segments:
The existing external segments are deleted and the segments from the input file are added. Internal segments (that were added manually) are not deleted by the SIS. Note that the existing external segments are deleted even if the input user file contains a list of empty segments.
PUT user API
Core user information
Incoming internal segments (based on the “segment_type” attribute) will replace the existing internal segments.
Incoming external segments (based on the “segment_type” attribute) will replace the existing external segments. If the incoming list is empty, existing segments will be deleted.