Author
Eleonora Manolova
Record
DR-01
Product
vSphere Client
Span
8 months · cross-release
Status
Shipped

Advanced Data Grid Filtering Framework

Administrators managing up to 25,000 virtual machines had no reliable way to filter on more than one condition. I defined a filtering framework for vSphere Client that replaced fragmented, per-view behavior with one model that works the same everywhere.

Role
Product designerResearch to engineering spec
Span
8 monthsCross-release initiative
Scope
Platform-wideAll vSphere Client views
Research
14 sessions9 interviews, 5 prototype tests
Prototype
Open in Figma (opens in a new tab) ↗
Fig. 0The expert query from research, applied step by step to the sample inventory used in §7.

§1Context

vSphere Client is the interface enterprise infrastructure administrators use to run virtualized environments at scale. The people in this project managed anywhere from 30 to 25,000 virtual machines across clusters, hosts and datacenters.

Finding a specific subset of that inventory took precise, multi-condition queries the existing filtering could not express:

  • no way to combine conditions within a single column
  • filtering behaved differently from view to view
  • tags, hardware version, snapshots and dates could not be filtered at all

Admins compensated by scanning lists by hand. Adding more filter options would not have fixed that. The work needed a standard operator model, clear rules for logical grouping, and the same behavior across the entire platform.

This was an architectural problem, not a visual one.

§2Role

A platform-level initiative across design, product and engineering. I covered the full design lifecycle: planning and running research with enterprise administrators, turning findings into interaction requirements, defining operator models per data type, prototyping every filtering state, and writing engineering-ready specifications.

Negotiating constraints with engineering was a core part of the job, not a side task. Framework limits shaped interaction decisions directly, and many of those decisions had to be proposed, defended and sometimes revised as technical feasibility became clearer.

§3Research

Two rounds with Senior VI Admins, Senior Engineers and Infrastructure Administrators working across multiple datacenters and vCenter instances.

9interviews and concept validation sessions
5prototype tests of the MVP
~3×a day admins rearrange the grid
≤ 3filters applied at the same time

What changed the framework

  • Experts filter by precise conditions, not presets. They need queries like Name contains EUVM and does not contain PROD, Hardware Version 7 or 8, Snapshots between 2 and 8. Simplifying that into shortcuts would have broken their workflows.
  • Logical grouping inside one column was a core requirement, not a nice-to-have.
  • Consistency across views was a matter of trust. A filter that behaves differently on another screen is a filter nobody relies on.

The most requested filters were Name, State, Snapshot count, IP Address, OS Type, Hardware Version and Creator. Findings from both rounds changed architectural decisions, not just visual details.

§4Trade-offs

Three tensions shaped the direction.

Precision over simplicity

Time-based filtering was first explored with simplified preset ranges. Research made it clear that experienced administrators needed granular operator control. I kept the precision and restructured the interaction so that precision stayed navigable.

Grouped pills over flat pills

A grouped model shows one pill per column with all of its conditions. A flat model shows one pill per condition. Grouped won on scanability in a dense grid, and I accepted the cost: editing a single condition inside a group means opening the full filter dialog.

Ideal interaction versus framework limits

Some patterns that tested well could not be built on the platform as designed. Instead of workarounds, I adjusted the model to stay inside the constraints while keeping the core behavior.

Decision positioning within enterprise constraints Two axes: precision at the top, performance at the bottom, simplicity on the left, flexibility on the right. The chosen direction sits above center and slightly right, favoring precision and flexibility while staying close to the performance guardrail. PrecisionPerformance SimplicityFlexibility Chosen direction
Fig. 1Operator precision was prioritized inside the platform's performance guardrails: structured operational precision over reductive abstraction.

§5Constraints

The existing data grid framework had structural limits that were not visible at the start. They surfaced one by one through engineering collaboration and touched logical grouping, operator compatibility across data types, filter state handling, and performance under high data volumes.

Every constraint ended in one of three decisions:

Three ways a constraint was resolved
DecisionWhen
Adapt the modelThe core behavior survives a different interaction.
Negotiate the constraintThe behavior matters enough to ask engineering for a change.
Document the limitationThe cost of changing it outweighs the gain, so it is stated, not hidden.

Constraint negotiation was not a blocker. It was a design activity.

Knowing what the framework could and could not support shaped the filtering model as much as user research did.

§6The framework

The outcome was not a filtering feature. It was a reusable framework with rules that hold across every view, so engineering could apply and extend it without design input for each new screen.

Fig. 2The logic model. At most two conditions per column, joined with AND or OR. Columns always combine with AND. Empty values only match “is empty”.
D1

Each data type is its own problem

String, enumeration, numeric, date and time, duration and tags each got a distinct operator model, defined consistently enough to be implemented and extended the same way.

Why
One generic operator set behaves unpredictably across types.
Cost
More definition work up front.
D2

Grouping with a fixed depth

AND and OR inside a column, AND across columns, and at most two conditions per column. Empty and null values have explicit rules.

Why
Expert queries need logic inside a column. Capping depth keeps every filter readable and predictable.
Cost
Deeper queries are out of scope by design.
D3

Precision stays, presets go

Granular operators for dates and numbers, restructured so they are easy to navigate.

Why
Research showed shortcuts break expert workflows.
Cost
A richer filter dialog to design and test.
D4

One pill per column

Applied filters are shown as grouped pills, and state persists across navigation.

Why
Admins scan applied filters faster than they edit them.
Cost
Editing one condition opens the full dialog.
D5

Ship the pattern, then extend it

Strings and enumerations shipped first and set the interaction pattern. Numeric, date, duration and tag types followed in later releases on the same model.

Why
New types add operators, not new behavior.
Cost
Some requested filters waited a release.

§7Try it

A working reconstruction of the model on a sample inventory. The behavior follows the framework; the visual design is mine for this site, because the product screens are under NDA.

§8Outcome

The first validation round tested the interaction model before the MVP. The second tested the deployed prototype against real administrative workflows.

  • Administrators confirmed the grouped condition model matches how they think about filtering.
  • Multiple conditions in one column, combined with filters on other columns, was named the biggest improvement over the old model.
  • Admins who used to scan lists by hand described the new system as comprehensive for their use cases.
  • After deployment the framework stayed stable under complex multi-condition queries in high-volume environments.
  • It rolled out across platform views without view-specific adjustments, which validated a framework over a feature.

Saved filter sets, persistent column sorting and broader tag filtering were documented and scoped for post-MVP planning.

§9Reflection

This project moved my work from individual interactions to system-level behavior. Early on I solved each data type as it appeared. Switching to one framework, with operator logic formalized per type and a consistent interaction pattern, meant making decisions that had to hold in contexts that did not exist yet.

What I would do differently

  • Define success criteria earlier. The qualitative signal was strong, but tracking time to create a filter, task completion and filter reuse would have shown impact over time.
  • Build engineering relationships sooner. Critical technical information sometimes arrived through informal channels. Earlier, direct contact would have sped up constraint discovery.

The domain was enterprise infrastructure. The approach applies elsewhere.

Spec mode

Type size / line height, weight, text contrast against WCAG AA, spacing, and keyboard order. Measured live from this page. Esc to close.