Tools tested with and status

Tools tested with and status

The following table records test results for LTI 1.3 integrations with various tools. LTI 1.1 is not recorded here.

Tool

LTI 1.3 launch

DeepLink

Basic outcome

AGS

NRPS

Comments

Tool

LTI 1.3 launch

DeepLink

Basic outcome

AGS

NRPS

Comments

Atomic Assessments

Learner launch shows error.

Launch works but unable to save content.

?

Not tested yet.

?

Not tested yet.

?

Not tested yet.

Status Jun 1, 2026: Waiting on response from tool vendor.

 

 

 

 

 

 

 

 

 

 

 

 

 

ChemVantage

Install guide

-

(Programmatic)

Status Jun 1, 2026: All services working.

ScreenRecording2026-06-01at1.24.44PM-ezgif.com-video-to-gif-converter.gif

 

Chemvantage.gif

 

gif2-ezgif.com-video-to-gif-converter.gif

 

Logs for grades passback:

2026-06-01 10:11:37,288 INFO 31 [eventtracking.backends.async_routing] [user None] [ip 34.34.233.249] async_routing.py:41 - [EventEmissionExit] skipping event /api/lti_consumer/v1/token/02587f0b-811f-4fa4-91d7-a96eaf2b3906 2026-06-01 10:11:37,288 INFO 31 [tracking] [user None] [ip 34.34.233.249] logger.py:41 - {"name": "/api/lti_consumer/v1/token/02587f0b-811f-4fa4-91d7-a96eaf2b3906", "context": {"user_id": null, "path": "/api/lti_consumer/v1/token/02587f0b-811f-4fa4-91d7-a96eaf2b3906", "course_id": "", "org_id": "", "enterprise_uuid": ""}, "username": "", "session": "", "ip": "34.34.233.249", "agent": "Java/21.0.10", "host": "master.openedx.io", "referer": "", "accept_language": "", "event": "{\"GET\": {}, \"POST\": {\"grant_type\": [\"client_credentials\"], \"client_assertion_type\": [\"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\"], \"client_assertion\": [\"eyJraWQiOiJlYWJkNWJkYy0yYTFmLTQxNDctODBkNS00Y2Q0ZjM1ZjAwOTIiLCJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL3d3dy5jaGVtdmFudGFnZS5vcmciLCJzdWIiOiI1M2JjNTRmZi03OWFiLTRhYzMtOGM5NS0xOWYzMzhiYjY4YTkiLCJhdWQiOiJodHRwczovL21hc3Rlci5vcGVuZWR4LmlvL2FwaS9sdGlfY29uc3VtZXIvdjEvdG9rZW4vMDI1ODdmMGItODExZi00ZmE0LTkxZDctYTk2ZWFmMmIzOTA2IiwiZXhwIjoxN", "time": "2026-06-01T10:11:37.288252+00:00", "event_type": "/api/lti_consumer/v1/token/02587f0b-811f-4fa4-91d7-a96eaf2b3906", "event_source": "server", "page": null} [pid: 31|app: 0|req: 1061/2192] 172.18.0.4 () {48 vars in 762 bytes} [Mon Jun 1 10:11:37 2026] POST /api/lti_consumer/v1/token/02587f0b-811f-4fa4-91d7-a96eaf2b3906 => generated 1250 bytes in 1256 msecs (HTTP/1.1 200) 7 headers in 522 bytes (1 switches on core 0) 2026-06-01 10:11:38,578 INFO 32 [eventtracking.backends.async_routing] [user None] [ip 34.34.233.249] async_routing.py:41 - [EventEmissionExit] skipping event /api/lti_consumer/v1/lti/10/lti-ags/15/scores 2026-06-01 10:11:38,579 INFO 32 [tracking] [user None] [ip 34.34.233.249] logger.py:41 - {"name": "/api/lti_consumer/v1/lti/10/lti-ags/15/scores", "context": {"user_id": null, "path": "/api/lti_consumer/v1/lti/10/lti-ags/15/scores", "course_id": "", "org_id": "", "enterprise_uuid": ""}, "username": "", "session": "", "ip": "34.34.233.249", "agent": "Java/21.0.10", "host": "master.openedx.io", "referer": "", "accept_language": "", "event": "{\"GET\": {}, \"POST\": {}}", "time": "2026-06-01T10:11:38.578885+00:00", "event_type": "/api/lti_consumer/v1/lti/10/lti-ags/15/scores", "event_source": "server", "page": null} 2026-06-01 10:11:38,879 INFO 32 [lti_consumer.signals.signals] [user None] [ip 34.34.233.249] signals.py:69 - Publishing LTI grade from block block-v1:OpenedX+CS51+2026+type@lti_consumer+block@bef9d23fb25b471997477a4b79216216 to LMS. User: learner1 (score: 0.5) 2026-06-01 10:11:38,973 INFO 32 [eventtracking.backends.async_routing] [user None] [ip 34.34.233.249] async_routing.py:41 - [EventEmissionExit] skipping event edx.grades.problem.submitted 2026-06-01 10:11:38,974 INFO 32 [tracking] [user None] [ip 34.34.233.249] logger.py:41 - {"name": "edx.grades.problem.submitted", "context": {"user_id": null, "path": "/api/lti_consumer/v1/lti/10/lti-ags/15/scores", "course_id": "", "org_id": "", "enterprise_uuid": ""}, "username": "", "session": "", "ip": "34.34.233.249", "agent": "Java/21.0.10", "host": "master.openedx.io", "referer": "", "accept_language": "", "event": {"user_id": "19", "course_id": "course-v1:OpenedX+CS51+2026", "problem_id": "block-v1:OpenedX+CS51+2026+type@lti_consumer+block@bef9d23fb25b471997477a4b79216216", "event_transaction_id": "dcef25b3-d1eb-4d06-a176-5219004f8a3c", "event_transaction_type": "edx.grades.problem.submitted", "weighted_earned": 0.5, "weighted_possible": 1.0}, "time": "2026-06-01T10:11:38.973079+00:00", "event_type": "edx.grades.problem.submitted", "event_source": "server", "page": null} 2026-06-01 10:11:38,987 INFO 32 [celery_utils.logged_task] [user None] [ip 34.34.233.249] logged_task.py:25 - Task lms.djangoapps.grades.tasks.recalculate_subsection_grade_v3[60f40211-999f-4d14-be65-abb0362f6ad2] submitted with arguments None, {'user_id': 19, 'anonymous_user_id': None, 'course_id': 'course-v1:OpenedX+CS51+2026', 'usage_id': 'block-v1:OpenedX+CS51+2026+type@lti_consumer+block@bef9d23fb25b471997477a4b79216216', 'only_if_higher': None, 'expected_modified_time': 1780308698, 'score_deleted': None, 'event_transaction_id': 'dcef25b3-d1eb-4d06-a176-5219004f8a3c', 'event_transaction_type': 'edx.grades.problem.submitted', 'score_db_table': 'csm', 'force_update_subsections': False} 2026-06-01 10:11:39,010 INFO 32 [eventtracking.backends.async_routing] [user None] [ip 34.34.233.249] async_routing.py:38 - Successfully processed event "edx.completion.block_completion.changed" 2026-06-01 10:11:39,029 INFO 32 [eventtracking.backends.async_routing] [user None] [ip 34.34.233.249] async_routing.py:44 - Scheduled celery task for event "edx.completion.block_completion.changed" processing and routing 2026-06-01 10:11:39,029 INFO 32 [tracking] [user None] [ip 34.34.233.249] logger.py:41 - {"name": "edx.completion.block_completion.changed", "context": {"user_id": null, "path": "/api/lti_consumer/v1/lti/10/lti-ags/15/scores", "course_id": "", "org_id": "", "enterprise_uuid": ""}, "username": "", "session": "", "ip": "34.34.233.249", "agent": "Java/21.0.10", "host": "master.openedx.io", "referer": "", "accept_language": "", "event": {"user_id": 19, "course_id": "course-v1:OpenedX+CS51+2026", "block_id": "block-v1:OpenedX+CS51+2026+type@lti_consumer+block@bef9d23fb25b471997477a4b79216216", "block_type": "lti_consumer", "completion": 1.0, "modified": "2026-06-01T10:11:38.993372+00:00", "created": "2026-06-01T10:11:38.993372+00:00"}, "time": "2026-06-01T10:11:39.010340+00:00", "event_type": "edx.completion.block_completion.changed", "event_source": "server", "page": null} [pid: 32|app: 0|req: 1001/2193] 172.18.0.4 () {44 vars in 1588 bytes} [Mon Jun 1 10:11:38 2026] POST /api/lti_consumer/v1/lti/10/lti-ags/15/scores => generated 219 bytes in 493 msecs (HTTP/1.1 201) 8 headers in 569 bytes (1 switches on core 0)

Author by Muzzylane

(Declarative

Programmatic won’t work)

N/A

Jun 4, 2026: All services are working.

SCR-20260603-klwd.png

 

SCR-20260603-kkbp.png

 

author_deeplink.gif

 

 

CourseArc

-

(Declarative

Programmatic won’t work)

?

Jun 5, 2026: All services are working.

SCR-20260604-oube.png

 

coursearc_deeplink-ezgif.com-video-to-gif-converter.gif

 

 

 

Ed Lessons

-

?

Set AGS mode as “programmatic”. Also, Ed Lessons has a separate trigger in the tool to pass grades back.

This was tested using LTI store reusable config.

Updated May 15, 2026

Ed Discussions

-

-

-

?

Unable to test again due to lack of config data.

Tool launch worked via instructor and learner roles. I am yet to test NRPS.

Link to unit: https://apps.ulmo.openedx.io/learning/course/course-v1:OpenedX+M101+2026/block-v1:OpenedX+M101+2026+type@sequential+block@90adec23c338445f8f7b14a9c63c438c/block-v1:OpenedX+M101+2026+type@vertical+block@dc72f820f08349c5b5bdae1480dac36f

This was tested using LTI store reusable config (link).

Updated Mar 27, 2026

Yellowdig

-

?

Updated on Apr 9, 2026

Saltire

Mar 27, 2026: All services are working except for result.readonly service (see issue 628).

Guide: SALTIRE 1.3 integration

IMS test suite

N/A

Mar 27, 2026: All services are working. IMS test suite is less detailed than Saltire.

Guide: IMS 1.3 test tool integration

Near-Life

N/A

N/A

?

N/A

N/A

Mar 27, 2026: Integration is working but due to steep learning curve of the tool, i haven’t been able to configure the assignment to pass grades back to the platform.

Codio

N/A

?

N/A

Mar 27, 2026: I haven’t tested LTI 1.1. LTI 1.3 and AGS is working.

Guide: Codio integration

H5P

?

N/A

  1. H5P is unable to post grades back to Open edX platform. I've identified a fault with the tool and have reached out to their team with steps to fix it (see issue 621).

This was tested using config on the XBlock.

Updated Mar 27, 2026

Guide: H5P 1.3 integration

CodeGrade

-

-

-

-

Tool vendor not willing to test 1.3 with Open edX. They’ve already tested 1.1 with one of their customers using Open edX.

 

Atomic assessments

{ "https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiDeepLinkingRequest", "https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0", "iss": "https://master.openedx.io", "aud": "cf83c67f-b506-44a0-9606-a40607733bb6", "azp": "cf83c67f-b506-44a0-9606-a40607733bb6", "https://purl.imsglobal.org/spec/lti/claim/deployment_id": "1", "https://purl.imsglobal.org/spec/lti/claim/target_link_uri": "https://assessments.atomicjoltapps.com/lti_launches", "sub": "user-uuid-redacted", "https://purl.imsglobal.org/spec/lti/claim/roles": [ "http://purl.imsglobal.org/vocab/lis/v2/membership#Administrator", "http://purl.imsglobal.org/vocab/lis/v2/system/person#None", "http://purl.imsglobal.org/vocab/lis/v2/institution/person#None", "http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor" ], "name": "aayub axim", "email": "aayub@axim.org", "preferred_username": "aayubaxim", "https://purl.imsglobal.org/spec/lti/claim/resource_link": { "id": "block-v1:OpenedX+CS51+2026+type@lti_consumer+block@d12d128c1333480aaeb5ffd1ae348de0" }, "https://purl.imsglobal.org/spec/lti/claim/context": { "id": "course-v1:OpenedX+CS51+2026", "type": [ "http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering" ], "title": "Aamir's LTI course 2 - OpenedX", "label": "course-v1:OpenedX+CS51+2026" }, "https://purl.imsglobal.org/spec/lti-dl/claim/deep_linking_settings": { "accept_types": [ "ltiResourceLink", "link", "html", "image" ], "accept_presentation_document_targets": [ "iframe", "window", "embed" ], "accept_multiple": true, "auto_create": true, "title": "", "text": "", "deep_link_return_url": "https://master.openedx.io/api/lti_consumer/v1/lti/6/lti-dl/response" }, "nonce": "nonce-redacted", "iat": 1780024683, "exp": 1780028283 }
{ "https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiResourceLinkRequest", "https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0", "iss": "https://master.openedx.io", "aud": "cf83c67f-b506-44a0-9606-a40607733bb6", "azp": "cf83c67f-b506-44a0-9606-a40607733bb6", "https://purl.imsglobal.org/spec/lti/claim/deployment_id": "1", "https://purl.imsglobal.org/spec/lti/claim/target_link_uri": "https://assessments.atomicjoltapps.com/lti_launches", "sub": "user-uuid-redacted", "https://purl.imsglobal.org/spec/lti/claim/roles": [ "http://purl.imsglobal.org/vocab/lis/v2/membership#Administrator", "http://purl.imsglobal.org/vocab/lis/v2/institution/person#Staff", "http://purl.imsglobal.org/vocab/lis/v2/institution/person#Instructor", "http://purl.imsglobal.org/vocab/lis/v2/institution/person#Administrator", "http://purl.imsglobal.org/vocab/lis/v2/system/person#Administrator", "http://purl.imsglobal.org/vocab/lis/v2/institution/person#Faculty", "http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor" ], "name": "Aamir Arbisoft", "email": "aamir.ayub@arbisoft.com", "preferred_username": "aamirarbisoft", "https://purl.imsglobal.org/spec/lti/claim/resource_link": { "id": "block-v1:OpenedX+CS51+2026+type@lti_consumer+block@d12d128c1333480aaeb5ffd1ae348de0" }, "https://purl.imsglobal.org/spec/lti/claim/context": { "id": "course-v1:OpenedX+CS51+2026", "type": [ "http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering" ], "title": "Aamir's LTI course 2 - OpenedX", "label": "course-v1:OpenedX+CS51+2026" }, "https://purl.imsglobal.org/spec/lti/claim/launch_presentation": { "document_target": "iframe" }, "https://purl.imsglobal.org/spec/lti/claim/tool_platform": { "guid": "0c081306-e6de-50fa-8971-f43bcb2f384a", "name": "The Master Sandbox" }, "https://purl.imsglobal.org/spec/lti/claim/custom": { "context_id_history": "$Context.id.history", "resource_link_id_history": "$ResourceLink.id.history" }, "https://purl.imsglobal.org/spec/lti-ags/claim/endpoint": { "scope": [ "https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly", "https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly", "https://purl.imsglobal.org/spec/lti-ags/scope/score" ], "lineitems": "https://master.openedx.io/api/lti_consumer/v1/lti/6/lti-ags", "lineitem": "https://master.openedx.io/api/lti_consumer/v1/lti/6/lti-ags/1" }, "nonce": "nonce-redacted", "iat": 1780027853, "exp": 1780031453 }
image-20260529-064950.png

 

SCR-20260529-hwio.png
image-20260529-065245.png

 

image-20260529-065501.png