Learning
Learning data & automation
Namespaces, workflow events, reporting surfaces, and API reference links for Learning.
JQL Namespaces
The primary namespaces follow the module models in src/learning/models.py. Use /reference/learning for the curated namespace reference, supported intents, fields, filters, permissions, and examples.
| Namespace | Use it for |
|---|---|
learning.Category, learning.Instructor, learning.Tag, learning.Course | Course catalogue metadata and authoring dimensions. |
learning.CourseSection, learning.CourseItem, learning.Quiz, learning.QuizSection | Lessons, course structure, and assessment content. |
learning.CourseEnrollment, learning.CourseProgress, learning.LessonProgress, learning.QuizAttempt | Enrollment, progress, quiz attempts, reviews, and certificates. |
learning.LearningPath, learning.LearningPathCourse, learning.LearningPathEnrollment | Sequenced programs and learner assignment. |
learning.Testimonial, learning.PlatformStat, learning.HomepageConfig, learning.LearningPillar | Learning portal landing content and metrics. |
learning.LearningContentRegistration, learning.LearningContentImportJob, learning.LearningLaunchSession, learning.LearningAttempt | SCORM/xAPI registration, launch, runtime, and normalized learner events. |
Useful Workflow Events
Prefer explicit automation event constants where the backend defines them. Where a module has no dedicated event class yet, model workflows around create, update, status, assignment, approval, publish, post, and archive transitions on the namespaces above.
learning.Course:createlearning.Course:updatelearning.Course:publishlearning.CourseEnrollment:createlearning.CourseEnrollment:updatelearning.CourseProgress:updatelearning.QuizAttempt:createlearning.CourseCertificate:createlearning.LearningPath:createlearning.LearningPathEnrollment:createlearning.LearningContentRegistration:createlearning.CanonicalLearningEvent:create
Create And Update Patterns
- Create events are best for notifications, initial assignment, SLA timers, provisioning, and first-time validation.
- Update events are best for synchronization, report enrichment, downstream recalculation, and integration callbacks.
- Status-change events are best for approvals, escalations, posting, publishing, cancellation, rejection, or completion.
- Assignment events are best for task creation, manager notifications, workload routing, and access review.
- Delete events should be rare; prefer archive, cancel, close, void, suspend, or deactivate when historical reporting matters.
- External integrations should include the module record id, tenant id, owner, status, timestamps, and source system key.
- Workflow filters should narrow by status, type, owner, or amount so routine edits do not trigger noisy automation.
- Scripts should be used for calculations, transformations, and integrations that workflow nodes cannot express cleanly.
Reports And Dashboards
- Course enrollment and completion.
- Learner progress.
- Quiz attempts and scores.
- Certificate issuance.
- Learning path completion.
- SCORM/xAPI runtime activity.
- Catalogue and homepage metrics.
Automation Recipes
- When a new Learning record is created, notify the owner and create an onboarding or review task if required fields are missing.
- When a record enters a pending approval state, route it to the correct approver and set a due date.
- When a record is approved, update related Base objects, create downstream module records, or notify the requester.
- When a record is rejected, capture reason, notify the requester, and create a correction task if the process can continue.
- When a record is completed or posted, lock downstream assumptions and refresh reporting dimensions.
- When a record is cancelled, voided, archived, or suspended, notify dependent owners and stop open tasks where appropriate.
- When an integration fails, log the source payload key and create a task for the owning operations team.
- When a report shows stale records, trigger a recurring workflow that reminds owners before escalation.
Integration Guardrails
- Use the narrowest API key or integration role that can read and write the required namespaces.
- Do not let integrations bypass approval, posting, payment, fulfillment, or publication actions that users must perform in the UI.
- Use idempotency keys or source-system identifiers for imports and callbacks.
- Validate tenant ownership on every linked record before creating cross-module relationships.
- Avoid free-form status values; use the statuses and actions exposed by the module models and controllers.
- Keep workflow payloads small but include enough context for audit and troubleshooting.
- Test integrations with one complete lifecycle before scheduling bulk imports or recurring jobs.
- Review failed jobs and webhook logs as part of the module operating rhythm.
Reference Link
- Start with /reference/learning for namespaces, fields, filters, permissions, and intents.
- Pair this page with the setup and working pages so automation follows the same lifecycle users see in the product.
- For cross-module workflows, also review references for objects, tasks, tickets, reports, notifications, and workflow automation.