hyperledger/fabric · error
system channel consortiums group appears to have no consorti
Error message
system channel consortiums group appears to have no consortiums defined
What it means
After finding the Consortiums group, ConfigTemplateFromGroup requires it to actually contain consortium entries. If its Groups map is nil, the system channel was created without any consortiums defined, and the profile's Consortium reference cannot be resolved, so this error is thrown.
Source
Thrown at internal/configtxgen/encoder/encoder.go:522
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]
if !ok {
return nil, errors.Errorf("consortium %s does not contain member org %s", conf.Consortium, organization.Name)
}
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Add a Consortiums section (e.g. SampleConsortium listing member orgs) to the system channel profile and regenerate/apply the system channel config update.
- Set conf.Consortium to an existing consortium and re-check the system channel's consortium definitions.
- Inspect the system channel config to confirm consortiums exist.
Example fix
# before
Profiles:
OrdererGenesis:
Orderer:
...
# no Consortiums
# after
Profiles:
OrdererGenesis:
Orderer:
...
Consortiums:
SampleConsortium:
Organizations:
- *Org1 Defensive patterns
Strategy: validation
Validate before calling
consortiums := cg.Groups[channelconfig.ConsortiumsGroupKey]
if consortiums == nil || len(consortiums.Groups) == 0 {
return errors.New("system channel defines no consortiums; add a Consortiums section to the genesis profile")
} Type guard
func hasConsortiumsDefined(cg *cb.ConfigGroup) bool {
c, ok := cg.Groups[channelconfig.ConsortiumsGroupKey]
return ok && c.Groups != nil && len(c.Groups) > 0
} Try / catch
tmpl, err := encoder.ConfigTemplateFromGroup(profile, cg)
if err != nil && strings.Contains(err.Error(), "no consortiums defined") {
return errors.New("regenerate the system channel with a Consortiums section")
} Prevention
- Always include at least one consortium (e.g. SampleConsortium) in the system channel profile.
- Inspect the running system channel config before programmatic channel creation.
- Keep the profile's Consortium value pointing at a consortium present in the system channel.
When it happens
Trigger: Calling ConfigTemplateFromGroup / MakeChannelCreationTransactionWithSystemChannelContext against a system channel whose Consortiums group has no consortium sub-groups — i.e. the genesis profile's Consortiums section was empty or absent.
Common situations: System channel generated from a configtx.yaml without a Consortiums section; regenerating the system channel after removing consortiums while still creating channels that need them.
Related errors
- supplied system channel group does not appear to be system c
- 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/5e563a9d535a2eb7.
Report an issue: GitHub.