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 |
|---|---|---|---|---|---|---|
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 | - | (Programmatic) | Status Jun 1, 2026: All services working.
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.
| |||
CourseArc | - | (Declarative Programmatic won’t work) | ? | Jun 5, 2026: All services are working.
| ||
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. 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 | |||||
IMS test suite | N/A | Mar 27, 2026: All services are working. IMS test suite is less detailed than Saltire. | ||||
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. | ||
H5P | ? |
| N/A |
This was tested using config on the XBlock. Updated Mar 27, 2026 | ||
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