For a complete hands-on walkthrough, see IRT Sample Workflow 

1. What is the WMT

The Water Management Toolbox (WMT) is a plugin for HEC-RTS that gives water managers regulatory situational awareness within CWMS. Its current core tool is the Impact Response Table (IRT).

The IRT is designed to help you:

  • View potential impacts at your facilities.
  • See the associated responses tied to specific flow or stage thresholds.
  • Track regulatory compliance in real time.
  • Make data-driven operational decisions.

Where the WMT Fits

AreaHow WMT supports it
Emergency ManagementReal-time flood alerts and response coordination
WCM / WCP UpdatesValidate and update Water Control Manuals and Plans
Deviation RequestsDocument why normal operations must be adjusted
Climate Adaptation StudiesTest scenarios for future climate conditions
Planning & Safety StudiesExplore options for dam improvements
Headquarters / Division Situational AwarenessExecutive briefings on facility status

System Requirements

  • HEC-RTS installed and configured on the host system.

Launching the WMT

WMT is launched from the Tools menu inside HEC-RTS. 

The WMT window presents a top menu bar — Home | File | Edit | Tools | CDA | Help — and a Home Tab. Tools open inside WMT as closeable tabs, so multiple workspaces can live alongside each other. 

Opening the Impact Response Tool

The Impact Response Tool is reachable from two places inside WMT:

  • Home tab → click Open Impact Response.
  • Tools menu → select Impact Response.

2. How the Impact Response Table Is Organized

An open Impact Response tab has four regions stacked top to bottom: a header with Name and Description fields, a time-window strip, a filter box, and the main IRT table — with a toolbar along the bottom.

Empty Impact Response Table

Two-Level Table Structure

The IRT itself is a two-level table. Each top-level row is a Data Source Row representing one source of data. It can be expanded to reveal one or more Threshold Condition child rows. The parent describes what is being measured and its current status. The children describe when an impact is triggered and what to do about it.

ColumnDescription
()Expand / collapse the parent row's conditions
LocationGeographic / facility name (e.g., "Cloverdale Gage FLOW")
StatusCurrent condition
Data SourceSource type (DSS, Forecast DSS, or CDA)
PathnameFull HEC-DSS path identifier
Operator · Threshold · Flood Impact · Action RequiredEditable on the child (condition) rows
PlotView button opens a time-series plot

Threshold Condition Fields

Each condition row is a single rule that defines when an impact occurs. It has four editable fields, all set on the child row:

FieldDescription
OperatorComparison type (>, >=, <, <=)
ThresholdNumeric trigger value (default 0.0)
Flood ImpactFree-text description of what happens if triggered
Action RequiredFree-text response or decision point

Multiple conditions per data source are fully supported, and each is evaluated independently.

Bottom Toolbar

The toolbar beneath the table exposes the primary actions:

ControlPurpose
🔄 RefreshRe-reads time-series data and recalculates alert statuses
Add Data SourceDropdown: DSS File, Forecast DSS, CDA (CWMS)
Add ConditionAdds a new blank condition row under the selected parent
DeleteRemoves the selected row (parent or child)
Save ConfigSaves the IRT configuration as a JSON file
Load ConfigLoads a previously saved JSON configuration

3. The Alert / Status System

Each Data Source Row displays a status icon + message in the Status column. The icons, and their meanings, are shown in the Key strip at the bottom of the IRT.

IconStatus MessageMeaning
✓ (green check)Does not Exceed ThresholdAll threshold conditions are unmet — the row is safe
✗ (red X)Exceeds thresholdOne or more threshold conditions are met
!DSS file not foundThe referenced DSS file cannot be opened or is missing
🚫No Data AvailableThe file exists but no values are available for the pathname (or outside the time window)

How a Rows Status Is Determined

The system reads the time-series values for the data source and checks each threshold condition against the values in the active time window (or against the full series if no window is enabled). If any condition is met, the row becomes ✗ Exceeds threshold. If all conditions are unmet, the row remains ✓ Does not Exceed Threshold. If the IRT can not read data for the row, it will become ! or 🚫. Status refreshes automatically when new data is loaded and can be forced with the Refresh button.

4. Data Sources

Every row in the IRT is anchored to exactly one data source. They represent time-series measurements — stage, flow, temperature, precipitation, and so on — currently pulled from HEC-DSS files or from RTS forecast connections. 

Source Types

Add Data Source is a dropdown that offers three types:

Option in dropdownSource TypeDescriptionAvailability
DSS FileDSSPathname from a local HEC-DSS file chosen from diskAvailable today
Forecast DSSForecast DSSPathname from the active HEC-RTS forecast runEnabled when HEC-RTS has an open forecast
CDA (CWMS)CDAReal-time pathname from the CWMS Data APIPlanned for a future release


Browsing and Selecting DSS Records

Choosing DSS File opens a file picker for a .dss file. Once selected, the Browse DSS Records dialog lists the records in that file as a table.

ColumnMeaning
AWatershed / group
BLocation (e.g., gage name)
CData Type (e.g., FLOW)
DStart date of the record block
EInterval (e.g., 1Hour)
FVersion tag (e.g., M0H0)
PathnameFull /A/B/C/D/E/F/ pathname

A search box at the top of the dialog filters rows in real time across all columns. Select records by highlighting rows, then click Add Selected to add them to the IRT.

Forecast Sources

When HEC-RTS has an active forecast, the IRT detects it automatically and enables the Forecast DSS option in the Add Data Source dropdown.

Once selected, the Forecast Browse DSS Records dialog lists the records in that file as a table.

ColumnMeaning
AWatershed / group
BLocation (e.g., gage name)
CData Type (e.g., FLOW)
DStart date of the record block
EInterval (e.g., 1Hour)
FVersion tag (e.g., M0H0)
PathnameFull /A/B/C/D/E/F/ pathname

A search box at the top of the dialog filters rows in real time across all columns. Select records by highlighting rows, then click Add Selected to add them to the IRT.

Rows sourced from forecasts are tagged DataSource: Forecast DSS.

CDA (CWMS) Sources

The IRT includes CDA integration as an Add Data Source option. Full real-time data retrieval from the CWMS Data API is planned for a future release.

5. Threshold Conditions

A condition answers the question: "At what value does this impact occur, and what should we do about it?" Every condition has four required fields on the child row:

FieldPurposeExample
OperatorComparison type (how to evaluate)>
ThresholdNumeric trigger point500.0 (elevation in ft)
Flood ImpactWhat happens if the threshold is met"Minor flooding expected in downstream communities"
Action RequiredResponse or decision point"Notify Emergency Management"

A newly added condition defaults with Operator ">" and Threshold "0.0.".

Choosing an Operator

OperatorSymbolTypical UseExample
Greater Than>Trigger when value exceeds thresholdStage > 500 ft = flooding starts
Greater Than or Equal>=Trigger at or above threshold (inclusive)Flow >= 5000 cfs = alert starts
Less Than<Trigger when value drops below thresholdReservoir Level < 500 ft = drought
Less Than or Equal<=Trigger at or below threshold (inclusive)Lake level <= 95 ft = low-water ops

How Conditions Are Evaluated

When a data source row is added, the system reads its time series from the data source, caches the values, evaluates every condition against that data, and sets the status icon and message. Every condition in a row is checked independently.

What Can Be Edited Later

Location, Data Source, and Pathname field can be edited when double-clicked. Every condition field is editable. Operator uses a dropdown; Threshold, Flood Impact, and Action Required are free-text cells on the child row. Changes apply immediately and the status icon updates in real time. Conditions can be deleted (via Delete) without removing the parent data source row.

6. Time Windows

A Time Window restricts the data that the system considers when calculating alerts. The window's current state is shown at the top of the IRT (e.g., "Time window: All Available Data"), and is changed with the Set Time Window button.

The Four Window Modes

The Set Time Window dialog offers four mutually exclusive modes, each with its own controls, and confirms with OK / Apply (or Cancel).

ModeControlsBest For
No Time WindowReal-time operations: evaluates the full available series, including forecast data
Specific Time WindowStart Date + Time, End Date + TimePost-event review, training, threshold validation against a known historical event
Relative to Current TimeGo Back N days, Go Forward N daysRolling windows based on "now" — e.g., last 30 days, next 5 days of forecast
By Individual Water YearStart Date of Water Year (e.g., 01 Oct)Seasonal / water-year studies aligned to a hydrologic calendar

How a Window Changes Alert Calculation

When a window is enabled, the IRT loads the full series, filters to values that fall inside the window, and evaluates conditions only against those filtered values. The row's status therefore reflects what happened during that period, not what is happening right now. Clearing to No Time Window returns the IRT to real-time operation.

Rows whose time series contain no values inside the window display will display 🚫 No Data Available rather than a pass/fail result. This outcome is a useful signal that the window may be too narrow for the data at hand.

7. Plots

Every Data Source Row has a View button in the Plot column that opens a time-series visualization. Plots are the primary tool for validating thresholds, communicating impacts, and training operators. Plots utilize DSSVue, with all the same features (Tabulate, Plot Properties, etc.).

A plot shows the data values as a line over time, with each threshold drawn as a horizontal reference line. 

Reading a Plot

  • Data line above a threshold → that condition is triggered (contributing to ✗).
  • Data line below a threshold → that condition is not triggered.
  • Data line crossing a threshold → a trigger or resolution event.
  • Steep segments → rapid change
  • Flat segments → stable conditions.

Time Windows can be used to narrow the data within a data source, and to be displayed within Plot.

  • When a data source is set to a time window that contains no data, attempting to plot will instead give an error dialog. 

Why Plots Matter

Plots help you understand how close typical values sit to each threshold, visualize historical trigger patterns, and build confidence that thresholds are neither too loose nor too tight.

8. Managing the IRT

Capacity and Performance

The IRT supports 100+ rows. Optimal performance is typically seen below 100 rows — beyond that, evaluation and plotting may slow depending on source file sizes. Use the 🔄 Refresh button to force a full recalculation if statuses appear stale.

Editable Fields

Parent (Data Source) rows

FieldNotes
PathnameUsually easier to delete and re-add
LocationUpdate if the gage or output location name changes
DataSourceDSS, Forecast DSS, or CDA

Child (Condition) rows

FieldNotes
OperatorDropdown: >, >=, <, <=
ThresholdNumeric value
Flood ImpactFree-text description
Action RequiredFree-text action / response

Any cell can be edited in place (double-click), navigated with Tab, and committed with Enter. Changes take effect immediately.

Deletion

Selecting a row and clicking Delete removes it. Deleting a parent removes all of its child conditions along with it. Deleting a child removes only that condition; the parent row remains. Deletion is immediate.

Filtering and Search

The Filter field above the table ("Filter by pathname, location, action…") matches in real time across location names, pathname fragments, threshold values, flood-impact text, action text, operator symbols, and status messages. It is the fastest way to find a specific row in a large configuration.

9. Configurations: Export, Load, and Share

IRT configurations are saved as JSON files using the Export Config and Load Config toolbar buttons. The format is text-based and version-control friendly.

What is and is not Saved

SavedNot Saved
IRT Name and DescriptionActual time-series data (re-loaded from the source on open)
All data sources (pathnames, locations, source type)Plot windows (regenerated on demand)
All threshold conditions (operators, thresholds, impacts, actions)UI session state such as the active tab
Time window settings (mode and parameters)

What Happens on Load

The IRT structure restores instantly. The IRT reconnects to the original DSS file(s) (or forecast / CDA source) to reload the time series and recalculate statuses against current data. If a referenced DSS file has been moved or deleted, a ! DSS file not found message is displayed on the affected row.

Sharing Configurations

Because configurations are plain JSON, they are straightforward to share: email the file, drop it on a shared drive, or commit it to a repository. Teammates who load the file get every data source, condition, and time-window setting you configured. They do not inherit your time-series data — each user's IRT reloads values from their own copy of the referenced DSS files (or their own CDA / forecast context).

10. Troubleshooting

"DSS file not found" (! icon)

Possible causes

  • File path is incorrect or the file has been moved, deleted, or renamed.
  • Insufficient permissions to read the file (or it is locked by another application).
  • File is corrupted or not a valid HEC-DSS format.
  • Network path is unreachable (for shared-drive files).

Solutions

  1. Verify the file exists at the path shown, with a .dss extension.
  2. Confirm your user account has Read permission (Properties → Security). For network drives, confirm connectivity.

"No Data Available" (🚫 icon)

Possible causes

  • A time window is set to a period with no values in the series.
  • The file exists but the pathname has no values.
  • The pathname format is incorrect.

Solutions

  1. Clear the time window (Set Time Window → No Time Window → Apply) and re-evaluate.
  2. Open the file in HEC-DSSVue and confirm values exist at that exact pathname.
  3. Re-add the pathname via Browse DSS Records to be sure it matches an existing record.

No records shown in Browse DSS Records

Possible causes

  • File is empty or contains only metadata.
  • The wrong file was selected.
  • File format is not recognized.

Solutions

  1. Double-check the file name and path against what you expected.

Status stuck despite new data

Possible causes

  • Statuses haven't been refreshed since new data landed.
  • The active time window excludes the new values.
  • Threshold values are unrealistic (too high or too low).

Solutions

  1. Click 🔄 Refresh in the bottom toolbar.
  2. Check the time-window strip at the top of the IRT. If a window is set, clear it and re-evaluate.

Plot shows no data or a flat line at zero

Possible causes

  • Time-series data has not been loaded for the row.
  • Source values are missing or invalid.
  • The plot is showing stub / fallback data.

Solutions

  1. Click 🔄 Refresh, then re-open the plot with View.
  2. Open the DSS file directly (HEC-DSSVue or equivalent) to confirm values exist at that exact pathname.

Cannot save configuration / "Permission denied"

Possible causes

  • Insufficient write permissions to the target folder.
  • Disk is full.
  • File is already open in another application.
  • Path or filename contains invalid characters.

Solutions

  1. Try saving to a user-writable folder (e.g., Documents). If that succeeds, the issue is permissions on the original target.
  2. Close any other WMT session or app that has the file open.
  3. Check free disk space.
  4. Use only letters, numbers, underscores, and dashes in the filename — avoid : * ? " < > |.