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

  1. Run php artisan tailor:sync and php artisan cache:clear so the registry resolves the UUID
  2. Update the import/export configuration to reference the current blueprint (by handle resolution at runtime rather than a stored UUID, where possible)
  3. 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

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


AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21). Data as JSON: /api/errors/8b6bb97cf4f990b4. Report an issue: GitHub.