v3.11.0 is the release where the import path became as serious as the editor. Until v3.10 the platform validated BOQ data after it was loaded — meaning bad files landed in the database and surfaced only when a user opened the editor and saw red. v3.11.0 inverts that: the validation framework runs during import, the report is returned with the upload response, and the project state stays consistent.
The four headline changes
Validation@Import on GAEB and Excel
GAEB X81/X83 and Excel imports now pipe through the same
ValidationEngine the editor uses. The upload endpoint
returns a ValidationReport with pass / warning / error
counts alongside the persisted IDs. Errors block persistence;
warnings persist and are surfaced in the editor traffic-light.
Native GAEB X84 writer
The GAEB family adds X84 Nebenangebot on top of the
existing X81/X83/X86 writers. The output passes the official XSD
schema and the GAEB conformance checker. The exporter shares its
ordinal & rounding helpers with the X83 path, so estimators who
already trust X83 output get X84 with the same numerics.
RVT diagnostics report
The RVT → canonical converter used to fail with a generic 500.
v3.11.0 wraps the DDC cad2data bridge in a
RvtDiagnostics collector that captures version-band
mismatches, missing family categories, unmapped property sets and
empty levels — and surfaces them as a structured report instead
of a stack trace.
Wave 3/4 modules — eight migrations
Eight new Alembic revisions (v3088 through
v3095) bring the Wave 3/4 modules online: extended
subcontractor onboarding, the documents-versioning surface,
property-development tables, and three reporting roll-ups. All eight
share one migration head and follow the standard module convention.
Why Validation@Import is the load-bearing change
The validation framework existed before v3.11.0 — rule sets for DIN
276, GAEB structure, and the universal boq_quality pack had
been registered since v3.0. What was missing was a place to run them
that was not the editor. A user uploading a tender package wants a
refusal at the upload step, not a list of red lines after the
project is half-set-up.
The new pipeline runs every applicable rule against the parsed-but-not-yet- persisted tree. Errors raise a 422 and persist nothing. Warnings persist the data and the report, so the editor opens with a yellow chip and a drill-down. Either way, the rule that triggered, the offending element reference (BOQ ordinal, cell coordinate, CAD element id) and the remediation message are all in the response body. That last part is what makes the import flow self-explanatory — no more guessing why the file did not load.
Upgrade
pip install --upgrade openconstructionerp==3.11.0
Alembic moves to head v3095. Existing imports continue to
work unchanged; the rule sets default to warn-only on the first
run, so no in-flight project will suddenly fail to open. The
warn_only default can be flipped per tenant by setting
VALIDATION_ON_IMPORT=enforce in the environment.
Validate your next import.
Live demo in your browser, or self-host in five minutes. AGPL-3.0, no signup required.