[object Object]

A catalog item that takes 11 minutes to fill out and gets abandoned 40% of the way through is a measurable problem with measurable causes. Most of those causes trace back to design decisions that felt right when the item was authored and aged badly as the form grew. The patterns below are what separates the items users complete on the first try from the ones that feed support tickets.

Variable Sets Are Reusable

Group related variables (user information block, approval block, delivery address) into Variable Sets and reuse across items. One change propagates everywhere — same edit, many updates. The leverage is real but cuts both ways: a careless edit to a Variable Set used by 30 items breaks 30 items. Govern shared sets like shared libraries, with a maintainer role and change review. Item-local sets (used by one or two items) are fine to edit freely.

Reference Qualifiers for Filtering

Filtering reference field options is not done with client scripts. Use reference qualifiers — server-side, fast, and visible in the dictionary so the next maintainer can find them. Static qualifiers (active=true) compile to SQL; dynamic qualifiers (calling a script include) cost more but enable user-context filtering. Avoid querying inside a loop in a dynamic qualifier; the filter runs on every keystroke once type-ahead is enabled.

// Dynamic reference qualifier on assignment_group
function filterByCategory() {
  var category = current.variables.category;
  if (!category) return '';
  return 'category=' + category + '^active=true';
}

Conditional Variables

Hide variables until relevant. Declarative Catalog UI Policies on the catalog item form show or hide based on prior answers. Reduces form length and cognitive load. The order of policies matters when they touch the same variable; the platform applies in policy order field, not in editor display order. Document the dependency map in the item description for non-trivial conditional logic.

Validation at Submit

Inline validation feels smart but client-side validation is bypassable and frequently runs against stale data. Complex validation should run at submit time on the server, where the rules are authoritative and have the full record context. Use client validation for instant UX feedback (this email looks malformed) and server validation for correctness (this combination of values is allowed in your region).

Workflow Routing

Assign the right workflow per catalog item. Complex items deserve Flow Designer or Workflow Studio flows with named subflows for reusable steps. Simple items can use one-step approvals via the standard Service Catalog workflow — do not overengineer simple requests. The workflow should be pinned to a specific version, not “current,” so in-flight requests do not change behavior mid-stream when the workflow is updated.

Form Layout for Speed

Single-column layout outperforms two-column on mobile and on large screens with low cognitive overhead. Group variables into logical sections with section headers. Required variables first within each section, optional last. The “stuff your form into one screen with five columns” approach saves vertical space and costs completion rate.

Common Failure Modes

A required variable added retroactively to an item with in-flight requests — those requests now fail validation; add new required variables only to brand-new items or use a default value. A reference qualifier that returns the empty string on no-match instead of false — the platform interprets empty as no filter and shows everything. Variables with cryptic short names (var1, inp_a) — six months later nobody knows which is which; use descriptive names from the start.

What to do this week: pull the abandonment rate per catalog item from the request submission logs; the top three abandonment items are your redesign queue, in that order.

[object Object]
Share