Skip to content

Queues and Assignment

A queue in ZenPrint is one printer, one driver, and one set of settings, bound to a specific name. Queues are the unit of “what gets installed on an endpoint.” The rest of the system exists to decide which queues belong on which endpoints.

Creating a queue

Every queue belongs to a printer. To create one:

  1. Fleet → Printers → open the printer.
  2. Scroll to the Queues panel and click Add Queue.
  3. Fill in:
    • Name: what the queue will be called in the Windows print spooler on endpoints (e.g. HR Color, Reception B&W)
    • Driver: pick from the dropdown; only drivers your tenant has access to are listed (custom, captured, and ZenPrint Library). The list is grouped by how well each driver fits this printer. Exact match means the printer’s model is named in the driver’s own device list, so it’s a safe pick. Universal driver is a vendor-wide package from the same manufacturer. Same manufacturer is everything else from that brand with no model-level match. Drivers for other brands sort to the bottom. The grouping is a guide, not a lock: you can still pick anything. Exact matches depend on ZenPrint knowing the printer’s model, which comes from the network scan, so a printer that hasn’t been scanned yet falls back to manufacturer grouping.
    • Settings (optional): duplex, colour, paper size, and so on, via the settings form. Leave blank for driver defaults.
  4. Save. The queue is created on the printer in Active status.

Creating the first queue on a Discovered printer auto-promotes the printer to Active. You don’t need to flip the status by hand.

The queue is defined now, but until you assign it somewhere, no endpoint will install it.

Assignment scopes

Queues are assigned to one of three target scopes, in increasing specificity:

ScopeTargetsWhen to use
LocationAll endpoints at one locationShared printers at a site, where everyone gets it
GroupAll endpoints in a named group at one locationDepartment, role, or floor groupings within a site
EndpointOne specific machinePersonal printers, kiosks, exception cases

Assignments cascade. An endpoint installs every queue assigned at its location, plus every queue assigned to a group it’s in, plus every queue assigned directly to it. The endpoint detail drawer shows where each installed queue came from, badged by source:

  • Direct (amber): assigned to this specific endpoint
  • Group: <name> (purple): inherited from a group
  • Location: <name> (blue): inherited from the location

When the same queue is claimed at more than one scope (say it’s assigned to the location, to a group the endpoint is in, and to the endpoint directly), it still installs once. The most-specific assignment wins, and the endpoint drawer shows that most-specific source.

The assign modal

The assign modal opens from any of four entry points and adapts to what you’re assigning:

  • Queue-anchored: open from a queue row. Pick endpoints, groups, or locations to assign this one queue to.
  • Endpoint-anchored: open from an endpoint row. Pick queues at the endpoint’s client to assign to this endpoint.
  • Group-anchored: same, but for a group.
  • Location-anchored: same, but for a location.

The modal renders inherited assignments (from a parent group or location) read-only, so you can see the full picture. You can only mutate direct assignments at the anchor level; to remove an inherited assignment, edit the parent.

Each side has a searchable, checkable list: tick a target to add the assignment, untick it to remove it. Save commits all the additions and removals in one batch.

Bulk operations

The bulk bar at the bottom of the Queues tab activates when you check one or more queue rows. Available actions:

  • Change Driver: swap to another driver across all selected queues
  • Delete: remove all selected queues (cascades to their assignments and installations)
  • Bulk Assign: assign all selected queues to one target (location, group, or endpoint)
  • Bulk Unassign: the opposite

Bulk assign is the right tool for “I just captured an HP driver and want to attach the four lobby printer queues to the Lobby Endpoints group.”

The bulk bar respects client scoping on custom roles. A scoped user only sees rows within their scope, so out-of-scope queues never appear to select in the first place. The server re-checks scope on submit and refuses the action if a selection somehow falls outside it, so the rule holds even against a tampered request.

When endpoints move between customers

When an endpoint shows up under a new customer in your RMM (the NinjaOne organization changes, say), ZenPrint follows the move. The endpoint’s location is updated to match what the RMM is reporting.

But queue assignments that were directly pinned to that endpoint (“this specific machine gets this queue”) get marked stale. They were set up for the old customer and probably shouldn’t follow. The dashboard surfaces a Stale Queue Assignments alert so you can decide what to do: rebind to a new queue, or accept the loss.

Group and location assignments aren’t affected by moves. They’re attached to the group or location, not the endpoint, so they heal automatically as the endpoint changes hands.

Queue settings

Beyond name and driver, queues carry a JSON settings blob with optional overrides:

  • Duplex (one-sided, two-sided long edge, two-sided short edge)
  • Colour mode (colour or mono)
  • Paper size (A4, Letter, Legal, A3)
  • Collate (on or off)

Empty fields mean “driver default,” and reconcile doesn’t touch what the driver says. Only set what you want to override.

ZenPrint installs and configures the queues; it doesn’t manage which one is the Windows default printer. That stays with the end user (or whatever “Let Windows manage my default printer” decides).

When your changes take effect

You don’t push from the UI. Your changes update ZenPrint’s idea of what should be installed where, and the next reconcile run on each affected endpoint picks the change up and applies it.

Most changes propagate within whatever interval you’ve set reconcile to run on, typically 24 hours. Need it to happen faster? Trigger reconcile ad-hoc from your RMM on the specific endpoint.

See Scripts → reconcile for what reconcile actually does.