Create/Edit Batch
This page documents the Manage batch screen in the platform (ManageBatch): create or open a batch under a program configuration, adjust batch-level settings and session dates, configure surveys (when enabled at program level), and publish or unpublish (Team Learning).
Access and routing
- The page requires authentication (
requireAuth). - Only Team Sales or Team Learning users may use it; others are redirected to the dashboard.
- If the program configuration context is missing (
configurationIdempty), the user is redirected to the module catalogue step. - On load, the app loads the program configuration for
configurationIdand the batch forbatchIdwhen the configuration is available.
Header and navigation
| Element | Behaviour |
|---|---|
| Back | Resets in-memory batch state and navigates to /growthkit/configurations/:configurationId. |
| Title | Shows the batch title when set; otherwise falls back to the program configuration title. |
| Updated at | Displays the batch updatedAt timestamp (localized). |
| Published | When publishedAt is set, a green check and “published” label appear. |
Actions by role
Team Learning
| Action | Notes |
|---|---|
| Manage participants | Navigates to /growthkit/configurations/:configurationId/batches/:batchId/participants. Disabled when there is no batch or batch id is new. Detailed page: Manage Participants. |
| Publish batch | Opens a confirmation modal. Disabled while an operation is in progress, when the configuration is not confirmed (programConfiguration.json.confirmed), or when the batch is still new. Tooltip explains when publish is blocked due to unconfirmed configuration. |
| Unpublish batch | Shown when the batch is published; confirmation modal; disabled while an operation is in progress. |
Team Sales and Team Learning
| Action | Notes |
|---|---|
| Save draft | Shown when the batch is not yet persisted (!batch?.id). If the program configuration has a HubSpot deal (hubspotDealId), a modal offers add to configuration vs create new deal before creating the batch; otherwise the batch is created directly. |
Program information
Read-only and editable fields are mixed in one block.
| Field / control | Editable | Notes |
|---|---|---|
| Number of participants | No | Displays count from participant data when loaded; shows zero / “not assigned yet” when empty. |
| Batch size | No | Taken from program configuration batchSize. |
Participants per group (groupSize) | Yes, unless batch is published | See Participants per group and peer practices. |
SSO (isSSO) | Yes, unless published | Toggle with enabled/disabled label; persists when batch exists. Unrelated to group sizing. |
Individual coaching budget is shown read-only from the program configuration (individualCoachingBudget).
Participants per group and peer practices
Participants per group (batch field groupSize, label Participants per group in Batch settings) defines how many learners belong to one learning group within the batch. Together with the program’s planned batch size, it determines how many groups exist (typically named Group A, Group B, Group C, … on the participants screen) and—when the program includes peer practices—how many Peer Practice sessions are created per module on this batch.
Fields on the screen
| Field | Editable | Role in group sizing |
|---|---|---|
| Number of participants | No | Count of learners already assigned to this batch. Informational; does not drive peer-practice recalculation. |
| Batch size | No | Planned capacity from the program configuration (batchSize). Used as the divisor basis for group count and peer-practice session count. |
| Participants per group | Yes (until published) | Maximum learners per learning group (groupSize). Changing it recalculates peer practices immediately in the UI and saves when the batch already has an id. |
If participants per group is empty on a new batch, the UI defaults to ceil(batch size ÷ 2) until you set an explicit value.
How many groups?
The platform derives the number of learning groups as:
number of groups = ceil(batch size ÷ participants per group)
Each group is used for peer-practice scheduling and participant assignment (Group A, B, C, …). The smallest allowed participants per group is 1.
Example (batch size 12):
| Participants per group | Groups | Group labels |
|---|---|---|
| 6 | 2 | A, B |
| 5 | 3 | A, B, C |
| 4 | 3 | A, B, C |
Effect on peer practice sessions
Recalculation runs only when:
- The program configuration has a batch size, and
- The batch has participants per group set, and
- At least one batch module already contains Peer Practice sessions (copied from the program).
For each module that has peer practices, the platform sets the batch’s peer-practice count to:
peer practice sessions in module =
(peer practice sessions defined for that module in the program)
× number of groups
So each learning group gets one peer-practice slot per peer-practice type configured on the program. Adding or removing groups by changing participants per group adds or removes Peer Practice rows on the batch (via setupBatchPeerPractices in the platform) before the batch is saved.
Example (batch size 12, one Peer Practice per module in the program):
| Participants per group | Groups | Peer Practice sessions per module |
|---|---|---|
| 6 | 2 (A, B) | 2 |
| 5 | 3 (A, B, C) | 3 |
If a module defines two Peer Practice session types at program level, the same batch with 12 participants per group 6 would get 4 peer-practice sessions in that module (2 types × 2 groups).
When recalculation runs
| Trigger | Behaviour |
|---|---|
| Change participants per group | Recalculates peer practices in memory, then persists the batch if it already has an id. |
| Change module session dates on the schedule | Peer practices recomputed and batch saved (see Program schedule). |
| Save draft (create batch) | Initial batch is created with peer practices aligned to configuration. |
Constraints
- Published batches: Participants per group and SSO are disabled; values cannot be changed after publish. See Batch UI locking.
- Programs without peer practices: Changing group size still updates
groupSizeon the batch; modules without Peer Practice types are unchanged.
Related
- Manage participants — assign learners to Group A, B, C, …
- Module management (program) — where Peer Practice session types are defined on the configuration
Program time period
| Control | Behaviour |
|---|---|
| Start date | Date picker bound to batch startDate. When the batch is persisted, changes are saved immediately. Disabled when the batch is published. |
Survey configuration (batch level)
Survey configuration is documented as a standalone feature:
In this page, this section is intentionally kept short and serves only as the integration point within the broader Create/Edit Batch flow.
General information
If the program configuration defines generalInfo, a read-only card shows that text (whitespace preserved).
Program schedule
| Element | Behaviour |
|---|---|
| Share | Opens the public batch sessions/info URL in a new tab (/growthkit/configuration/:batchId/info), when the share URL is set and configurationId is a valid UUID. |
| Kickoff | If the batch has a kickoffSession, GrowthKitKickoffCard is shown: overall card is not “content editable”, but session date can be updated; comment editing is off. Updates go through batch update. |
| Modules | For each batch module, GrowthKitModuleCard lists sessions. Module reorder/delete and many session-type controls are off; session dates can be edited. After session changes, peer practices are recomputed and the batch is saved. |
| Request dates | Opens GrowthKit request dates modal. Enabled only when there is at least one coach appointment with status planned; otherwise the button is disabled. Full flow: Coach Appointment Date Requests. |
Modals
| Modal | Trigger | Purpose |
|---|---|---|
| Publish | Publish batch | Confirms publish; calls publish batch action. |
| Unpublish | Unpublish batch | Confirms unpublish; calls unpublish batch action. |
| Save batch draft | Save draft when HubSpot deal exists | Choose adding to configuration vs creating a new deal, then create batch. |
| Request dates | Request dates button | Coach date request flow; closes on success or abort. Full flow: Coach Appointment Date Requests. |
Loading state
While batch operations run, operationInProgress is true and a loader is shown (fixed position).
Related documentation (existing)
- Batches overview — scope and navigation.
- Program configuration confirmation — configuration confirm and initial batches.
- Publish batch — publish API flow.
- Batch UI locking — published-state restrictions.
- Setup batch (Team Learning) — operational context.
- Create/Edit Batch (Team Learning journey) — interactive step map.
Related documentation (placeholders)
| Topic | Status |
|---|---|
| Dedicated process docs (draft save, survey autosave, unpublish, coach date request) | Processes hub — program configuration & batches; PLACEHOLDER — planned. First-class YAML pages for each subflow when manifests exist. |