Network Management

How to query Planned Maintenance Schedule data in custom reports in SolarWinds Platform 2026.1 and newer

This article explains how to query planned maintenance schedule data in custom reports after upgrading to SolarWinds Observability Self-Hosted (HCO) 2026.1 or later.

First published date

6/8/2026 3:19 PM

Last published date

6/8/2026 3:19 PM

Overview

After upgrading to HCO 2026.1, custom reports that previously displayed scheduled maintenance data for nodes are no longer returning results. Reports that relied on NodeMuted or NodeUnmanaged audit events show no scheduled maintenance data, even when maintenance schedules are correctly assigned and running.

Product section

Orion Platform

Cause

In HCO 2026.1, recurring maintenance schedules replaced the legacy mute/unmanage model. As a result, the behavior of audit events changed:

  • Prior to 2026.1: When a scheduled maintenance window was configured, audit events such as NodeMuted or NodeUnmanaged were written immediately upon configuration. This allowed custom reports to query audit data to see upcoming or scheduled maintenance.

  • In 2026.1 and later: Those same audit events (NodeMuted, NodeUnmanaged) now fire only when a maintenance window actually executes, not when it is configured or assigned. This means any custom report logic that relied on these events to show upcoming scheduled maintenance will no longer work as expected.

In 2026.1, the platform introduces new audit event types for schedule assignment:

  • Orion.ScheduleAssignmentAdded — recorded immediately when a schedule is assigned to a node

  • Orion.ScheduleAssignmentRemoved — recorded when a schedule assignment is removed

The source of truth for planned (upcoming) maintenance schedule data is now the ScheduleTaskDefinitions and ScheduleEntityAssignments tables in the SolarWindsOrion database.

Note: The audit log (AuditingEvents) remains the only source for the schedule assignment timestamp. If Assigned On (UTC) returns NULL, it means the audit record was purged or the assignment predates the 2026.1 upgrade.

Resolution

Use the following T-SQL reference query against the SolarWindsOrion database to return planned maintenance schedule data per node. This query is intended as a starting point — customize it to meet your reporting needs.

-- 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.

-- Planned Maintenance Schedules per Node
-- Shows active recurring schedules assigned to nodes,
-- including who assigned them and when.

SELECT
    n.Caption                   AS [Node],
    std.Name                    AS [Schedule Name],
    std.ScheduleType            AS [Maintenance Type],
    std.NextRun                 AS [Next Run (UTC)],
    std.Reason                  AS [Reason],
    sea.AssignedBy              AS [Assigned By],
    ae.AssignedOnUtc            AS [Assigned On (UTC)]
FROM dbo.ScheduleEntityAssignments sea
JOIN dbo.Nodes n
    ON sea.EntityUri LIKE '%/Orion.Nodes/NodeID=' + CAST(n.NodeID AS nvarchar(10))
JOIN dbo.ScheduleTaskDefinitions std
    ON std.ScheduleTaskID = sea.ScheduleTaskID
   AND std.Enabled   = 1
   AND std.ToRemove  = 0
LEFT JOIN (
    -- Audit log is the only source of the assignment timestamp.
    -- NULL means the record was purged or predates 2026.1.
    SELECT
        ae.NetObjectID          AS NodeID,
        MAX(ae.TimeLoggedUtc)   AS AssignedOnUtc
    FROM dbo.AuditingEvents ae
    JOIN dbo.AuditingActionTypes aat
        ON aat.ActionTypeID = ae.ActionTypeID
    WHERE aat.ActionType  = 'ScheduleAssignmentAdded'
      AND ae.NetObjectType = 'N'
    GROUP BY ae.NetObjectID
) ae ON ae.NodeID = n.NodeID
WHERE sea.EntityType = 'Orion.Nodes'
ORDER BY n.Caption, std.NextRun;

 

Output Columns

Column

Description

Node

Display name (Caption) of the monitored node

Schedule Name

Name of the recurring maintenance schedule

Maintenance Type

Type of maintenance — Mute Alert or Unmanage

Next Run (UTC)

Next scheduled execution time, in UTC

Reason

Reason entered when the schedule was configured

Assigned By

Username that assigned the schedule to the node

Assigned On (UTC)

Timestamp (UTC) when the schedule was assigned; NULL if purged or pre-2026.1

Key Tables

Table

Purpose

dbo.ScheduleEntityAssignments

Links schedules to specific nodes or other entities

dbo.ScheduleTaskDefinitions

Stores the schedule definition, type, recurrence, and next run time

dbo.AuditingEvents

Stores audit log entries; used here to retrieve the assignment timestamp


Additional Notes

  • Assigned On (UTC) may be NULL for schedules created or assigned before the 2026.1 upgrade, or if audit records have been purged based on your audit log retention settings.

  • NextRun reflects the next scheduled window, not any currently active window. For the currently active maintenance state of a node, refer to the Nodes table or the Upcoming Maintenance Schedules for this Entity widget in the Node Details view.

  • This query filters for active schedules only (Enabled = 1, ToRemove = 0). To include disabled or pending-removal schedules, remove those filter conditions.

  • All timestamps in this query are in UTC. Convert using your preferred method (e.g., AT TIME ZONE) if local time is required.