Observability
UPS data appears on non‑UPS devices (Power Control Unit Status widget and UPS inventory) in SolarWinds Platform
This article provides information about a SolarWinds Platform symptom where UPS (Power Control Unit) data appears on non‑UPS devices, such as switches or routers. Affected environments may see the Power Control Unit Status widget on non‑UPS node details pages and non‑UPS devices listed in UPS inventory, even though those devices are not UPS hardware.
First published date
Last published date
Overview
Symptoms
In affected environments, you may observe one or more of the following:
- On the Node Details view for a non‑UPS node (for example, a switch SW-CORE-01.example.local), the Power Control Unit Status widget is visible and shows UPS information (model, serial number, battery metrics, output status, etc.), even though the device is not a UPS.
- In Manage Nodes or a UPS/Power Control Unit inventory report, non‑UPS devices appear with UPS‑related attributes, such as:
- Name: APC UPS
- Model: Smart-UPS SRT 5000
- Serial Number: identical to a known UPS node
- This behavior is often noticed after an upgrade to a newer SolarWinds Platform core version (for example, from an earlier 2024.x build to a 2025.x build), when PCU/UPS functionality is migrated and discovery is rerun.
Example patterns you might see:
- Node Details page for a switch:
- Device caption: SW-ACCESS-01
- Machine type: Cisco Catalyst XXXX
- Power Control Unit Status widget present, showing a UPS model and serial number.
- Database / SWQL examples (generic):
- PowerControlUnitData_man_1 contains rows such as:
where ID = 101 is a real UPS node and ID = 205 is a non‑UPS device (for example, a switch).ID Name SerialNumber Model FirmwareVersion --- ------- --------------- ------------------ ---------------- 101 APC UPS AS1234567890 Smart-UPS SRT 5000 UPS 16.0 (ID1044) 205 APC UPS AS1234567890 Smart-UPS SRT 5000 UPS 16.0 (ID1044) - Pollers table contains entries such as:
indicating that both the UPS and the non‑UPS node have a PCU poller.PollerType NetObject NetObjectType NetObjectID -------------------------- ---------- ------------- ----------- PCU.Statistics.SNMP.Generic PCU:101 PCU 101 PCU.Statistics.SNMP.Generic PCU:205 PCU 205
These symptoms indicate that UPS (Power Control Unit) entities and pollers are attached to Node IDs that represent non‑UPS devices. Once this association exists, the standard Node Details view and UPS inventory will treat those nodes as UPS hosts.
Product section
Cause
High‑level cause
- SolarWinds’ UPS/PCU feature determines that a node “has a UPS” by polling specific APC PowerNet MIB OIDs during discovery. If the device responds correctly to a set of APC UPS identity OIDs, it creates a PCU entity and assigns a PCU.Statistics.SNMP.Generic poller to that node.
- A bug in the PCU discovery process with auto‑import can leave stale discovered PCU records in the database and then map them to different SNMP nodes on subsequent discovery runs. As a result, non‑UPS devices may inherit UPS entities and pollers that actually belong to a real UPS.
Technical details
- PCU discovery logic (PCUInventoryStep / PcuSnmpInventory)
- For any SNMP‑capable node, the PCU discovery step polls the following APC OIDs (examples, all under 1.3.6.1.4.1.318):
- UPS Name: 1.3.6.1.4.1.318.1.1.1.1.1.2.0
- UPS Model: 1.3.6.1.4.1.318.1.1.1.1.1.1.0
- UPS Serial Number: 1.3.6.1.4.1.318.1.1.1.1.2.3.0
- UPS Firmware Version: 1.3.6.1.4.1.318.1.1.1.1.2.1.0
- UPS Manufacture Date/Time: 1.3.6.1.4.1.318.1.1.1.1.2.2.0
- If the device responds successfully to these OIDs, the discovery logic treats the node as hosting a Power Control Unit (UPS) and:
- Creates a PCU record with an ID equal to the node’s NodeID.
- Assigns a PCU poller (PCU.Statistics.SNMP.Generic) with NetObjectType = 'PCU' and NetObjectID = NodeID.
- Node Details view and UPS inventory behavior
- The Power Control Unit Status widget on Node Details is part of a generic node view. It doesn’t re‑detect UPS devices itself; it simply checks whether a PCU entity is present for the current NodeID and whether its poll state is not disabled.
- Similarly, UPS inventory and related reports are built from the same PCU data tables/entities and do not perform their own hardware‑type validation.
- Discovery bug with auto‑import (PCU mis‑assignment)
- Under certain conditions, especially with scheduled Network Sonar Discovery jobs using auto‑import, older entries in the discovered PCU table can be left behind and then remapped to new discovery results for different nodes on subsequent runs.
- This can cause one physical UPS to be associated with multiple NodeIDs (for example, a real UPS node and one or more switches), all sharing the same UPS model/serial in PowerControlUnitData_man_1.
- Once the wrong NodeIDs have PCU entities and PCU pollers, the product correctly displays UPS data for those NodeIDs—even though they represent non‑UPS hardware.
Resolution
|
Important considerations
|
The resolution has three parts:
- Confirm which nodes are misclassified as UPS.
- Clean up incorrect PCU entities and pollers for those nodes.
- Optionally, reduce the chance of recurrences until you upgrade to a build that contains the fix.
Step 1 – Identify misclassified nodes
You can use either SQL (on the SolarWinds Platform database) or SWQL (via SWQL Studio/SDK) to locate nodes that have PCU pollers and PCU data.
1.1 Find NodeIDs that have PCU pollers
SELECT DISTINCT NetObjectID AS NodeID
FROM Pollers
WHERE NetObjectType = 'PCU';
Cross‑check each NodeID in the Nodes table (or via the SolarWinds Platform web console) to identify which devices are truly UPS hardware and which are non‑UPS (such as switches, routers, hypervisors, etc.).
1.2 Check PCU data for those NodeIDs
SELECT ID, Name, SerialNumber, Model, FirmwareVersion, ManufactureDateTime
FROM PowerControlUnitData_man_1
WHERE ID IN (<list_of_NodeIDs_from_query_above>);
Look for cases where the same UPS model and serial number appear for more than one ID, especially where one ID corresponds to UPS hardware and another ID corresponds to a non‑UPS device.
Make a list of NodeIDs that are not UPS devices but have PCU data and PCU pollers. These are the misclassified nodes you will clean up.
Step 2 – Remove PCU data and pollers from non‑UPS nodes
Warning: The following queries will permanently delete UPS/PCU entries for the specified NodeIDs. Run them only for NodeIDs you have confirmed are not UPS devices.
Assume you identified a set of non‑UPS NodeIDs such as:
NodeID: 205, 310, 412
2.1 Remove PCU statistics for those NodeIDs
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
DELETE s
FROM PowerControlUnitStatistics_1 s
JOIN PowerControlUnitData_man_1 d ON s.ID = d.ID
WHERE d.ID IN (205, 310, 412);
2.2 Remove PCU identity rows (main PCU records)
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
DELETE FROM PowerControlUnitData_man_1
WHERE ID IN (205, 310, 412);
2.3 Remove PCU pollers attached to these NodeIDs
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
DELETE FROM Pollers
WHERE NetObjectType = 'PCU'
AND NetObjectID IN (205, 310, 412);
2.4 Restart polling services
After the cleanup:
- Restart the Job Engine / Collector services (or the polling engine services) on the main and any additional polling engines hosting those nodes.
- Allow a few polling cycles to complete.
Expected outcome:
- The affected non‑UPS nodes no longer have PCU entities or PCU pollers.
- The Power Control Unit Status widget auto‑hides on their Node Details pages.
- These nodes no longer appear in UPS / Power Control Unit inventory.
Step 3 – (Optional) Mitigation for scheduled discoveries with auto‑import
Until you can upgrade to a version that contains the discovery fix, you can reduce the chance of mis‑assignment recurring on scheduled Network Sonar Discovery jobs with auto‑import.
The idea is to clear discovered PCU results for specific discovery profiles before they run, so each run starts from a clean state.
Note: Column names and table structure can vary. Validate in your environment before using this pattern.
Example pattern:
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
-- Replace <ProfileID> with the Discovery Profile ID of the affected auto-import job.
DELETE FROM DiscoveredPowerControlUnitsData_man_1
WHERE DiscoveryProfileID = <ProfileID>;
You can:
- Schedule this as a SQL Agent job to run shortly before the corresponding discovery job, or
- Coordinate manual execution prior to each test if you are troubleshooting.
This does not fix existing misclassified nodes (you still need Step 2), but it can reduce the chance of new non‑UPS nodes being mis‑assigned as UPS by stale discovery results.
Step 4 – Long‑term recommendation (upgrade)
Once a SolarWinds Platform version is available that contains the PCU discovery fix, upgrade to that version to address the underlying discovery behavior. This will help prevent new mis‑assignments during scheduled discovery and auto‑import.
Refer to the SolarWinds release notes for details on PCU/UPS discovery fixes and verify whether your target version includes the relevant correction.
Optional: bulk cleanup by vendor (advanced)
Use this option only when many non‑UPS nodes are affected and you have confirmed which vendors correspond to real UPS devices in the environment.
By default, the examples below preserve nodes whose Vendor is one of:
- American Power Conversion Corp.
- Eaton Corporation
- Emerson Computer Power
All other vendors will have their PCU data and PCU pollers removed.
Important: Adjust the vendor list if the customer uses additional UPS vendors. See the note at the end of this section.
2.5 Preview what will be removed
Run this query first to see which nodes would be affected:
SELECT d.ID AS NodeID,
n.Caption AS NodeCaption,
n.Vendor
FROM PowerControlUnitData_man_1 d
JOIN NodesData n ON d.ID = n.NodeID
WHERE n.Vendor NOT IN (
'American Power Conversion Corp.',
'Eaton Corporation',
'Emerson Computer Power'
);
Review the results with the customer and confirm that all listed nodes are non‑UPS devices and that real UPS nodes are not included.
2.6 Bulk cleanup for non‑whitelisted vendors
If the preview is correct and a full database backup exists, you can run the following scripts.
If the preview is correct and a full database backup exists, you can run the following scripts.
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
-- Remove PCU statistics for non-whitelisted vendors
DELETE s
FROM PowerControlUnitStatistics_1 s
JOIN PowerControlUnitData_man_1 d ON s.ID = d.ID
JOIN NodesData n ON d.ID = n.NodeID
WHERE n.Vendor NOT IN (
'American Power Conversion Corp.',
'Eaton Corporation',
'Emerson Computer Power'
);
-- Remove PCU identity rows for non-whitelisted vendors
DELETE d
FROM PowerControlUnitData_man_1 d
JOIN NodesData n ON d.ID = n.NodeID
WHERE n.Vendor NOT IN (
'American Power Conversion Corp.',
'Eaton Corporation',
'Emerson Computer Power'
);
-- Remove PCU pollers for non-whitelisted vendors
DELETE p
FROM Pollers p
JOIN NodesData n ON p.NetObjectID = n.NodeID
WHERE p.PollerType = 'PCU.Statistics.SNMP.Generic'
AND p.NetObjectType = 'PCU'
AND n.Vendor NOT IN (
'American Power Conversion Corp.',
'Eaton Corporation',
'Emerson Computer Power'
);
After running the bulk cleanup, restart the Job Engine / Collector services and verify that:
- Non‑UPS nodes no longer show Power Control Unit Status or appear in UPS inventory.
- Genuine UPS nodes (for the allowed vendors) still have valid UPS data and widgets.
2.7 Note about other UPS vendors
The vendor filter in this script excludes all devices whose Vendor is not in the whitelist from having PCU data. If the customer uses other UPS vendors beyond:
- American Power Conversion Corp.
- Eaton Corporation
- Emerson Computer Power
then do not run the bulk cleanup without adjustment.
In that case:
- Ask the customer to provide:
- An SNMP walk of at least one correctly discovered UPS device for each additional vendor.
- Exports of the following tables from the SolarWinds Platform database:
SELECT * FROM DiscoveredPowerControlUnitsData_man_1;SELECT * FROM DiscoveredNodes; - Use these exports and the SNMP walks to verify:
- How those additional UPS vendors identify themselves (Vendor values), and
- Whether they respond to the PCU OIDs and should be preserved by the script.
- Once confirmed, add the exact vendor strings for those UPS devices into the NOT IN (...) whitelist before running the DELETE statements.
If you are unsure, prefer the NodeID‑based cleanup earlier in this step rather than the vendor‑based bulk method.
Step 3 – (Optional) Mitigation for scheduled discoveries with auto‑import
Until you can upgrade to a version that contains the discovery fix, you can reduce the chance of mis‑assignment recurring on scheduled Network Sonar Discovery jobs with auto‑import.
The idea is to clear discovered PCU results for specific discovery profiles before they run, so each run starts from a clean state.
Note: Column names and table structure can vary. Validate in your environment before using this pattern.
Example pattern:
-- Replace <ProfileID> with the Discovery Profile ID of the affected auto-import job.
DELETE FROM DiscoveredPowerControlUnitsData_man_1
WHERE ProfileID = <ProfileID>;
You can:
- Schedule this as a SQL Agent job to run shortly before the corresponding discovery job, or
- Coordinate manual execution prior to each test if you are troubleshooting.
This does not fix existing misclassified nodes (you still need Step 2), but it can reduce the chance of new non‑UPS nodes being mis‑assigned as UPS by stale discovery results.
Step 4 – Long‑term recommendation (upgrade)
Once a SolarWinds Platform version is available that contains the PCU discovery fix, upgrade to that version to address the underlying discovery behavior. This will help prevent new mis‑assignments during scheduled discovery and auto‑import.
Node that the discovery bug is corrected, so new mis‑assignments of UPS/PCU to non‑UPS nodes should no longer occur. However, any existing mis‑assigned UPS/PCU records and pollers are not automatically removed during upgrade. If you still see non‑UPS devices with UPS widgets or in UPS inventory after upgrading, run the one‑time cleanup in Step 2 – Remove PCU data and pollers from non‑UPS nodes.
Refer to the SolarWinds release notes for details on PCU/UPS discovery fixes and verify whether your target version includes the relevant correction.