# Failure to manually generate course certificate due to "USERID does not have a verified id"

**URL:** <https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060>\
**Category:** Site Operations Help\
**Created:** [November 5, 2021, 2:30pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060 "2021-11-05T14:30:52Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 5, 2021, 2:30pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/1 "2021-11-05T14:30:52Z")

</div>

I manually added my test student to my class exception list, as I have done for 2 other classes in which they successfully were granted completion certificates. In this new class however, when I try to generate the certificate it doesn’t work. In the tutor logs (I’m running Lilac), I see:

```auto
lms-worker_1 | 2021-11-05 14:17:41,592 WARNING 454 [edx_toggles.toggles.internal.waffle.flag] [user None] [ip None] flag.py:79 - Flag 'certificates_revamp.use_allowlist' accessed without a request
lms-worker_1 | 2021-11-05 14:17:41,596 INFO 454 [lms.djangoapps.certificates.generation_handler] [user None] [ip None] generation_handler.py:162 - USERID : COURSEID is on the certificate allowlist
lms-worker_1 | 2021-11-05 14:17:41,607 INFO 454 [lms.djangoapps.certificates.generation_handler] [user None] [ip None] generation_handler.py:227 - USERID does not have a verified id. Certificate cannot be generated for COURSEID.
lms-worker_1 | 2021-11-05 14:17:41,607 INFO 454 [lms.djangoapps.certificates.generation_handler] [user None] [ip None] generation_handler.py:165 - One of the common checks failed. Allowlist certificate cannot be generated for USERID : COURSEID.
lms-worker_1 | 2021-11-05 14:17:41,608 INFO 454 [lms.djangoapps.certificates.generation_handler] [user None] [ip None] generation_handler.py:110 - Cannot generate an allowlist certificate for USERID : COURSEID

```

Any ideas why the “USERID does not have a verified id” would fire, and how I can get around it?

---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 17, 2021, 8:51pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/2 "2021-11-17T20:51:05Z")

</div>

I added more users and this fails for all of them too. So I’m thinking maybe it’s an error in the setup of my certificates. I added the class as an honor-mode course under Django → Course Modes, like I did with other classes, so I don’t think it’s that. Any suggestions on other ways to debug certificate issues?

---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 17, 2021, 9:02pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/3 "2021-11-17T21:02:00Z")

</div>

Interestingly when I look at my Django interface it shows “Recent actions” and one of those actions seems to be adding certificates\_revamp.use\_allowlist to flags. But I don’t remember doing this, and googling for it shows there’s only 3 hits:

1. The Maple documentation about it being removed (I’m not on Maple, I’m on Lilac and haven’t upgraded AFAIK.)
2. This thread
3. The source .py script

I would only think I would have added “certificates\_revamp.use\_allowlist” if I was directed to do so by some forum post. But if I can’t find any forum posts anywhere that mention it other than this one…Am I hacked? 🙂 Does Tutor just add this by default? Is it safe to delete this?

---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 18, 2021, 12:10pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/4 "2021-11-18T12:10:30Z")

</div>

@jhynes @crice since I see you listed on this page: [edx-platform/001-allowlist-cert-requirements.rst at master · edx/edx-platform · GitHub](https://github.com/edx/edx-platform/blob/master/lms/djangoapps/certificates/docs/decisions/001-allowlist-cert-requirements.rst)

can you explain what “The user must have an approved, unexpired, ID verification” means, because that’s where I’m getting an error, and I need to figure out why my user’s are getting the “does not have a verified id” error so I can try to fix it. (I know that at least my test user is definitely fully verified on the platform. I would also note that many of these users have had manually-issued certs for past classes too. So manual cert issuance was working in the past but I can’t figure out why it’s not now for this new class. I would also note that I have set the default enrollment to honor, as discussed here: ["Certificates" submenu missing in Django admin - #2 by regis - Open edX - Overhang.IO](https://discuss.overhang.io/t/certificates-submenu-missing-in-django-admin/534/2), and I see everyone enrolled in honor for this honor certificate, so I don’t _think_ it should be something to do with honor status…)

---

<div class="post-metadata">

**Author:** ![jhynes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jhynes/32/2013_2.png) [@jhynes](https://discuss.openedx.org/u/jhynes)\
**Post date:** [November 18, 2021, 2:00pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/5 "2021-11-18T14:00:29Z")

</div>

Hi Rohan!

That error is referring to the ID verification requirement when generating an AllowList certificate for a user. These are created/managed by the `verify_student` Django app.

If you add an **approved** manual verification entry (http://\<django\_admin\_url\>/admin/verify\_student/manualverification/) for one of your users does it allow you to then generate the certificate?

Couple of pieces I want to verify and curious about:

- The course-run is setup to award Honor certificates
- You are running the Lilac release
- Did you recently update to the Lilac release? You said you didn’t have this issue previously, correct?

Thanks for any additional information you can provide!

---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 18, 2021, 2:22pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/6 "2021-11-18T14:22:02Z")

</div>

Yes, apparently adding an approved manual verification for my test user does allow me to generate a certificate!

Can you explain why that became required?

And is there a way to add multiple students at once? (Because I typically have some beta testers who go through a class and thus can’t get certificates automatically in open edx apparently, so I then need to issue them manually.)

And is that going to prevent non-manually-allowlisted students from getting certificates too?

Re the other questions:

1. Yes, the course run is set to award Honor certificates, and the default enrollment type is set to Honor
2. Yes, I’m running Lilac
3. I upgraded to Lilac on 2021-08-24, which also is apparently when I added the “certificates\_revamp.use\_allowlist” waffle flag (so I must have found it recommended somewhere…but I have no idea where.)

This is my first class since the Lilac upgrade, so it is possible that it was working on Koa and not working on Lilac and I didn’t discover it until now.

---

<div class="post-metadata">

**Author:** ![jhynes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jhynes/32/2013_2.png) [@jhynes](https://discuss.openedx.org/u/jhynes)\
**Post date:** [November 18, 2021, 3:18pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/7 "2021-11-18T15:18:04Z")

</div>

Thank you for the additional information.

I’m not aware of a way to add multiple students at once. If I find a way, I will share it.

I’m going to dig into this a bit. I need to remind myself what the Lilac codebase looks like (sorry, it’s been a bit since the release and there have been additional changes and cleanup for the Maple release).

**As a workaround** , you can remove the `certificates_revamp.use_allowlist` waffle flag. In Lilac this was optional if you wanted to take advantage of the new behavior. Removing this flag will allow you to fall back to the old behavior/code path and may unblock you.

---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 18, 2021, 7:20pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/8 "2021-11-18T19:20:46Z")

</div>

Thank you for confirming it’s safe to remove “certificates\_revamp.use\_allowlist”. I did that and I could then issue certificates for all students!

---

<div class="post-metadata">

**Author:** ![jhynes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jhynes/32/2013_2.png) [@jhynes](https://discuss.openedx.org/u/jhynes)\
**Post date:** [November 18, 2021, 7:32pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/9 "2021-11-18T19:32:46Z")

</div>

No worries, thanks for the confirmation it’s a usable workaround right now.

The new AllowList behavior was opt-in in Lilac but is the default in Maple. I am checking now to see if we have something we need to fix in Maple.

Thanks for the heads up!

---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [November 21, 2021, 6:24am UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/10 "2021-11-21T06:24:48Z")

</div>

OK, I think there is definitely a bug here now. I found the forum posts which told me to use “certificates\_revamp.use\_allowlist”, it was apparently [this one](https://discuss.openedx.org/t/my-manually-generated-course-completion-certificates-seem-to-disappear-every-day/5584/9) (no idea why that wasn’t showing up on Discuss search hits before, but it does now). Because I was also having the experience that if I didn’t have that, certificates would disappear. Now that I’ve removed it, I am once again back to certs disappearing…and it actually broke all the manually-issued certs in some classes :’( (I think they only break if someone goes and manually requests the cert…but it might also be if someone else completes the class. I’m not sure.)

so tl;dr: with “certificates\_revamp.use\_allowlist”, certs can’t be issued. Without it, they break post-issuance.

cc @crice who apparently made the suggestion to add “certificates\_revamp.use\_allowlist” in that thread.

---

<div class="post-metadata">

**Author:** ![jhynes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jhynes/32/2013_2.png) [@jhynes](https://discuss.openedx.org/u/jhynes)\
**Post date:** [November 22, 2021, 12:39pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/11 "2021-11-22T12:39:49Z")

</div>

Ah, thanks for the additional information, Rohan. I am sorry this has been such a thorn in your side.

I found the defect late last week and have a fix but still have some testing cycles to go through.

For clarification, the issue when using the new behavior (when the `certificates_revamp.use_allowlist` waffle flag is enabled) is with the generation of Honor certificates, not all certificates.

P.S. Unfortunately, crice is no longer with us over here. I’ll be working to fix the issue and will let you know when I have more to share.

---

<div class="post-metadata">

**Author:** ![jhynes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jhynes/32/2013_2.png) [@jhynes](https://discuss.openedx.org/u/jhynes)\
**Post date:** [December 2, 2021, 6:39pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/12 "2021-12-02T18:39:12Z")

</div>

Hi @Rohan,

I just wanted to give you a quick update. I believe I found where the issue is and have back-ported a fix to the Maple release that hopefully will fix this issue in the next release. Maple isn’t available yet (but I _believe_ it should be available in December).

Thank you for the additional information, it helped narrow down the issue.

Best,  
Justin

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/e/e0015f89e879bc75925b71fd11133ab15fe98297.png) [@system](https://discuss.openedx.org/u/system)\
**Post date:** [March 2, 2022, 6:40pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/13 "2022-03-02T18:40:09Z")

</div>

Closed on March 2, 2022, 6:40pm UTC

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

---

<div class="post-metadata">

**Author:** ![jalondonot](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jalondonot/32/2466_2.png) [@jalondonot](https://discuss.openedx.org/u/jalondonot)\
**Post date:** [May 8, 2022, 9:23pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/14 "2022-05-08T21:23:44Z")

</div>

Opened on May 8, 2022, 9:23pm UTC



---

<div class="post-metadata">

**Author:** ![Rohan](https://avatars.discourse-cdn.com/v4/letter/r/f19dbf/32.png) [@Rohan](https://discuss.openedx.org/u/Rohan)\
**Post date:** [May 9, 2022, 12:58am UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/15 "2022-05-09T00:58:19Z")

</div>

I’m still running Lilac, and I had a student asking about getting their certificate generated. It looks like I’m still experiencing the behavior that I can’t generate certificates manually since certificates\_revamp.use\_allowlist is set.

Can you let me know a particular git fix and maybe I can apply it to my forked edx-platform if it’s not too complicated?

---

<div class="post-metadata">

**Author:** ![jhynes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/jhynes/32/2013_2.png) [@jhynes](https://discuss.openedx.org/u/jhynes)\
**Post date:** [May 20, 2022, 5:39pm UTC](https://discuss.openedx.org/t/failure-to-manually-generate-course-certificate-due-to-userid-does-not-have-a-verified-id/6060/16 "2022-05-20T17:39:14Z")

</div>

Hi Rohan,

Sorry about the late reply. The email I received for the thread response was lost in a shuffle of email. My back-ported fix to Maple for this issue was [Merge pull request #29492 from edx/jhynes/microba-1594\_maple-fix · openedx/edx-platform@00e4dab · GitHub](https://github.com/openedx/edx-platform/commit/00e4daba0267bbe87942071f2df1de1c480ed311).
