Skip to content

Functional Groups

Functional groups describe how your people are organised for delivery: the areas, streams, domains and teams they work in, the positions inside each one, who holds each position and for how long, who manages what, and what each part of the business costs per month.

That structure is often not the one on the HR org chart. A platform engineer may report to an engineering manager on paper but spend her time in the Payments stream; a contractor may sit in three delivery teams over a year. Functional groups let you draw the structure delivery actually runs on, date every change, and read it on any day — past, present or planned.

It sits beside the rest of the workforce model rather than replacing it. Teams and allocations still carry cost to projects and budgets. A person can be allocated to three projects and still hold exactly one position on the functional chart.

Find it under Delivery → Functional groups in the sidebar. Two tabs: List, where you build and change the structure, and Explorer, which draws it as an org chart you can pan and zoom.

What you get

  • A hierarchy of groups, as deep as you need it: Area → Stream → Domain → Team, or any shape you prefer. Each group has a free-text type, an optional external ID (your team code), dates, managers and custom attributes. See Groups.
  • Positions inside each group — the seats — each with a required FTE, optional dates, and optionally the position it reports to. People, contractors and vacancies fill seats for dated periods. See Positions.
  • Managers as the permission model: a manager of a group can change it and everything underneath it.
  • Staffing signals on every row: headcount, positions filled, the FTE gap, who arrives or leaves in the next 30 days, and monthly cost. A headcount bridge and a schedule on every group. See Metrics and schedule.
  • A pannable org chart of the whole structure. See The functional group chart.
  • The same reads and writes through the REST API and through Claude or ChatGPT via MCP, with the caller's own permissions.
  • Kept in step with your HR system, both ways. A custom integration hook can pull areas, seats and the people in them straight from an HRIS, and an outbound webhook tells your systems the moment any of the three changes.

Everything is dated: the As-of day

Every group, position and occupancy carries a start date and an optional end date. The screens show the structure as it stands on one day — the As of date in the top-right corner, which defaults to today.

Move the date backwards to see who was in a team last quarter. Move it forwards to see the team once the two starters arrive and the contractor rolls off. The list, the group page, the chart, the schedule and the metrics all follow the day you pick.

Changes are dated too:

  • Adding a group or a position gives it a start date.
  • Filling a seat gives the occupancy a start date and, if you know it, an end date. Leave the end date empty for an open-ended arrangement.
  • Moving a group under a new parent, or a position under a new reporting line, applies from the As-of day. The structure before that day is kept, so history still reads correctly. Set the As-of date to the day the restructure takes effect, then drag.
  • Retiring a group or a position means giving it an end date. Nothing is deleted; earlier days still show it.

This is what makes "what changes are coming up?" a question the screens can answer: set the As-of date to a month from now and compare.

Tip

Dates are calendar days, inclusive at both ends. An occupancy that ends on 25 September is still in the seat on the 25th, and the replacement starts on the 26th.

Who can do what

You are…You can…
Any active userOpen the screens and read the whole structure.
A manager of a groupChange that group and everything beneath it: add and edit sub-groups and positions, fill seats, move things, and appoint other managers within it.
A holder of the organisation's functional groups edit permissionChange everything, including creating top-level groups.
A holder of the share permission, or any manager of the groupAdd or remove that group's managers.

Managers are chosen from people with a Flowstate login. A group with no managers of its own inherits its parent's.

Who sees cost is a separate organisation-level choice: Settings → Delivery → Functional groups, with three options — nobody, managers and viewers of the group (the default), or everybody. People with the summary financials permission always see it.

Limits

  • Nesting depth is not capped. Four levels (Area → Stream → Domain → Team) is the shape most organisations use; the screens, the chart and the API handle deeper trees the same way.
  • A read of the tree returns at most 500 groups on the chosen day. Larger structures should be read a group at a time.
  • A position's required FTE is above 0 and at most 1. A seat that needs two people is two positions.
  • A person holds at most 1.0 FTE across all their seats at once, and an occupancy cannot exceed the seat's required FTE. A vacancy's capacity is its configured FTE.
  • A position belongs to one group for life, and an occupancy belongs to one seat and one person for life. To move a person to another seat, end the occupancy and fill the other seat; to move a seat between groups, retire it and create a successor.
  • A group cannot be filed under itself or under one of its own descendants, on any day.

Working in a scenario

Everything on these pages works inside a scenario exactly as it does on the live plan. Changes stay in the scenario until it is merged, and the scenario's change list shows them beside its headcount and cost changes — so a restructure can be modelled, compared and approved before anyone's reporting line actually moves.

Asking Claude

With the Flowstate MCP connection set up, every read and write below is available as a tool, using the permissions of the person asking:

ToolWhat it does
list_functional_groupsThe whole structure on one day, with figures.
get_functional_groupOne group in full: seats, occupants, managers, history.
add_functional_group, update_functional_group, move_functional_groupCreate, change and re-file groups.
add_functional_position, update_functional_positionCreate and change seats.
fill_functional_position, update_functional_assignmentPut somebody in a seat; change their share or dates.
move_functional_positionChange a reporting line, or move an occupant to another seat.
add_functional_group_manager, remove_functional_group_managerAppoint and remove managers.
set_functional_group_cost_visibilityChoose who sees cost.

Each page in this section ends with examples. A prompt like "Which teams in Cards & Payments are short of people, and who is leaving them in the next month?" is answered from one list_functional_groups call.

Where to go next

Flowstate Documentation