Groups
A functional group is one box on the chart: an area, a stream, a domain, a team — whatever your organisation calls that level. Groups nest to any depth, and every group carries dates, so the structure can change over time without losing what it looked like before.
What a group holds
| Field | What it is |
|---|---|
| Name | The display name, e.g. “Cards & Payments”. |
| Type | Free text for the level: Area, Stream, Domain, Team, Chapter… It is shown in the list’s Type column and on the chart. |
| Parent | The group it sits under, or none for a top-level group. |
| Description | Optional. Editable in place on the group page. |
| External ID | Optional. Your own identifier — a team code such as T-1024. Use it in integrations; names change, codes tend not to. |
| Start and end date | The days the group exists for. No end date means ongoing. |
| Managers | The users who look after it. See Managers. |
| Custom attributes | Any attributes your organisation has defined for functional groups. |
The list also shows, for each group on the As-of day: headcount, positions filled out of total, the FTE gap, arrivals and leavers in the next 30 days, and monthly cost. Those are explained in Metrics and schedule.
Creating a group
A top-level group. Click Add group in the top-right of the list. Give it a name, a type, optionally a description and external ID, and a start date. Leave the parent as “None (top level)”. Creating a top-level group needs the organisation’s functional groups edit permission.
A group underneath another. Every row you may edit has a + at its right-hand end. Click it and the new group is filed under that row, parent already chosen. You can also right-click the row and choose Add sub-group, or use the parent picker in the Add group dialog, which lists the whole hierarchy indented.
Editing a group
Open the group (click its name in the list) and click Edit at the top of its page, or right-click its row and choose Edit. Name, type, dates, description and external ID can all change. On the group page, the description and external ID can also be edited in place. To put the group under a different parent, click Change beside Parent group — see Moving a group to another parent.
Moving a group to another parent
Put a group under a different parent — to fix one filed in the wrong place, or to restructure from a date. Its sub-groups, positions and people move with it, and it keeps its external ID.
- Right-click the group’s row and choose Move. You can also click Move at the top of the group’s page, or Change beside Parent group in Edit group.
- Under Parent group, choose where it goes, or None (top level).
- Check the Effective date. It starts on the As-of day, and days before it keep the old parent. The dialog says since when the group has been where it is: choose that day to fix a mistake, so every day since shows the new parent.
- Click Save changes.
You need to be able to edit the group and the group you move it under. Moving a group to the top level needs the organisation’s functional groups edit permission. From the day the move takes effect, the new parent’s managers look after the group and the old parent’s no longer do.
Or drag it. Drag a row onto another row to make it a sub-group of that row, or onto the Top level strip to make it a top-level group. A drag applies from the As-of day, so to schedule a restructure, set the As-of date to the day it takes effect first. Rows that can’t accept the drop — the group itself, anything inside its own branch, the parent it already has, or a group you may not edit — stop being drop targets while you drag.
If something’s not right
- The group you want isn’t offered. You can only move a group under one you may edit, and never under itself or anything inside it.
- Save changes stays greyed out. Choose a parent other than the one it has, and an effective date no earlier than the day it went where it is.
- It says the new parent ends and this group carries on. A group can’t sit under one that ends before it leaves. Choose another parent, or change the end dates first: clear the parent’s end date, or give this group one no later than the parent’s.
- It says the dates fall outside the active dates. The new parent didn’t exist yet on the effective date, so choose a later date — or it ends while this group carries on.
Retiring a group
Nothing is deleted. To retire a group, edit it and give it an end date. From that day it disappears from the list, the chart and the figures; earlier As-of dates still show it, and its history stays readable. Retire the positions and sub-groups beneath it first.
Managers
A manager is a Flowstate user who may change the group and everything beneath it: add and edit sub-groups and positions, fill seats, move things, and appoint other managers within that branch. Rights inherit downwards, so a manager of an area manages every team in it. A group with no managers of its own shows its parent’s, marked “via …”.
Managers sit in the group page’s header as a row of names, each with a remove cross, followed by Add manager. Anyone holding the share permission, and any manager of the group (direct or inherited), may add or remove managers there. Right-clicking a row offers Add manager too.
History
Every change to a group — its details, its position in the tree, its managers — is recorded with who made it, when, and what changed, and shown on the group page’s History tab, newest first. A move says where the group came from, where it went, and from which day.
Doing it from Claude
With the Flowstate MCP connection, the same operations are tools. A few examples, with the prompt and the call it turns into.
Create an area and a team inside it
Create a top-level area called “Cards & Payments”, type Area, starting 1 October, then a team called “Card Issuing” (type Team, external ID T-1101) underneath it.
add_functional_group { "name": "Cards & Payments", "groupType": "Area", "startDate": "2026-10-01" }
add_functional_group { "name": "Card Issuing", "groupType": "Team", "externalId": "T-1101",
"parentFunctionalGroupId": "<id returned above>", "startDate": "2026-10-01" }
Rename and describe a group
Rename T-1101 to “Card Issuing & Activation” and describe it as “Issuing, activation and renewals”.
update_functional_group { "functionalGroupId": "<id>", "name": "Card Issuing & Activation",
"description": "Issuing, activation and renewals", "startDate": "2026-10-01" }
Updates are a full replacement: send every field you want to keep. A field you leave out is cleared.
Move a team under another stream from a given day
From 1 November, move Card Issuing under the Servicing stream.
move_functional_group { "functionalGroupId": "<team id>", "parentFunctionalGroupId": "<stream id>",
"effectiveDate": "2026-11-01" }
Appoint a manager
Make Priya Raman a manager of Cards & Payments.
add_functional_group_manager { "functionalGroupId": "<id>", "userId": "<Priya's user id>" }
Retire a group
Close the Legacy Statements team at the end of December.
update_functional_group { "functionalGroupId": "<id>", "name": "Legacy Statements",
"startDate": "2024-01-01", "endDate": "2026-12-31" }
All calls take an optional planId to act inside a scenario instead of the live plan.
REST
The same operations over HTTP, under /api/v1/functional-groups:
| Method and path | Purpose |
|---|---|
GET /tree?asOf= | The whole hierarchy with figures on one day. |
GET / and GET /:id | List groups; read one group in full. |
POST / and PUT /:id | Create; replace details. |
POST /:id/move | Re-file under another parent from a date. |
GET /:id/summary?asOf= | One group’s figures. |
POST /access and DELETE /access/:id | Appoint and remove managers. |
See the API reference for request and response shapes. There is no delete endpoint: groups are retired with an end date.