CRM · Children CSV import
Bulk import of customers’ children (dependants) keyed on the parent’s id or email, carrying name, surname, birth date, gender, relationship and notes.
| Area | CRM |
| Routes | crm.users.import-children |
| Centre modules | crm · playcenter |
| Staff levels | root · admin |
| Models | child · load |
| UI label | user.relationship |
| Coverage | 2 use cases · 1 happy · 3 failure |
How it works
A narrower variant of the customer import: modelName is child, the match options are only id and email (no VAT number), and the template is baseChildrenCSV. Reached from the customer list via the navigateToImportChildren action, and gated by canImportChildren in nf-import.
Use cases
Why someone opens this (2)
- Loading existing play-centre registrations when a centre adopts the module.
- Keeping dependants in sync with an external kids-club system.
Path map
flowchart LR F(["Children CSV import"]):::feat F --> H1["Children loaded against existing parents"]:::ok F -.-> X1["Parent not found"]:::bad F -.-> X2["Missing birth date format"]:::bad F -.-> X3["Duplicate column mapping"]:::bad classDef feat fill:#157068,stroke:#157068,color:#ffffff,font-weight:bold classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13
Happy paths
Children loaded against existing parents
- Operator opens the children import from the customer list.
- Uploads a CSV whose rows carry the parent’s email plus the child’s details.
- Columns map, match key set to email, date format chosen for
bdate.- Import runs and the children appear under each customer.
Failure paths
Parent not found
Cause — The id/email in a row matches no customer.
What happens — Rejected server-side and reported in the import error list; the frontend does not pre-check.
Missing birth date format
Cause —
bdatemapped without a date format.What happens —
error.load.format-date.required.
Duplicate column mapping
Cause — Two columns mapped to the same attribute.
What happens —
error.load.repeated-fields.
QA checklist
Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.
- ✅ Children loaded against existing parents
- ⛔ Parent not found
- ⛔ Missing birth date format
- ⛔ Duplicate column mapping
Implementation
app/controllers/crm/users/import-children.jsapp/routes/crm/users/import-children.jsapp/components/nf-import.js
Translation keys (3)
Key English user.relationshipRelationship user.match-options.idId user.match-options.email
Related
- Same area — Customer list & filtering · Customer create & edit · Customer deletion with unsubscribe notice · Customer CSV export with column picker · Customer CSV import · AI natural-language customer filter · Save current filters as a segment · Segment list, refresh & export · Segment builder with automatic tag actions · Segment categories · User tags (user types) · Customer receipts tab & ticket-stamp generation · Customer loyalty — raffle tickets · Customer loyalty — cards & stamps · Customer loyalty — rewards · Customer loyalty — coupon exchanges · Customer children (dependants) · Receipt verification queue · Store list, filters & exports · Store create & edit · Store CSV import · Store labels (store types) · Customer action log (dormant)
- Shares data with — Play centre stays (check-in - check-out) · Footfall (flows) & Yardi upload · Influence zones · CSV import engine
- Behind the same module — Customer children (dependants) · Play centre stays (check-in - check-out)
Generated from doc/feature-inventory.json · id crm-children-import · commit 276788ca6