Overview - The LMS Course Resolver
The LMS course section synchronization process serves to retrieve course section ids from the LMS, find their corresponding SIS course sections and associate the LMS id with the SIS course section in SS&E. These LMS ids are then used to retrieve the enrollment data (current grade, login date, submission dates etc).
In order for the LMS integration to work, each integrated course section in SS&E needs to be linked via the "LMS ID" field to a single LMS course section that contains the gradebook for all of the SS&E enrollments for that course section.
LMS/SIS Course Section Matching
The following process and diagram demonstrates how the linkage between a LMS course and the corresponding SIS course is achieved.
The batch job lmsCourseSectionSynchJob executes the following process to achieve this by running the following steps:
- Call the LMS service for all LMS course sections
- Moodle - Built in core_course_get_courses
- Blackboard API - Built in /learn/api/public/version/courses
- Blackboard Building Block- Building block provided api/1/courseSection/havingEnrollments
- Canvas - Built in /accounts/accountId/courses?with_enrollments=true
- For each LMS section returned, pass the LMS course data to the resolver
- In the resolver
- Identify all of the matching course sections
- Identify if the LMS section is multi-section (i.e. merged, metalinked etc)
- Return the list of SIS course sections that matched the LMS section
- Note: There are two mechanisms for defining the resolver. Legacy resolvers are implemented behind the scenes at implementation time. Modern resolvers can be viewed via SS&E Admin as a Groovy snippet.
- For each returned SIS course section, set the LMS id on that section
- If the section is determined to be a multi-section, then the part-of-multi-id flag is set on the SS&E course section. This prevents the child LMS sections from overwriting the merged id.
- For each returned SIS course section determine if the gradebook is available and if it has a configured total column.
LMS Resolver Troubleshooting
The following items explain how to resolve the most common problems:
LMS Data is Missing or Not Syncing Correctly on a Course Section(s)
-
- Ensure that the LMS id has been set on the course section in SS&E and is set to the correct Id.
- Navigate to the Course Sections Administration page: https://yourinstitution.avisoapp.com/aviso/adminCourseSection/list
- Search for the course section that is missing the LMS Data.
- In the Course Section detail view, locate the LMS Id attribute and ensure that it matches the correct LMS Id in your LMS
- In the top navigation bar, click on "Enrollments From LMS" to see what data the LMS is returning for the currently set LMS id.
- If "Enrollments from LMS" does not display on the Course Section detail menu bar, this usually means that the course section is missing an LMS Id.
- If the LMS Id displayed on the course section detail is missing or incorrect, it means that the resolver was unable to match the course section from the SIS with a course LMS Id. To fix this:
- Check the course section in your LMS system and verify that it meets the specification of your resolver (by comparing with a course section that is syncing correctly or by reviewing your implementation documentation to check the LMS Course Resolver specifications).
- If the LMS Course Resolver is unable to match the LMS course with a course section imported from the SIS, and it is not obvious why the LMS course isn't syncing, this will most likely need to escalate to the LMS provider and/or the SS&E Professional Services team for a resolution. For example, if the LMS Course format changes or if there are additional LMS course formats that weren't considered during implementation, the LMS Course Resolver will not know how to parse these in order to match the LMS course with a course section imported from the SIS. If the resolution requires changing the LMS Course Resolver, this will need to escalate to the Professional Services team for further assistance so that they can update the Course Resolver with what has changed since the initial implementation.
- If only some courses are not matched up by the Resolver, and this is not a widespread issue, another option is to update the course LMS Id directly on the Course Section Detail page in SS&E Course Section Administration. Click here for instructions on how to manually override and set the Course Section LMS Id within SS&E. Setting the LMS ID in SS&E will bypass the LMS Course Resolver and allow SS&E to sync enrollment data with the LMS system using the manually entered LMS ID.
- Ensure that the LMS id has been set on the course section in SS&E and is set to the correct Id.
There Are No LMS Ids Populating In SS&E
-
- Ensure that the API call is returning course sections from the LMS.
- Locate the lmsCourseSectionSynchJob to identify if SS&E is getting course sections from the LMS. https://yourinstitution.avisoapp.com/aviso/springBatchJob/show/lmsCourseSectionSynchJob
- Click through the most recent execution until you reach the "Steps" screen. Click the id link next to the "setupCourseSectionsStep"
- The Reads/Writes column lists the number of course sections that were retrieved from the LMS. If this number is consistently 0, the problem lies with the LMS course section API call. To fix the course section synchronization. please contact your LMS provider to find out why no course sections are being returned from the API.
- Ensure that the API call is returning course sections from the LMS.
Merged/meta-linked LMS sections are not automatically linking in SS&E
-
- In order for merged LMS classes to link appropriately to SIS course sections via the LMS Resolver, two items must be completed during implementation:
- The implemented resolver must support multi-section LMS ids. At implementation time it is determined how the resolver should map LMS sections to SS&E/SIS sections. During implementation, the resolver must be constructed to optionally return multiple SS&E/SIS sections for a single LMS section.
- The identifier (usually the short name for Moodle and Id for Blackboard/Canvas) must be set in the LMS so that the course code, term, and each section can be identified from it. The LMS resolver must be implemented to respect this format in order to map the LMS Id to the proper SIS course sections in SS&E.
- If this has not been setup during implementation, please reach out to your CSM or through Watermark Academy.
- In order for merged LMS classes to link appropriately to SIS course sections via the LMS Resolver, two items must be completed during implementation:
Assignment submission dates occur after the student's last login date
-
- It is somewhat unintuitive that an assignment can be submitted without a login. Usually this is caused by an instructor manually entering an assignment submission/grade for an external assignment. For example, grading a paper exam and entering it into the LMS will trigger an "assignment submission" even though no actual login occurred from the student.
- It's helpful to think about "last login date" as actual LMS participation, while "last assignment submission date" is coursework participation.
Validating the LMS Course Resolver
It is often helpful to validate the resolver to determine if it is identifying the SS&E/SIS sections appropriately from a given LMS section. To help with this, there is tooling available at https://yourinstitution.avisoapp.com/aviso/manualLms/index
To validate whether an LMS section is appropriately resolving to one or more SS&E/SIS sections, use the following process on the manual LMS page:
1. Retrieve the course sections from the LMS to identify the format in which they come back. On the manual LMS page, click the "Course Sections" button. Note: This may take some time to return. For legacy Blackboard integrations (building block) or very large LMS set ups, it may not return in a reasonable amount of time. In this case, see the alternate option below.
2. Find the course section that you would like to validate in the resulting JSON
3. In the "Resolve LMS Section" pane, click the Configure Course and Configure Course Section buttons to expand them. Fill in the values based on the selected course's JSON from step (2)
4. Click the "Resolve Sample Course" button.
5. If the LMS section successfully resolves to one or more SS&E/SIS sections, they will appear on the screen. If no courses appear in the output (empty list), then no sections were successfully resolved.
Alternative:
The retrieval of course sections is intended to be done in a background process because it can take a long time to run. If this occurs, your web session may time out before the course sections can be returned from the LMS. In this case, you'll need to manually set the sample course information. The following table can be used to determine the values that are retrieved from the LMS.
Course Section Field |
id | courseSectionId | code | hasConfiguredTotalColumn |
Moodle |
id | idnumber | shortname | true (default) |
Blackboard | id | course.courseId | N/A | (calculated) |
Canvas | id | sis_section_id | course_code | true (default) |
D2L | Identifier | Code | Code |
Course field | id | courseId | name | description |
Moodle | id | idnumber | fullname | N/A |
Blackboard | N/A | courseId | name | description |
Canvas | id | sis_course_id | N/A | N/A |
D2L | Identifier | Code | Name |