⭐ Why this plugin is unlike anything else available
Direct Campion textbook integration inside Moodle
▸ Campion Education is Australia's largest educational resource distributor. Without this plugin, RTOs manually cross-reference Moodle courses with Campion's portal — two logins, double data entry. The Campion Integration syncs resource requirements from Moodle to Campion automatically.
▸ Learners see their required textbooks on their Moodle dashboard without accessing a separate portal. The purchase link goes directly to their pre-populated resource list.
▸ Administrators reconcile enrolments against resource orders in one report. Enrolled learners without ordered resources are flagged automatically.
What is Campion Education?
Campion Education is Australia's leading educational resource supplier for schools, TAFEs, and RTOs. They supply textbooks, workbooks, and digital learning materials — and they run an online platform called Campion myConnect where students can access their digital resources.
If your RTO uses Campion as a resource supplier, your students need to log into both Moodle and Campion myConnect. This plugin removes that double-login problem and keeps both systems in sync automatically.
What is a "booklisting" or resource subscription? When Campion sets up your account, they create a subscription for each student to each resource (textbook or digital product). Each resource has an ISBN — the same identifier used on a printed book. A subscription ties a student's account to a specific ISBN, giving them access to that product on the Campion platform. This plugin manages those subscriptions automatically — creating them when students enrol and removing them when they leave.
The problem it solves
A real example — what it looks like in practice
Here is a complete walkthrough of what happens for a typical student at an RTO running Certificate II in Business (BSB20120).
Student experience
Jordan enrols in Cert II in Business
AutomaticThe RTO admin enrols Jordan in the BSB20120 course in Moodle. Behind the scenes, the Campion plugin immediately calls CreateUser to create Jordan's account on the Campion platform — Jordan doesn't need to do anything or even know this happened.
Jordan's workbook subscription is activated
AutomaticThe course uses the Campion resource "BSB20120 Learner Resource" (ISBN 978-1-86924-123-4). The plugin calls CreateSubscription, giving Jordan access to the digital workbook on Campion myConnect. No admin action needed.
Jordan logs into Moodle and opens their course
Jordan's actionJordan visits the RTO's Moodle site and signs in with their usual username and password. They open the BSB20120 course and see a section called "Course Resources" with a link labelled "Open Campion Workbook".
Jordan clicks the link — no second login needed
One clickJordan clicks "Open Campion Workbook". Moodle silently passes Jordan's email to Campion. Campion recognises Jordan's account, creates a secure one-time token, and opens the workbook directly. Jordan is never asked for a Campion username or password.
Jordan reads their digital workbook
WorkingJordan is now inside Campion myConnect, viewing their BSB20120 learner resource. They can read, annotate, and complete the digital activities. If they close the browser and come back tomorrow, clicking the same Moodle link takes them straight back in.
Jordan completes the course and is unenrolled
AutomaticSix months later, Jordan finishes the qualification and is unenrolled from the Moodle course. The plugin automatically calls DeleteSubscription to remove the workbook access and DeleteUser to remove Jordan's Campion account. No manual clean-up needed.
What the admin sees the whole time
In the Overview tab: Site ID and API Key show as "Connected". Both SSO and provisioning endpoints show green.
In the Users tab: Jordan's row appears with status "Active" and a "Last synced" timestamp from the moment of enrolment.
In the Subscriptions tab: One active subscription — Jordan → BSB20120 Learner Resource (ISBN 978-1-86924-123-4).
In the Activity Log: Every SSO login attempt is recorded — timestamp, outcome (success/fail), and Jordan's email.
Key benefits
No extra login for students
Students click a Campion resource inside Moodle and are taken straight in — no separate Campion username or password needed.
Accounts managed automatically
When a student enrols in Moodle, their Campion account is created. When they leave, it's removed. No manual admin work.
Resource access stays in sync
As students are enrolled and unenrolled from courses, their access to the matching Campion digital resources updates automatically.
Secure by design
Every login token is time-limited (5 minutes), signed with a secret key, and can only be used once — preventing replay attacks.
Full visibility from one dashboard
Admins can see every provisioned user, active subscription, ISBN/product, and a live audit log — all inside Moodle.
Works with AI Central Config
Credentials are stored in the AI Central Config plugin — one place to manage all your AI Grader plugin settings.
Single Sign-On (SSO) — how it works
SSO stands for Single Sign-On. It means a student logs in once (to Moodle) and can access both Moodle and Campion without logging in again. Here is exactly what happens behind the scenes:
Clicks a Campion resource link inside their Moodle course
Redirects the student to the Campion login page with their email pre-filled (login_hint)
Recognises the student by email, generates a signed JWT login token, and sends them back to Moodle
Validates the JWT signature, checks it hasn't expired, checks it hasn't been used before
Logs the student into Moodle automatically — they land on their dashboard, already signed in
There are two SSO directions:
Publisher-initiated — the student starts from inside Moodle and clicks a Campion link. Moodle redirects them to Campion with their email pre-filled. This is the most common flow.
IAM-initiated — the student starts from inside the Campion platform and clicks "Go to Moodle". Campion sends a signed JWT back to Moodle and this plugin logs them in automatically.
Automatic account management (provisioning)
"Provisioning" is the technical term for automatically creating, updating, and deleting accounts on a third-party system. This plugin exposes an API endpoint that Campion calls to keep accounts in sync. You never have to touch Campion's admin panel for day-to-day student management.
CreateUsertriggered when:A student enrols in a course with a Campion resourceCreates the student's account on the Campion platform
UpdateUsertriggered when:A student's name or email changes in MoodleKeeps the Campion account in sync with Moodle
DeleteUsertriggered when:A student is unenrolled or deleted from MoodleRemoves the student's account from Campion
CreateSubscriptiontriggered when:A student is given access to a Campion resourceActivates the student's access to that specific textbook or digital resource (by ISBN)
EditSubscriptiontriggered when:Access dates or resource details changeUpdates the subscription period or resource assignment
DeleteSubscriptiontriggered when:A student's resource access is removedRevokes access to that Campion resource
Who calls the API? Campion's system calls your Moodle's API endpoint — not the other way around. Your Moodle site is the source of truth for users and subscriptions. Campion sends requests to your endpoint with your API key, and Moodle updates its records and responds with the result.
Admin dashboard
Find the dashboard at Site administration → Campion Education → Manage Integration. It has five tabs:
Overview
Shows your Site ID, API Key status, and the exact URLs Campion needs to set up at their end. Copy-paste ready.
Users
Every student whose account has been provisioned to Campion, with their sync status and last-updated timestamp.
Subscriptions
All active resource subscriptions — which student has access to which ISBN/product, and when it expires.
Products / ISBNs
The product catalogue you have registered — each entry maps a Campion product ID to an ISBN and a display name.
Activity Log
A full audit trail of every SSO login, provisioning call, and API request — with timestamp, outcome, and details.
Student-facing resources page
Students can visit /local/campion/resources.php inside Moodle to see all the Campion resources they currently have access to. Each resource shows the product name and ISBN with a one-click launch button that takes them straight into Campion myConnect using SSO.
Security
The SSO system uses industry-standard JWT (JSON Web Tokens) with four layers of protection:
Signed JWT tokens
Every login token is signed with a shared secret using HMAC-SHA256. A token with a forged or tampered signature is rejected instantly.
5-minute expiry
Tokens are only valid for 5 minutes from the time they were issued. An old or intercepted token cannot be replayed.
One-time use (nonce tracking)
Each token has a unique ID (JTI). Once a token is used to log in, that ID is recorded in the database and can never be used again.
API key authentication
Campion's provisioning calls must include a secret API key in the request header. Requests without a valid key are rejected with a 401 error.
