F5XC – Filter Reusability

Smoothing operation and communication for resolution validation.

Project Type:

UX Designer at F5

Duration:

Jul. – Nov. 2023, Sep. – Nov. 2024

Members:

7 designers, 19 developers, 1 PM, 2 technical account managers, 2 security support engineers, 1 solution architect, 2 consulting managers, 3 data scientists, 1 technical writer

Practice Areas:

UX design, information architecture, interaction design, visual design

My Role:

I served as a UX designer and co-worked closely with PM, design system (DS) team, and multiple parties and stakeholders.

Project Vision

F5XC (Distributed Cloud) is a SaaS-based security, networking, and application management console, on which we have multiple workspaces with different types of dashboards to support various protection and investigation. In each dashboard, users could utilize filters to narrow down the data and focus on a particular part that they care about most. In the original system, we did not have functionalities to support users reapplying a set of filters or sharing a filtered view, thus causing inconvenience in the communication between security engineers and technical account managers. We tried to solve this issue starting with the Bot Defense workspace, and figured out a new design pattern as phase one that could be easily adjusted and adopted to all the workspaces in the console.

Challenges

Figure out a new design pattern that could meet the needs of Bot Defense users but also be applicable to other workspaces in the console.

Address time expiration and data missing edge cases.

Tackle dynamic filter values which would change based on configuration.

Walk around the API constraints which are unable to present accurate missing information right on some pages, and unable to apply non-existing filter values.

Make minimum but reasonable changes in phase one that could satisfy the functionality and get all stakeholder approvals to roll out.

Filter Reusability Overview

Design Process

Design Process

Project Goals & Design Requirements

Clarify target user goals, workflow, pain points, and reshape project scope.

Bot Defense protects Internet applications from automated attacks. It identifies and mitigates malicious bots using telemetry collected from web and mobile endpoints, and applies configurable mitigation actions to block or redirect harmful traffic before it reaches the application. It has been migrating from the SHAPE Security Platform (SPM) to the F5XC console with the improvement of information architecture, data organization and presentation, and functionalities to support better self-serviceability.

Service Migration & Improvement

We envisioned an improved Bot Defense service, informed by our user journey study on 3 persona types. An integrated user journey started with the onboarding stage, including account and configuration setup, threat briefing, and next, checking out the data summary and diving deeper to gain more insights. Later, users could review reports for particular use cases, investigate events, and configure policies to mitigate the threats.

User Flow and Roadmap

Filtering is one of the most important functionalities that users need to use across the stages of value awareness, diving deeper, reporting and investigation. If the filter sets could be reusable, it would greatly enhance the convenience and efficiency for the workflow of the two primary target personas of the service – Application Owners and Security Engineers, who monitor and analyze traffic, use dashboard and report pages frequently, and would co-work with our technical account managers (TAMs).

Bot Defense Personas

However, in F5XC, there was no way for users to reuse filters or use others' filters, which caused inefficient communication between our TAMs and clients. Previously, in SPM, users had the functionality but were unable to delete expired ones. Thus, we got two main goals to achieve in this project:

Support sharing, saving, and reusing a set of filters created by all users in the same tenant to smoother the communication between our TAMs and clients, as well as the communication between security engineers of our clients.

Support deleting invalid saved filters.

Filter Original

The project scope was also reshaped along with the design iteration. We focused on these functionalities for phase one:

Save filters (including logic for saving and saving as).

Access saved filters.

Apply saved filters (including logic for applying and handling expiration situations).

Delete saved filters (including logic for deleting).

Design Challenges & Strategies

Co-work closely with project stakeholders to make comprehensive design decisions.

During the design ideation and iteration process, I faced several challenges, the most complex and interesting of which included:

Constructing new design patterns.

Handling information presentation and control.

Addressing time expiration situations.

Addressing filter value missing situations.

Tackling edge cases related to deleted filters.

The details of each will be introduced and explained in the sections below.

To tackle the challenges and facilitate collaboration and communication with project stakeholders, I implemented several strategies throughout the process:

Iterating on the information architecture design to accommodate the new feature and collaborating with the design system (DS) team to gather feedback and gain a broader perspective for making more comprehensive design decisions.

Implementing a bi-weekly recurring meeting to clarify requirements and user needs while collecting feedback from our subject matter experts (SMEs) (including technical account managers (TAMs), data scientists, solution architects, PMs, etc.), whose insights are closely aligned with those of our clients/end-users.

Employing visualizations to enhance communication with all project stakeholders, such as flowcharts to illustrate interaction logic and tables to present the various statuses of a new component.

During the early ideation stage, I also explored various designs for inspiration. Some of the ideas I incorporated include:

Apply, adjust, and save as a new one.

Filter description.

Tabs to categorize saved filters.

Search for saved filters.

Design Strategy Project Stakeholders Filter Inspiration Moodboard

Design Challenges & Iteration

Create new patterns, optimize info architecture, and address value missing situations.

By utilizing recurring meetings and Maze, I collected feedback from over 20 SMEs to help rescope the project and make decisions on the logic design and information presentation.

As mentioned above, I encountered several design challenges during the process. The below are the most complex and interesting ones:

Challenge 1 - New Design Pattern
Number 1

There was no existing component that could accommodate the new functionality, so we needed to propose a new one that could meet the needs of Bot Defense and apply to other workspaces in the console. I explored the idea of utilizing “filter icon” or “more action icon” as a control to show a dropdown menu, and with SMEs’ feedback of wanting to know which filter is currently applied, explored presenting the saved filter name with status on the first layer. In the second iteration, I moved the “Saved Filters” control to the first layer to make it stand out and easier to access, made the “Save” feature more dominant, and later figured out a way to show all key controls in the first layer, in a more concise way. I also added new functionalities, including the “Return to Previous Status” control and the “Restore Defaults” control to make the feature more user-friendly. The “save filter” logic was also polished – only allow owners and admins to save (update) after editing a saved filter. Others could only “save as” a new one.

Besides, I explored different information architecture design for the filter feature, and the visual treatments for the edited part of a saved filter. After consulting with the DS team, I realized it was a significant change that required more thinking and would take a long time, which would delay the release time. It might also not be able to be implemented in other workspaces simultaneously with the implementation of this project, which may lead to an inconsistency issue. Therefore, we did not go with this option for phase one.

During the exploration, I gained a deep understanding that although I was working on and responsible for Bot Defense, I was also accountable for other workspaces. Thus, I kept this in mind and actively communicated with my PM to ensure we remained aligned. This concept also shaped my decision to involve the design system team in the feedback collection process and to approach design decisions from a more systematic perspective.

Challenge 2 - Information Presentation & Control
Number 2

Since filters could not be reused and used by others, and there was no option to delete expired filters, we aimed to develop a feature to address the issues, which information presentation and control required exploration. Some initial ideas I had included: presenting a saved filter list with an apply, a share by copy URL, and a delete control. In each page, only presenting the filters that could be applied to that page. Regarding filter naming rules, allowing any characters (no input restriction), and allowing a name to be used only once in the same namespace (clients' user segmentation). Later with SMEs' feedback, I added a "Description" column to allow users to articulate the purposes of the filter set, and added a “Created by” column as a reference.

I also explored different ideas, such as allowing access to saved filters in different pages through a dropdown menu, viewing all filter values in an accordion, dividing filters into “My Filters” & “Others” to support efficient navigation and access, and presenting a delete feature in a side modeless or a management page. Eventually, we moved forward with a pattern that aligned with the design system and better met user needs.

Challenge 3 - Time Expiration Situations
Number 3

The system only retained data in the past 30 days, so we needed to figure out a way to tackle the situation when the data was no longer available owing to the outdated time frame, either the whole or part of the time expiration causes the whole or part of the data missing. There were two types of time selection: generic (e.g., past X days), and custom (where users could pick a range in the past 30 days). My initial idea for treatments was that for the filters with a generic time frame, we kept it the same. It would never expire. We would allow users to apply and show the corresponding results. As for the filters with a custom time frame, when the partial or whole timeframe was out of 30 days, we would make the filter disabled without showing the apply or copy control. I also utilized a warning icon to present time expiration messages to users in the filter list view, but I later realized that it required API call. We were unable to know if the time had expired or not right at this moment. Therefore, we eventually presented the message in the detail view instead, and planned to consider the edit feature in phase two.

Challenge 4 - Filter Value Missing & Data Missing
Number 4

The filter keys and values were naturally dynamic. They would change based on configuration. It was possible that a filter had been saved, but later some configurations changed, causing part of the filter keys and values to no longer exist. We needed to figure out a treatment for this situation and convey it to users. My initial idea was to either automatically remove the non-existent filter keys and values, and inform users that those values were no longer available, or disable the entire filter set and notify users that the filters could not be applied by displaying messages in the filter list view. Because the proposal could not work due to API call constraints, I ideated other solutions, such as in both the result page and each filter detail view, indicating which exact values were missing. I later realized it was not possible to identify exactly which part was missing without making an additional API call, which would negatively impact system performance.

Next, I explored the idea of giving users two options: applying the original ones and showing the corresponding results, or applying and omitting the missing values in the filter set. I learned from the development team that in the result page, the missing values would be presented, but they were not applied. We were unable to automatically remove the display of missing values from the result page. Eventually, we utilized a disclaimer as a workaround to address API limitations.

Challenge 5 - Deleted Filters.png
Number 5

In some situations, the system could not present the updated view, so users might accidentally apply a deleted saved filter. (E.g., When a saved filter got removed from UserA side, but UserB has the saved filter detail view open and has not refreshed to get the updated list yet, it is possible that UserB "apply" or "copy the URL" of a deleted saved filter.) I listed down all the scenarios we needed to address first, and started to ideate potential solutions. My initial thought was showing some error messages when users applied a deleted saved filter, and automatically refreshing the page for them. After syncing up with developers, I realized that the system did not know the filter had been deleted when it was applied. It required an extra API call to check it, which would lead to a legacy issue.

Then we collaboratively proposed a new solution: making an API call after a filter is applied to check whether the associated saved filter still exists. If it has been deleted, we would display a message prompting users to refresh the page to get the most up-to-date view. If users chooses not to refresh, but modifies some filter values and attempts to save, the “Update Saved Filters” button would be hidden, while the option to “Save As” a new filter would remain available. Building on the feasible idea, we refined and iterated it, eventually arriving at an alternative version that could be more intuitive and user-friendly: If users are only viewing the page and make no changes, no reaction or message needs to be shown. If users make edits and attempt to update the filter, we display a message informing them that the saved filter no longer exists and suggest using “Save As” to proceed. If users access a page via a URL tied to a deleted saved filter, we still present the filtered view, treating the filters as newly added. We would also show a message to inform users, and they have the option to save the filters as a new one.

Implementation Support

Cater and visualize all situations to ensure smooth cross-team communication and successful implementation of design.

To ensure a smooth implementation of the design, I finalized the interaction flow to clearly outline the end-to-end user journey for developers. I prepared a comprehensive Figma file with detailed documentation to support the implementation handoff. Additionally, I collaborated with the DS team to file tickets for new patterns, and maintained ongoing communication with the DS team, developers, and PMs to address edge cases throughout the process.

Following this project, I also supported the design and implementation of similar functionalities across three additional workspaces within F5XC. Once the refined version of the feature was in development, I re-engaged with the Bot Defense PM and development team to ensure new change requests were properly ticketed and previous designs were updated to maintain consistent logic and visual coherence across the platform.

Implementation Support Materials – Confirmation and Error Messages

Final Design

Demonstrate the core functionalities of filter reusability.

Below are the hi-fi prototypes of the phase one design for filter reusability:

Browse Exam
Number 1

In F5XC, users can filter and narrow down the data displayed in dashboards and reports. These filters can be saved for future use, enabling users to quickly revisit specific views. When saving a filter, users can assign a name and description for easier access and reference later on.

Search Exam
Number 2

The name of the currently applied filter is displayed in the saved filter access control. Once a filter is saved, its status is updated accordingly. Users can use the dropdown menu to access previously saved filters. By clicking "View More Details," they can view additional information about filters, including their own, those created by others, and any that have expired due to the system’s data retention policy. Users can also copy the URL to share or apply filters directly from this page.

Action on Exam
Number 3

Users can edit and update their previously saved filters. If a filter was created by the user, they have the option to either update the existing filter or save the changes as a new one.

Report for Exam
Number 4

Users can also use the Saved Filters Management page to access all filters across pages within the same tenant and namespace. Filters that reference a custom time range beyond the past 30 days may produce inaccurate results and cannot be reapplied. Users can delete their own filters, while admins have the authority to delete any saved filters to help clean up outdated or unused entries in the system.

Impacts

Enhance efficiency of resolution validation and set up model for team collaboration.

The new feature allows customers to easily reapply previously used filters and efficiently collaborate with team members and the F5 Managed Services team on resolution validation.

Through this project, my cross-functional team and I established a collaboration model that enabled close partnership with the DS team. I was able to leverage their expertise, gather valuable input, and approach challenges from a system-level perspective. This model is adaptable and can be reused by other team members for future projects.

I also shared this experience with other F5 designers through our designer all-hands and 1:1 conversations, highlighting the challenges I faced, the strategies I used to foster cross-functional collaboration, and the approaches I took to overcome constraints and deliver an improved user experience.

I later had the opportunity to support additional workspaces (e.g., WAAP, MCAC, DA, etc.) in developing their filter reusability functionality. During this process, I refined and enhanced the feature, and re-engaged with the Bot Defense PM and development team to support ongoing collaboration and feature updates.

Impacts – Building Functionalities in Other Three Workspaces

Reflection

Limitation

Only core functionalities were built in phase one for the four workspaces.

API constraints lead to inefficient and inaccurate communication of value missing status.

Next Step

Revise API to support easy tracking and presenting missing values in saved filters.

Support editing right in the detail view when saving filters or after saving them.

Support filter duplication and editing.

Polish info architecture of the global bar and visual treatments for different statuses of saved filters.

Improve filter functionality such as advanced filtering.

What I Learned

Make stakeholders with different priorities aligned.

Make new component creation visible to the development team as early as possible.

Ally with PM to push for changes.