octobercms/october · error · SystemException
Unable to find import/export blueprint with ID "%s".
Error message
Unable to find import/export blueprint with ID "%s".
What it means
Thrown by the BlueprintModel trait's getBlueprintDefinition() when blueprint_uuid is set but BlueprintIndexer::find($uuid) cannot resolve it to any blueprint. For import/export models this means the referenced blueprint (section, global, etc.) is not present in the current blueprint registry.
Source
Thrown at modules/tailor/traits/BlueprintModel.php:55
}
/**
* getBlueprintDefinition
*/
public function getBlueprintDefinition(): Blueprint
{
if ($this->blueprintCache !== null) {
return $this->blueprintCache;
}
$uuid = $this->blueprint_uuid;
if (!$uuid) {
throw new SystemException('Missing a blueprint definition in import/export model.');
}
$blueprint = BlueprintIndexer::instance()->find($uuid);
if (!$blueprint) {
throw new SystemException(sprintf('Unable to find import/export blueprint with ID "%s".', $uuid));
}
return $this->blueprintCache = $blueprint;
}
/**
* getContentFieldsetDefinition
*/
public function getContentFieldsetDefinition(): Fieldset
{
$fieldset = BlueprintIndexer::instance()->findContentFieldset($this->blueprint_uuid);
if (!$fieldset) {
throw new SystemException("Unable to find content fieldset definition with UUID of '{$this->blueprint_uuid}'.");
}
return $fieldset;
}View on GitHub (pinned to b608633a7e)
Solutions
- Run php artisan tailor:sync and php artisan cache:clear so the registry resolves the UUID
- Update the import/export configuration to reference the current blueprint (by handle resolution at runtime rather than a stored UUID, where possible)
- Restore the missing blueprint definition so the UUID resolves again
Example fix
// before: hardcoded UUID from another environment
$model->setBlueprintUuid('9c1d...-stale');
// after: resolve at runtime by handle
$blueprint = \Tailor\Classes\BlueprintIndexer::instance()->findSectionByHandle('blog_post');
$model->setBlueprintUuid($blueprint->uuid); Defensive patterns
Strategy: validation
Validate before calling
// Resolve by handle at runtime instead of trusting a stored UUID
$blueprint = \Tailor\Classes\BlueprintIndexer::instance()->findSectionByHandle($handle);
if (!$blueprint) {
throw new RuntimeException("Blueprint handle [{$handle}] missing — run tailor:sync");
}
$importModel->setBlueprintUuid($blueprint->uuid); Prevention
- Never hardcode blueprint UUIDs in import/export configurations; resolve handles at runtime
- Run tailor:sync in the deploy pipeline before any import jobs
- Recreate-aware: if blueprints must be recreated, plan a UUID remap migration for dependent data
When it happens
Trigger: An import/export configuration pointing at a blueprint UUID that was deleted, recreated with a new UUID, or exists only in another environment's database; running imports before tailor:sync registered the blueprint.
Common situations: Storing importer configurations with hardcoded UUIDs that drift after blueprint recreation; deploying database content without the matching blueprint definitions; stale blueprint cache.
Related errors
- Unable to find section blueprint with ID "%s".
- Unable to find global blueprint with ID "%s".
- Unable to find content fieldset definition with UUID of '{$t
- Missing a blueprint definition in import/export model.
- Section handle [{$handle}] not found
AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21).
Data as JSON: /api/errors/8b6bb97cf4f990b4.
Report an issue: GitHub.