# Help with PROFILE\_EXTENSION\_FORM

**URL:** <https://discuss.openedx.org/t/help-with-profile-extension-form/19425>\
**Category:** Site Operators\
**Created:** [August 24, 2026, 5:11pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425 "2026-08-24T17:11:11Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 24, 2026, 5:11pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/1 "2026-08-24T17:11:11Z")

</div>

Hi,

I am trying to configure `REGISTRATION_EXTENSION_FORM` in our platform, to add new fields. I am on Verawood.

I forked @bryantt-v’s repository [GitHub - calculquebec/custom-extra-fields: An example app for extending user profile fields in Open edX · GitHub](https://github.com/calculquebec/custom-extra-fields) , added it to our `OPENEDX_EXTRA_PIP_REQUIREMENTS`, and configured

`PROFILE_EXTENSION_FORM = 'custom_extra_fields.forms.CustomExtraFieldsForm'`

in `openedx-common-settings`. I also configured this in the django admin site configurations:

```auto
{
...
    "extended_profile_fields": [
        "wants_newsletter",
        "position",
        "research_area"
    ]
}

```

Now, when I try to open the Profile and the Account pages, I get errors.

In the logs, I see errors such as

```auto
lms-1 | account_settings = get_account_settings(request, [username], view=request.query_params.get("view")): ProgrammingError(1146, "Table 'openedx.custom_extra_fields_customextrafields' doesn't exist")

```

Is there something else I need to do beside those two configurations ?

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 24, 2026, 5:34pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/2 "2026-08-24T17:34:16Z")

</div>

Mmmm, I think I am missing a “migration”. That step is not really explained in the doc as far as I could find. But it seems that `tutor local do init` is taking care of it.

It would be good if such step was actually documented, with the commands to run.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 24, 2026, 5:43pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/3 "2026-08-24T17:43:23Z")

</div>

Ok, after running `tutor local do init`, I no longer have an error in the profile or account pages.

However, I also do not see the extended form in the registration page, nor on the profile or account page (where I would expect that users are able to change their answers).

Any guidance on what might be missing ?

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 24, 2026, 6:33pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/4 "2026-08-24T18:33:47Z")

</div>

In fact, grepping for `PROFILE_EXTENSION_FORM` through the code base, I find no occurence of such in any of the frontend-app repositories, only in edx-platform. Is this bit of code expected to already be usable in one or more of the frontend apps ?

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 24, 2026, 8:20pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/5 "2026-08-24T20:20:18Z")

</div>

Antigravity managed to write a plugin slot to use with `org.openedx.frontend.profile.additional_profile_fields.v1`

That makes the fields appear in the Profile page. It does not, however, add the fields at registration, which is what I was aiming to do. Any guidance for this would be appreciated.

---

<div class="post-metadata">

**Author:** ![sarina](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sarina/32/2308_2.png) [@sarina](https://discuss.openedx.org/u/sarina)\
**Post date:** [August 25, 2026, 4:50pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/6 "2026-08-25T16:50:46Z")

</div>

Hi @mboisson - I’m not actually sure if this will be helpful, but I tried (and failed) to update documentation in this PR: [Update docs: Adding Custom Fields to the Registration Page by sarina · Pull Request #1451 · openedx/docs.openedx.org · GitHub](https://github.com/openedx/docs.openedx.org/pull/1451)

I didn’t understand the review feedback on the PR so I’ve gone ahead and closed it. However if you think this documentation _is_ helpful and want to assist in review/rewriting to get it merged, please feel free to add review comments & I can reopen it.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 25, 2026, 7:04pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/7 "2026-08-25T19:04:02Z")

</div>

Hi @sarina

I had a look at your PR, and while I was missing the `REGISTRATION_EXTRA_FIELDS`, adding the following to my tutor plugin does not make the fields appear at registration

```auto
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """PROFILE_EXTENSION_FORM = 'custom_extra_fields.forms.CustomExtraFieldsForm'"""))
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """REGISTRATION_EXTRA_FIELDS['wants_newsletter'] = 'optional'"""))
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """REGISTRATION_EXTRA_FIELDS['position'] = 'required'"""))
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """REGISTRATION_EXTRA_FIELDS['research_area'] = 'required'"""))
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """ENABLE_DYNAMIC_REGISTRATION_FIELDS = True"""))

```

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 25, 2026, 7:10pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/8 "2026-08-25T19:10:29Z")

</div>

Update, adding:

```auto
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """REGISTRATION_EXTRA_FIELDS['country'] = 'required'"""))
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """REGISTRATION_EXTRA_FIELDS['gender'] = 'required'"""))

```

does make those two fields appear to the registration form.

However, it only works for those pre-existing fields. It does not seem to work for the fields that have been added by our custom-extra-fields app.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 25, 2026, 7:53pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/10 "2026-08-25T19:53:18Z")

</div>

Digging further, I see that enabling

```auto
REGISTRATION_EXTRA_FIELDS['position'] = 'required'
REGISTRATION_EXTRA_FIELDS['research_area'] = 'required'

```

does actually add validation that those fields must be present in the payload…

I see that through the developer tools, the response from the server is:

```auto
{
  "position": [
    {
      "user_message": "Il vous manque un ou plusieurs champs obligatoires"
    }
  ],
  "research_area": [
    {
      "user_message": "Il vous manque un ou plusieurs champs obligatoires"
    }
  ],
  "error_code": "validation-error"
}

```

however it does _not_ produce the form items in the registration page. So it makes registration impossible.

---

<div class="post-metadata">

**Author:** ![sarina](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sarina/32/2308_2.png) [@sarina](https://discuss.openedx.org/u/sarina)\
**Post date:** [August 25, 2026, 8:05pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/11 "2026-08-25T20:05:09Z")

</div>

Unfortunately I don’t actually know anything about this 😅 I tried to take over a PR that someone else wrote hoping that it would be easier for them to do a PR review than writing the docs. That didn’t happen, unfortunately, and am still hoping someone who knows more than me is willing to help get the docs improved and merged.

---

<div class="post-metadata">

**Author:** ![bryantt-v](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/bryantt-v/32/5283_2.png) [@bryantt-v](https://discuss.openedx.org/u/bryantt-v)\
**Post date:** [August 25, 2026, 10:49pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/12 "2026-08-25T22:49:45Z")

</div>

Hi @mboisson!

This feature still needs some changes in the MFE to work properly. Please use the changes in this PR: [feat: extra registration fields improvements by BryanttV · Pull Request #1669 · openedx/frontend-app-authn · GitHub](https://github.com/openedx/frontend-app-authn/pull/1669) .

The step-by-step instructions on what you need to configure to make it work are explained right there. However, I will also explain it here in a bit more detail:

1. Install this Django app to use extra user fields: [GitHub - BryanttV/custom-extra-fields: An example app for extending user profile fields in Open edX · GitHub](https://github.com/BryanttV/custom-extra-fields) . This is just an example plugin; you can also have your own plugin with your own fields. Since it has a Django model, it is necessary to run migrations.

2. Add the following setting to your platform: (You can also use `REGISTRATION_EXTENSION_FORM`, however, this setting will be deprecated.)

3. Create a new site configuration in `{your-lms-domain}/admin/site_configuration/siteconfiguration/add/` and add the following JSON:

With this configuration, all configured fields are required to complete the registration; however, they can be set as optional or hidden. The configuration depends on your needs.

`REGISTRATION_EXTRA_FIELDS` can have the following values:

- `"required"` — mandatory to complete registration.
- `"optional"` — it is shown but can be left empty.
- `"hidden"` — it is not shown (default behavior if it doesn’t appear in the dict).

For it to work correctly with your new custom fields and save them to the DB, you must also add them to the `extended_profile_fields` list.

I hope this helps!

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 26, 2026, 12:44pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/13 "2026-08-26T12:44:00Z")

</div>

Hi @bryantt-v

The above PR does not merge on the frontend-base branch. There are just too many conflicts.

Also, @sarina, if this PR (or equivalent in frontend-base) is required, that means Verawood’s shipping of this feature is broken, doesn’t it ?

Best,

Maxime

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 26, 2026, 1:13pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/14 "2026-08-26T13:13:51Z")

</div>

I tried to apply the changes from your PR manually to our version of the frontend-base branch:

[https://github.com/calculquebec/frontend-app-authn/compare/cq/verawood-app.dev...calculquebec:frontend-app-authn:cq/verawood-app.dev2?expand=1](https://github.com/calculquebec/frontend-app-authn/compare/cq/verawood-app.dev...calculquebec:frontend-app-authn:cq/verawood-app.dev2?expand=1)

It still does not display the fields.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 26, 2026, 1:27pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/15 "2026-08-26T13:27:23Z")

</div>

Ok… this is _wild_…

The extra fields _do appear_… and _do not appear_, depending on how many times I refresh the page… 🤯

Here is a recording of me refreshing the page:

You can see the “Position” and “Research area” fields appear… and disappear, depending on how many times you refresh the page.

What is going on here ?!

Also, the “news letter” checkbox _never_ appears, even though I have

```auto
hooks.Filters.ENV_PATCHES.add_item(("openedx-common-settings", """REGISTRATION_EXTRA_FIELDS['wants_newsletter'] = 'optional'"""))

```

it should appear but not be required to check.

---

<div class="post-metadata">

**Author:** ![mboisson](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mboisson/32/7551_2.png) [@mboisson](https://discuss.openedx.org/u/mboisson)\
**Post date:** [August 26, 2026, 9:30pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/16 "2026-08-26T21:30:32Z")

</div>

The only way I managed to get the custom fields to show up is by making them optional, in which case they show on a _second page_ after the initial registration is done. If they are required, then they sometimes show up and sometimes not. If they are optional, they consistently show up, but on a second page. I have not managed to get them to show up consistently in the main registration page.

---

<div class="post-metadata">

**Author:** ![arbrandes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/arbrandes/32/158_2.png) [@arbrandes](https://discuss.openedx.org/u/arbrandes)\
**Post date:** [August 31, 2026, 3:52pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/17 "2026-08-31T15:52:14Z")

</div>

> [@mboisson](#):
>
> if this PR (or equivalent in frontend-base) is required, that means Verawood’s shipping of this feature is broken, doesn’t it ?

It sounds like this is grounds for a backported bugfix, yes.

And now that we’re in frontend-base land, this is the path the fix needs to take:

1. The PR is issued, reviewed, and merged in frontend-app-authn’s `master` branch - which as of last week is the frontend-base version.
2. A backport PR is merged to the `1.0.x` branch: the frontend-base version in Verawood.
3. A second backport PR is issued to the `legacy-mfe` branch: it’s `master`, but for the legacy MFEs.
4. A third backport is issued to `release/verawood.master`. Should be a simple cherry-pick from the above.

(And this is a major reason why we want to deprecate/remove the legacy MFEs as fast as humanly possible. 😅)

---

<div class="post-metadata">

**Author:** ![sarina](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sarina/32/2308_2.png) [@sarina](https://discuss.openedx.org/u/sarina)\
**Post date:** [August 31, 2026, 4:23pm UTC](https://discuss.openedx.org/t/help-with-profile-extension-form/19425/18 "2026-08-31T16:23:39Z")

</div>

> [@arbrandes](#):
>
> It sounds like this is grounds for a backported bugfix, yes.

@arbrandes is there a ticket/plan for making & backporting this bugfix? @bryantt-v - is that a thing you can help with?

Also I’d appreciate it if someone would volunteer to help finish getting the docs over the line at some point. Unfortunately I won’t be able to pick it up.
