{"record":{"id":"19da723edb8558bc","repo":"instructure/canvas-lms","slug":"an-institutional-tag-did-not-pass-validation-tag-tag-id","errorCode":null,"errorMessage":"An institutional tag did not pass validation (tag: #{tag_id}, error: #{tag.errors.full_messages.join(\",\")})","messagePattern":"An institutional tag did not pass validation \\(tag: #(.+?), error: #(.+?)\\)","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"lib/sis/institutional_tag_importer.rb","lineNumber":75,"sourceCode":"        tag = InstitutionalTag.find_by(root_account_id: @root_account.id, sis_source_id: tag_id)\n        tag ||= InstitutionalTag.new(category:,\n                                     root_account: @root_account,\n                                     sis_source_id: tag_id)\n\n        tag.name = name\n        tag.description = description\n        tag.sis_batch_id = @batch.id\n        tag.workflow_state = /deleted/i.match?(status) ? \"deleted\" : \"active\"\n\n        if tag.save\n          data = SisBatchRollBackData.build_data(sis_batch: @batch, context: tag)\n          @roll_back_data << data if data\n          @success_count += 1\n          maybe_write_roll_back_data\n        else\n          msg = \"An institutional tag did not pass validation \" \\\n                \"(tag: #{tag_id}, error: #{tag.errors.full_messages.join(\",\")})\"\n          raise ImportError, msg\n        end\n      end\n\n      private\n\n      def maybe_write_roll_back_data\n        return if @roll_back_data.count <= 1000\n\n        SisBatchRollBackData.bulk_insert_roll_back_data(@roll_back_data)\n        @roll_back_data = []\n      end\n    end\n  end\nend\n","sourceCodeStart":57,"sourceCodeEnd":90,"githubUrl":"https://github.com/instructure/canvas-lms/blob/1c9f0bb8013ed69c4f2efe11fd483025469b7e6c/lib/sis/institutional_tag_importer.rb#L57-L90","documentation":"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.","triggerScenarios":"Thrown at lib/sis/institutional_tag_importer.rb:75 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1c9f0bb8013ed69c4f2efe11fd483025469b7e6c","analyzedAt":"2026-09-15T20:33:18.891Z","contentChangedAt":"2026-09-15T20:33:18.891Z","schemaVersion":2},"datasetVersion":"2026-09-23T02:17:17.105Z"}