There is…one “gotcha” to using Maintenance Windows, and I’m not entirely certain how the Patch Policy API works in this case. Not sure this is your issue, but maybe worth checking in to.
The “Maintenance Window Dashboard” doesn’t create a Global Property (which is needed when used with Action Constraints). Instead it relies on the “Maintenance Window Analysis” Analysis from the BES Support Site, to populate a property “In Maintenance Window”. I’d expect that if the “In Maintenance Window” was missing as a Global property, that Patch Policy wouldn’t be able to create the patch action at all, but I can’t say I’ve tested that case and I’ve been surprised before.
To be used as an Action Constraint, we must have a Global Property of the same name - “In Maintenance Window”.
Check whether you have a GLOBAL version of the “In Maintenance Window” property. From the thick console, click Tools -> Manage Properties and find the “In Maintenance Window” property. Make sure you have one where the Site is “Master Action Site”.
If you don’t, then copy the Relevance from the “In Maintenance Window” property from the “BES Support” site, click on “New Property”, and create a new “In Maintenance Window” property. That will create a Global Property, so it can be used as an Action Constraint.