Citrix DaaS™

Service Window

The Service Window feature provides a capability to schedule and automate operations on MCS-provisioned VMs. This feature currently supports various operations such as Reset OS disk and hardware configuration changes. You can schedule these operations and return later to verify completion, rather than performing updates manually.

You can schedule operations for either a specific list of VMs or an entire machine catalog. Each operation runs at the time specified. Multiple operations can be scheduled for the same VM. However, you cannot schedule more than one hardware update for a single VM.

You can also:

  • Add a description for the Service Window.
  • Provide a detailed message to be displayed to any users who are logged on when the operation runs.
  • Configure how many buffer minutes are granted to save work for the logged on users before the operation is forcibly executed.

Advantages

Improved user experience and continuity

  • Graceful session handling: Instead of abrupt disconnections, you can define a professional notification to save the work before the VM is powered down.
  • Scheduled downtime: You can move heavy update tasks to off-peak hours (for example, 2:00 AM) without requiring you to manually log in at that time.
  • Cost-efficient hardware updates: Updating hardware using Service Window saves significant costs on large implementations. This feature automatically analyses if a VM requires a reboot to apply settings. Therefore, by avoiding unnecessary reboots, Service Window minimize these expenses.

Advanced hardware flexibility

  • Update hardware configurations: Use Service Window to schedule the hardware updates. The system intelligently manages the update flow, checking for reboot necessity and handling session log-offs, ensuring that your catalog evolves to meet new resource demands with zero manual oversight.
  • Flexible SKU reconfiguration: Easily update SKUs, which previously required manual recreation of the catalog.
  • Hibernation support for existing VMs: Overcomes the “temporary disk” limitation. The Service Window allows the MCSIO driver to relocate the pagefile to the C: Drive and enable hibernation properties on VMs that were already deployed.

Important consideration

  • User notification: Logged on users receive an initial alert regarding the Service Window operation, ensuring they have sufficient time to save their work. Once the notification period expires, the machine automatically powers down to perform the operation.

Service Window operations

The Service Window currently supports OS disk resets and hardware configuration changes using PowerShell.

PowerShell commands: Generic commands are outlined in this article, while detailed, hypervisor-specific scripts can be found on our GitHub page https://github.com/citrix/citrix-mcs-sdk-samples/.

Reset OS disk

OS disk resets can be done using the PowerShell command New-ProvMaintenanceCycle. The commands creates a new Service Window for an entire catalog or specific VMs. The cycle starts at the time you specify in ScheduledStartTimeInUTC. You also provide MaxDurationInMinutes, which indicates the maximum time the Service Window can run.

Example: Reset OS disk for specific VMs

New-ProvMaintenanceCycle -Operation ResetOSDisk -MaintenanceCycleDescription "Resetting Boot Disk" -StartsNow -MaxDurationInMinutes 100 -ProvisioningSchemeName CVC -PurgeDBAfterInDays 1 -SessionWarningTimeInMinutes 15 -SessionWarningLogOffTitle "Scheduled Maintenance" -SessionWarningLogOffMessage "There is a scheduled maintenance coming up and involves turning off the machine, please save your work and log out, Thank You" -VMName VDA02,VDA03
<!--NeedCopy-->

Example: Reset OS disk for the entire catalog

New-ProvMaintenanceCycle -Operation ResetOSDisk -MaintenanceCycleDescription "Resetting Boot Disk" -StartsNow -MaxDurationInMinutes 100 -ProvisioningSchemeName CVC -PurgeDBAfterInDays 1 -SessionWarningTimeInMinutes 15 -SessionWarningLogOffTitle "Scheduled Maintenance" -SessionWarningLogOffMessage "There is a scheduled maintenance coming up and involves turning off the machine, please save your work and log out, Thank You" -AllVMs
<!--NeedCopy-->

Update hardware settings

Schedule hardware updates using Service Window, thereby having full control over when the changes take effect. You can choose to target only the newly created VMs, an entire catalog (new and existing VMs), or specific VMs as needed.

  • To update hardware settings for new VMs or entire catalog, select a provisioning scheme version and run the PowerShell command New-ProvSchemeHardwareUpdate. You can apply a previously created provisioning scheme version to VMs. You can also enable hibernation on a VM with temporary disk.
  • To update hardware settings for specific VMs, select a VM configuration version, and run the PowerShell command New-ProvVmHardwareUpdate.

Important considerations

  • New machines added to a catalog after scheduling a hardware update continues to be created with older specifications until the specified UTC time for applying new specifications.
  • A single validation failure during the Service Window creation prevents the cycle from being created and return an error message.
  • For enabling hibernation, consider the following:
    • The VDA version must be greater than 2503.
    • Machine Creation Services I/O (MCSIO) must be installed.
    • The machine profile must support hibernation.
    • The VM SKU and operating system must support hibernation.
    • If VBS is enabled, Hyper-V must also be enabled. Nested virtualization requires Trusted Launch on the VM.
    • The free OS disk size must be larger than the VM’s memory size.

Schedule hardware updates on an entire machine catalog or new VMs

  1. Run New-ProvSchemeVersion to create a new provisioning scheme version with updated hardware settings. For more information, see the SDK doc.
  2. Run the PowerShell command New-ProvSchemeHardwareUpdate to schedule a Service Window for hardware updates as specified in the provisioning scheme version.

Example: AllVMs (new and existing) in the machine catalog are considered for the update:

New-ProvSchemeHardwareUpdate -ProvisioningSchemeVersion 4 -MaintenanceCycleDescription "Updating RAM and CPU Count to 8GB and 4" -StartsNow -MaxDurationInMinutes 100 -ProvisioningSchemeName CVC -PurgeDBAfterInDays 1 -SessionWarningTimeInMinutes 15 -SessionWarningLogOffTitle "Scheduled Maintenance" -SessionWarningLogOffMessage "There is a scheduled maintenance coming up and involves turning off the machine, please save your work and log out, Thank You" -AllVMs
<!--NeedCopy-->

Example: NewVMsOnly (new and existing) in the machine catalog are considered for the update:

New-ProvSchemeHardwareUpdate -ProvisioningSchemeVersion 4 -MaintenanceCycleDescription "Updating RAM and CPU Count to 8GB and 4" -StartsNow -MaxDurationInMinutes 100 -ProvisioningSchemeName CVC -PurgeDBAfterInDays 1 -SessionWarningTimeInMinutes 15 -SessionWarningLogOffTitle "Scheduled Maintenance" -SessionWarningLogOffMessage "There is a scheduled maintenance coming up and involves turning off the machine, please save your work and log out, Thank You" -NewVMsOnly
<!--NeedCopy-->

Run Get-ProvSchemeHardwareUpdate to retrieve Service Window objects associated with hardware scheme updates. Example:

Get-ProvSchemeHardwareUpdate -MaintenanceCycleId xxxx-xxxx-yyyy-zzzz
<!--NeedCopy-->

Schedule hardware updates on specific VMs

  1. Run New-ProvVmConfiguration to create a new provisioning VM configuration. For more information, see the SDK doc.

  2. Run the PowerShell command New-ProvVmHardwareUpdate to schedule a Service Window for hardware updates as specified in the VM configuration version.

Note:

For each VM, any personalized settings (VM configuration version) always take precedence over the specifications defined in the provisioning scheme version. If a particular setting is not personalized on the VM, its value is inherited from the associated provisioning scheme version.

Example:

New-ProvVmHardwareUpdate -ProvVmConfigurationVersion 4 -StartsNow -MaxDurationInMinutes 100 -ProvisioningSchemeName CVC -VMName AbcTest01
<!--NeedCopy-->

Run Get-ProvVmHardwareUpdate to retrieve Service Window objects associated with hardware VM updates. Example:

Get-ProvVmHardwareUpdate -MaintenanceCycleId xxxx-xxxx-yyyy-zzzz
<!--NeedCopy-->

You can also remove a personalization used to create provisioning VM versions using Remove-ProvVmConfiguration command. Example:

Remove-ProvVmConfiguration -Version 2 -VMName AbcTest01
<!--NeedCopy-->

Miscellaneous PowerShell commands associated with Service Window

  • Get-ProvMaintenanceCycle: Retrieves information of all the Service Windows. Example:

     Get-ProvMaintenanceCycle -MaintenanceCycleId 10073b8e-7e94-4527-8580-0e448eae0ad1
     <!--NeedCopy-->
    
  • Get-ProvMaintenanceCycleVM: Retrieves information of each Service Window operation for individual VMs, along with its status. Example:

     Get-ProvMaintenanceCycleVM -MaintenanceOperation HardwareUpdate -VirtualMachineSid 42263076-44ae-1ff9-f58b-62d57ddf8db5
     <!--NeedCopy-->
    

    The various Service Window statuses are:

    • Running
    • Failed
    • Completed
    • Cancelling
    • Cancelled
    • NotProcessed
    • Pending
    • Incomplete
    • Repaired
    • Recovering
  • Remove-ProvMaintenanceCycle: Removes a Service Window when the Service Window is not active. Example:

     Remove-ProvMaintenanceCycle -MaintenanceCycleId 867af1ba-5b72-402e-9dc3-033298248f8e
     <!--NeedCopy-->
    
  • Cancel-ProvMaintenanceCycle: If the operation has not yet started by MCS on a VM, then this PowerShell command cancels the operation. MCS does not cancel an operation that is currently running on the VM. Example:

     Cancel-ProvMaintenanceCycle -MaintenanceCycleId 867af1ba-5b72-402e-9dc3-033298248f8e
     <!--NeedCopy-->
    
  • Restart-ProvMaintenanceCycle: If a Service Window has failed or is incomplete due to external causes, such as the hypervisor being down or insufficient time, this command helps restart the cycle and process any failed or not-processed jobs. Example:

     Restart-ProvMaintenanceCycle -MaintenanceCycleId 4f363b78-458a-403a-82e5-7fcc6caa498b -ScheduledStartTimeInUTC "June 19th 2024, 6AM" -MaxAllocatedDurationInMinutes 400
     <!--NeedCopy-->
    
  • Update-ProvMaintenanceCycle: If a Service Window is already scheduled and has not started, this command alters certain parameters.

    Example: Update maximum duration:

     Update-ProvMaintenanceCycle -MaintenanceCycleId 4f363b78-458a-403a-82e5-7fcc6caa498b -MaxDurationInMinutes 100
     <!--NeedCopy-->
    

    Example: Update VMs for a provisioning scheme:

     Update-ProvMaintenanceCycle -MaintenanceCycleId 4f363b78-458a-403a-82e5-7fcc6caa498b -ProvisioningSchemeUid 867af1ba-5b72-402e-9dc3-033298248f8e -VMName ncn01,ncn02
     <!--NeedCopy-->
    
Service Window