instructure/canvas-lms · error · ImportError
An institutional tag did not pass validation
Error message
An institutional tag did not pass validation (tag: #{tag_id}, error: #{tag.errors.full_messages.join(",")}) What it means
Save-failure path in SIS::InstitutionalTagImporter::Work#add_institutional_tag: InstitutionalTag#save returned false (model validations failed), so ImportError is raised embedding the tag's full_messages. Reports model-level validation failures back to the SIS batch.
Solutions
- Read the embedded error list (e.g. name too long, invalid characters) and fix the CSV values
- Check account-level constraints on institutional tags and re-import
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at lib/sis/institutional_tag_importer.rb:75 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of instructure/canvas-lms@1c9f0bb801 (2026-09-15).
Data as JSON: /api/errors/19da723edb8558bc.
Report an issue: GitHub.
Appendix: source
Thrown at lib/sis/institutional_tag_importer.rb:75
tag = InstitutionalTag.find_by(root_account_id: @root_account.id, sis_source_id: tag_id)
tag ||= InstitutionalTag.new(category:,
root_account: @root_account,
sis_source_id: tag_id)
tag.name = name
tag.description = description
tag.sis_batch_id = @batch.id
tag.workflow_state = /deleted/i.match?(status) ? "deleted" : "active"
if tag.save
data = SisBatchRollBackData.build_data(sis_batch: @batch, context: tag)
@roll_back_data << data if data
@success_count += 1
maybe_write_roll_back_data
else
msg = "An institutional tag did not pass validation " \
"(tag: #{tag_id}, error: #{tag.errors.full_messages.join(",")})"
raise ImportError, msg
end
end
private
def maybe_write_roll_back_data
return if @roll_back_data.count <= 1000
SisBatchRollBackData.bulk_insert_roll_back_data(@roll_back_data)
@roll_back_data = []
end
end
end
end
View on GitHub (pinned to 1c9f0bb801)