Moving from WinQS to QSNAPP

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.

winqs → qsnapp

# 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.
Grounded in qs-brainConfirmed against restored WinQS project databases

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.

doctype=E

Bill of Estimates

Elemental cost planning organised by AAQS element names (Foundations, External Envelope, Floor Finishes…). Same measurement tables as BoQ — different document purpose.

doctype=Q

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.

doctype=X

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.

doctype=G

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 trustUse instead
item.vonodimension.vono
SpoormakerDimXItemsitem + extimport
CalculatedItemHistoryitemlochistory
Contractors (legacy)contractor → Persons
gpconstantdoctype G items
ccrcert.certvalue alonemarginal payment

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.

Migrate your WinQS library to QSNAPP to keep measured truth intact while gaining modern estimating, BoQ, and certificate workflows.

Open migration guide

Build in a weekend, scale to millions