Programs in Open edX

It is my understanding that part of the code that handles Programs or MicroMasters is private and therefore not available to Open edX instances. I could be wrong… I tried setting Programs in ecommerce and there are a few things it seems that are not available to Course Discovery and ecommerce.

I am interested in knowing how do Open edX instances are handling Programs?

Did you need to create a new Front End or a new Django App? How did you create links between the Programs and the courses? Did you create a marketing site over the catalog of courses from your LMS?

Thanks for any information.

P.S. If you did implement something like that and you have your own fork, I definitely would like to look at the code. Thanks.


Hi Pierre,

I’m on the Master’s Squad at edX. As we’ve expanded our program offerings, the way we handle program marketing, structure, and enrollments has been rapidly evolving. I believe that the majority of the new code is public; admittedly, however, it is not all documented to a level where it would be easily adoptable by Open edX instances.

On, the source of truth for program structure and metadata is in Discovery. There are a couple ways of structuring a program, depending on the use case. Once configured in Discovery, the program should be queryable through the Discovery Catalog API. The LMS can be configured to call that API and cache the results, making program structure data available in the LMS. I can expand on this more if it’d be helpful.

Let me know if you have any questions or specific use-cases you’re trying to fulfill. I am not very familiar with the eCommerce service, but if you have questions regarding it, then I can ask around.



Hi Kyle,

The last time I checked, earlier this summer, there was a part gluing ecommerce and Discovery together that was missing from Open edX. I had a discussion with Matt Hughes around May 29 in #general about it.

Looks like I can create Programs through ecommerce but there are no ways to “market” them as is without developing our own marketing site. We may need to introduce something in Richie with our friend from FUN.

There is indeed a closed-source marketing site – It pulls program data from the Discovery API. You are correct in that if you would like to market your programs, the path forward is to build your own marketing site/frontend that uses Discovery as a data source.

Today, I believe that the eCommerce instance does not truly sell programs. It knows about them (by pulling from Discovery), but only uses them to apply discounts to groups of courses. When one “pursues” a paid program, they are actually just buying an entitlement to every course in the program, with the appropriate discount applied (to see this in action, go to and click the Pursue the Program). I believe that all the code to achieve this is in Open edX.

As the idea of Program becomes more of a first-class citizen in Open edX, it may become more feasible to buy a “program entitlement” through eCommerce, allowing you to “enroll in the program” in LMS. There is a new program_enrollments app in the LMS (probably not in Ironwood) that is moving us in that direction, but it is only used for Master’s Degrees through external partners for now. I imagine that it’ll be generalized to all programs and made Open edX -friendly within the next couple of releases.

I hope that this information helps, and I’m always happy to answer any questions.


Thanks Kyle. This information is consistent with what I had found while digging around the code and playing with it on our test system.

I’ll get in touch if I have more questions or need some more explanations.

Have a nice day.