1EdTech App Note: Cengage and Unicon

On the Road to LTI Advantage:
Bringing Assignment and Grade Services to Moodle

By: Claude Vervoort, application architect, Cengage; Diego del Blanco Orobitg, software developer, Unicon, Inc.; and Linda Feng, software architect, Unicon, Inc.

Cengage logo    Moodle logo     Unicon logo

Download as pdf


Cengage offers sophisticated digital learning solutions, such as MindTap, to assemble a diverse set of activities and custom flows in a single handcrafted experience. Those products are often referred to as courseware.
 1EdTech Learning Tools Interoperability® (LTI®) v1.1 works well for accessing siloed activities, one at a time, but has key shortcomings to support linking to products like MindTap. In the past, Cengage has circumvented these limitations by relying heavily on platform-specific extensions. Now, the recently published Assignment and Grade Services specification—part of LTI Advantage—has made it possible to build a fully standards-compliant solution that addresses the needs of more sophisticated tools. Initially, the Moodle™ platform lacked a proper integration. Rather than investing in a custom Cengage plugin, Cengage decided to work with Unicon, Inc., 1EdTech, and ultimately Moodle HQ to bring the new standards into Moodle and build an integration around them.
This document illustrates how the integration works, and the story of how we got there.

Basic Outcomes Service

Before explaining the new service, let’s first review why the LTI standard available in earlier versions of Moodle was just not enough; as a reminder, LTI v1.1 is mostly the LTI basic launch with grade passback mechanics labeled “basic outcome” service. In a nutshell, basic outcome works by passing a grade locator in each launch, so that a grade can be passed back for each interaction. With the basic outcomes service, you grade the launch.
basic outcomes service image
While this earlier scheme is powerful in its simplicity, it ended up having some major shortcomings that made it a poor choice for more complex use cases, including:
  • A student that must launch the activity from the LMS to get a grade
  • Each activity must have its own link
As a result, a complex courseware platform ended up having to bring a link for each activity producing a grade in the LMS, making the course setup and maintenance difficult.
one link per graded activity image

One Link per Graded Activity


Assignment and Grade Services to the Rescue

user_id Instead of Grade Locator
Assignment and Grade Services no longer uses a specific grade locator lis_result_sourcedid for the grade, but rather it relies on the tuple (user id, line item id) to identify a gradebook ‘cell’. This means as long as the tool knows the line item (aka gradebook column) and the user id, it can push a grade. No more need for the student to have to launch the activity.

POST {lineitem.url}/scores

  "userId": "aer-3427",
  "scoreGiven": 3,
  "scoreMaximum": 4,
  "comment": "Well done!",
  "timestamp": "2018-06-12T14:30:23.605Z",
  "activityProgress": "Completed",
  "gradingProgress": "FullyGraded"


Manage Your Columns
One of the key enabling features of Assignment and Grade Services is the ability to create line items programmatically. It also allows the tool to discover the line items already present in the course. However, Assignment and Grade Services is not a gradebook management API. The tool is sandboxed to its own data and only ever sees its own line items and grades; it never sees the full gradebook assembly.
POST {lineitems.url}
  "scoreMaximum": 4,
  "label": "Peer Grading Essay Chapt 4",
  "tag": "peer-grading",
  "resourceId": "4792-chap4"
This allows for decoupling the link from the line item. No more need to create a link per line item!
No more need to create a link per line item!

Bringing Assignment and Grade Services to Moodle

Service Subplugin
The "M" in Moodle stands for Modular, and yes, Moodle is built on a plugin infrastructure. Each activity type is its own module, and LTI activities are all under the LTI activity module. Moodle also supports the concept of subplugins, and the LTI activity module allows additional LTI services to be deployed as subplugins of the LTI plugin. While all of the LTI services are implemented as subplugins, they are included in the core Moodle code. So the plan was to build a new Assignment and Grade Services subplugin with the aim to have it eventually included in the core code. However, in the meantime, we could allow it to be deployed by the institution’s admin like any other plugin, easing the deployment of the solution by not making it dependent on a core Moodle release.
Assignment and Grade Services subplugin to Moodle
Tool Proxy
The LTI services are only discoverable during tool registration; a tool must request access to those services and a platform must accept that request. Those granted capabilities are enshrined in the deployment contract known as the Tool Proxy. LTI v1.1, which is limited to manual deployments has no way to access those services. So in addition to implementing support of Assignment and Grade Services in Cengage tools, we also implemented support for LTI v2.0 to take advantage of its registration features.

En Route to LTI Advantage

As we were wrapping up the main development of this work, 1EdTech announced an evolution of the LTI roadmap that would materially strengthen the security model by adopting industry best practices using OAuth 2.0 and JSON web token-based signatures. Additionally, LTI would move away from layers of functionality to a more modular and agile strategy of a “core + extensions” model. 
With LTI v2.0 no longer the preferred approach, we decided to offer a solution to work on LTI v1.1 in preparation for the move to LTI v1.3 per 1EdTech’s strategic direction. To accomplish this, we changed the LTI module itself, which means core Moodle. Thanks to strong support from Moodle, in particular from their main LTI developer, we were allowed to successfully bring those changes to Moodle core.
As a result, it is now possible for Moodle 3.5 onwards to configure an LTI v1.1 tool to use LTI services; a new services section is available in the tool configuration.
Moodle 3.5 configuration for LTI 1.1
The service subplugin API has been enriched to allow an LTI service to expose the configuration interface directly into the tool configuration page.
In addition to Assignment and Grade Services support, we added the ability for a tool to specify a distinct content item URL as well as supporting line item to be returned in content item definition.
LTI 2.0 Still Supported
Cengage is aligned with 1EdTech’s direction to adopt LTI v1.3 and appreciates the continued commitment to support LTI v2.0. We recognize that it will take time for the Moodle base to move to 3.5 or greater, and so we maintain the plugin-based approach for earlier deployments.
A Word on Certification
1EdTech certification is a key piece of the interoperability puzzle. We worked with the 1EdTech staff to build up the Assignment and Grade Services certification suite. In an iterative fashion, we were able to run tests and find issues related to conformance of our implementation but also related to the certification test suite itself. The resulting product of that work was a stronger implementation and a certification suite covering the main core use cases of the new service.
The certification for Assignment and Grade Services is currently available for LTI v1.1 and will be available for LTI v1.3 in Q4 2018. 1EdTech is aggressively updating its certification suite to cover LTI v1.3 and the related components of LTI Advantage.


So with all that in place, here is how the integration with Cengage currently looks.
Cengage is deployed with both the Assignment and Grade Services and Deep Linking (formerly Content Item) extensions turned on.
Once the tool has been deployed as a site tool, the instructor can launch the content selector using a Content Item Selection Request. Since this tool has Assignment and Grade Services enabled, the custom_lineitems_url is passed as an additional parameter, allowing the Cengage content selector to directly interact with the Moodle gradebook.

Last Words…

It takes more than two to tango when it comes to standards. Schoology has also been investing in support for Assignment and Grade Services, and we were eager to see how it would work. When they made their platform available for testing, we were looking to see where the remaining issues would be. And there were none! From the get-go, we were able to apply the Moodle solution to Schoology. As LTI Advantage and LTI v1.3 rollout, we are starting to see a clearer path where rich integrations will truly be standards-based; and that is very exciting!





[Published August 2018]


©2018 Cengage. All Rights Reserved, ©2018 Unicon, Inc. All Rights Reserved, and ©2018 1EdTech Consortium, Inc. All Rights Reserved.