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

  1. Add OrdererEndpoints to the organization's definition in configtx.yaml, e.g. OrdererEndpoints: ["host:7050"]
  2. Alternatively disable the V3_0 capability if legacy global OrdererAddresses should be used
  3. 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.