Client Schema Manager · Interactive Macro Demo

The CSM Apply Profile macro — try it yourself

One fixed 12d macro turns a raw Veris survey into a fully-compliant client deliverable. Below is a working simulation with real UnityWater data: scan the survey, fill the per-job values, run the macro, and watch every attribute fill in.

The panel in Section 3 is live — click the buttons. Companion to the written vision docs.

1Why this macro exists

Veris surveys every job using Veris field codes. But every client wants the data in their own format — their attribute names, their drop-downs, their rules. Doing that by hand, job after job, is slow and error-prone. CSM + this macro automate it.

📋

The surveyor stays light

Surveyors only capture what must be measured on site — a filtered field-code list, so they aren't overwhelmed.

🧠

CSM holds the brains

CSM defines every rule: which attribute maps where, how values translate, what formulas to run. It writes instructions, never does the maths.

⚙️

The macro does the work

In 12d, the one fixed macro reads those instructions, asks you for a few per-job values, then fills in everything the surveyor didn't capture.

The one-sentence model: CSM is a template generator. The 12d macro is the execution engine. CSM says what to compute; the macro runs it at job time.

2The pipeline, end to end

Two stages. Stage 1 (Codelist Manager) translates the code. Stage 2 (CSM designs it, the macro runs it) fills in the attributes.

Stage 1 · structural

Map File

Links each Veris code to the client's code / model / layer.
DRDPC → "308 Side entry pit"

Codelist Manager
Stage 2 · design

Guide Template

CSM writes the rule files: runtime actions, value maps, conditional rules + the field-input spec.

CSM app
Stage 2 · execution

Apply Profile macro

In 12d: scan the survey, fill the gaps (copy / map / compute / reference), write attributes onto every element.

12d macro
result

Compliant deliverable

Every required attribute populated → export to the client's format (fieldcodes, Leica, Trimble, ADAC XML).

Ready to ship
Per-project profiles: the same client has many jobs. Each needs different fixed values — a different design TIN, asset owner, job number. You enter them once per job; the macro saves them, so re-running needs no re-entry.

3Try the macro — a live simulation

This behaves like the real macro panel, with real UnityWater data. Follow the three steps in the orange bar. Everything you click changes the result — just like in 12d.

CSM Apply Profile — Review Seeded Survey Codes
▶ Do it yourself: Scan the survey  →  Fill the per-job values (Project Values tab)  →  Run the macro. Watch every attribute fill in.
UnityWater_ADAC5.0.12d_runtime.txt
SURVEY
CSM_client_subprofile.txt
UnityWater  ·  ADAC 5.0
🔍

The macro hasn't scanned yet. Click below — it reads the SURVEY model and shows only the client codes actually found in it (not the full client list).

Per-job values the macro needs you to supply (built from CSM's field-input spec)
0 of 7 provided
This tab IS "which fields the user must input". Everything NOT here, the macro computes itself. You fill these once → they save to the sub-profile → pre-filled next job.
Element-by-element values for the selected group
ElementField valueReference attributeAfter the macro runs
Watch the reference column: each element gets its own computed value (different Z → different depth). The macro never overwrites a unique field value — it only fills what's missing or derived.
What the macro did on the last run (audit proof)
🧾

Nothing run yet. Scan, fill the Project Values, then press Run the macro.

Scan the survey to begin.
Faithful simplification of the approved mockup (CSM_Apply_Profile_UI_Mockup_Improved.png); the real macro renders these as native 12d widgets and writes to actual survey elements.

4One attribute, step by step

The same thing the simulation does, told as a story — follow pipe depth on a UnityWater sewer pipe from the field to the deliverable. The surveyor never measures depth; the macro derives it.

5Who fills each value (the source kinds)

Every client attribute has a source kind — it answers "where does this value come from?". That single tag decides whether it appears on the panel for you to fill, or the macro handles it silently.

Source kindIn plain EnglishOn the panel?
capture_newThe surveyor measured it on site. Already in the survey data.No — macro reads it
veris_attrCopy a captured Veris attribute straight across (Material → Material).No — macro copies
office_ingestionTyped in the office, not measured — builder, document number, asset owner.Yes — you type it
project_defaultOne value for the whole job — data quality grade, survey method.Yes — set once
referenceDerived from a 12d object you pick — a design TIN, cadastre, sewer main.Yes — pick the object
derived_formulaComputed from geometry or other attributes — depth, length, bearing.No — macro computes
conditional_ruleIF/THEN logic over other attributes (like an Excel rule).No — macro computes
value_mapTranslate a Veris choice to the client's word (QL-A → A).No — macro translates
blocked_manualNo safe automatic source yet — a human must decide before delivery.No — review queue
The whole panel falls out of this table. The macro shows an input only for office, project and reference values. Everything else it works out itself.

6The two files the macro uses

The macro has exactly two "file boxes". One holds the client's rules (you never edit it). The other holds your answers for this job (the macro reads and writes it).

File Box ① · read only

Client Settings File

Written by the CSM app — one per client / schema
  • Which fields you must input + the widget for each (text, choice, TIN, model, string)
  • How the macro computes everything else — copies, value maps, formulas, references, rules
  • Files: project_runtime_profile.12d_runtime.txt, csm_field_input_spec.csv, csm_runtime_actions.csv
File Box ② · read & write

Project Sub-Profile

Saved by the macro — one per job
  • Your per-job answers: office values, project defaults
  • The names of the 12d objects you picked (design TIN, cadastre, sewer main)
  • Reload next time → panel pre-filled → no re-entry. File: CSM_client_subprofile.txt
One macro, forever. CSM generates data, never 12d code. The macro never changes per client — only these two files do. That's why a single fixed CSM_Apply_Profile works for every client and job.