{"record":{"id":"b6f5654a235e11da","repo":"hyperledger/fabric","slug":"failed-setting-up-nodeous-peerou-must-be-differen","errorCode":null,"errorMessage":"Failed setting up NodeOUs. PeerOU must be different from nil.","messagePattern":"Failed setting up NodeOUs\\. PeerOU must be different from nil\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"msp/mspimplsetup.go","lineNumber":294,"sourceCode":"\t\tfor i := 1; i < len(chain); i++ {\n\t\t\tmsp.certificationTreeInternalNodesMap[string(chain[i].Raw)] = true\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (msp *bccspmsp) setupNodeOUs(config *m.FabricMSPConfig) error {\n\tif config.FabricNodeOus != nil {\n\n\t\tmsp.ouEnforcement = config.FabricNodeOus.Enable\n\n\t\tif config.FabricNodeOus.ClientOuIdentifier == nil || len(config.FabricNodeOus.ClientOuIdentifier.OrganizationalUnitIdentifier) == 0 {\n\t\t\treturn errors.New(\"Failed setting up NodeOUs. ClientOU must be different from nil.\")\n\t\t}\n\n\t\tif config.FabricNodeOus.PeerOuIdentifier == nil || len(config.FabricNodeOus.PeerOuIdentifier.OrganizationalUnitIdentifier) == 0 {\n\t\t\treturn errors.New(\"Failed setting up NodeOUs. PeerOU must be different from nil.\")\n\t\t}\n\n\t\t// ClientOU\n\t\tmsp.clientOU = &OUIdentifier{OrganizationalUnitIdentifier: config.FabricNodeOus.ClientOuIdentifier.OrganizationalUnitIdentifier}\n\t\tif len(config.FabricNodeOus.ClientOuIdentifier.Certificate) != 0 {\n\t\t\tcertifiersIdentifier, err := msp.getCertifiersIdentifier(config.FabricNodeOus.ClientOuIdentifier.Certificate)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tmsp.clientOU.CertifiersIdentifier = certifiersIdentifier\n\t\t}\n\n\t\t// PeerOU\n\t\tmsp.peerOU = &OUIdentifier{OrganizationalUnitIdentifier: config.FabricNodeOus.PeerOuIdentifier.OrganizationalUnitIdentifier}\n\t\tif len(config.FabricNodeOus.PeerOuIdentifier.Certificate) != 0 {\n\t\t\tcertifiersIdentifier, err := msp.getCertifiersIdentifier(config.FabricNodeOus.PeerOuIdentifier.Certificate)\n\t\t\tif err != nil {\n\t\t\t\treturn err","sourceCodeStart":276,"sourceCodeEnd":312,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/msp/mspimplsetup.go#L276-L312","documentation":"setupNodeOUs validation guard: NodeOU enforcement is enabled (FabricNodeOus.Enable) but the PeerOuIdentifier block is nil or has an empty OrganizationalUnitIdentifier. The MSP config enables OU-based roles without specifying which OU identifies peers.","triggerScenarios":"Thrown at msp/mspimplsetup.go:294 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set FabricNodeOus.PeerOuIdentifier with a non-empty OrganizationalUnitIdentifier in the MSP config","Ensure the peer OU value matches the OU actually present in peer certificates","If OU enforcement is not intended, set FabricNodeOus.Enable to false"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}