Release 3.4
House & Facade Import Lab
Admin bulk-import tooling for house types and facade types added in 3.4.0
Overview
v3.4.0 added a dedicated House & Facade Import Lab to the admin portal - a session-based bulk-import tool for creating HouseType and FacadeType entities from CSV or XLSX files.
What Changed
The import lab provides a multi-step workflow:
- Upload a CSV or XLSX file (multi-sheet XLSX prompts sheet selection)
- Preview and edit parsed rows in a spreadsheet-like table with inline editing and row toggling
- Quick ignore - filter out rows by content (blank, numeric, contains substring)
- Materialize - derive new columns by splitting an existing column on a delimiter
- Remove columns not needed
- Assign columns - map columns to "house type" and "facade type" roles, choose a target Company or UserGroup
- Dry run - preview what would be created without persisting
- Persist - create the entities
State is held in the PHP session as serialized workspace arrays rather than database records, keeping the import transactional and disposable.
Architecture
Follows the project's layered pattern - thin controller delegates all business logic to the service layer.
| File | Purpose |
|---|---|
Controller/Admin/HouseFacadeImportLabController.php (276 lines) | Thin HTTP handler for each step |
Service/Import/HouseFacadeImportLabService.php (991 lines) | All parsing, transformation, and persistence logic |
templates/admin/import/house_facade_lab.html.twig (798 lines) | Full UI with inline editing, column mapping, and preview |
Controller/Admin/DashboardController.php | Menu item added under "Import / Export" |
Entities involved: Company, UserGroup, HouseType, FacadeType
Changelog Reference
feat(admin): add house and facade import lab(#653)