Skip to main content

Offerings & Enrollment Across Divisions

When an Organization has Divisions, benefits live on the parent Organization and apply across the Organization, including all of its Divisions — there are no separate per-Division benefits to create or maintain. Enrollment follows the same model: a member is enrolled against the parent Organization's benefit, and their coverage applies within their Division automatically.

The model

If you...Then...
Create a benefit on the parent OrganizationIt applies across the Organization, including all Divisions.
Update the parent benefitThe changes apply across all Divisions.
Create a new Division laterThe Organization's existing benefits apply to it automatically.
Enroll a member who belongs to a DivisionThe member is enrolled within their Division automatically.

Every operation targets the parent Organization's benefit: createBenefit is called once on the parent, and Division IDs aren't used when enrolling, funding, or managing contributions.

Creating offerings for an Organization with Divisions

Create the Benefits Program and its benefits on the parent Organization, exactly as you would for an Organization without Divisions.

Step 1 — Create the program on the parent Organization:

mutation CreateBenefitsProgram($input: CreateBenefitsProgramInput!) {
createBenefitsProgram(input: $input) {
... on CreateBenefitsProgramResult {
benefitsProgram {
id
name
organizationId
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"name": "2026 Benefits",
"organizationId": "<parent-org-id>"
}
}

Step 2 — Create a benefit in that program:

mutation CreateBenefit($input: CreateBenefitInput!) {
createBenefit(input: $input) {
... on CreateBenefitResult {
benefit {
id
name
type
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"benefitsProgramId": "<program-id-from-step-1>",
"templateId": "<template-id>",
"startDate": "2026-01-01"
}
}

The response returns a single benefit on the parent Organization. That benefit applies across the Organization, including all of its Divisions — there is no separate per-Division benefit to create or track. Reference this benefit's id for all subsequent operations.

New Divisions inherit existing benefits

If you add a Division to an Organization that already has benefits, those benefits apply to the new Division automatically — no re-creation or re-application is needed.

Updating offerings

Update offerings on the parent benefit using updateBenefit (and the related configuration mutations). Changes — such as the name, start/end dates, funding configuration, eligible expenses, and coverage levels — apply across all of the Organization's Divisions automatically. There is no per-Division update to make.

Enrolling members in a Division

Enrollment is a two-step flow: add the member to the Division, then enroll them against the parent Organization's benefit.

Create the Division membership first — order matters

A member's Division is resolved from their Organization membership at the moment of enrollment, so the membership must already exist for coverage to reach the correct Division. Create the Division membership (Step 1) before calling enrollIndividualInBenefit (Step 2).

Step 1 — Add the member to the Division. A Division shares the same identifier space as an Organization, so you assign membership by passing the Division's id as the organizationId on createOrUpdateOrganizationMembership:

mutation CreateOrUpdateOrganizationMembership($input: CreateOrUpdateOrganizationMembershipInput!) {
createOrUpdateOrganizationMembership(input: $input) {
... on CreateOrUpdateOrganizationMembershipResult {
membership {
id
organization {
id
name
}
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"individualId": "<individual-id>",
"organizationId": "<division-id>"
}
}

Step 2 — Enroll the member using the parent benefit's id. Pass the benefit id from the parent Organization; the member is enrolled within their Division automatically:

mutation EnrollIndividualInBenefit($input: EnrollIndividualInBenefitInput!) {
enrollIndividualInBenefit(input: $input) {
... on EnrollIndividualInBenefitResult {
individual {
id
}
benefit {
id
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"benefitId": "<parent-benefit-id>",
"individualId": "<individual-id>"
}
}

The same pattern — operate on the parent Organization's benefit, and the member's Division is applied automatically — holds for the rest of the participant lifecycle:

One Division per member within a parent

A member has at most one active Division membership within a given parent Organization. If a member has active memberships in more than one Division under the same parent, enrolling against the parent benefit is ambiguous, and the request is rejected. With nested Divisions, assign membership to the single, most-specific Division the member belongs to — for example, the Department rather than also its Region.

End-to-end walkthrough

Putting it together for an Organization with two Divisions:

# 1. Create the parent Organization
mutation {
createOrganization(input: { name: "Acme Corp" }) {
... on CreateOrganizationResult { organization { id name } }
}
}

# 2. Create the Benefits Program + a benefit on the parent Organization
mutation {
createBenefitsProgram(input: { name: "2026 Benefits", organizationId: "<parent-org-id>" }) {
... on CreateBenefitsProgramResult { benefitsProgram { id } }
}
}
mutation {
createBenefit(input: {
benefitsProgramId: "<program-id>"
templateId: "<template-id>"
startDate: "2026-01-01"
}) {
... on CreateBenefitResult { benefit { id name } }
}
}

# 3. Create Divisions under the parent (the benefit above applies to each)
mutation {
createDivision(input: { organizationId: "<parent-org-id>", name: "West Region" }) {
... on CreateDivisionResult { division { id name } }
}
}

# 4. Add a member to a Division (Division id as organizationId) — required BEFORE enrolling
mutation {
createOrUpdateOrganizationMembership(input: {
individualId: "<individual-id>"
organizationId: "<west-region-division-id>"
}) {
... on CreateOrUpdateOrganizationMembershipResult { membership { id } }
}
}

# 5. Enroll the member using the PARENT benefit id — applied within their Division automatically
mutation {
enrollIndividualInBenefit(input: {
benefitId: "<parent-benefit-id>"
individualId: "<individual-id>"
}) {
... on EnrollIndividualInBenefitResult { individual { id } benefit { id } }
}
}
  • Divisions — Create and manage Divisions within an Organization.
  • Setup & Enrollment — The standard program, benefit, and enrollment flow.
  • Organizations — Create and manage the parent Organizations that own offerings.