Course Reserves - LTI connectivity


The LTI connector allows for libraries to connect their institution's learning management system (LMS) - like Sakai, Blackboard or Canvas - to the FOLIO Courses app. 

Once the LTI connection is configured in the LMS, and installed in a course, the LMS can connect to FOLIO, look up the course reserve information, and then display a list of those items in the LMS. If the item records contain electronic resource information (e.g., links), then the LMS can pull those links and display them for students.

LTI functionality is delivered by two modules - a UI Module that supports a Settings section named "Courses LTI Tool", and an edge module that supports the connection between the LMS and FOLIO. There is no "backend" module for this functionality to work.


There are two permissions relevant to the LTI module, both for settings:

  • Settings (LTI Courses): Edit settings
  • Settings (LTI Courses): View settings

These permissions allow view and/or edit access to Settings → Courses LTI Tool, where you configure your LTI connection to your LMS.


In Settings → Courses LTI tool, you create a new LTI platform connection for each LMS you are connecting to. It's recommended that you work with your learning management team to configure the LTI tool in the LMS and provide the appropriate settings information to use in FOLIO.

Fields include

  • Issuer
    • The site that issues the LTI connection information. E.g.,
    • Issuers can issue more than one client ID.
  • Client ID
    • JSON webkey endpoint - your LMS manager can help you figure this out
  • OIDC Authentication URL
    • Open ID Connect URL - part of LTI authentication that your LMS manager can help you figure out
  • Public Search URL
    • The public search URL will be used for creating links when no electronic access is defined for the reserved item. Some variables can be inserted into the URL, e.g.,[BARCODE]. The supported variables are:

      • [BARCODE] - The item's barcode
      • [INSTANCE_HRID] - The instance's HRID
    • The tool renders its contents in an iframe, so parent styling is ignored. To style the tool's output, enter the URL of a CSS file here and the iframe will fetch and apply it in a <link>.

    • When a course has no current reserves, this message will be displayed.

    • This message box does take html, but you need to put it in the HTML to have it work, e.g., if you want your message to show as "please contact us at", your entry in the "No Reserves" message box would be 

      please contact us at <a href=""></a>

Functional workflows

What does the LTI module match on in order to look up the appropriate reserve information?

1. The LMS (it doesn’t matter which flavour, Sakai, Moodle, etc) pings the Edge module with the Course Title in the LMS.
2. The Edge module can use that Course Title to look up a course in Folio via the course’s courseNumber , its externalId , or its registrarId.

Note that the LTI module is querying the underlying data stored when an item is put on reserve - see the reserve.json schema on Github for what attributes are included. That means that if you change things in Inventory after the item is put in reserve, you will need to remove the item and re-add it in order for the changes to be picked up by the reserve app and made available to an LMS via LTI.

This can be confusing because the user interface in the courses app is not always querying the underlying reserve.json record - sometimes it's querying Inventory for information. For example, if you create an electronic item and put it on reserve, and then have to update a typo in the URI, the course listing in the Courses app will query and display a link to the corrected URI, but the underlying reserve object will still have the URI with the typo (see UICR-115 - Getting issue details... STATUS ). You have to remove the item from reserve, and then re-add it, to get the update.


No reporting is included as part of this module, either in-app or in the LDP.


Related Github modules:

Considerations for Implementation

If you are attempting to connect more than one LMS to a single instance of FOLIO - for example, if your main school uses Moodle but your business school uses Canvas - you will need to setup an LTI connection for each LMS environment. 

However, you'll need to make sure that there is a 1-1 correspondence between the Course Title on the separate LMSes and the Course Title in FOLIO. If your schools have the same course titles, the LTI connection will not work as expected.