Bring your WinQS project into a modern QS platform.
QSNAPP is built around how WinQS actually works — reverse-engineered from real project databases, not the schema alone. Import BoE, BoQ, DimX takeoffs, variations, and JBCC certificate history with the same measurement chain your team already knows.
Upload a .WCLIB library, keep structure and quantities intact, and move into AAQS elemental estimating, Standard System BoQs, and live project controls — without rewriting your bill from scratch.
# proven WCLIB ingest path
.WCLIB (7z archive)
→ unpack → find .bak
→ map structure / item / dimension
doctypes: E BoE · Q BoQ · X DimX · G GPC
Done. Measurement chain preserved.
WinQS already holds the truth of the bill — structure, dimensions, DimX batches, and certificate history. QSNAPP is built to read that truth the way a QS would, including the traps the schema alone will not warn you about.
Why practices move from WinQS to QSNAPP
Built for South African QS workflows — AAQS elemental estimating, Standard System measurement, and JBCC contract administration — with an import path that mirrors real WinQS behaviour.
Keep the real measurement chain
WinQS items always land in structure → item → dimension → itemloc → itemprice. QSNAPP maps that same chain so headings, takeoffs, locations, and rates stay coherent after import.
Respect BoE and BoQ as separate documents
doctype E is elemental cost planning (AAQS-aligned). doctype Q is the trade-measured contract bill (Standard System / Model Bills). We never conflate them — preambles stay in BoQ where they belong.
Import DimX the way WinQS actually does
Real DimX batches write items with createuser='dimX' into doctype X, with provenance in extimport / extimportlink — not the empty SpoormakerDimXItems staging table. Measured first; pricing is a deliberate follow-up.
Migrate incrementally or all at once
Start with DimX measured items, BoQ structure+items, or elemental BoE — then layer certificates, variations, and recovery statements when you are ready.
Every WinQS document type maps cleanly
Shared tables, different doctypes. QSNAPP keeps that separation so elemental estimates never swallow your trade bill — and DimX takeoffs stay measured-but-unpriced until you apply rates.
Bill of Estimates
Elemental cost planning organised by AAQS element names (Foundations, External Envelope, Floor Finishes…). Same measurement tables as BoQ — different document purpose.
Bill of Quantities
Trade-measured contract bill. Real WinQS projects implement ASAQS Model Bills almost verbatim — H1–H4 headings, TX preambles, then measured items with M / M2 / M3 / NO units.
DimX takeoff
External BIM/takeoff bulk import landing zone. Items arrive fully measured (itemloc + dimension) but unpriced — apply rates as a separate step after re-homing into BoE or BoQ.
GP constants
Reusable named values (% Soft Rock, Rebar – Slabs) live as ordinary item rows under a GPC structure — not the empty legacy gpconstant table.
How WinQS import actually works
From qs-brain: confirmed against restored project databases (including full measured projects with DimX batches, BoE, BoQ, and issued JBCC certificates).
1. Ingest the library
.WCLIB is a 7z archive. Unpack it, find the .bak SQL Server backup inside, and treat that as the project source of truth — not a CSV export alone.
2. Read structure by doctype
structure.doctype splits E / Q / X / G / J. Parent/child sections via parentstructureno become your bill tree. structuregroup names trade/print groups for reporting.
3. Map the measurement chain
item rows are headings, text, or measured lines (unittype). dimension holds dimqty / dimtotal; itemloc ties location and measqty; itemprice applies rates from price lists.
4. Preserve DimX provenance
Link extimport batches (filename, revision, Merged status, named createuser) through extimportlink.winqslinkno → item.itemno. Ignore SpoormakerDimXItems when it is empty.
5. Classify without conflating layers
Bill location (structure) and Builder’s Work / Activity tags (keytype → keydesc → itemkey) are independent. Setting one never sets the other.
6. Bring contract admin last
Valuation uses itemlochistory (not CalculatedItemHistory scaffolding). Variations tag on dimension.vono — never item.vono. Certificates pay the marginal amount, not cumulative certvalue alone.
Built-in guardrails against WinQS traps
The schema has decoys and dead tables. QSNAPP's import logic follows the confirmed sources of truth — the same checklist agents use in qs-brain.
| Don't trust | Use instead | Why |
|---|---|---|
| item.vono | dimension.vono | item.vono is a DimX sentinel (often -1), not variation tracking. |
| SpoormakerDimXItems | item + extimport | Staging table is often unused; real imports write items directly. |
| CalculatedItemHistory | itemlochistory | Large row counts can be empty scaffolding — check values. |
| Contractors (legacy) | contractor → Persons | Capitalised plural table is superseded and often empty. |
| gpconstant | doctype G items | Real GP constants live as bill items under a GPC structure. |
| ccrcert.certvalue alone | marginal payment | certvalue is cumulative; payable amount is the delta vs previous certificate. |
Choose your first import slice
You do not have to move the whole project on day one. Pick the slice that unlocks your next QS workflow.
DimX measured items
Import takeoff-only batches: structure X, items, dimensions, locations — then price in QSNAPP.
BoQ structure + items
Full trade bill with Model Preambles, headings, and measured lines ready for tender or contract.
Elemental BoE
AAQS-aligned cost plan sections and composite/provisional items for early design stages.
Certificates & VOs
JBCC certificate history, variation orders, and recovery statement schedules once the bill is live.