Purpose: This guide covers importing Course Templates: loading a course catalog in bulk and enriching templates with prices, session templates, and categories.
Related: Importing data into Administrate | Choosing your import workflow
Order of operations
A course catalog import is usually several passes, because a template's related records are imported with their own actions:
- Course Templates themselves (create, or upsertByExternalId when migrating from a system that owns the catalog).
- Enrichment passes against the created templates: session templates, schedules, prices, tags, and achievement types each have their own actions under the courseTemplate record type (for example addSessionTemplate, addPublicPrices, addPrivatePrices, addTags, addAchievementType).
- Events afterwards, since event imports resolve their course by course code. See Import Events (CSV).
What to get right on the template records
- Course codes are the key. Event imports resolve courses by code first, so codes must be stable and unique before you schedule against them.
- Learning categories resolve by their Administrate ID on course template imports, so have the category IDs to hand rather than names.
- Custom fields on course templates get their own template columns, like every entity.
Updating a catalog in bulk
Use update with the course template ID, following the bulk update pattern: export a report of templates with IDs, edit only the columns you are changing, pilot, then run. Blank cells leave existing values untouched.
Watch out for
- Enrichment actions add; they are not full replacements. Adding prices or tags in repeated runs accumulates entries, so avoid re-running an enrichment file that already succeeded.
- Dependency order matters twice: categories and tax types before templates that reference them, and templates before events.
- Pilot one template end to end (template, then prices, then an event against it) before scaling to the full catalog.