The customer observed some users reported that client printers mapped into their Citrix sessions were missing printer specific configurations. The most common reported issue from users in this case was that the second printer tray was not available when using Citrix published applications.
Windows client devices and Windows VDAs were being used in the environment. Citrix UPD was not used for mapping client printers, vendor supplied print drivers were installed on the VDAs and client devices, and Citrix print policies configured to have preference for printer model specific drivers.
Additional testing showed:
Ensuring vendor specific printer drivers installed on both the client devices and VDAs are identical resolved the issue.
The VDAs had a much older version of the vendor print driver installed, than the version installed on affected client devices.
Unaffected client devices were using the same older vendor printer driver as installed on the VDAs.
Every printer stores settings in a structure called a DEVMODE, the DEVMODE is split into two distinct parts, a public part which contains data that is common to all printers, and a private part which contains data specific to the printer driver implemented by the print vendor. Citrix client printer mapping when using vendor specific drivers will pass through both parts of the DEVMODE, public and private, with requiring knowledge of the private DEVMODE part, as this will be handled on the VDA by the vendor driver.
While print vendors may choose to retain the same private DEVMODE layout between releases, they may also update and change the private DEVMODE part with each print driver release. This will result then in the client side printer drivers having a different private DEVMODE structure than the VDA side printer drivers and can result in missing printer configurations when the client printers are mapped into the Citrix session.
Ensuring vendor specific printer drivers installed on both the client devices and VDAs are identical, will eliminate differences in private DEVMODE structures causing issues.