Design an updated approach for course mode/track/seat type management

Description

Following on the work done recently to gather requirements for Master's courses, lay out the approach we'd like to follow for definition of course tracks/modes/seats, including the implications for edX-wide usage of course-discovery in this realm. This should include the following:

  • Design of the new model to define course track types and encapsulate related metadata and logic

  • Proposal for this model becoming the edX source of truth for course mode/track/seat types

    • how course creators specify a course's intended use (PubFE)

    • how this is stored in course-discovery models

    • what products are created in ecomm (seats and entitlements)

    • how/when LMS tracks are created

    • where DE and other groups should look for source of truth on mode/track/seat types

    • which aspects are specified at the course vs. course run level

    • what track type changes are allowed over time (e.g. adding an MVA run to a Masters-only course)

ACs

Open Questions

  • Does Data Engineering (DE) need paid_to_platform and paid_to_partner to be unique? I think this might break the MVA style of course run because that course run would be both.

    • This would be handled with these fields existing on the TrackType model.

  • Do we need Audit seats in Ecom or can we get rid of them?

    • Still need final confirmation, but DE didn't seem to think it was necessary.

Notes

-------------------------------------------------------------------------------------------------------------

Result of Ticket:
ADR for the design: https://github.com/edx/course-discovery/pull/2134
ERD for the design: https://www.lucidchart.com/invitations/accept/fdac1d2e-e394-4b57-8ea2-1881f37c90fc or

As for the interactions with other systems, we are holding off on making any diagrams that outline that work until closer to implementation since there are multiple approaches we could take and don't want to commit to any yet.

To capture for posterity, at the time of writing, Masters tracks in the LMS are made through a custom endpoint after a post_save hook in course-discovery. See links below:

All other tracks are created through the E-Commerce service when a Course is created in E-Commerce. Related links:

In the new implementation, it is unclear what behaviors would continue to exist in E-Commerce and which would be moved to Course Discovery, so all are captured above.

Steps to Reproduce

None

Status

Story Points

3

Assignee

Dillon Dumesnil

Reporter

Jason Myatt

Labels

Reach

None

Impact

None

Platform Area

None

Customer

None

Partner Manager

None

URL

None

Contributor Name

None

Groups with Read-Only Access

None

Actual Points

None

Category of Work

None

Platform Map Area (Levels 1 & 2)

None

Platform Map Area (Levels 3 & 4)

None

Epic Link

Sprint

None

Priority

Unset
Configure