Water Management Toolbox - Impact Response Tool
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
| Area | How WMT supports it |
|---|---|
| Emergency Management | Real-time flood alerts and response coordination |
| WCM / WCP Updates | Validate and update Water Control Manuals and Plans |
| Deviation Requests | Document why normal operations must be adjusted |
| Climate Adaptation Studies | Test scenarios for future climate conditions |
| Planning & Safety Studies | Explore options for dam improvements |
| Headquarters / Division Situational Awareness | Executive 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.

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.


| Column | Description |
|---|---|
| (▼) | Expand / collapse the parent row's conditions |
| Location | Geographic / facility name (e.g., "Cloverdale Gage FLOW") |
| Status | Current condition |
| Data Source | Source type (DSS, Forecast DSS, or CDA) |
| Pathname | Full HEC-DSS path identifier |
| Operator · Threshold · Flood Impact · Action Required | Editable on the child (condition) rows |
| Plot | View 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:
| Field | Description |
|---|---|
| Operator | Comparison type (>, >=, <, <=) |
| Threshold | Numeric trigger value (default 0.0) |
| Flood Impact | Free-text description of what happens if triggered |
| Action Required | Free-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:
| Control | Purpose |
|---|---|
| 🔄 Refresh | Re-reads time-series data and recalculates alert statuses |
| Add Data Source | Dropdown: DSS File, Forecast DSS, CDA (CWMS) |
| Add Condition | Adds a new blank condition row under the selected parent |
| Delete | Removes the selected row (parent or child) |
| Save Config | Saves the IRT configuration as a JSON file |
| Load Config | Loads 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.
| Icon | Status Message | Meaning |
|---|---|---|
| ✓ (green check) | Does not Exceed Threshold | All threshold conditions are unmet — the row is safe |
| ✗ (red X) | Exceeds threshold | One or more threshold conditions are met |
| ! | DSS file not found | The referenced DSS file cannot be opened or is missing |
| 🚫 | No Data Available | The 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 dropdown | Source Type | Description | Availability |
|---|---|---|---|
| DSS File | DSS | Pathname from a local HEC-DSS file chosen from disk | Available today |
| Forecast DSS | Forecast DSS | Pathname from the active HEC-RTS forecast run | Enabled when HEC-RTS has an open forecast |
| CDA (CWMS) | CDA | Real-time pathname from the CWMS Data API | Planned 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.
| Column | Meaning |
|---|---|
| A | Watershed / group |
| B | Location (e.g., gage name) |
| C | Data Type (e.g., FLOW) |
| D | Start date of the record block |
| E | Interval (e.g., 1Hour) |
| F | Version tag (e.g., M0H0) |
| Pathname | Full /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.
| Column | Meaning |
|---|---|
| A | Watershed / group |
| B | Location (e.g., gage name) |
| C | Data Type (e.g., FLOW) |
| D | Start date of the record block |
| E | Interval (e.g., 1Hour) |
| F | Version tag (e.g., M0H0) |
| Pathname | Full /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:
| Field | Purpose | Example |
|---|---|---|
| Operator | Comparison type (how to evaluate) | > |
| Threshold | Numeric trigger point | 500.0 (elevation in ft) |
| Flood Impact | What happens if the threshold is met | "Minor flooding expected in downstream communities" |
| Action Required | Response or decision point | "Notify Emergency Management" |
A newly added condition defaults with Operator ">" and Threshold "0.0.".
Choosing an Operator
| Operator | Symbol | Typical Use | Example |
|---|---|---|---|
| Greater Than | > | Trigger when value exceeds threshold | Stage > 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 threshold | Reservoir 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).
| Mode | Controls | Best For |
|---|---|---|
| No Time Window | — | Real-time operations: evaluates the full available series, including forecast data |
| Specific Time Window | Start Date + Time, End Date + Time | Post-event review, training, threshold validation against a known historical event |
| Relative to Current Time | Go Back N days, Go Forward N days | Rolling windows based on "now" — e.g., last 30 days, next 5 days of forecast |
| By Individual Water Year | Start 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
| Field | Notes |
|---|---|
| Pathname | Usually easier to delete and re-add |
| Location | Update if the gage or output location name changes |
| DataSource | DSS, Forecast DSS, or CDA |
Child (Condition) rows
| Field | Notes |
|---|---|
| Operator | Dropdown: >, >=, <, <= |
| Threshold | Numeric value |
| Flood Impact | Free-text description |
| Action Required | Free-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
| Saved | Not Saved |
|---|---|
| IRT Name and Description | Actual 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
- Verify the file exists at the path shown, with a
.dssextension. - Confirm your user account has
Readpermission (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
- Clear the time window (Set Time Window → No Time Window → Apply) and re-evaluate.
- Open the file in HEC-DSSVue and confirm values exist at that exact pathname.
- 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
- 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
- Click 🔄 Refresh in the bottom toolbar.
- 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
- Click 🔄 Refresh, then re-open the plot with View.
- 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
- Try saving to a user-writable folder (e.g., Documents). If that succeeds, the issue is permissions on the original target.
- Close any other WMT session or app that has the file open.
- Check free disk space.
- Use only letters, numbers, underscores, and dashes in the filename — avoid
: * ? " < > |.

