hyperledger/fabric · error
orderer endpoints for organization %s are missing and must b
Error message
orderer endpoints for organization %s are missing and must be configured when capability V3_0 is enabled
What it means
Capability check in NewOrdererOrgGroup: the profile enables the V3_0 channel capability, which requires every orderer organization to declare OrdererEndpoints, but conf.OrdererEndpoints is empty for this organization (%s). Without per-org endpoints the orderer addressing cannot be encoded in the new config style.
Source
Thrown at internal/configtxgen/encoder/encoder.go:338
if conf.SkipAsForeign {
return ordererOrgGroup, nil
}
mspConfig, err := msp.GetVerifyingMspConfig(conf.MSPDir, conf.ID, conf.MSPType)
if err != nil {
return nil, errors.Wrapf(err, "1 - Error loading MSP configuration for org: %s", conf.Name)
}
if err := AddPolicies(ordererOrgGroup, conf.Policies, channelconfig.AdminsPolicyKey); err != nil {
return nil, errors.Wrapf(err, "error adding policies to orderer org group '%s'", conf.Name)
}
addValue(ordererOrgGroup, channelconfig.MSPValue(mspConfig), channelconfig.AdminsPolicyKey)
if len(conf.OrdererEndpoints) > 0 {
addValue(ordererOrgGroup, channelconfig.EndpointsValue(conf.OrdererEndpoints), channelconfig.AdminsPolicyKey)
} else if channelCapabilities["V3_0"] {
return nil, errors.Errorf("orderer endpoints for organization %s are missing and must be configured when capability V3_0 is enabled", conf.Name)
}
return ordererOrgGroup, nil
}
// NewApplicationGroup returns the application component of the channel configuration. It defines the organizations which are involved
// in application logic like chaincodes, and how these members may interact with the orderer. It sets the mod_policy of all elements to "Admins".
func NewApplicationGroup(conf *genesisconfig.Application) (*cb.ConfigGroup, error) {
applicationGroup := protoutil.NewConfigGroup()
if err := AddPolicies(applicationGroup, conf.Policies, channelconfig.AdminsPolicyKey); err != nil {
return nil, errors.Wrapf(err, "error adding policies to application group")
}
if len(conf.ACLs) > 0 {
addValue(applicationGroup, channelconfig.ACLValues(conf.ACLs), channelconfig.AdminsPolicyKey)
}
if len(conf.Capabilities) > 0 {View on GitHub (pinned to 2736b63f8f)
Solutions
- Add OrdererEndpoints to the organization's definition in configtx.yaml, e.g. OrdererEndpoints: ["host:7050"]
- Alternatively disable the V3_0 capability if legacy global OrdererAddresses should be used
- Ensure the endpoint list is populated for every org under Orderer: Organizations
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/configtxgen/encoder/encoder.go:338 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/514c8765405923ec.
Report an issue: GitHub.