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
this looks cool, especially plug-in support for custom logic and generation. I have a few questions:
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.
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?
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.
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.
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 There are quite a few valuable features that are in the IDA today. They are mostly based on events.
@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!
@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.
@deborahgu and @Mahnoor_Sarwat I’m compiling a list of answers to your questions and will answer them in one fell swoop
@egordon 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.
@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