Enhanced Certificate Generation: Completion, Grades, and Tiers

Overview

We’ve built a new, flexible certificate and credential system that supports PDF certificates, multiple eligibility rules (not just grades), tiered recognition, and badges; all built to be extensible and maintainable.

Problem

The certificates you can create in Open edX today mostly just look at a student’s overall course grade. But we know that teaching and learning aren’t always that simple. Maybe you want to recognize students who complete all lessons, pass a tough final exam, or even engage in course discussions. The current system doesn’t easily let you set up those kinds of detailed rules or offer different certificate levels.

We’ve looked at existing options, and unfortunately, many are limited, outdated, or need a lot of extra work to fit these needs. Plus, complex technical workarounds just add more hassle behind the scenes.

So, we’ve built an easy-to-manage system that fits right into Open edX and gives educators more flexibility. This system can support different types of certificates and badges, like:

  • Certificate of Achievement: For students who pass both assignments and the final exam.
  • Certificate of Completion: For students who complete a set percentage of the course.
  • Badges: For achievements of completion.
    “Learning Paths” Credentials: For students who successfully complete a full set of courses within a Learning Path. (The Core Product Working Group is currently developing a solution to support course bundling and sequencing, for this feature idea, we’re referring to it as “Learning Paths.”)
  • Special Achievements: Recognizing extra things like forum activity or specific performance milestones.

Use Cases

  • As a course author, I want to easily set credential rules like “pass final exam and all assignments” or “complete 80% of course content” to better reward achievement.
  • As a learner, I want clear, tiered recognition for achievements across courses and learning paths, not just a single certificate.
  • As a platform admin, I want a maintainable, extensible plugin that integrates smoothly with Open edX, minimizing system complexity and upgrade risks.

Supporting Data

This system is already deployed in production with these features:

  • PDF certificate generation
  • Completion-based and grade-based eligibility
  • Granular grading logic (eg. minimum final exam score)
  • Multiple certificate tiers within courses
  • Combined eligibility rules (completion + grades)
  • Support for badges and Learning Path credentials
  • Full Learning Path compatibility
  • Roadmap for plugin support to allow custom credential logic and generation

Here’s a quick look at how this compares with what’s currently possible in Open edX:

Feature Current Open edX Proposed Feature
Certificate Format Basic PDF/HTML Richer PDF support
Eligibility Criteria Based on total course grade Completion, grade thresholds, or both
Granular Grade Logic Total grade only Specific requirements (eg. “70% on final exam”)
Multiple Certificate Tiers One per course Tiered certs (eg. Pass, Merit, Distinction)
Learning Path Support Not available Fully supported
Extensibility Limited Plugin-ready for logic and output
System Design Static and tightly coupled Modular, API-driven, minimal dependencies on core models

We’re sharing this to gauge interest across the community and see if others are facing similar limitations. Posting here allows us to:

  • Collect feedback and ideas
  • Build a broader consensus for prioritization
  • Explore collaboration and co-funding to integrate this as a shared, supported feature in Open edX

If you find this useful, please comment, and ask questions your input is key to making this happen :slight_smile:

2 Likes

@egordon @jmakowski @Mahnoor_Sarwat I’d be interested in your feedback! :slight_smile:

1 Like

Thanks for sharing putting this together, Cassie! A few thoughts and questions:

  • Will there be weighting or anti-spam logic? For example, how do we prevent “spam” engagement just to earn a badge?
  • How will authors define certificate logic? Is there a form-based builder, or do they configure rules manually?
  • Will this support translations/localization for global deployments?
  • I think considering CBE would also be helpful here
  • Can learners track progress toward these credentials in real time? Especially for Learning Paths?

Really excited to see where this goes!

1 Like

this looks cool, especially plug-in support for custom logic and generation. I have a few questions:

  1. How will this integrate with the current Credentials IDA? Will use the Badges and Verifiable Credentials apps that are already in that IDA? That IDA is already extensible and plug-in ready for Badges, Verifiable Credentials, extra credentials, and program certificates. It’s not flexible with regards to course certificates, however; it delegates the logic for generating a course certificate to edx-platform.
  2. Will this use any remnants of the old PDF certificate logic that has been almost but not entirely ripped out?
    • If so, which parts of it will use?
    • If not, will it make sure to remove all of those old components so they don’t conflict with the new code?
    • Will it rely on Mongo and permanent hosting of PDFs and verification signing files like the old system?
  3. I absolutely agree that it would be great to be able to have more modular grading logic, but some of the limitations that you list aren’t exactly limitations of the system. For example, you can already make a certificate predicated on getting 70% on your final exam.
  4. Has this been developed in conjunction with any of the work going on at Axim to rethink how we handle credentials? @e0d has been leading some interesting architecture, and there would be value in combining efforts.
1 Like

I’m curious to know how this was implemented. I suspect that it was built as a new platform plugin, but please let me know whether that’s correct.

We’ve been investing in adding things like badging, verifiable credentials integration, Credly and Accredible integrations via the Credentials IDA. I ask my self alot whether having a separate IDA for that makes sense :slight_smile: There are quite a few valuable features that are in the IDA today. They are mostly based on events.

1 Like

@e0d Exactly what you thought. Here is the repo GitHub - open-craft/learning-credentials.

1 Like

@arunmozhi I would love to see credential and certificate flexibility being part of a coherent architectural plan (which does not mean that I am possessive about keeping that coherent plan being the existing, separate, Credentials IDA; I know @e0d has been thinking for a while about moving that functionality back into the monolith).

But instead of having a credentials IDA with a set of functionality, and a platform plug-in with an overlapping-but-distinct set of functionality, I’d like to have an architectural discussion about what to put where. Maybe we should keep both the plug-in and the IDA. In some cases they’d serve very different purposes, such as added flexibility to course certificates which belongs in the platform, versus program certificates which (as programs are currently construed) don’t belong there.

It would be good to discuss which functionalities each one should add, and write up an ADR about what and why. That way, for example, we won’t end up with a third implementation of badges (the one in the credentials IDA, and the old one that’s in the monolith already).

I love this increased level of criteria for certificates!

  • In our Ethiopian use case, we actually had many complaints that learners would game the system by just jumping ahead to the quizzes and guessing the answers to the multiple choice questions so they could get their certificates (which are required). Adding the completion percent would fix that. I would point out that we’ve noticed some “glitchiness” in the completion percentage (we have some users who report that they cannot get to 100% but are stuck at 98%, even when they have done everything), but its not a enough of a problem to prevent using it, just a point to consider in maybe being a little generous on what is set there.
  • I also like the ability to set a criteria for a specific gradable item (like the final exam), as we’ve played the “which grading combo makes the most sense” game, when what would be most helpful is emphasizing the final exam.
  • LOVE that it will work with Learning Paths, as we are very interested in that feature! :slight_smile:
2 Likes

@deborahgu I fully agree about creating an ADR to discuss the architectural plan.

I think the main reason @cassie created this post in the “Feature Requests” section and didn’t include the link to the plugin right away was, probably, to avoid the conversation getting into the technical bits too early.

From the discussion so far, there seems to be fair amount of things that need to be understood and streamlined from the product perspective as well. That is a good thing, as there is definitely interest in the community for an improved and more flexible solution.

1 Like

@deborahgu and @Mahnoor_Sarwat I’m compiling a list of answers to your questions and will answer them in one fell swoop :slight_smile:

@egordon :woman_dancing: :star_struck: Thanks for the great feedback. It’s really helpful to hear how this plays out in the real world. And how this could be a positive addition to your use case.

@Agrendalath @arunmozhi Do you know if anyone is aware of the above issue?

@arunmozhi @deborahgu Exactly! I wanted to gauge how widespread the pain point is before diving into technical details. If it turns out to be a common need, we can think through a more general, scalable solution that’s worth building out.

That said, we’ll still address your technical questions here @deborahgu so there’s clarity on what we’ve already built :slight_smile:

1 Like

Yes. I have a fix for this. We now have the upstreaming budget, so I can open the PR next week.

1 Like