First to Site
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:

  1. Upload a CSV or XLSX file (multi-sheet XLSX prompts sheet selection)
  2. Preview and edit parsed rows in a spreadsheet-like table with inline editing and row toggling
  3. Quick ignore - filter out rows by content (blank, numeric, contains substring)
  4. Materialize - derive new columns by splitting an existing column on a delimiter
  5. Remove columns not needed
  6. Assign columns - map columns to "house type" and "facade type" roles, choose a target Company or UserGroup
  7. Dry run - preview what would be created without persisting
  8. 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.

FilePurpose
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.phpMenu item added under "Import / Export"

Entities involved: Company, UserGroup, HouseType, FacadeType

Changelog Reference

  • feat(admin): add house and facade import lab (#653)