How to convert all the enrollments from audit to professional

How to convert all the enrollments from audit to professional or how to solve the problem with enable free certificates? in Ironwood

Hi @jaqusa!

What platform release are you running? If you are running the latest ironwood.2 there’s support for free certificates.

To set them up, you’ll need to follow these instructions:

  1. Make sure the feature flag that disables honor certificates is disabled. To set it, edit lms.env.json and cms.env.json and edit the FEATURES keys as following:
    "FEATURES": {
  1. Then, follow the certificate set up instructions as per described in the edX documentation:
  2. After the certificates are set up, you’ll need to add the honor mode to the courses that you wish to offer certificates. You can do that using the django admin panel: http://localhost:18000/admin/course_modes/coursemode/add/ (change localhost:18000 by the url of your instance).
    You just need to set course, mode and display name and leave the other as defaults.
  3. From that point on, Studio will enable you to set up certificates for the selected course.

With certificates enabled and set up, you’ll just need to make sure you users are enrolled as honor instead of audit if you’re using and external enrollment API.
New users that enroll into the course through the platform will be enrolled as honor.

As for changing enrollment tracks, I’m not sure if it can be easily done through django shell, but there are some implications on the grades as described in the docs.


Hi @giovannicimolin
Thank you for your help.

I have already done all these steps before, the problem I have is that the users I register always register as audit.
Do you know how that can change?

How are you enrolling your users? Are they self-enrolling, or are you running some sort of bulk-enrollment command?

Hi @jill They are invited by the instructors of the courses through their instructor panel

@jaqusa Ah yes, thank you for the clarification.

The default course mode used by enrollments is determined by the LMS environment settings, so will require a sysadmin to change it for your site.


Update the /edx/app/edxapp/lms.env.json to insert this block:

    "name": "Honor",
    "slug": "honor",
    "bulk_sku": null,
    "currency": "usd",
    "description": null,
    "expiration_datetime": null,
    "min_price": 0,
    "sku": null,
    "suggested_prices": ""

Code references:

Juniper and above

Recent releases use a YAML file instead of the JSON file to set environment variables, so add this block to /edx/etc/lms.yml:

  name: 'Honor'
  slug: 'honor'
  bulk_sku: null
  currency: 'usd'
  description: null
  expiration_datetime: null
  min_price: 0
  sku: None
  suggested_prices: ''

Via ansible configuration

Add the above COURSE_MODE_DEFAULTS block to the EDXAPP_LMS_ENV_EXTRA variable.

1 Like


hello all
I am using ironwood.2 and was able to switch default course mode of operation with below mentioned configuration.
“name”: “Honor”,
“slug”: “honor”,
“bulk_sku”: null,
“currency”: “usd”,
“description”: null,
“expiration_datetime”: null,
“min_price”: 0,
“sku”: null,
“suggested_prices”: “”
I find it difficult to each time login as /admin and enable honor certificates


I Just want my staff to decide whether the course certificate to enabled or not. every time involving admin looks to be a little bottleneck for a small organization

any guidance here will be helpful


@venkat.330 If you’ve set the default course mode to honor, do you actually have to create a new one for each course? I think that if there is no course mode created for a course, the system uses the configured default course mode.

1 Like

I just ran into a similar issue as this, thanks @jill for the super helpful walkthrough!

I’d like to add just one additional tidbit: one will want to also include the COURSE_MODE_DEFAULTS override in studio.yml, or for an Ansible deployment add it to EDXAPP_ENV_EXTRA instead of EDXAPP_LMS_ENV_EXTRA.

Background, as far as I understand it: While CourseMode is defined in the “common” course_modes Django app that both the LMS and Studio use, it populates its DEFAULT_MODE object at runtime from the django.conf.settings import, which is different for the LMS and Studio. So by overriding COURSE_MODE_DEFAULTS just for the LMS, it’s only the LMS that knows about them, and Studio does not. Thus for example if you try to add a certificate to a course, Studio will complain “This course does not use a mode that offers certificates.”

In short: for anyone using Studio, probably best to override COURSE_MODE_DEFAULTS in the config files for both LMS and Studio, or use the EDXAPP_ENV_EXTRA inventory variable for Ansible.