diff --git a/Documentation/Using USMT Dash.md b/Documentation/Using USMT Dash.md index c964081..eefc699 100644 --- a/Documentation/Using USMT Dash.md +++ b/Documentation/Using USMT Dash.md @@ -3,19 +3,20 @@ # Using USMT Dash -USMT Dash tracks a Windows device-refresh project: which old (**source**) device is being replaced by which new (**destination**) device, and how far each migration has got. +USMT Dash tracks a Windows device-refresh project: which old (**source**) device is being replaced by which new (**destination**) device, and how far each migration has got. It updates by itself: while the worker is sweeping, new results appear every few seconds. ![How USMT Dash works](images/USMT%20Dash%20Architecture.png) ## The Pages -| Page | What it's for | -|---|---| -| **Tracked Devices** | Register devices under a *tag* (your name, a date batch, a department...). The worker only watches tagged devices. | -| **My Workbench** | Personal stacks: paste the devices on your cart and see just those. Saved in your browser. | -| **USMT Status** | Every tracked migration, grouped by status, with ping, free space and USMT log lines. | -| **All Devices** | Compares source and destination software and lists *specialty* apps missing from the new device. | -| **Custom View** | Build your own table: add, remove, resize, drag and filter any column. | -| **Documentation** | This knowledge base. Articles named after an app are linked from that app in the software view. | +| Page | Address | What it's for | +|---|---|---| +| **Overview** | `/` | The home page (click the logo to get back here). Counters for everything that still needs attention, overall progress, where the work is by building and floor, and a calendar of deployment dates. Click any number to list the devices behind it. | +| **Tracked Devices** | `/tracked` | Register devices under a *tag* (your name, a date batch, a department...). The worker only watches tagged devices. | +| **My Workbench** | `/workbench` | Personal stacks: paste the devices on your cart and see just those. Saved in your browser. | +| **USMT Status** | `/status` | Every tracked migration, grouped by status, with ping, free space and USMT log lines. | +| **All Devices** | `/devices` | Compares source and destination software and lists the *specialty* apps missing from the new device. | +| **Custom View** | `/custom` | Build your own table from any field: add, remove, resize, drag and filter columns. | +| **Documentation** | `/docs` | This knowledge base. Every article has its own link, e.g. `/docs/Zoom`. | ## Migration Status ![Migration lifecycle](images/Migration%20Lifecycle.png) @@ -30,8 +31,34 @@ USMT Dash tracks a Windows device-refresh project: which old (**source**) device | Not Associated | No computer association in ConfigMgr | | Skipped | The device's tag has **Skip USMT** ticked (inventory only) | +## Tracking devices +- One device per line. Partial names work in the Workbench, not here: use full names. +- Pair devices manually with `SOURCE, DESTINATION` on one line when there's no ConfigMgr association. Changing the destination shows up straight away. +- Tick **Skip USMT** on a tag for devices you only want inventory and online status for. +- Newly added devices are swept first, so their data appears within a few seconds of the next cycle starting. + +## Device details +Click any device to open its details. **Simple View** shows the migration; **Advanced View** adds both devices' inventory side by side. + +- **Presence**: whether the device is online now, when it was last online, and how long it has been offline. +- **Found In**: whether AD, SCCM and DNS know the device. A blank field says why, for example *Not in SCCM* or *No DNS record*. *Waiting for worker...* means it hasn't been looked up yet. +- **Monitors**: how many are attached and their models. +- A small clock icon next to a value means it's a **snapshot**: the last reading taken while the device was reachable (hover for the time). Completed migrations and offline devices show these instead of blanks. + +## Filtering and sorting +Every column header has a menu like Excel's: sort, search, and tick the values to show. + +- On list columns (tags, software) choose **Any ticked** (at least one), **Only ticked** (nothing else) or **Exactly ticked** (precisely those). +- On software columns, **Documented** ticks every app that has an article. Add **Only ticked** to find the "easy" devices whose apps are all documented, or sort **Easiest first**. +- On space columns, sort by disk size or free space, or filter to devices with more or less than a set amount free. +- **Clear filters** in a table's header removes them all. + +## On a phone or tablet +- Tables become cards. **Filter & sort** opens the same menus for any column. +- The round **Jump** button finds a device by name and scrolls to its card (without hiding anything), or jumps to a section, the top, the middle or the bottom of the page. +- In Custom View, **Card fields** picks what each card shows and in what order. + ## Tips -- Pair devices manually with `SOURCE, DESTINATION` on one line when there's no ConfigMgr association. -- Click any device name for full details: location, users, hardware, AD groups. - **Copy Location Info** builds a ready-to-paste table for facilities or asset tickets. -- In articles, `[[Copy:text]]` creates a click-to-copy link, and `[[Yellow:Label]]` adds a badge. +- The **Data Updated** button shows the worker's progress, when the next cycle runs, and how long each kind of device took last time. **Force Update** starts a cycle now. +- In articles, `[[Copy:text]]` creates a click-to-copy link, `[[Yellow:Label]]` adds a badge, and a quote starting with `[!NOTE]`, `[!TIP]` or `[!WARNING]` becomes a callout. diff --git a/README.md b/README.md index 30f1373..0de3f32 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ a 1,300-device scope. - **Device details**: AD OU and groups, hardware, disk, RAM, monitors, client health, location, department, users, for both sides of a migration. A blank says why: *Not in AD*, *Not in SCCM*, *No DNS record*, or *Waiting for worker...* if it hasn't been looked up yet. - The dialog refreshes in place when the worker finishes a cycle. + Open dialogs refresh in place as new data arrives. - **Presence**: every ping is recorded, so each device shows when it was last online and how many days it has been offline. Completed pairs and Skip USMT devices, which skip network checks in the sweep, are pinged hourly during business hours and at midnight to keep theirs current. @@ -59,9 +59,9 @@ a 1,300-device scope. reachable are kept with their timestamps, and shown for completed migrations and offline devices instead of blanks. - **Excel-style filters** on every table: sort, search and tick values; list columns match - *any*, *only* or *exactly* the ticked items. On software columns, one click shows devices - whose apps all have a documentation article, and *Easiest first* sorts by how many apps - still lack one. + *any*, *only* or *exactly* the ticked items. On software columns, *Documented* + *Only + ticked* shows devices whose apps all have a documentation article, and *Easiest first* + sorts by how many apps still lack one. - **Phones and tablets**: tables become cards with one *Filter & sort* button, and a floating *Jump* button finds a device by name (scrolls to its card without filtering) or jumps to any section, the top or the bottom of the page. @@ -74,12 +74,14 @@ a 1,300-device scope. is searchable, counted and split into *Applications* and *Troubleshooting & Guides*; PDF export and print. Renaming an image rewrites every article that links to it. Articles named after an app are linked from that app in the software view. -- **Business-hours scheduling**: the worker cycles every few minutes during working hours, - sleeps overnight, and makes a midnight "pitstop" for the daily software refresh. - *Force Update* and *Force Full Refresh* skip the wait. The dashboard updates live while a cycle runs - (swept rows are published every few seconds), newly tracked devices are swept and - published first, the sync dialog shows how long each kind of device (SCCM association, - manual pair, completed snapshot...) took. +- **Live, on a schedule**: the worker cycles every few minutes during business hours, sleeps + overnight, and makes a midnight "pitstop" for the daily software refresh. While a cycle + runs, the rows swept so far are published every few seconds, so the dashboard updates live; + newly tracked devices are swept and published first. *Force Update* and *Force Full + Refresh* skip the wait, and the sync dialog shows how long each kind of device (SCCM + association, manual pair, completed snapshot...) took. +- **Every page has an address** (`/status`, `/devices`, `/docs/Adobe Acrobat Pro`, ...), so + links, bookmarks and the back button work. The logo goes home to the Overview. | | | |---|---| @@ -103,11 +105,15 @@ refresh" buttons drop flag files that the worker watches for. | `Providers\SCCM.ps1` | Real data source: ConfigMgr module, site SQL database, ADSI, DNS/ICMP, admin shares | | `Providers\Demo.ps1` | Simulated data source used by the demo (see below) | | `Config\usmt-dash.psd1` | Every environment-specific setting | -| `web\index.html` | The dashboard (single-file HTML/JS, about 4,500 lines) | +| `web\index.html` | The dashboard (HTML/JS, about 4,600 lines) | | `web\demo\demo.js` | Terminal panel, plus the demo-mode browser sandbox | | `web\overview.js` | Overview page (issue counters, progress, locations, deployment calendar) | | `web\device-info.js` | Shared device helpers: missing-data reasons, presence, snapshot markers | +| `web\excel-filter.js` | Excel-style sort / filter menus on every table; phone *Filter & sort* | +| `web\layout.js` / `layout.css` | Sticky headers, card view on phones and tablets, Custom View scrolling and column drag | | `web\docs.js` | Knowledge base: permalinks, search, categories, PDF / print | +| `web\router.js` | Page addresses (`/status`, `/docs/...`) and back / forward | +| `web\jump.js` | Phones and tablets: jump to a device, a section, the top, middle or bottom | ### API @@ -190,6 +196,24 @@ module), read access to the site database, AD read access, and admin-share acces missing. See `Demo\Blacklisted-Apps.txt` for the syntax (plain patterns, `Suite = a*, b*`, `Rule: DEVICE* = app*`, `Combo: Label = a* && b*`). +### Configuration + +Everything lives in `Config\usmt-dash.psd1`; each setting is commented there. The ones you're +most likely to change: + +| Setting | Default | What it does | +|---|---|---| +| `Worker.CycleSeconds` | `180` | Pause between cycles during business hours | +| `Worker.BusinessHours` | 07:30-17:30, Mon-Fri | When the worker cycles; outside it sleeps, with a midnight pitstop | +| `Worker.PresenceSweepMinutes` | `60` | How often completed and Skip USMT devices (which the sweep doesn't ping) are pinged | +| `Worker.LivePublishSeconds` | `10` | How often swept rows are published during a cycle | +| `Worker.SoftwareCacheHours` | `24` | How long a software inventory is reused | +| `Worker.DiskSkipList` | none | Devices whose admin share hangs; disk and log checks are skipped | +| `SCCM.AssetInventory` | `v_GS_ASSET_INFO0` | Optional custom inventory view for location, department, room type... | +| `SCCM.Monitors` | `v_GS_WMIMONITORID` | Attached monitors (needs WmiMonitorID in hardware inventory) | +| `Demo.BusinessHours` | 06:00-21:00, every day | When the demo worker runs | +| `Demo.DeviceCount` / `CycleSeconds` | `200` / `45` | Size of the simulated fleet and its cycle pause | + ### Adapting it to a different toolset All infrastructure access goes through a provider. To support another platform (Intune, a @@ -225,7 +249,9 @@ Demo/ demo seed script + sample app blacklist Documentation/ knowledge-base articles and images web/ dashboard, terminal panel / demo sandbox, vendored libraries Dockerfile, docker/ container for the hosted demo -Data/ runtime state (created on first run, not committed) +Data/ runtime state (created on first run, not committed): Data.json, + Worker-State.json, Advanced-Cache.json, Software-Cache.json, + Presence.json, Snapshots.json, Completed.json, Logs/ ``` ## Third-party code diff --git a/docs/screenshots/custom-view.png b/docs/screenshots/custom-view.png index b5a9358..a39b3ad 100644 Binary files a/docs/screenshots/custom-view.png and b/docs/screenshots/custom-view.png differ diff --git a/docs/screenshots/device-details.png b/docs/screenshots/device-details.png index 4ceaa8e..b3e1fef 100644 Binary files a/docs/screenshots/device-details.png and b/docs/screenshots/device-details.png differ diff --git a/docs/screenshots/documentation.png b/docs/screenshots/documentation.png index 8cf5bda..0a52abd 100644 Binary files a/docs/screenshots/documentation.png and b/docs/screenshots/documentation.png differ diff --git a/docs/screenshots/missing-software.png b/docs/screenshots/missing-software.png index 2c9c727..b79a013 100644 Binary files a/docs/screenshots/missing-software.png and b/docs/screenshots/missing-software.png differ diff --git a/docs/screenshots/overview.png b/docs/screenshots/overview.png index ef16d8a..a7c997a 100644 Binary files a/docs/screenshots/overview.png and b/docs/screenshots/overview.png differ diff --git a/docs/screenshots/terminals.png b/docs/screenshots/terminals.png index 9765c87..8e5e97e 100644 Binary files a/docs/screenshots/terminals.png and b/docs/screenshots/terminals.png differ diff --git a/docs/screenshots/usmt-status.png b/docs/screenshots/usmt-status.png index baacbc5..d929026 100644 Binary files a/docs/screenshots/usmt-status.png and b/docs/screenshots/usmt-status.png differ