+ There are several ways to seed this facility's inventory - Machines, PCs, + Applications, and their properties - into ShopDB. You can combine them: + each source writes to the same set of importable CSVs, and a later run + fills gaps without wiping data an earlier run captured. +
+ +
+ Deploy Collect-ShopDB.ps1 to your existing endpoints in a
+ way of your choosing (logon script, scheduled task, remote execution,
+ or a manual run). It runs read-only, extracts each PC and any attached
+ eDNC/DNC machine, and extrapolates vendor, model, OS, network, and
+ installed-application details. Every run UPSERTs rows into the shared
+ CSV store below, so a site builds its inventory one PC at a time.
+
+ Export from an existing MES, CMDB, or asset spreadsheet into the same + CSV schema and drop the files in the collection location. +
++ Map a device or application export (for example from Microsoft Graph) + onto the computers and applications CSVs, then place them alongside the + script output. +
+
+ Download Collect-ShopDB.ps1 and deploy it to your endpoints
+ (logon script, scheduled task, remote execution, or a manual run). The CSV
+ Collections Location you save below is baked into the script's
+ $NetworkStoreRoot variable, so every endpoint publishes into
+ the same store without editing PowerShell by hand.
+
+ These are early-draft import templates generated from the live ShopDB + schema. Each file has a header row and a commented example. Fill one out + (or let the collector script populate them) and import them in the order + below - a table never references something that has not been loaded yet. + Foreign keys accept the referenced row's name or its numeric id, and + re-importing a file updates matching rows instead of duplicating them. +
+ +Loading...
+{{ t.filename }}
+
+ {{ templatesError }}
++ Select one or more filled-in CSVs. They are ordered by dependency + automatically, so you can pick the whole set at once. Preview first: it + writes nothing and reports exactly what each file would create or update, + plus any rows that need fixing. Nothing is imported until you press + Commit, and the whole set is applied together - if any row has a problem, + nothing is written. +
+ ++ {{ selectedFiles.length }} file(s) selected: + {{ selectedFiles.map(f => f.name).join(', ') }} +
+ +{{ importError }}
+ ++ {{ report.request_error }} +
+ ++ + Imported: {{ report.total_created }} created, + {{ report.total_updated }} updated. + + + {{ report.problem_count }} problem(s) found - nothing was written. + Fix the rows below and preview again. + + + Looks good: {{ report.total_created }} would be created, + {{ report.total_updated }} updated. Press Commit Import to apply. + +
+ + + +| File | +Table | +Created | +Updated | +Reconciled | +Problems | +
|---|---|---|---|---|---|
{{ f.filename }} |
+ {{ f.table }} | +{{ f.created }} | +{{ f.updated }} | ++ {{ (f.reconciliations || []).length }} + | ++ {{ f.problems.length }} + | +
+ These names did not match exactly but were close enough to bind to an + existing record. Confirm each is correct; if any is wrong, add the + exact name to the matching CSV (or lower/raise the reconciliation + threshold in Site settings) and preview again. +
+{{ r.filename }}
+ line {{ r.line }}, column
+ {{ r.column }}:
+ "{{ r.input }}" matched {{ r.matched }}
+ ({{ r.table }}, {{ Math.round(r.score * 100) }}%)
+ {{ p.filename }}
+ line {{ p.line }}, column
+ {{ p.column }}: {{ p.message }}
+ + Skipped (not importable): {{ report.skipped.join(', ') }} +
+
+ A PC that drives a machine (a CMM PC, a DNC/eDNC host) is linked to that
+ machine so the two show up connected across ShopDB. That link is built
+ automatically by the Asset Collector, not by this CSV import: the script
+ reads the four-digit workstation number from the PC it runs on and
+ reports it, and ShopDB matches that number to a machine's
+ assetnumber to create the connection.
+
+ What this means for import order: load your machines first (so their
+ assetnumber values exist), then let the collector run on
+ each PC. A machine number the collector reports that does not match an
+ existing machine is flagged rather than guessed, so nothing links to the
+ wrong asset. Building this relationship straight from a CSV column is
+ planned as a follow-up.
+