Creating Courses and Users Automatically via LTI

Creating Courses and Users Automatically via LTI

Once you have mastered the process of manual course creation, and want to move past self sign-up for users so they can be authenticated centrally, you may be tempted to jump directly to bulk feed processing. However since generating feeds from a student information system (SIS) often requires a significant commitment of IT resources and continued data coordination, auto creation via LTI may be a natural and far simpler next step.

In large part the auto creation of users and courses follows the feed specification but with a major difference, the data doesn't come from the SIS itself. Instead you can think of it as if a single row (i.e. one user ID and related details) of a feed is being processed from the parameters available in each LTI launch.

While auto creation is a fantastic short or even long-term choice for many clients, its simplicity does come with limitations, mainly in terms of control and data quality. For example, as long as a valid launch is presented and the user and/or course does not yet exist, Concourse will always respond with the creation of said user and/or course. In other words segmenting by a specific set of user roles (e.g. instructors only) or area of the institution (e.g. mathematics department) may not be easy. Additionally should there be a piece of data that needs to be updated (e.g. misspelled course title) or is missing from the original launch, it cannot be corrected on subsequent launches the same way a new run of a feed would.

Finally reporting may produce some unexpected results. Say you have 200 sections of courses this spring. If you use auto create and only 150 instructors have launched into Concourse from the LMS, only 150 courses will exist and therefore it may be difficult to determine which courses are "missing." If feeds are used you can instantiate those 200 courses on a specific date and be sure they are all present in a report.

To put this all in perspective, as a rule of thumb we find that most clients creating <20 users and courses each term, manual creation is entirely reasonable. Between 20-100 (or if you are using Concourse Lite) auto creation will likely serve all your needs. Beyond 100 and feeds generally become the best option.


To enable auto creation go to Admin > System > Integration. This will only be available to system administrators. Then check Auto Create and Update the consumer configuration. Now if a launch comes in with a user or course that is not yet present, auto creation will be attempted. If you've yet to create an LTI consumer, visit our LMS Integration article.

Next, since the creation of users and (especially) courses may require a lot of data manipulation and testing it is highly beneficial to consider using an integration middleware tool such as Apidapter to map and adjust parameters, as well as provide a means for logging and reviewing each transaction. Alternatively you can set the custom parameter debug=1 to see an array of all the provided values upon a launch.

At the end of this article you will find the Concourse auto create specification and an LTI errors troubleshooting guide. They detail everything you should need to know to generate valid and debug LTI launches.

Finally, though much of the setup should be straightforward, we call out a few of the important and/or sophisticated parameters below.


Whether you are going to use auto creation as a step towards fully automated feeds or for your implementation indefinitely the paramount pieces of data to "get right" from the beginning are the user and course IDs. This is important to ensure that not only are they unique and can be used later for features like template cloning, but mostly so that if you ever do choose to go from auto creation to fully automated feeds the IDs will still match up.

Now you've probably seen these before, something like smithk3 for a user or ACCT-1010-FA15-2A for a course. Given that an SIS is often used to populate users and courses in the LMS it is highly likely that these values (or ones similar) will be available with LTI launches. So even though you won't request feeds from IT it is a good idea to ask what they use for user and course IDs and then compare these to what you see in a sample LTI launches from a few courses using different user accounts.

Note: Remember, all LTI launch parameter values are case sensitive.

Optional Parameter Behavior

Many user and course parameters are not required. For example if the custom_clone_from_identifier is not included the course will be created as new. If custom_is_structured is not included the course will upload-only if using Concourse Lite and structured otherwise, unless custom_clone_from_identifier is set in which case the course will be cloned and set to either upload or structured similar to the origin course.

Data Availability

Many of the parameters for auto course creation may not be found in a typical LTI launch. Fortunately most are not required but the campus, department, start and end dates, and section labels are. If they cannot be derived from a combination of other available parameters we recommend fixed values, such as OTHER for campus and department, the semester start and end dates, and ALL for section labels. You can always change these in Concourse post creation if needed.

In the case of users lis_person_contact_email_primary is far more common than lis_person_sourcedid so you may be tempted to simply use the same for both. However we advise against this. Some LMSs allow users to change their preferred email, which may mean they can impersonate another user and gain unauthorized access to Concourse.

    • Related Articles

    • Concourse LTI Integration Specifics

      This article is designed to be a technical specification for LTI integration with the Concourse platform. If you haven't learned the basics about Integration with Concourse and your external systems, consider reading the following: Integration ...
    • LTI 1.3 Has Arrived

      Today we are excited to announce the addition of support for the next generation of the Learning Tools Interoperability standard, LTI 1.3. Maintained by 1EdTech (formerly IMS Global), LTI 1.3 builds upon the previous generation of LTI by utilizing ...
    • FAQs on LTI 1.3

      Below, you'll find the frequently asked questions surrounding LTI 1.3. This is a running list of questions and will be updated over time as questions are received. What is Learning Tools Interoperability (LTI)? LTI is used to easily and seamlessly ...
    • Relationship Between Templates, Courses, and Sections

      This is a very important topic for an administrator to wrap their head around as they design a template structure and then combine that with feeds to create courses.   Courses A course is the main unit of organization in Concourse. Each course: ...
    • LTI 1.3 Integration: Blackboard

      In order to utilize this tutorial, you need to have System Administrator level permissions in Concourse. If you do not have these permissions, please contact the Concourse administrator at your institution to get the correct access before attempting ...