🔒 Change Your Password

Your account requires a password change before you can access the system. Choose a strong password you haven't used before.

Minimum 8 characters.
ROADWAY MAINTENANCE SYSTEM
Connecting to local database…
MMS

MAINTENANCE MANAGEMENT SYSTEM

Signed in |
Reporting as (change Shop/Crew at top left)
Daily Report
Tap a section's + Add to open a picker. For assets you'll also log how much got done — in that activity's unit.
Purchase History
15 years of attributed spend — WV fiscal year (Jul–Jun) totals and searchable lines
Gutter Inventory
Select a row from the table (or a marker on the map) to see the full record here.
High Mast Tower Inventory
Select a row from the table (or a marker on the map) to see the full record here.
Overhead Sign Inventory
Select a row from the table (or a marker on the map) to see the full record here.
Lighting Setup
Managed dropdown lists for the light registry · hiding keeps history intact, adding a hidden name re-activates it
Loading…
Lighting
Roadway & parking lights · one registry, two types · linked to High Mast Towers and Grounds
Select a light from the table or map.
Replacement Plan
Candidates ranked, sized to a budget, with the date to start buying
derived VEU from our own hours, with the published benchmark alongside
Enter a budget and build the plan, or leave it blank to see the ranking alone.
Condition Assessments
Units due for assessment, and the form to complete one
Loading…
Fuel Economy
Each unit against its own history and its class · a mechanical signal and a data check in one
Loading…
Class Cost Curve
Life-to-date cost against age, and where it bottoms out
Select a class above.
Forfeited Residual Value
Market value at disposal that the Authority receives nothing for
Loading…
Unit Cost History
The annual table NCHRP 879 consumes · utilization, maintenance and fuel per year of life
Select a piece of equipment above.
FEMA Equipment Rates
The standing source for equipment type rates · load each July's schedule, then map types and refresh
Load a schedule year
Save the FEMA Schedule of Equipment Rates as a CSV with columns code, description, unit, rate (an effective_date column is optional), then choose the year and upload. Re-loading a year updates it in place.
Loading…
Meter Type Derivation
Miles or hours per unit, proposed from fuel evidence · you approve before anything is written
Loading…
LCCA Data Health
What is missing, and whether what remains reaches back far enough to mean anything · measured, not assumed
Loading…
Bridge Weather (RWIS) sensor health
Eight ViewMondo stations on the bridge decks. Freshness is judged against the newest import across the network, so a lagging station means a dead feed, not a late upload. Atmosphere and road-side sensors are scored separately — a station can be half-alive.
Loading…
Storm Forensics
One storm, three testimonies: the confirmed windows, what the bridge sensors recorded inside them, and the response in the work-report history. Response depth grows with each imported year.
Conditions at a Moment
Every bridge's nearest reading within 30 minutes of an instant — "what did the decks look like at 5am".
Salt & Surface Loop
Hourly deck salinity, ice %, water film, ice layer, and snow depth against surface temperature and precipitation for one bridge — application spikes, decay slopes, wash-off, and icing onset read straight off the series. Max 14 days.
to
Season Severity & Freeze-Thaw
Per bridge, per season: an RWIS-simplified severity index (documented banding — comparable season-to-season within this system, not against official NWS AWSSI), deck freeze-thaw days (froze ≤32 and thawed ≥36 the same day), snow hours, and the coldest the deck got.
Loading…
Truck Instrumentation (Precise)
The vendor-visit scoreboard: per truck — plow-input liveness, spreader mode split (Closed = measured, Open = estimate, Manual = nothing recorded), road-temperature reporting with stuck-sensor detection, prewet presence, and salt totals carrying the export's own estimate flag. Import feeds it at System → Winter Data Import.
Loading…
Season Cost vs Severity
Winter-activity spend (601/603 labor + equipment) and salt-named material quantity per season from the work-report history, normalized by network severity where RWIS coverage exists. Pre-RWIS seasons show cost with severity pending the official-AWSSI backfill. Salt figures include Open-Loop estimates until spreader-mode data says otherwise.
Loading…
Storm League
Every storm ranked by response cost, with hours, salt, in-window severity, and $/severity-point. Outliers (over 2× the median $/pt) are flagged — the storm that cost double what its weather justified is the one worth a debrief.
Loading…
Bridge-Frost Mornings
Days a deck sat at ≤34°F for 30+ minutes while the air read ≥37°F — the bridge-ices-first events this network exists to catch — and whether the section ran winter activity (601/603) that day. Unanswered mornings are listed.
Loading…
Winter Operations
Storms proposed from operations data · you confirm the windows
Inspection Work Orders
Auto-created by inspection triggers · deliberately separate from Bridge Work Orders
IWO #ReportedDueAssetTaskShopStatus
Import Roadway Assets
Guardrail (replace) · Signs (merge) · Gutters / High Mast Towers / Overhead Signs (new worlds) — docs/roadway-assets-pending.md
Import Legacy Purchases
2011–2026 transaction history — dry-run diff against live registries (docs/purchase-history-pending.md)
Mechanics Coverage
RO labor + daily activities + leave vs the 40-hour week — silence is visible, not discovered
Repair Orders
RO #UnitDescriptionPriorityStatusActivitiesDays Open
Preventive Maintenance
Tracking by mileage, engine hours, and calendar interval simultaneously.
UnitPM TypeIntervalLast Performed Current ReadingDue AtStatusAction
Receive Materials
Record materials received from a vendor into inventory. Each receipt posts to the selected storage location.
Receipt # REC-
Receipt Information
🔒
Line ItemsClick a row to edit quantities and costs inline
#MaterialUnitQty ReceivedUnit CostExtended CostNotes
No items added yet — use the buttons below to add materials.
Issue Materials
Parts consumed by mechanics on repair orders that need to be pulled from the Warehouse and issued to their shop. Add items to the Pick List, then finalize to create a transfer.
MaterialShopShop On HandWarehouse On HandNeededAdd to Pick List
Pick List0
No items added yet. Click "Add to Pick List" on any row.
Receipt Log
Every transfer with its confirmation status, plus reported issues and how they were resolved.
Transfer Materials
Fulfill pending Pick Lists from Issue Materials, or create a new manual transfer between locations.
Select Material
MaterialCategoryUnitOn Hand
0 selected
Barcode Scanner
Starting camera…
Handheld scanners type into the box above automatically — just pull the trigger.
Divide Budget by Shop
Add Planned Purchase
Unit Costs
Element
Assign Agency Transaction
Dismiss Demand
P-Card Purchase Entry
Choose how you want to enter the transaction, then add the charge details and save.
📥 Import from P-Card System
In wvOASIS, open the transaction (PRCUT) and click the capture bookmarklet — then click Import here. The Transaction ID comes along, so the entry auto-reconciles when the agency report is imported.
📖 How to install and use the bookmarklet
  1. One-time setup: Drag this link to your browser's bookmarks bar: 📥 MMS P-Card Capture
  2. Each time: In wvOASIS, open the Paid Procurement Card Transaction (PRCUT) → click the MMS P-Card Capture bookmarklet. An alert confirms what was read (it's copied to your clipboard).
  3. Switch back to this tab and click Import Captured Transaction. The first time, your browser will ask permission to read the clipboard — allow it. (If clipboard access is blocked, a paste box appears instead — press Ctrl+V there.)
  4. The transaction fields pre-fill, including the Transaction ID. Add charge details below and save.
Transaction Info From P-Card System
Not yet imported
Not yet imported
Not yet imported
Not yet imported
Not yet imported
Not yet imported
Charge Details You fill in
Today's Entries Loading…
No entries yet today.
Contract / Invoice Entry
Record payments against an approved contract or purchase order. Each line item carries its own budget account for multi-code invoices.
Entry # INV-
Invoice Information
Line Items Each line can have its own budget account — useful when one invoice covers multiple cost codes.
#Description of Goods / Services Qty Unit Cost Extended Budget Account
Invoice Total
$0.00
Draft
Approval Workflow
Entry created
Submitted by current user · Pending submission
Section Supervisor review
Awaiting submission before routing
Finance Manager approval
Required for invoices over $5,000
Payment processing
AP posts to general ledger and schedules payment
Finance Reports
Live data from P-Card and contract entries submitted through this system. Budget figures are illustrative targets.
FY 2026 · Beckley District
Database Tables
Select a table
Click any table in the left panel to see its schema, row count, and a data preview.
Fleet Import
Import the cleaned fleet inventory (Fleet_Import_Ready.xlsx). Preview resolves makes, models, classes, and shops first \u2014 nothing writes until you commit. Shops are match-only unless you allow creating them.
Photo Storage (R2) object storage
Photos and attachments now live in the Cloudflare R2 bucket; the database keeps the metadata and identity scheme unchanged. New uploads go to R2 automatically once configured. The migrator below moves legacy in-database rows in small stepped batches — each row commits alone, so it can be stopped and resumed freely. Database space returns gradually via autovacuum after migration.
Loading…
Email Schedules automated dispatch
Every scheduled email is a row here; the dispatcher cron checks every 15 minutes and sends what's due (Eastern time). Preview renders the message from live data exactly as it would send. All schedules ship disabled — add recipients, then enable.
Loading…
Recent activity
Winter Data Import
Precise exports: Usage Report (daily truck rollups) and Material Usage Report (salt totals & rates). Raw GPS derivation comes in the next phase. Re-uploading the same file is safe \u2014 duplicates are detected.
Bridge Weather (RWIS / ViewMondo)
Per-station CSV export from viewmondousa.com. The file's content does not say which bridge it came from — only the filename knows — so pick the station, then the file. Re-importing the same file is safe: duplicate timestamps are skipped.
every confirmed storm window scored against each station's record, plus frozen-precip events OUTSIDE the confirmed windows
Precise Instrumentation Import
Feeds the Truck Instrumentation panel (Reports → Bridge Weather). Accepts any of the three Precise workbooks — Raw Data Report (per-storm-day, ping-level), Usage Report (monthly, daily rows), Material Usage Report (monthly totals with the export's ⚠ estimate flags). The file type is detected from the workbook itself; each truck sheet imports independently and re-imports replace. Pings are aggregated per truck-day, never stored.
Work Reports Import legacy roadway + facility work reports
Import of ~15 years of legacy work reports (design: docs/work-reports-import-design.md). Step 1 is the mapping chart below: every legacy Management Unit must point at its new-system org unit — a shop or a crew — before any import runs. The importer refuses to guess.
Management Unit → Shop / Crew mapping
Loading…
Import a year-file
One legacy export at a time. Re-importing a file REPLACES its previous rows (the filename is the key), so corrections are safe. The commit refuses with a printed list if any Management Unit in the file is unmapped, and rolls everything back unless inserted line counts match the file exactly.
Work History
Every daily report in the system — live entries and legacy imports alike. Filter, browse, expand. Read-only.
to
Data Feeds
Recurring imports and pulls \u2014 what ran, what's due, what's been forgotten. Import-linked feeds track themselves; check-in feeds log a button press.
Profile Types
Select a profile
Click a profile type on the left to configure its module and nav access.
Usernames
Select a username
Click a user on the left to manage access, profiles, and password.
Organizational Chart
Division → Department → Shop → Crew. Click an item to drill into the next level. Each level can hold multiple items, but none are required.
SQL Console
Run SQL directly against the live database. One statement per run. Non-SELECT statements ask for confirmation before executing.
Quick reference:
Ctrl/Cmd + Enter to run
Employees
Employee roster used for crew assignments and labor cost calculations.
Employee IDLast NameFirst NameJob TitleShopStatusStart DateActions
Employee Import
HR roster import — Employee_Information.xlsx + Employee_Start_Dates.xlsx. Every name-match decision from the 2026-07-20 review is baked in; nothing writes until you commit. Increment Service Date is the truth for start dates; Management Units resolve to shops once and the mapping is remembered.
Fleet Work History Import
Legacy OASIS labor + materials work reports. Drop both files (order doesn't matter — they're detected by their headers). Missing labor costs are derived at $29.11/hr and flagged; shop-overhead pseudo units (0000/9997/9998/9999) are excluded. Safe to re-run: overlapping exports update lines in place, and units created in Fleet later link on the next run.
Job Titles
Title definitions used to assign employees and calculate labor cost. Use the Overhead Calculator to compute the Fully Burdened Rate.
Job TitleAverage Rate ($/hr)Fully Burdened Rate ($/hr)Job DescriptionActions
Accidents
One row per real accident. Notification emails arrive as separate rows and are rolled up here — every summary is preserved on the record. Legacy entries came from the old hand-kept log and are thinner; they are badged.
DateTime MilepostEvent ID Summary (latest) ConditionLanes InjuriesUpd.
Accident
Accident Import
Monthly email export, or the legacy operations log. The layout is detected from the column headers. Upload previews first — nothing is written until you confirm. Re-importing the same sheet is safe: rows already loaded are skipped.
Import history
#SourceFile CoversRows SkippedWhen
AADT Samples
WVDOT traffic count locations across the corridor. Between two samples, AADT for any milepost is estimated via piecewise linear interpolation. Used by the rate-normalised hotspot analysis (Accidents → Show hotspots → Rate) to identify segments that are worse than average given their traffic volume, not just crash frequency.
Add each MP + AADT you have on record. Nine were seeded from the initial ops handoff (Nov 2026).
Samples
MP AADT Year Source note Actions
Add a sample
How interpolation works. For MP X between two samples at MP A (AADT Va) and MP B (AADT Vb): interpolated AADT = Va + (X−A)/(B−A) × (Vb−Va). Beyond either endpoint the endpoint value is used and flagged as extrapolation.
Test interpolation
Condition Mapping
Reports show the canonical vocabulary on the left. The raw → code table on the right translates whatever the notification actually said (sno/ice, snow cov, wet/snowy…) into that vocabulary. Adding a mapping backfills every accident that already has that raw value.
Canonical vocabulary
CodeLabelOrder Use
+ Add a canonical label
Codes are immutable once created (accident records reference them). Labels and order are freely editable.
Raw value → code
Raw value (from the sheet)→ Code
+ Add a mapping
Adding backfills every historical accident whose notification carried this raw value.
Damage Review
Accidents flagged with a damage signal (Property Hit, subject line, or summary text describes a strike). Confirm whether the damage still exists — closed items report out so we can audit that someone looked. Legacy accidents are excluded.
Open items
Select an item on the left to review it.
Accident Reconcile
About 39% of notification emails carry no event ID. Each becomes its own accident on import — the safe default — and this queue merges the ones that are really updates of the same crash. Suggestions come from date + route + milepost + time; they are suggestions, so confirm or reject each.
Job Numbers
Project identifiers for New Construction and any other activity flagged to require one. Letters allowed in the Job Number. Marking Complete hides the number from pickers on new work reports and p-card entries; existing references stay intact.
Status
Job Number Job Name Location (Asset) Status
+ Add a new job number
Overhead Calculator
Compute the Fully Burdened Rate for a job title by stacking each indirect cost on top of the base wage. Save the result directly to the Job Titles table.
Job Title
$
Burden ComponentsPercentages apply to base wage; benefits typically entered as a flat $/hr
$
per hour, flat
Base Wage
$0.00
+
Total Burden
$0.00
=
Fully Burdened Rate
$0.00
Save this calculation to:
Activities
Activity codes available for daily reporting. Divisions control where an activity can be added; Assets limit which assets it can be performed on.
CodeActivity NameAccomplishment UnitDivisionsAsset TypesActions
Fleet Rates
Hourly cost per equipment unit. This rate is snapshotted at the moment a daily report is submitted, so historical labor/equipment costs stay accurate even after rates change.
UnitDescriptionTypeMeterHourly Rate ($/hr)Status
Set Password
Inspection Detail
New Custom View
1
2
3
Import Data —
1
2
3
4
Custom Views
Build a screen for any database table — pick the layout, choose which columns show, and decide where it appears in the nav. No code required.
Files
Inspection History
Every inspection on file, across signs and guardrail. Double-click a column header to sort; click a row for full detail.
DateAssetTypeInspectorOverallAttention NeededPhotos
Stock by Location
Materials stocked at this location. Click any row to expand. Items with no capacity and no stock on hand are hidden — click "Show Hidden" to manage them.
Part #DescriptionCategoryType On Hand Reorder Pt. Capacity
Transaction History
Fleet Inventory
Complete fleet registry. Click a row to edit. All dropdowns are managed under Admin → Lookup Values.
Equip #Make / ModelType Location / Mech ShopOdometerStatus
Fleet Types
Everything that defines a type lives here. Hourly Rate is the default cost used in daily reports (per-unit overrides live under Fleet Rates). Expected Life is our planning target and is what LCCA uses. LCCA Group decides which types are analysed together \u2014 leave a type on its own if its duty cycle is unlike the others. LCCA Schedule only picks which published depreciation curve applies. FEMA Rate Line is the schedule line this type is costed from — set it here, then run the annual refresh from Fleet → Reports → FEMA Rates.
Equipment TypeHourly Rate ($/hr) Budget Cost ($)Expected Life (yrs) LCCA Group LCCA Schedule FEMA Rate Line Flags Active UnitsActions
Equipment Lookup Values
Manage the dropdown options available on the Fleet Inventory form.
Vendors
Approved vendors for material procurement. Used on receipt entry and purchase orders.
Vendor NameContactPhoneEmail City / StateAcct #TermsAliasesStatus Actions
Merchant Aliases
Merchant name strings from the P-Card agency report, linked to vendors. Learned automatically during reconciliation — link or clean up here.
Merchant Name (from agency report)SeenLinked Vendor Actions
Storage Locations
Define which physical locations hold inventory, and which Org Chart shop each belongs to. Receive and Transfer operations use this shop link to correctly update stock levels.
Location NameLinked ShopTypeStatus Actions
Receipts & Issues — Transaction Log
Every stock movement across all locations. Filter by location, type, or date range. Double-click column headers to sort.
Date / TimeMaterialLocation TypeQty BalanceReferenceBy
Material Catalog
All parts and materials available in the system. These appear in Receive, Issue, and Transfer forms and on daily reports.
Part #DescriptionCategoryType UOMKind Actions
Budget Accounts — Chart of Accounts
Accounts organized into Operating, R&R, and Capital categories. Each account is scoped to a Division or a Department. Department-level accounts roll up to their parent Division on reports.
Budget Appropriations
Set annual budget amounts for each account. Grouped by category and sorted by account number. Amounts save automatically when you leave a field.
⚙ Manage Years
Select a year above to view appropriations.
P-Card Cardholder Mapping
Link agency cardholder IDs to MMS employees, set a default shop, and assign each cardholder to the reconciler who handles them.
Loading…
Equipment Replacement Forecast
Each unit's replacement year = purchase year (or model year) + its type's expected life. Costs use the type's budget cost, grown by the inflation assumption below.
Loading…
Reconciliation History
Successfully reconciled agency transactions (automatic exact matches, manual accepts, and entries created during review) and MMS entries flagged for investigation.
Loading…
Review Purchases
Review P-Card and contract entries. Defaults to your own entries for the current month.
Loading…
P-Card Reconciliation
Agency imports auto-match by Transaction ID (run them under Finance → Admin → Import Agency Report); review the exceptions below.
Loading…
Audit Log
Every write in the system lands here — who, what, when, and the before/after values. Filter and click a row to expand the details.
WhenWhoActionTableRecord
Data Health
Referential-integrity checks — the older report tables predate foreign keys, so orphans are possible after manual fixes or testing. Every count here should be zero; anything else deserves a look (the audit log usually explains how it happened).
Diagnostics
Troubleshooting readouts for chasing odd behavior. Off by default so screens stay clean — turn it on only while investigating, then turn it back off. The setting is per-browser.
Diagnostics mode
Currently shows: activity-picker resolution line (which template list applied, crew/shop ids the server saw, system.py revision, and any endpoint errors). More readouts will join this switch as they're built.
LOS Assessment
Roadway Sites
SectionDirSite MPStatus
Bridges
Bridge NoCommon NameMP
LOS Seasons & Sampling
Three assessment seasons per year. The generator draws 24 random 0.1-mile sites per direction per section (pure random, seeded, bridge cells pre-excluded); surveyors shift past toll plazas, work zones, and anything else in the field with a reason. Bridges are a census — every bridge, every season.
LOS Measures & Scales
The registry: every measure's description (the "?" help), scoring mode, pass threshold, and target. Grades come from versioned scales — legacy-13 is locked verbatim (your 2011+ trend lines depend on it); v2-2026 is the draft reform, fully yours to edit. See docs/los-scale-change-memo-v2.md for what changed and why.
Monthly KPI Report
Executive pack: live numbers until published, frozen after. Blocks appear when their data applies to the month.
LOS Results
The season report card, graded through the scale version you pick. Legacy-13 reproduces the historical method verbatim; v2-2026 applies the reform (pass-rate grading for defect measures, native pass/fail vegetation).
Activity Templates
Reusable activity sets assigned to shops and crews. A crew sees the union of its shop's templates plus its own — and a crew with none configured sees everything. The report editor shows the filtered list with a "show all" escape hatch, sorted by that crew's recent use.
Roadway Segments
The LRS backbone: mainline mileposted segments + exit ramps. Feeds the LOS sample frame and pavement cohorts. Quantity columns (delineators, mowing acreage…) are the future LOS denominators — empty from the legacy source until populated.
Select a segment from the table or a line on the map to see its full record here.
Manage Reports
Admin remedies for daily reports. Void is the default: the report keeps its row and audit trail but disappears from approvals, paysheets, and cost reports (reason required, reversible — unvoiding returns it to the approval queue as Submitted). Delete is for true test artifacts and removes the report and all its lines permanently.
IDDateShopCrewActsStatusByVoid Reason
Bridge Program
Capital programming — painting cycles, deck replacements, and bid contracts. Target years carry a slide window (±) for R&R fund shuffling; the forecast renders that honestly instead of pretending precision. Work orders attach to projects to form the bid-package scope.
ProjectTypeStatusContract #TargetSlideEst. CostWOs
Enter Inspection Items
One sitting per inspection report: review what's already open on the bridge (monitoring items first — stamp, escalate, or close each), then batch-add the new findings below. Every added item is tagged with the inspection it came from.
Program Project
Bridge Work Orders
Inspector-assigned bridge work. Numbering continues the legacy WR sequence. Priority A is due by the end of the construction season (Oct 31; items reported after Sept 1 roll to next year), B within two years, C is a monitoring item with no due date.
WO #BridgeIssuePriAssignedProgramReportedDueAge
Import Bridge Work Orders
Upload the legacy exports (save each .xls as .xlsx) — the open backlog and the completed history are the same format; the Status column sorts them out. Bridge IDs are matched after stripping the " - MP" suffix. Crew and contract values from the old Comments field map to real crews and program projects automatically. Re-running skips existing WR numbers.
Work Order
Bridges
Bridge inventory — legacy numbers cleaned (milepost suffix removed; original kept on record). ─ marks bridges with line geometry; · marks point-only bridges awaiting a digitized line.
Select a bridge from the table or a marker on the map to see its full record here.
Bridge No.Common NameClassMPSectionFeature CrossedLengthBARS #
Import Bridges
One-time import of the Bridge Inventory export (save the .xls as .xlsx first). The " - MP##.#" suffix is stripped from Bridge No. automatically; the original string is preserved. Re-running skips existing bridges. Batches are deletable.
Bridge
Import Legacy Culvert Inspections
One-time import of the old system's "Drainage Inspection Simple Report" CSV export (long format — one row per question). Re-running is safe: existing culvert + date pairs are skipped. Records with no ratings at all (inspections started but never completed) are skipped and counted. Everything imported is tagged and can be removed in one click.
Damage Log
Damage found on the monthly drive — walls, guardrail, attenuators, fence. Rows sort by milepost (windshield order). Lifecycle: Reported → Assigned → Repaired → Verified (confirmed fixed on a later drive). Targets: Priority A ${''}60 days, B 120.
Tap a marker to select
MPDirTypeDamagePriStatusAssigned ToReportedDays OpenClaim #
Appearance
Choices follow your login on any device.
Report Damage
Grounds
Complexes and sites. Legacy G-numbers preserved; buildings and elements roll up beneath each ground.
GroundCodeLegacy IDClassMgmt UnitBuildingsSpacesElementsFuel
Loading…
Buildings & Spaces
One row per structure (B-number) with interior spaces indented beneath. Legacy insurance numbers preserved. Budget division is editable inline — blank means it still needs assigned.
No.NameLegacyGroundKindClassSq FtDivisionElements
Facility Elements
Replaceable components — roofs, HVAC, paving, fuel systems — attached to a building or a ground. In-service dates and costs drive the Replacement Forecast; ~ marks estimated values.
Equip #TypeDescriptionBuilding / GroundIn ServiceLifeReplace ByCost
Facility Equipment
The full equipment inventory (serials, warranties, locations). Items worth capital-renewal planning get promoted to Forecast Elements — a fridge stays here; a rooftop unit gets promoted.
Equip #DescriptionClassBuilding / GroundMake / ModelIn ServiceForecast
Classification Queue
Imported rows the automated pass could not classify with confidence. Each needs a human call: is it a stand-alone building, or a space inside one? Nothing here blocks the rest of the system.
Loading…
Import Facility Data
Order matters: Grounds → Buildings → Equipment (each links to the one before). Files must be .xlsx — open the .xls in Excel and Save As .xlsx. Buildings/Equipment imports can be scoped to specific grounds. Every import is a batch that can be deleted wholesale, so re-importing under new decisions is a button, not a project.
Element Types
The capital-renewal catalog. Every field edits inline — expected lifespans are industry midpoints, edit to match Turnpike experience and the forecast updates instantly. Add your own types with the form below; deactivating a type that\'s in use hides it from pickers but preserves history.
Category
Element TypeCategoryTier Life (yrs)Cost Unit AttachIn Use Active
+ Add a new element type
Facility Replacement Forecast
Elements grouped by projected replacement year (in-service + expected life). Same model as the Fleet forecast; ~ marks estimated inputs. Overdue items appear in the current year.
Data Gaps
What we still need to collect (or dig out of old records) before the forecast is trustworthy. This doubles as the Facilities work queue after buy-in.
Loading…
Milepost Locator — WVDOT LRS
Enter a Turnpike milepost (8.98–95.34) and direction — the correct LRS route segment is chosen automatically. The same lookup is available to any future table that stores mileposts (accident reports, work sites, etc.).
use a specific Route ID
Route IDs follow WVDOT's LRS network. Located points can be copied as lat/long from the marker popup. Recent lookups stay pinned until you leave the page.
Import Agency P-Card Report
Upload the agency's monthly .xlsx statement. Rows auto-match to MMS entries by Transaction ID; exceptions go to the P-Card Reconciliation queue. New cardholder IDs are auto-registered for mapping under Cardholder Mapping.
Loading import history…
Planned Purchases
Encumbrance tracking for flagged accounts. Open lines hold their unspent planned amount against the budget until marked received. Users link P-Card and contract spending to these lines at entry time.
Select a fiscal year above.
Budget vs Actual
Compare appropriated budget amounts against actual P-Card and contract spending by account.
Select a fiscal year above.
Daily Report Approval
Loading…
Pending   All Approved
Asset Types
Define the categories of assets your crews work on. Asset types tied to Roadway or Facilities appear in those divisions' Inventory submenus. Enable "Has Inventory" to create a browse-able asset list that crew leaders can pick from on daily reports.
Asset TypeDivisionHas Inventory Linked ScreenOrder ActiveActions
Asset Inventory
All assets of this type. Click a row to edit. These appear as options in the daily report asset picker.
Asset NameRoute / LocationDescription ActiveActions
Material Categories & Types
Define the classification hierarchy for materials. Categories are top-level groupings (e.g. Vehicle & Equipment Parts). Types are the items within a category (e.g. Engine Oil). When editing a material, select from these instead of typing freeform.
Categories
Select a category →
Select a category on the left to view and manage its types.
This screen is planned but not yet built in this prototype.
Culvert Inventory
Select a culvert from the table (or a line on the map) to see its full record here.
Culvert Setup
Culvert Types control which elements an inspector sees. All dropdown lists are editable here.
Loading…
Drop Inlet Inventory
Select a drop inlet from the table (or a point on the map) to see its full record here.
Drop Inlet Data Import
One-time imports from the legacy system exports. Inventory first, then inspections — the inspection import skips assets it doesn't recognize.
1 · Inventory
The Drop_Inlet_Inventory export (xlsx or csv). Upsert by ID — re-running with a newer export refreshes fields, never duplicates.
2 · Inspection History
The Drop_Inlet_Inspections export (transposed one-row-per-question format). Skips already-imported (asset, date) pairs, so re-running is safe.
LOS History Import
One-time import of the legacy defect-survey export (13,000+ surveys, 2011–present) as raw values. Grades are computed at read time through whichever scale version you view — the raw numbers never change. Re-running is safe: already-imported surveys are skipped, and a same-season re-survey supersedes the original.
Defect Survey Export
The defect-survey export as csv (preferred — imports in seconds) or xlsx. Large xlsx files can exceed the server time limit; if an xlsx import fails, re-save it as CSV and retry. Creates historical seasons and sample sites as needed.
Edit Drop Inlet
Inspect
Inspection
Edit Culvert
Capture Culvert Line
…or tap the map to place a point (for ends you can't reach). Add points in order — start to end, with bends in between.
0 points
Culvert Inspection
Inspection Detail
Guardrail Inventory
10 assets · — ft total guardrail · I-77 / WV Turnpike, Beckley District. Click any row to locate it on the map.
Live database connection
Rail
Loc
Status
Select a guardrail from the table or a line on the map to see its full record here.
Loading…
Sign Inventory
20 signs · · I-77 / WV Turnpike near MP 48, Beckley District. Click a row to locate it; open any sign to run an inspection.
Live database connection
Class
Guide Warning Reg Emerg Rec
Select a sign from the table or a marker on the map to see its full record here.
Sign IDClassDescriptionMPLine/Ramp Post TypeSize (W×H)SheetingMaterialStatus
Inspect:
Click an asset on the map or in the list to select it
Sign Inspection
Add Equipment
Work History
0
Activities
0.0h
Labor hrs
0.0h
Equip hrs
0
Assets touched
Paysheet
Select a pay period to load hours.
Approved reports only
Select a pay period above to load the paysheet.
Holidays & Pay Periods
Manage the holiday calendar and post credits to shop employees. Use the Post Holiday action to credit all active employees in a shop at once.
DateHoliday NameHours Actions

Post Holiday Credit

Credits all active employees in the selected shop with holiday hours. Safe to re-run — duplicate credits are skipped.

Pay Periods

PeriodStatus
PM Schedules
Preventive maintenance is assigned by Equipment Type: every unit of a type inherits its templates automatically. Per-unit schedules below act as overrides — a unit-level schedule for the same PM type replaces the template for that unit. Each schedule can use a time component, a meter component, or both; whichever comes first triggers the PM.
PM Templates by Equipment Type
Equipment TypePM Type Time IntervalMeter Interval Units Covered Actions
Loading…
Unit Coverage & Overrides
UnitPM TypeSource Time IntervalMeter Interval Last ServiceLast Meter Actions
Fleet Allocation
Track fleet allotments by plan. Create a new plan each time the allocation changes — each plan captures a point-in-time snapshot you can compare over time.
ShopEquipment TypeAllotment CountPlanNotes Actions
Equipment Allocation Report
Allocated vs actual active fleet counts by shop and equipment type. Positive variance = more than allocated; negative = shortfall.
ShopEquipment TypeAllotment Allocated Active Fleet Variance PlanNotes
Condition Report
Overall ratings by asset type — where they stand now, and where they stood at the end of each year. Poor breakdown shows which elements caused each Poor rating.
Loading…
Inspection Schedule
Tracks next due season for each asset based on last inspection outcome. Overdue = past due season. Due = current season. Initialize from history using the button above.
Overdue
Due This Season
Next Year
Upcoming
No Record
Asset IDTypeRule Last InspectedRating Next DueNext TypeStatus
Loading…
Completed Repair Orders
All closed ROs at this shop. Filter by unit or date range.
to
RO #UnitOpenedCompleted PriorityLabor (h)Parts
Fuel Import
Upload a fuel system CSV export. Meter readings are validated against known history before committing. Equipment that doesn't match the fleet is still saved for cost tracking.
catches bad readings only provable after the next reading arrived
Drop CSV here or click to browse
Fuel system export — all columns passed through as-is
No file selected
Recent Imports
DateFileRowsIn FleetNot in FleetBy