# How do Program Enrollments work?

**URL:** <https://discuss.openedx.org/t/how-do-program-enrollments-work/8809>\
**Category:** Development\
**Tags:** how-to\
**Created:** [November 28, 2022, 9:21pm UTC](https://discuss.openedx.org/t/how-do-program-enrollments-work/8809 "2022-11-28T21:21:42Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zachary\_Trabookis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/zachary_trabookis/32/753_2.png) [@Zachary\_Trabookis](https://discuss.openedx.org/u/Zachary_Trabookis)\
**Post date:** [November 28, 2022, 9:21pm UTC](https://discuss.openedx.org/t/how-do-program-enrollments-work/8809/1 "2022-11-28T21:21:42Z")

</div>

Looking at the understanding how Program enrollments work within Open edX.

This support article suggest that once you enroll in a course that is a part of a program credential that the program will appear on the LMS Programs dashboard.

> **[How do I enroll in a program?](https://support.edx.org/hc/en-us/articles/227443927-How-do-I-enroll-in-a-program-)**
>
> You join a program on edX.org simply by enrolling in any course that is part of that program -- there's no application.
> Program credentials offered on edX.org
> You can browse all of our available pr...

Is there any reason that all courses within a program don’t get registered to the learner’s account?

Is there a way to register for all courses in a program that can be handled by the learner or staff/admin member?

I noticed that there is a LMS `<lms-domain>/support/link_program_enrollments` page that allows you to link the Program UUID to an `<external_student_key,lms_username>`. I don’t have the `external_student_key` value so I don’t know what to put there.

 ![image](https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/e/e4462690537228d1a57dba3f16b6adbc0788ba3a.png)

I also noticed that there is a `<lms-domain/api-docs` section for `program_enrollments`. When are these endpoints called?

 ![image](https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/9/98c6612a1e1dd4b94e386a9557214ff30adc00ec.png)

It appears that you need to schedule the `cache_programs` management command to update the LMS cache with updated program information. Is there documentation on how to do that?

> <https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/catalog/management/commands/cache_programs.py>

I see information here about running cache\_programs but this looks like a one time thing and not scheduled. Tutor documentation appears to say execute this command whenever you make a new or modify an existing program change.

> **[GitHub - overhangio/tutor-discovery: Course Discovery plugin for Tutor](https://github.com/overhangio/tutor-discovery#caching-programs)**
>
> Course Discovery plugin for Tutor. Contribute to overhangio/tutor-discovery development by creating an account on GitHub.

cc @traek728 @becdavid @regis @kmccormick @sambapete

---

<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:** [November 28, 2022, 9:58pm UTC](https://discuss.openedx.org/t/how-do-program-enrollments-work/8809/2 "2022-11-28T21:58:46Z")

</div>

Sorry @Zachary_Trabookis we haven’t been able to make this work on our end. That last time we looked at it was pre-Tutor.
