Managing user progress and certifications in Power Pages portals is a powerful way to track training completion, issue credentials, and build engagement. Whether you’re running an internal training program, an external educational platform, or compliance certification tracking, you can achieve this by combining Power Pages, Dataverse, Power Automate, and optionally Power BI.
This guide outlines how to set up a system to track user learning progress, issue certificates, and enable access to training history.
Goals
- Track which modules or quizzes a user has completed
- Display progress visually on the portal
- Automatically generate and issue a certificate upon completion
- Maintain certification records for compliance or proof
- Let users view and download earned certificates
Step 1: Design the Dataverse Tables
1. Training Module Table
- Title (Text)
- Description (Multiline Text)
- Module Type (Choice: Video, Quiz, PDF, etc.)
- Duration (Number – Minutes)
- IsActive (Yes/No)
2. User Training Progress Table
- User (Lookup to Contact)
- Training Module (Lookup)
- Completion Status (Choice: Not Started, In Progress, Completed)
- Completion Date (Date & Time)
- Score (Optional, Number)
- Certificate Issued (Yes/No)
3. Certificate Table
- User (Lookup)
- Training Module (Lookup)
- Certificate File (File Column or Note Attachment)
- Issued Date (Date & Time)
- Certificate Number (Auto-generated string)
Step 2: Set Up Permissions
Create a Web Role for “Authenticated Users” and ensure permissions for:
- Read access on
Training Module
table - Read/Write on
User Training Progress
table - Read access to their own
Certificate
records
Enable Entity Permissions and associate with appropriate Web Roles.
Step 3: Track Progress
When a user visits a training module, update their progress.
Method 1: Client-side JS
Use Web API to create/update progress as the user completes the module.
Xrm.WebApi.online.createRecord("new_usertrainingprogress", {
"new_userid@odata.bind": "/contacts(GUID)",
"new_trainingmoduleid@odata.bind": "/new_trainingmodules(GUID)",
"new_completionstatus": "In Progress"
});
Method 2: Power Automate
Use a Power Automate Flow triggered by a form submission or quiz result.
Step 4: Display Progress on Portal
Use a custom web template to fetch and render progress:
{% assign progresses = entities.usertrainingprogress | where: "user.id", user.id %}
{% for progress in progresses %}
<div>
<h4>{{ progress.trainingmodule.title }}</h4>
<p>Status: {{ progress.completionstatus }}</p>
<p>Completed on: {{ progress.completiondate | date: "%d-%m-%Y" }}</p>
</div>
{% endfor %}
You can visually represent progress using progress bars, icons, or percentage values.
Step 5: Automate Certificate Generation
Once all modules are completed, trigger certificate creation.
Option 1: Power Automate Flow
- Trigger: When training progress = “Completed”
- Actions:
- Generate a certificate PDF (using Word Template or HTML to PDF conversion)
- Create record in
Certificate
table - Upload PDF as a file or note
- Send confirmation email to user
Word Templates can use user/module fields to dynamically fill certificate text.
Step 6: Display and Download Certificates
Allow users to see and download their certificates from the portal:
{% assign certs = entities.certificate | where: "user.id", user.id %}
{% for cert in certs %}
<div>
<p>Certificate for {{ cert.trainingmodule.title }}</p>
<p>Issued: {{ cert.issueddate | date: "%Y-%m-%d" }}</p>
<a href="/_entity/file/certificate/{{ cert.id }}/certificatefile">Download</a>
</div>
{% endfor %}
Step 7: Progress Visualization (Optional)
Use Power BI or embedded charts to show:
- Completion percentage
- Module-wise progress
- Certification stats
You can embed a Power BI report inside a secure portal page using iframe or Power BI embedding.
Step 8: Certification Expiry and Re-certification (Advanced)
Add expiry logic:
- Add Expiry Date column in Certificate table
- Set Valid Period (in days) in Training Module
- Power Automate Flow to calculate and update expiry
- Send reminders when a certification is near expiry
Allow users to reattempt expired certifications using new quiz versions.
Step 9: Admin View and Export
Create a separate Power Pages area (or a model-driven app) for admins/trainers to:
- View user progress across modules
- Download/export certification records
- Filter by date, department, score
Step 10: Branding and Accessibility
- Style certificates with your organization’s logo and brand colors
- Add screen-reader support to progress bars and buttons
- Ensure users can navigate training and certificates via keyboard
Use Cases
- Internal compliance training for employees
- Educational platforms issuing certificates to students
- Product training portals for customers
- Partner onboarding and training