Next Maintenance Dates from the Maintenace Configuration's Schedule using KQL

Raghav Manchanda 0 Reputation points
2025-09-17T10:45:14.2+00:00

I want to get the Next Maintenance Dates from the Maintenace Configuration's Schedule. I want to fetch it using Azure Resource Graph to keep a track on the Patching of resources and the upcoming schedules. Since I don't see a table or in the properties of the Maintenance Configuration using KQL, so I need a support on that and want to know if it's possible

Azure Update Manager
Azure Update Manager
An Azure service to centrally manages updates and compliance at scale.
{count} votes

1 answer

Sort by: Most helpful
  1. Sandhya Kommineni 2,810 Reputation points Microsoft External Staff Moderator
    2025-09-22T06:58:03.2566667+00:00

    Hi Raghav Manchanda

    Thanks for posting your question in Microsoft Q&A forum

    Azure Resource Graph exposes maintenance events and update schedules through resources like microsoft.maintenance/updates and microsoft.maintenance/configurationassignments. These include key schedule details such as start and end times, status, impact type, and notification ID. You can query these with KQL and even join them with VM or other resource information.

    No, it's not possible, there isn’t a direct table showing Next Maintenance Dates; instead, the dates are stored in the JSON properties of maintenance resources. Using KQL, you can filter events by status (like Pending or InProgress) and parse the start and end times to identify upcoming maintenance windows. For Azure Update Manager maintenance configurations, schedule details such as recurrence and start date are contained within these JSON property fields.

    You can get next maintenance dates by querying microsoft.maintenance/* resources in Azure Resource Graph and parsing the schedule JSON, since no direct date column exists.

    Resources
    | where type == "microsoft.maintenance/configurationassignments"
    | extend propertiesJson = parse_json(properties)
    | mv-expand schedules = propertiesJson.schedules
    | extend scheduleStart = todatetime(schedules.startTimeUtc),
             scheduleEnd   = todatetime(schedules.expiryTimeUtc)
    | where isnotempty(scheduleStart) and scheduleStart > now()
    | project name, scheduleStart, scheduleEnd
    | order by scheduleStart asc
    

    Referral documents

    I hope the provided answer is helpful, do let me know if you have any further questions on this Please accept as Yes and upvote if the answer is helpful so that it can help others in the community.

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.