This guide walks you through building an Excel report that shows checkpoint assessment results enriched with learner details. The report covers scores, completion status, time spent, and checkpoint deadlines, joined to learner name, programme name, and case owner from the Users v1 feed.
What you need before you start
Microsoft Excel (desktop version with Power Query, included in Excel 2016 and later)
Your Aptem tenant URL, for example
https://yourtenant.aptem.co.ukYour OData API key (contact your Aptem administrator if you do not have one)
Access to the OData v2 feeds on your tenant
What this report includes
Column |
Source |
Description |
|---|---|---|
Checkpoint name |
Checkpoints (v2) |
The name of the checkpoint |
Learner ID |
Checkpoints (v2) |
The numeric learner identifier (joins to Users v1) |
Learner name |
Users (v1) |
The learner's full name |
Programme name |
Users (v1) |
The name of the learner's current programme |
Case owner |
Users (v1) |
The learner's assigned case owner |
Programme ID |
Checkpoints (v2) |
The programme the checkpoint belongs to |
Checkpoint type |
Checkpoints (v2) |
How the checkpoint was triggered (for example PeriodicGeneration) |
Status |
Checkpoints (v2) |
Current status of the checkpoint (for example Completed) |
Questions count |
Checkpoints (v2) |
Total number of questions in the checkpoint |
Score |
Checkpoints (v2) |
The learner's score |
Correct answers |
Checkpoints (v2) |
Number of questions answered correctly |
Created date |
Checkpoints (v2) |
When the checkpoint was created |
Completed date |
Checkpoints (v2) |
When the checkpoint was completed (blank if not yet complete) |
Checkpoint end date |
Checkpoints (v2) |
The deadline by which the checkpoint must be completed |
Time spent |
Checkpoints (v2) |
Time the learner spent on the checkpoint, in seconds |
Understanding Power Query
Power Query is a data connection tool built into Excel. It lets you pull data from external sources (such as the Aptem OData feeds), combine tables together, and load the results into a worksheet. You access it from the Data tab in Excel.
You do not need to write code to use Power Query. However, this guide includes the query code (called M code) for each step, which you paste into the Advanced Editor. This is the most reliable way to set up OData connections.
Step 1: create the Checkpoints query
This query connects to the OData v2 checkpoint assessments feed and returns the checkpoint data including LearnerId, which you will use in Step 2 to join to the Users feed.
In Excel, select Data > Get Data > From Other Sources > Blank Query.
In the Power Query Editor, select Advanced Editor from the toolbar.
Delete any existing text and paste the following code, replacing
yourtenantwith your tenant name andYOUR_API_KEYwith your API key:
let Source = OData.Feed( "https://yourtenant.aptem.co.uk/odata/2.0/CheckpointAssessments?$select=LearnerId,CheckpointName,ProgrammeId,CheckpointType,Status,QuestionsCount,Score,CorrectAnswersCount,CreatedDate,CompletedDate,CheckpointEndDate,TimeSpent", [#"X-API-Token"="YOUR_API_KEY"], [Implementation="2.0"] ) in Source
Select Done.
In the Query Settings pane on the right, rename the query to
Checkpoints.Do not close the Power Query Editor yet — continue to Step 2.
Step 2: create the Users query
This query connects to the Users v1 feed and returns learner name, programme name, and case owner. You will merge this with the Checkpoints query in Step 3.
In the Power Query Editor, select Home > New Source > Blank Query.
Select Advanced Editor and paste the following code:
let Source = OData.Feed( "https://yourtenant.aptem.co.uk/odata/1.0", [#"X-API-Token"="YOUR_API_KEY"], [Implementation="2.0"] ), Users = Source{[Name="Users",Signature="table"]}[Data], SelectColumns = Table.SelectColumns(Users, {"Id", "UserProfile_FirstName", "UserProfile_LastName", "UserProgram_ProgramName", "UserProgram_CaseOwnerName"}) in SelectColumns
Select Done.
Rename the query to
Users.
Step 3: merge checkpoints with learner details
This step joins the two queries on LearnerId (Checkpoints) to Id (Users), bringing learner name, programme name, and case owner into the checkpoint data.
In the Power Query Editor, select the
Checkpointsquery in the left pane.Select Home > Merge Queries.
In the Merge dialog, select the
LearnerIdcolumn in the Checkpoints table (click the column header).In the second dropdown, select the
Usersquery, then select theIdcolumn.Leave the join kind as Left Outer (all rows from Checkpoints, matching rows from Users).
Select OK.
A new
Userscolumn appears in the Checkpoints table. Select the expand icon (double arrow) on the column header.Tick
UserProfile_FirstName,UserProfile_LastName,UserProgram_ProgramName, andUserProgram_CaseOwnerName. Untick Use original column name as prefix.Select OK.
If a checkpoint row has no matching learner in the Users feed, those columns will be blank. This can happen if a learner has been removed from the system.
Step 4: load the report
Select Home > Close & Load To > Table and choose a worksheet location. The report loads with checkpoint data alongside learner name, programme name, and case owner.
You can refresh it at any time by selecting Data > Refresh All or right-clicking the table and selecting Refresh.
Optional: adding a filter
The Checkpoints query above returns all checkpoint assessments. To reduce the volume of data, you can add a $filter to the URL in Step 1. For example, to return only completed checkpoints:
let Source = OData.Feed( "https://yourtenant.aptem.co.uk/odata/2.0/CheckpointAssessments?$select=LearnerId,CheckpointName,ProgrammeId,CheckpointType,Status,QuestionsCount,Score,CorrectAnswersCount,CreatedDate,CompletedDate,CheckpointEndDate,TimeSpent&$filter=Status eq 'Completed'&$orderby=CompletedDate desc", [#"X-API-Token"="YOUR_API_KEY"], [Implementation="2.0"] ) in Source
For more filter examples, see Checkpoint assessments query examples
Useful ways to use this report
Once the data is loaded into Excel, you can use the built-in table filters, conditional formatting, and pivot tables to analyse the results:
Filter by Status to see only completed or pending checkpoints
Sort by Score ascending to find learners who may need additional support
Filter CheckpointEndDate to before today to find expired or overdue checkpoints
Use a pivot table to summarise average scores by CheckpointName, ProgrammeName, or CaseOwner
Use conditional formatting on the Score column to highlight low scores
Troubleshooting
Authentication errors: check that your API key is correct and has not expired. Replace YOUR_API_KEY in both queries with a valid key.
Empty results: confirm that the checkpoint assessments feed is enabled on your tenant and that checkpoint data exists. Contact your Aptem administrator or raise a support ticket if you are unsure.
Slow loading: large tenants may have many checkpoint records and a large Users table. Add a $filter to the Checkpoints URL to reduce the data volume (see Optional: adding a filter above).
Blank learner details: if name and programme columns are blank for some rows, the learner may have been removed from the system. The checkpoint data is still valid — the Users join simply has no match for that learner ID.
Getting help
If you have questions about building this report:
Contact your Implementation Consultant if you are still in implementation
Contact your Customer Success Manager if you are a live customer
Raise a support ticket