Appearance
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.
Re-organising
Drag a row and drop it onto another row to make it a sub-group of that row. Drop it onto the Top level strip to make it a top-level group. The whole branch beneath it moves with it.
The move applies from the As-of day. The structure before that day is kept: set the As-of date to last month and the group is still where it was. To schedule a restructure, set the As-of date to the day it takes effect, then drag.
Rows that cannot 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. Anything else the server refuses comes back as a message.
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.
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.
json
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".
json
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.
json
move_functional_group { "functionalGroupId": "<team id>", "parentFunctionalGroupId": "<stream id>",
"effectiveDate": "2026-11-01" }Appoint a manager
Make Priya Raman a manager of Cards & Payments.
json
add_functional_group_manager { "functionalGroupId": "<id>", "userId": "<Priya's user id>" }Retire a group
Close the Legacy Statements team at the end of December.
json
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.