Integration with your learning management system is accomplished through the use of the Learning Tools Interoperability (LTI) standard. This allows external systems like Concourse to easily plug into your LMS.
At its core, LTI provides three important capabilities when joined to Concourse. The first is single sign-on from the LMS to Concourse upon tool launch. The second is information about the course, so we know to precisely which syllabus to direct the user to. The third is registration information, which determines whether the user is a student, instructor, or guest, which correlates to permissions. With all three of these pieces in place, the experience of moving between the LMS and Concourse is seamless.
When setting up an LTI connection, it is helpful to understand some more of the terminology:
Now that you understand the players and terminology, setting up LTI integration for Concourse is a simple process.
The first is to configure Concourse as your provider. To do this visit Admin > System > Integration. This will only be available to Concourse system administrators.
From there you can add any number of LTI consumers and select configuration options for each. This can be very helpful if you manage multiple learning systems or want to also provide access through a portal solution. Simply enter (and remember) a key and secret for each consumer tool, select whether and which user and course identifier you want to consider, and if you want users and/or courses to be automatically created or through feed processing. You also have the option to select which navigation tools are hidden when launching Concourse from your LMS. Selecting Show > Main Navigation will allow users to see the navigation bar at the top of the page. Selecting Show > Secondary Navigation will allow users to see the syllabus menu bar, and selecting Show > Footer will allow users to see the footer containing time zone information, time, and support links.
The second half of configuration is on the side of the learning system. The setup will be different for each LMS, but the premise remains the same. Normally referred to as an external tool, you will need to enter the launch URL (https://yourdomain.campusconcourse.com/) and the shared key and secret you entered in Concourse.
Once you've done this, the Concourse external tool should be made available for use within your LMS courses.
At this point, you are almost ready to rock. However you first need to make sure that the setup has been properly configured. This will also yield insight as to what Concourse LTI parameters need to be set to in order to utlize the available output. To do this, you should add debug=1 as a custom LTI parameter within your consumer. Then when you launch Concourse you should see an array like the following displayed by your LMS. if you do not see this array when using debug mode, please go back and check your configuration parameters or consider using a debugging tool like Apidapter.
Array
(
[context_id] => _1359_1
[context_label] => Testing_Example
[context_title] => Testing_Example
[custom_debug] => 1
...
[lis_course_offering_sourcedid] => blackboard.institution.com:SP2015-TESTING-EXAMPLE
[lis_course_section_sourcedid] => blackboard.institution.com:SP2015-TESTING-EXAMPLE-01
[lis_person_contact_email_primary] => faculty_test@institution.edu
[lis_person_name_family] => Faculty
[lis_person_name_full] => Bbtest Faculty
[lis_person_name_given] => Bbtest
[lis_person_sourcedid] => bbtest_faculty
...
[oauth_signature_method] => HMAC-SHA1
[oauth_signature] => nOK0W0EAytCYntetoUDbn37Tm3E=
[oauth_timestamp] => 1339437085
[oauth_version] => 1.0
[resource_link_id] => _4037622_1
[resource_link_title] => Concourse Syllabus
[roles] => urn:lti:role:ims/lis/Instructor
...
[user_id] => _140370_1
)
The simplest and fastest way to integrate Concourse into your LMS is to use the auto create options for both users and courses and then rely on Apidapter to map the values for the [context_id] and [user_id] parameters to the LTI standard [lis_person_sourcedid] and [lis_course_offering_sourcedid] parameters respectively. This option should only be used if you are never planning on using feed processing to populate users and courses in your system since these context and user IDs are opaque and only used internally by the LMS database.
The optimal solution is to rely on a combination of Learning Information Services (LIS) and role parameters to provide the necessary user and course information. In this case you are generally looking for parameters that can also be generated by and coordinated with your student information system (SIS) if and when feeds are implemented.
In other words, you need to make sure that the external user and course IDs that would be contained in your feeds can be matched to one of the available parameters above. For example, your array may show [lis_person_sourcedid] as ksmith3. If this is the unique user identifier for your campus, you can pass this LTI option to Concourse and put said external user IDs in your feed.
Identifying courses can be done in a similar manner with the [lis_course_offering_sourcedid] or [lis_course_section_sourcedid] parameters. In the first case this will match a Concourse's external course ID whereas the second will match a external section IDs.
[roles] relates to the given role of the user within the specific LMS course, such as Learner or Instructor. Users will be automatically registered for their course in the "highest" matching group upon each launch as described by Role Mapping.
To troubleshoot LTI errors and find appropriate resolutions, we suggest referring to our Creating Courses and Users Automatically via LTI article because it includes LTI errors guides you can download and follow. As that article title suggests, it is particularly helpful when using auto user and/or course creation but can also prove helpful in other LTI situations.
A few last points should be kept in mind when integrating using LTI.
1) In order for an LTI launch to succeed, the user must be set to use external authentication. This is done by setting INTERNAL_USER to 0 manually or when processing the user feed. In addition, auto-created users will automatically be set internal authentication to false. Do note that the given user will no longer be able to log in to the application directly once they are considered externally authenticated.
2) In many cases it will be advantageous to utilize a middleware tool like Apidapter to support LMS (and other) integration. Even if you are able to map the parameters and equate the values natively it is still beneficial to have a tool for logging transactions, debugging, and sharing integration responsibility. In the case Apidapter is used the only difference is that you would first point your LMS at an adapter and then point the adapter back to Concourse. This also implies the use of two pairs of keys and secrets.
3) There is much more to learn about LTI, so to continue with the technical details capabilities of Concourse and LTI in general, continue exploring other LTI and integration articles within this support center.
We realize that integration is one of the most challenging topics to Concourse setup but hope that this article arms you with all the information you need to integrate Concourse quickly and effectively. As always, feel free to write us if you have any questions about setting Concourse up with your LMS.