hyperledger/fabric · error
supplied system channel group does not appear to be system c
Error message
supplied system channel group does not appear to be system channel (missing consortiums group)
What it means
A genuine system channel config group must contain a Consortiums sub-group; ConfigTemplateFromGroup looks it up to graft the consortium into the new channel template. If the ConsortiumsGroupKey group is missing, the supplied group is not a system channel group, and this error is returned.
Source
Thrown at internal/configtxgen/encoder/encoder.go:518
return channelGroup, nil
}
func ConfigTemplateFromGroup(conf *genesisconfig.Profile, cg *cb.ConfigGroup) (*cb.ConfigGroup, error) {
template := proto.Clone(cg).(*cb.ConfigGroup)
if template.Groups == nil {
return nil, errors.Errorf("supplied system channel group has no sub-groups")
}
template.Groups[channelconfig.ApplicationGroupKey] = &cb.ConfigGroup{
Groups: map[string]*cb.ConfigGroup{},
Policies: map[string]*cb.ConfigPolicy{
channelconfig.AdminsPolicyKey: {},
},
}
consortiums, ok := template.Groups[channelconfig.ConsortiumsGroupKey]
if !ok {
return nil, errors.Errorf("supplied system channel group does not appear to be system channel (missing consortiums group)")
}
if consortiums.Groups == nil {
return nil, errors.Errorf("system channel consortiums group appears to have no consortiums defined")
}
consortium, ok := consortiums.Groups[conf.Consortium]
if !ok {
return nil, errors.Errorf("supplied system channel group is missing '%s' consortium", conf.Consortium)
}
if conf.Application == nil {
return nil, errors.Errorf("supplied channel creation profile does not contain an application section")
}
for _, organization := range conf.Application.Organizations {
var ok bool
template.Groups[channelconfig.ApplicationGroupKey].Groups[organization.Name], ok = consortium.Groups[organization.Name]View on GitHub (pinned to 2736b63f8f)
Solutions
- Pass the ordering system channel's config group, which includes the Consortiums group.
- Verify the channel name used to fetch the config is the system channel (e.g. test-chainid / your system channel name).
- Confirm the system channel profile defines a Consortiums section and genesis was generated with it.
Example fix
// before
cg := getConfigGroupForChannel("mychannel") // application channel
// after
cg := getConfigGroupForChannel("test-chainid") // system channel with Consortiums Defensive patterns
Strategy: validation
Validate before calling
if _, ok := cg.Groups[channelconfig.ConsortiumsGroupKey]; !ok {
return errors.New("supplied group is not a system channel (missing Consortiums)")
} Type guard
func hasConsortiumsGroup(cg *cb.ConfigGroup) bool {
if cg == nil || cg.Groups == nil { return false }
_, ok := cg.Groups[channelconfig.ConsortiumsGroupKey]
return ok
} Try / catch
tmpl, err := encoder.ConfigTemplateFromGroup(profile, cg)
if err != nil && strings.Contains(err.Error(), "missing consortiums group") {
return errors.New("pass the ordering system channel's config group")
} Prevention
- Verify the channel whose config you fetch is the system channel.
- Confirm the system channel genesis includes a Consortiums section.
- Guard programmatically with hasConsortiumsGroup before calling the API.
When it happens
Trigger: Calling ConfigTemplateFromGroup (directly or via MakeChannelCreationTransactionWithSystemChannelContext) with a group that has sub-groups but no `Consortiums` group — e.g. an application channel's group or a system-channel config without consortiums.
Common situations: Fetching the wrong channel's config from the orderer (application channel instead of system channel); passing a post-migration config where consortiums no longer apply; hand-built groups omitting Consortiums.
Related errors
- system channel consortiums group appears to have no consorti
- supplied system channel group has no sub-groups
- Attempted to set the batch size max message count to an inva
- Attempted to set the batch size absolute max bytes to an inv
- Attempted to set the batch size preferred max bytes to an in
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/f6da4ee206d2aa7f.
Report an issue: GitHub.