{"record":{"id":"36203067b24fbfde","repo":"octobercms/october","slug":"unable-to-find-section-blueprint-with-id-s","errorCode":null,"errorMessage":"Unable to find section blueprint with ID \"%s\".","messagePattern":"Unable to find section blueprint with ID \"(.+?)\"\\.","errorType":"exception","errorClass":"SystemException","httpStatus":null,"severity":"error","filePath":"modules/tailor/models/entryrecord/HasEntryBlueprint.php","lineNumber":55,"sourceCode":"    }\n\n    /**\n     * getBlueprintDefinition\n     */\n    public function getBlueprintDefinition(): EntryBlueprint\n    {\n        if ($this->blueprintCache !== null) {\n            return $this->blueprintCache;\n        }\n\n        $uuid = $this->blueprint_uuid;\n        if (!$uuid) {\n            throw new SystemException('Missing section definition. Call EntryRecord::inSection() to set one.');\n        }\n\n        $blueprint = BlueprintIndexer::instance()->findSection($uuid);\n        if (!$blueprint) {\n            throw new SystemException(sprintf('Unable to find section blueprint with ID \"%s\".', $uuid));\n        }\n\n        return $this->blueprintCache = $blueprint;\n    }\n\n    /**\n     * isEntryStructure\n     */\n    public function isEntryStructure(): bool\n    {\n        return $this->getBlueprintDefinition() instanceof StructureBlueprint;\n    }\n\n    /**\n     * isEntryStream\n     */\n    public function isEntryStream(): bool\n    {","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/octobercms/october/blob/b608633a7e8922487d91a8161499020121c3b3bf/modules/tailor/models/entryrecord/HasEntryBlueprint.php#L37-L73","documentation":"Thrown by getBlueprintDefinition() on entry records (HasEntryBlueprint trait) when the record has a blueprint_uuid but the BlueprintIndexer cannot find a matching section blueprint. The UUID is present in the database yet unknown to the current blueprint registry, so the lookup returns null and a SystemException with the UUID is raised.","triggerScenarios":"Entry rows whose blueprint_uuid references a blueprint that has been deleted or whose UUID changed (blueprints are content-synced, and recreating one can mint a new UUID); querying records after the section blueprint was removed; environments where the tailoring/blueprint data was never synced.","commonSituations":"Deleting and re-creating a section blueprint in Tailor while old entry rows keep the old UUID; pulling a database dump without pulling the matching blueprint content; partial tailor:sync runs; moving content between environments with mismatched blueprint identifiers.","solutions":["Run php artisan tailor:sync and php artisan cache:clear to ensure the blueprint registry matches the database","If the section was deleted and recreated, update orphaned rows: set their blueprint_uuid to the new blueprint's UUID (find it via BlueprintIndexer::instance()->findSectionByHandle($handle)->uuid)","Restore the missing blueprint (re-import the tailoring file that defined it) so the UUID resolves again","If the data is disposable, delete the orphaned entry rows"],"exampleFix":"// Repair orphaned entries after a blueprint was recreated\n$handle = 'blog_post';\n$blueprint = \\Tailor\\Classes\\BlueprintIndexer::instance()->findSectionByHandle($handle);\n$oldUuid = '00000000-0000-0000-0000-000000000000';\n\n\\Tailor\\Models\\EntryRecord::where('blueprint_uuid', $oldUuid)\n    ->update(['blueprint_uuid' => $blueprint->uuid]);","handlingStrategy":"validation","validationCode":"// Confirm the UUID resolves before touching blueprint APIs\n$blueprint = \\Tailor\\Classes\\BlueprintIndexer::instance()->findSection($model->blueprint_uuid);\nif (!$blueprint) {\n    // reattach or skip this record\n}","typeGuard":"function blueprintUuidResolves(?string $uuid): bool\n{\n    return $uuid !== null\n        && \\Tailor\\Classes\\BlueprintIndexer::instance()->findSection($uuid) !== null;\n}","tryCatchPattern":null,"preventionTips":["Always deploy blueprint content together with database content (same release)","Avoid delete-and-recreate flows for blueprints with live data; edit in place to preserve the UUID","Add a maintenance command that reports entries whose blueprint_uuid no longer resolves"],"tags":["tailor","octobercms","blueprint","uuid","orphaned-record","indexer"],"backgroundTag":"dangling-foreign-key","analyzedSha":"b608633a7e8922487d91a8161499020121c3b3bf","analyzedAt":"2026-08-21T04:24:57.515Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}