# LTI Provider in Nutmeg and future releases?

**URL:** <https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330>\
**Category:** Site Operations Help\
**Tags:** tutor\
**Created:** [September 20, 2022, 6:47pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330 "2022-09-20T18:47:06Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 20, 2022, 6:47pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/1 "2022-09-20T18:47:07Z")

</div>

I asked the question in the past, but I am curious as to what is the current state of Open edX serving as an LTI Provider in Nutmeg and future releases?

I’ve seen some references in the past to “LTI 1.3 tool support for blockstore-based content (aka. “Content Libraries V2”)” here:

> <https://github.com/openedx/edx-platform/pull/27411>
>
> \## Description
> 
> This PR enables Open EdX to act as an LTI 1.3 tool (formerly k…nown as "tool provider") for content managed by Content Libraries and backed up by blockstore. It allows instructors and staff users to embed content within other LMS and platforms, for example, Canvas.
> 
> The support for LTI features is limited to a subset of use-cases, as follows:
> 
> 1. Tool setup and configuration through administration interfaces.
> 2. Retrieval and rendering of blockstore-based content (XBlocks) in a runtime suitable for LTI resource link launches. That is IFrames within the platform.
> 3. Send grades associated with content, i.e. assessments, to the platform gradebooks.
> 
> Once merged, Open edX will be capable of serving any content managed by Content Libraries to an LTI-supporting platform that was previously configured and authorized.
> 
> This PR's technical approach and decision are available in the \[ADR for LTI providers in content libraries\](https://github.com/edx/edx-platform/pull/27089).
> 
> \*\*JIRA:\*\* \[SE-4257\](https://tasks.opencraft.com/browse/SE-4257)
> 
> \*\*Reviewers\*\*:
> 
> \- \[X\] @arbrandes
> \- \[\] @marcotuts 
> 
> \## Supporting information
> 
> \[ADR\` for LTI providers in content libraries\](https://github.com/edx/edx-platform/pull/27089).
> 
> \## Concerns
> 
> There are two. I believe they don't block the current implementation. But, we might need to follow-up later to accommodate future use cases. They are not blockers to those future use cases AFAICT.
> 
> First, grade syncing assumes a 1:1 relationship between XBlocks and grade lineitem. Hence, the logic ignores the potential tree relationship of XBlocks and how the tree should be mapped to a single LTI launch. Lack of a deeper understanding of this relationship within content libraries and the whole XBlock use-cases is the main reason for the current approach. Meaning, I understood users of LTI want to expose individual blocks hosting one assessment. This conclusion was the result of my own tests within Content Libraries.
> 
> Second, since each assessment can only hold one score, grade syncing is done "synchronously" rather than carried out by celery. Throughout my tests, the grade update event seemed to fail synchronously if the LTI platform was unavailable and it won't block retries. My reasoning is, this is a better user experience than keeping a work log of grades to sync and simplifies the implementation.
> 
> \## Testing instructions
> 
> These are steps to manually test the changes in development environments of openedx as the tool and canvas as the platform.
> 
> \### 1. Setup devstacks
> 
> 1. Deploy an instance of \[edx-platform devstack\](https://github.com/edx/devstack#id8).
> 2. Deploy an instance of \[canvas' development stack\](https://github.com/instructure/canvas-lms/wiki/Quick-Start#automated-setup).
> 
> Some notes:
> 
> - Use their automated setup.
> - Make sure to enable \`\`dory\`\`, which will offer a local DNS resolver and HTTP proxy to route requests to \`\`canvas.docker\`\`.
> 
> 3. Deploy an instance of \[edx/blockstore\](https://github.com/edx/blockstore/#using-with-docker-devstack).
> 4. Follow the steps at \[frontend-app-library-authoring\](https://github.com/edx/frontend-app-library-authoring/).
> 
> At the end you should have a development instance of Canvas and Open edX, with Content Libraries V2 enabled, in your workstation.
> 
> You need to allow routing from edX studio container to the Canvas container. One straightforward way to achieve that is:
> 
> 1. Find the host IP in the docker bridge of your workstation:
> 
> \`\`\`
> % ip -br addr show docker0
> docker0 UP 1.2.3.4/16 fe80::42:39ff:fec3:140c/64 
> %
> \`\`\`
> 
> In the above the IP is \`1.2.3.4\`.
> 
> 2. Overwrite \`/etc/hosts in the edX studio container:
> 
> \`\`\`
> % cd ~/src/edx-devstack
> % docker-compose exec studio bash
> root@studio:/edx/app/edx\_ansible/edx\_ansible/docker/plays# echo 1.2.3.4 canvas.docker \>\> /etc/hosts
> root@studio:/edx/app/edx\_ansible/edx\_ansible/docker/plays# ^D
> %
> \`\`\`
> 
> This will allow the LTI view to contact the Canvas JWK endpoints to retrieve keys during the LTI launch steps.
> 
> 3. Finally, disable DJDT in Studio. I personally disabled here: https://github.com/open-craft/edx-platform/blob/master/cms/envs/devstack.py#L99
> 
> This is required for the \`launch\` responses rendering XBlocks to not get tainted by DJDT.
> 
> \### 2. Setup Canvas
> 
> Now, go to \`http://canvas.docker/\`:
> 
> 1. Login with the credentials used during Canvas devstack setup.
> 1. In the left toolbar, click on "Admin" to open the administration panel.
> 1. Select the the user you created during Canvas devstack setup (do not select "Site Admin").
> 1. On the menu on the left, click "Developer Keys".
> 1. Clik on the "+ Developer Key" button, select "+ LTI".
> 1. On the "method" drop-down, select "Paste JSON".
> 1. Paste the following JSON:
> 
> \`\`\`
> {
> "title": "edX Content Library",
> "scopes": \[\],
> "extensions": \[
> {
> "platform": "canvas.instructure.com",
> "settings": {
> "platform": "canvas.instructure.com",
> "placements": \[
> {
> "placement": "assignment\_selection",
> "message\_type": "LtiDeepLinkingRequest"
> }
> \]
> },
> "privacy\_level": "anonymous"
> }
> \],
> "public\_jwk": {},
> "description": "edX Content Library",
> "custom\_fields": {},
> "public\_jwk\_url": "http://127.0.0.1:18010/api/libraries/v2/lti/1.3/pub/jwk/",
> "target\_link\_uri": "http://127.0.0.1:18010/api/libraries/v2/lti/1.3/launch/",
> "oidc\_initiation\_url": "http://127.0.0.1:18010/api/libraries/v2/lti/1.3/login/"
> }
> \`\`\`
> 
> 1. Give the key a name, e.g. "edx tool".
> 1. On "Redirect URIs" field, add \`http://127.0.0.1:18010/api/libraries/v2/lti/1.3/launch/\`.
> 1. Enable the key, switching from \`OFF\` to \`ON\`.
> 1. Copy the "client id" specified here:
> 
> !\[Client ID Screenshot\](https://user-images.githubusercontent.com/291493/115919353-410f2e00-a468-11eb-9e32-c7a93cde6313.png)
> 
> 1. On the left menu, go to "Settings"
> 1. Go to the "Apps" tab.
> 1. Click on the "+ App" button.
> 1. On "Configuration Type" select "By Client ID".
> 1. Enter the client id you copied above.
> 1. Copy the "deployment ids":
> 
> !\[Deployment ID Screenshot\](https://raw.githubusercontent.com/dmitry-viskov/repos-assets/master/pylti1p3/examples/canvas-lms/004.png)
> 
> \### 3. Setup edX.
> 
> 1. \[Generate a key pair for the tool\](https://gist.github.com/ygotthilf/baa58da5c3dd1f69fae9).
> 1. Go to \`http://localhost:18010/admin/lti1p3\_tool\_config/\`, login with \`edx\`.
> 1. Add a "ti 1.3 tool key".
> 1. Add the private key and public keys from above.
> 1. Add a "Lti 1.3 tool"
> 1. Use the following information:
> 
> \`\`\`
> "issuer": "https://canvas.instructure.com",
> 
> // from Canvas: Developer Keys -\> value from Details column
> "client\_id": "\<client id\>",
> 
> // static URL
> "auth\_login\_url": "http://canvas.docker/api/lti/authorize\_redirect",
> 
> // static URL
> "auth\_token\_url": "http://canvas.docker/login/oauth2/token",  
> 
> // static URL to get Platform's public key
> "key\_set\_url": "http://canvas.docker/api/lti/security/jwks",
> 
> // copy deployment ID from the Canvas created app (screenshot above)
> "deployment\_ids": \["\<client id\>"\]
> \`\`\`
> 
> 1. Select the key you created before for "Tool Key".
> 
> 
> \### 4. Create a library and consume assignment
> 
> 1. Go to studio and create a library, use the steps described in \[\`frontend-app-libary-authoring\` Devstack Installation\](https://github.com/edx/frontend-app-library-authoring/). Library should be of type "Complex (beta)".
> 2. Click on "Edit" in one assignment. In the URL, copy the "block usage key". For example, if the URL is \`http://localhost:3001/library/lib:jvdm:jvdm/blocks/lb:jvdm:jvdm:done:35bb60f2-6d99-4da9-b8cc-9f018671e4f5/\` the usage key is \`lb:jvdm:jvdm:done:35bb60f2-6d99-4da9-b8cc-9f018671e4f5\`.
> 3. Create the LTI launch URL for this block: For example: \`http://127.0.0.1:18010/api/libraries/v2/lti/1.3/launch/?id=lb:jvdm:jvdm:poll:ae5a61a8-f163-44b9-bee0-bddfc219ba33\`.
> 4. Go to Canvas and create an "External Tool" assignment, by performing \[this step\](https://github.com/dmitry-viskov/pylti1.3/wiki/Configure-Canvas-as-LTI-1.3-Platform#-1) and then \[this one\](https://github.com/dmitry-viskov/pylti1.3/wiki/Configure-Canvas-as-LTI-1.3-Platform#-2).
> 
> \### 5. Expected result
> 
> The assignment should be exposed in the Canvas UI
> 
> \## Deadline
> 
> None.
> 
> \## Other information
> 
> This change doesn't depend on changes anywhere else.
> 
> This change is \*incomplete\* and should not be merged to production branches, due to security issues on the new URL endpoints being introduced.
> 
> Finally, some blocks are not being rendered correctly on Canvas IFrame in some browsers. Experiment with different blocks to evaluate the change.
> 
> \## OCIM Setting
> 
> \*\*Settings\*\*
> \`\`\`yaml
> 
> EDXAPP\_FEATURES:
> ENABLE\_LIBRARY\_AUTHORING\_MICROFRONTEND: true
> 
> EDXAPP\_LIBRARY\_AUTHORING\_MICROFRONTEND\_URL: "https://library-authoring.{{ EDXAPP\_LMS\_BASE }}"
> 
> TRUSTED\_DOMAINS:
> - "library-authoring.{{ EDXAPP\_LMS\_BASE }}"
> - "blockstore.{{ EDXAPP\_LMS\_BASE }}"
> 
> EDXAPP\_ENABLE\_CORS\_HEADERS: yes
> EDXAPP\_ENABLE\_CROSS\_DOMAIN\_CSRF\_COOKIE: yes
> EDXAPP\_CORS\_ORIGIN\_WHITELIST: "{{ TRUSTED\_DOMAINS }}"
> EDXAPP\_LOGIN\_REDIRECT\_WHITELIST: "{{ TRUSTED\_DOMAINS }}"
> EDXAPP\_CSRF\_TRUSTED\_ORIGINS: "{{ TRUSTED\_DOMAINS }}"
> 
> MFE\_DEPLOY\_STANDALONE\_NGINX: yes
> 
> MFES:
> - name: library-authoring
> repo: frontend-app-library-authoring
> env\_extra:
> STUDIO\_BASE\_URL: https://{{ EDXAPP\_CMS\_BASE }}
> \`\`\`

And finally about Blockstore not being totally integrated in Tutor:

> [@Blockstore Integration Inquiry for Nutmeg release and Tutor Integration](https://discuss.openedx.org/t/blockstore-integration-inquiry-for-nutmeg-release-and-tutor-integration/7527):
>
> Hello, I’m migrating this topic from the Tutor forums I’m currently checking in on the current state of the Blockstore with respect to OpenEDX/Tutor. I’m currently trying to gather any information I can on the current state of integration, and if it’s able to be utilized in a production deployment of tutor. There was a previous thread on this topic asking a similar question and i’m mostly checking to see if any additional information is available: [Using blockstore with tutor?](https://discuss.overhang.io/t/using-blockstore-with-tutor/1770) I know @fghaa…

So, what is the current state of LTI Provider / Blockstore in Nutmeg and future releases? Will it be integrated as part of Olive?

Thanks for any information.

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 27, 2022, 12:56pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/2 "2022-09-27T12:56:26Z")

</div>

No answer after one week here or on Slack.

Is there anyone who knows who I should get in touch with in order to get a definite answer or at least the beginning of an answer?

Any information would be greatly appreciated. Thank you.

---

<div class="post-metadata">

**Author:** ![dave](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/dave/32/263_2.png) [@dave](https://discuss.openedx.org/u/dave)\
**Post date:** [September 27, 2022, 3:45pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/3 "2022-09-27T15:45:11Z")

</div>

My understanding is that being an LTI provider for courseware in general is important functionality that needs to be preserved for Olive and future releases. It’s in our thinking for both new modular learning work, and I know that 2U is thinking about further investments in LTI (though I don’t think the exact shape of it has been settled). @jmakowski, @schenedx, or @zhancock_edx might be able to give more info there.

On the Blockstore LTI functionality specifically, I’m not sure about what’s enabled in Nutmeg by default, or the intention for Olive.

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 27, 2022, 4:00pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/4 "2022-09-27T16:00:31Z")

</div>

@dave thank you for you answer, it’s greatly appreciated. This has to be the clearest answer on the topic I received in the last few years.

While testing our migration from Koa Native to Nutmeg Tutor, we discovered that the contents we provide to Moodle for example from some of our courses on Open edX was still functional but we have thus far been unable to create new courses on Open edX that would provide new LTI contents to Moodle. Is it a problem with the LTI Provider contents on Open edX? Is it an access problem through the Learning MFE? I don’t know…

I am under the impressions, I could be wrong, that the LTI Provider functionality has been removed from the “standard” Open edX offering when the lti xblock was replaced with the xblock-lti-consumer a few releases back in-between Koa and Nutmeg. I’ve asked multiple times, but nobody gave me an official answer on this.

---

<div class="post-metadata">

**Author:** ![jmakowski](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jmakowski/32/3607_2.png) [@jmakowski](https://discuss.openedx.org/u/jmakowski)\
**Post date:** [September 27, 2022, 5:59pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/5 "2022-09-27T17:59:07Z")

</div>

I looked through the Release test list from Nutmeg and it does seem that lti-consumer xblock was included while the provider functionality wasn’t (at least in the testing list…). I’m trying to dig into the context/history for that.

Going forward, I think it’s safe to say there is pretty strong interest in having an LTI1.3 Provider tool, and in fact I just had a conversation last week with @sdunn about the level of community interest for an updated, stable tool.

Likewise, as @dave mentioned, the need has been captured at a high level in the Modular Learning user stories. There’s a [WIP view on the community roadmap](https://github.com/orgs/openedx/projects/4/views/12) regarding LTI investments and current work for Open edX writ large (both as provider and consumer). It’s not as fleshed (yet) as some of the other platform area tabs, but it will be very shortly (in the next 2-4 weeks), so that’s one area where you can keep real-time tabs on LTI investments and expectations for Palm release and beyond.

---

<div class="post-metadata">

**Author:** ![dave](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/dave/32/263_2.png) [@dave](https://discuss.openedx.org/u/dave)\
**Post date:** [September 27, 2022, 6:09pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/6 "2022-09-27T18:09:17Z")

</div>

> [@sambapete](#):
>
> While testing our migration from Koa Native to Nutmeg Tutor, we discovered that the contents we provide to Moodle for example from some of our courses on Open edX was still functional but we have thus far been unable to create new courses on Open edX that would provide new LTI contents to Moodle. Is it a problem with the LTI Provider contents on Open edX? Is it an access problem through the Learning MFE? I don’t know…

There’s no LTI provider support in the new courseware MFE. The place it would be invoked is the LMS service itself. What happens when you try to launch content in new courses? What URLs are you using?

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 27, 2022, 6:14pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/7 "2022-09-27T18:14:17Z")

</div>

Thanks @jmakowski

To be fair, my questions about the LTI Provider functionality predate Nutmeg.

When I started reading about the development of the newest LTI Consumer xblock a few releases back, it was never clear to me what was happening to the LTI Provider component that was available in Open edX in releases prior to the availability of the new LTI Consumer xblock. Maybe because the intent was to deliver LTI 1.3 consumer functionality first? I would also be interested in the context/history behind the decision to remove or temporarily remove the LTI Provider part.

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 27, 2022, 6:23pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/8 "2022-09-27T18:23:45Z")

</div>

The new courses end up with URLs that go through the Learning MFE while the old courses where the LTI Provider functionality is available are still accessible through their previous LMS URLs (meaning for example `https://test-cours.edulib.org/lti_provider/courses` instead of `https://apps.test-cours.edulib.org/learning/course`).

This _still_ works for courses developed under Koa, but I can’t seem to be able to find the proper URL for new courses created in Nutmeg.

It’s really as if the new courses are unable to load the previous “lti” or “lti\_provider” advanced modules in Studio.

And yes, I tried using `https://test-cours.edulib.org/lti_provider/courses` for the new courses without success…

---

<div class="post-metadata">

**Author:** ![mrtmm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mrtmm/32/2542_2.png) [@mrtmm](https://discuss.openedx.org/u/mrtmm)\
**Post date:** [September 28, 2022, 7:33am UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/9 "2022-09-28T07:33:35Z")

</div>

Hi @sambapete, I am also looking into this. I have a Provider configured on a Nutmeg platfrom and I am able to display content from it in another Open edX platfrom (Maple) via the Consumer XBlock and in [saLTIre: LTI Platform emulator](https://saltire.lti.app/platform) but only with the [anonymous authentication](https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/lti/authentication_options_lti.html#anonymous-user-authentication).

I created the Consumer credentials on the Provider platform at: `/admin/lti_provider/lticonsumer`; the URL I am using is `https://{host}/lti_provider/courses/{course_id}/{usage_id}`, and I am not doing anything special with the content on the Provider platform, I added some HTML blocks to a course and got the `usage_id`’s as I explained here: [12.6.3. Determining Content Addresses — Building and Running an Open edX Course documentation](https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/course_features/lti/lti_address_content.html#finding-the-usage-id-for-course-content)

I have no experience with the “old lti module” you mentioned in Slack, how did authentication work there? I am trying to figure out the TPA authentication as I commented on [this post](https://discuss.openedx.org/t/enabling-lti-provider-in-tutor/8239/).

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 28, 2022, 12:55pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/10 "2022-09-28T12:55:13Z")

</div>

Hi @mrtmm

Quick questions. I am curious. It’s just to check if we have the same configuration.

Was that a brand new course you created on Nutmeg or a course that was created in a previous release? And I mean, not exporting / importing a previous course that was already working for LTI. A new course started from scratch. The LTI courses we created in Koa are still working for us exactly like you explained. No differences at all.

What did you use in Studio in the Advanced Modules for this course?

Are you using the Learning MFE?

I am also using saLTIre / ceLTIc for testing.

---

<div class="post-metadata">

**Author:** ![dave](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/dave/32/263_2.png) [@dave](https://discuss.openedx.org/u/dave)\
**Post date:** [September 28, 2022, 12:56pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/11 "2022-09-28T12:56:01Z")

</div>

> [@sambapete](#):
>
> When I started reading about the development of the newest LTI Consumer xblock a few releases back, it was never clear to me what was happening to the LTI Provider component that was available in Open edX in releases prior to the availability of the new LTI Consumer xblock. Maybe because the intent was to deliver LTI 1.3 consumer functionality first? I would also be interested in the context/history behind the decision to remove or temporarily remove the LTI Provider part.

The LTI consumer and provider functionality were implemented by different groups–the initial provider support was implemented by Phil McGachey at Harvard in mid/late 2015. It was not a high priority feature for edX development internally at the time, so we didn’t really push it to partners, but I’m not aware of any work or plans to remove it–I strongly suspect that any regression is unintentional.

> [@sambapete](#):
>
> And yes, I tried using `https://test-cours.edulib.org/lti_provider/courses` for the new courses without success…

So is it the case that you launch it the same way (`{LMS_URL}/lti_provider/courses/{course_key}/{usage_key}`), but that new courses automatically redirect to an MFE URL instead? What kind of XBlock were you exposing as an LTI provider? Do you mind posting exactly what your course key and usage key were when you were doing the launch for a newer course? I’m wondering if there’s some VerticalBlock rendering code that might be messing things up at the Unit level (but in that case, ProblemBlock and other non-container module types should still work okay).

---

<div class="post-metadata">

**Author:** ![mrtmm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mrtmm/32/2542_2.png) [@mrtmm](https://discuss.openedx.org/u/mrtmm)\
**Post date:** [September 28, 2022, 1:15pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/12 "2022-09-28T13:15:26Z")

</div>

> [@sambapete](#):
>
> Was that a brand new course you created on Nutmeg or a course that was created in a previous release?

Yes, a brand new course.

> [@sambapete](#):
>
> What did you use in Studio in the Advanced Modules for this course?

I added nothing, I am using the native HTML module for test content.

> [@sambapete](#):
>
> Are you using the Learning MFE?

Yes, on the Nutmeg Provider platform I have the Learning MFE enabled.

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 28, 2022, 1:24pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/13 "2022-09-28T13:24:25Z")

</div>

Basically, it’s the same course but recreated manually (no export and no import from the previous course)

Previously from Koa and still working in Nutmeg:  
`https://test-cours.edulib.org/lti_provider/courses/course-v1:UMontreal+TEST_LTI_01+E2016/block-v1:UMontreal+TEST_LTI_01+E2016+type@sequential+block@1c40b4c92c58421da885bea7a63992e1`

Location  
`block-v1:UMontreal+TEST_LTI_01+E2016+type@problem+block@5753b0b25f2443c6867b348275a3818d`

Parent Module  
`block-v1:UMontreal+TEST_LTI_01+E2016+type@vertical+block@3092ac7167da42a1985d90691c3925d4`

**It was my mistake.**

While looking for the information you asked for @dave I found out what could have been the error.

Location  
`block-v1:UMontreal+LTI_NUTMEG_01+A2022+type@problem+block@30fc091cb1814b6babc69db4454a4ca1`

Parent Module  
`block-v1:UMontreal+LTI_NUTMEG_01+A2022+type@vertical+block@92bb45f184114fff8d3f824fb0cdb502`

It started working when I used  
`https://test-cours.edulib.org/lti_provider/courses/course-v1:UMontreal+LTI_NUTMEG_01+A2022/block-v1:UMontreal+LTI_NUTMEG_01+A2022+type@problem+block@30fc091cb1814b6babc69db4454a4ca1`

I am wondering why it worked at all in the previous case…

Thanks a lot @dave and @mrtmm

---

<div class="post-metadata">

**Author:** ![sambapete](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sambapete/32/4100_2.png) [@sambapete](https://discuss.openedx.org/u/sambapete)\
**Post date:** [September 28, 2022, 1:29pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/14 "2022-09-28T13:29:44Z")

</div>

I will need to do more tests later today or tomorrow before declaring victory 👍

At least, I did see the unit I created in my brand new course.

Thanks again @dave and @mrtmm

---

<div class="post-metadata">

**Author:** ![dave](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/dave/32/263_2.png) [@dave](https://discuss.openedx.org/u/dave)\
**Post date:** [September 30, 2022, 2:35pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/15 "2022-09-30T14:35:06Z")

</div>

> [@sambapete](#):
>
> I am wondering why it worked at all in the previous case…

It might have to do with the fact that the endpoint in question is meant to render XBlocks directly, and Sequences are being moved from rendering entirely as an XBlock to eventually be something that lives above the XBlock layer (so XBlocks would only be rendering at the Unit layer and below), per [this ADR](https://discuss.openedx.org/t/arch-decision-record-for-the-role-of-xblocks/2775). We’re in a sort of hybrid state at the moment–the normal UI is driven by the Learning MFE and various API calls, but the SequentialBlock still exists and has rendering code.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/e/e0015f89e879bc75925b71fd11133ab15fe98297.png) [@system](https://discuss.openedx.org/u/system)\
**Post date:** [December 29, 2022, 2:35pm UTC](https://discuss.openedx.org/t/lti-provider-in-nutmeg-and-future-releases/8330/16 "2022-12-29T14:35:36Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
