Joe Z oh that seems like an excellent point that you made. If the punch options successfully populate in the Windows print dialog via your IPP commands, the initial translation from your connector into the local PrintCapabilities XML is functioning correctly. The breakdown is occurring on the return trip during job submission. When a user selects that finishing option, the operating system must serialize that choice into a PrintTicket XML payload and translate it back into an IPP job attribute to send to the cloud. The Windows print client might be able to render the UI element based on your input but fail to map the user's selection back into the outgoing network request.
To verify what is leaving the client machine, you should capture the outbound traffic using a web debugging proxy like Fiddler. By decrypting the HTTPS traffic originating from the Windows spooler, you can inspect the Graph API POST request used for job creation. If the JSON payload's finishings array lacks your specific hole-punch enumeration, the local Windows client is dropping the attribute before it ever reaches the cloud. Alternatively, you can pause the local print queue, submit a test document, and navigate to the C:\Windows\System32\spool\PRINTERS directory. Extracting and reading the raw .SPL spool file will allow you to view the embedded PrintTicket XML, which will immediately confirm whether the operating system successfully recorded the user's dialog selection in the first place.
VPHAN