hyperledger/fabric · error
Invalid configuration block, missing %s configuration group
Error message
Invalid configuration block, missing %s configuration group
What it means
The channel's top-level Groups map exists but does not contain an entry keyed by channelconfig.ApplicationGroupKey ("Application"). A channel that will host chaincode must define an Application configuration group (application organizations, ACLs, capabilities); cscc rejects channel creation when it is absent, e.g. an orderer-only config.
Source
Thrown at core/scc/cscc/configure.go:242
if err != nil {
return errors.Errorf("Bad configuration envelope: %s", err)
}
if configEnv.Config == nil {
return errors.New("Nil config envelope Config")
}
if configEnv.Config.ChannelGroup == nil {
return errors.New("Nil channel group")
}
if configEnv.Config.ChannelGroup.Groups == nil {
return errors.New("No channel configuration groups are available")
}
_, exists := configEnv.Config.ChannelGroup.Groups[channelconfig.ApplicationGroupKey]
if !exists {
return errors.Errorf("Invalid configuration block, missing %s "+
"configuration group", channelconfig.ApplicationGroupKey)
}
// Check the capabilities requirement
if err = channelconfig.ValidateCapabilities(block, bccsp); err != nil {
return errors.Errorf("Failed capabilities check: [%s]", err)
}
return nil
}
// joinChain will join the specified chain in the configuration block.
// Since it is the first block, it is the genesis block containing configuration
// for this chain, so we want to update the Chain object with this info
func (e *PeerConfiger) joinChain(
channelID string,
block *common.Block,
deployedCCInfoProvider ledger.DeployedChaincodeInfoProvider,View on GitHub (pinned to 2736b63f8f)
Solutions
- Edit configtx.yaml so the profile includes an Application section with at least one application organization and `Application: <<: *ApplicationDefaults`, then regenerate with configtxgen
- Verify with `configtxgen -inspectChannelCreateTx config.tx` that the Application group appears
- If the group was removed by an update, re-add Application group members via a config update computed with configtxlator compute-update
- Ensure the peer creating the channel expects an application channel, not the orderer system channel
Example fix
# before (configtx.yaml profile)
TwoOrgsChannel:
Orderer:
Organizations: [OrdererOrg]
# after
TwoOrgsChannel:
Orderer:
Organizations: [OrdererOrg]
Application:
<<: *ApplicationDefaults
Organizations: [Org1, Org2] Defensive patterns
Strategy: validation
Validate before calling
_, ok := cfg.GetChannelGroup().GetGroups()[channelconfig.ApplicationGroupKey]
if !ok {
return errors.New("Application group missing from channel config")
} Type guard
func hasApplicationGroup(cfg *common.Config) bool {
_, ok := cfg.GetChannelGroup().GetGroups()[channelconfig.ApplicationGroupKey]
return ok
} Try / catch
if _, exists := cfg.GetChannelGroup().GetGroups()[channelconfig.ApplicationGroupKey]; !exists {
return fmt.Errorf("profile lacks Application section: add it to configtx.yaml and regenerate")
} Prevention
- Always include an Application section (with at least one org) in channel-creation profiles
- Do not reuse orderer genesis profiles for application channels
- Run `configtxgen -inspectChannelCreateTx` to confirm the Application group exists
- Re-check profile inheritance (<<: *ApplicationDefaults) after YAML edits
When it happens
Trigger: Creating a channel from a configtxgen profile without an Application section (orderer-only profile); a config update that removed the Application group; submitting the genesis block of a system-channel-style or consortium-less config to JoinChain.
Common situations: Users reusing the orderer genesis profile as a channel creation profile; configtx.yaml profiles missing `Application: <<: *ApplicationDefaults` or with no Application Organizations; team upgrades that dropped Application capabilities/orgs during config edits.
Related errors
- Nil channel group
- No channel configuration groups are available
- subpolicy number %d type %T of policy %s is not convertible
- application config does not exist for channel '%s'
- could not get channelconfig for channel %s
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/40a1a67bd89e7716.
Report an issue: GitHub.