Minimizing the number of failed import jobs in SAP Analytics Cloud and SAP Datasphere.
Defining the problem
Overview
Context
SAP Analytics Cloud (SAC) is a cloud-based analytics platform from SAP that integrates business intelligence (BI), augmented analytics, predictive analytics, and enterprise planning into a single solution. It enables organizations to visualize data, analyze trends, and make data-driven decisions in real time.
SAP Analytics Cloud is one product that interfaces with other products within SAP's data and analytics ecosystem such as SAP Datasphere (DSP) and SAP Business Data Cloud (BDC).
The Problem
"A bulk of import jobs
were failing due to
poor UX and system
performance."
Customers using SAP Analytics Cloud and SAP Datasphere were filing complaints to our internal customer influence portal regarding how long the import processes took. A lot of our customers were importing 10,000+ objects in each import job, and the larger the import package, the slower it took. The overall design of the current import tool also lacked consistency with the Export tool and presented UX issues.
Initial Research
UX Audit
It Was a UX Bug Infestation! 🐜
To understand the current pain points and bottlenecks of the Import experience, I conducted a UX audit in the form of an ad hoc heuristic evaluation. I analyzed the entire Import experience from entry point to import job processing. The themes found in the UX audit (shown below) paved the way for design decisions and informed the customer sessions.
Precedent Study
Looking for Precedence
I wanted to see how other data-heavy tools designed their interfaces and study their behaviours and efficacy at conveying information. I conducted a reviewed and analyzed BDC&I products and the Export tool—often used alongside Import—to identify opportunities for a more unified and seamless ETL experience.
The Export tool in SAC and DSP.
Initial Ideation
First Iterations
Unifying the Import and Export Experiences
During the precedent study, I found that there was a large discrepancy between the user experience of the Import and Export tools. Within the Customer Influence portal, there were also more tickets for Import than for Export indicating there were less UX issues for Export. I made it a goal to unify these two experiences.
Current Export Experience
Initial Proposal
After my initial analysis, I created a proposal that transitioned the current dialog experience to a split-screen experience. I presented this proposal to the Design Manager.
Feedback from Design Manager
"I like the new design ... but it’s still too overwhelming and overloads
the user with data …
The settings and the table is
cumbersome with too much information.”
- Design Manager
Applying Feedback — Reducing Cognitive Load
Below shows two major changes I made in my design proposal to address the feedback from my design manager regarding information overload. This was proven to be crucial to simplify data-heavy UI.
Before
Cumbersome Help Text
Help text is often only contextually-relevant and only needed in times when the user is confused. Currently, the help text is laid out constantly laid out making it take up unnecessary screen real estate and adding to UI clutter.
Current Help Text Design
After
Contextual Help Text
All of the help text from the previous design was hidden. The help text is hidden within contextual tooltips that can be prompted open by users reducing overall UI clutter.
Before
Unorganized Content Table
This table shows the content of an import package and should show the hierarchy of objects that are nested in one another too. The current table is categorized by object type but all objects are displayed with no option of collapsing rows and there is no visualization of object relationships.
After
Hierarchical Tree Table
This allows users to expand/collapse rows they want to view giving them more control and freedom of what they want to see. Furthermore, the tree table visualizes object-to-object relationships better with a nested structure. The tree table also uses lazy loading where it only loads objects when the user prompts them open, utilizing progressive disclosure to improve system performance.
UX Research & Validation
Overview
Getting Data to Back Our Decisions
The main priority of SAC dev teams in 2025 was to transition the entire product from the old Belize visual theme to the new and more modern Horizon visual theme to visually align with the rest of SAP products. UX enhancement projects like our redesign proposal were being backlogged so I proposed to conduct a UX validation project to the Senior UX Designer in an effort to leverage UXR data and customer's voice to change the development roadmap's priorities.
Recruiting
Customer Influence Portal
At SAP, a large, process-driven B2B enterprise, our UX research team took a proactive approach to recruitment by engaging directly with customers who submitted feedback or issues through the Customer Influence portal. We also leveraged usage tracking data to identify and reach out via email to frequent users of the Import tool, ensuring we gathered insights from those with hands-on experience. We ended up recruiting 9 users from 5 companies.
Testing Plan
Understand, Test, Compare
The UX Researcher and I developed a testing plan together that consisted of 4 sections:
1. Background Questions – to understand the user’s role and how the Import tool fits into their workflow.
2. Contextual Inquiry – users were tasked to import a package using their current SAC tenant to identify pain points in the existing design, followed by a rating.
3. Prototype Validation – users were tasked to import a package using a Figma prototype of the new design, rated it, and shared feedback on its effectiveness.
4. Follow-Up Evaluation – users compared both designs and discussed areas for improvement.
Research Findings
Our Customers Cared About Speed and Transparency
Slow System Performance 🐌
Users though that one of the largest drawbacks of the current Import process was the slow loading times. This was prevalent in two main areas: loading the package content table during the import configuration step and processing the import job after a request is created.
Lack of Exception Handling ⁉️
Users though that one of the largest drawbacks of the current Import process was the slow loading times. This was prevalent in two main areas: loading the package content table during the import configuration step and processing the import job after a request is created.
Muscle Memory 💪
Users thought that one of the largest drawbacks of the current Import process was the slow loading times. This was prevalent in two main areas: loading the package content table during the import configuration step and processing the import job after a request is created.
Design Decisions
Improving System Performance
Iteration Point 01
Hierarchical Tree Table
The tree table was introduced as it was found to be more efficient than the previous static table. It uses lazy loading to load objects only when prompted open by the user improving loading times and also effectively visualizes object hierarchy within an import package.
Retaining Muscle Memory
Iteration Point 02
Standardized Settings
Layout
Each setting in the current design was inconsistent from one another in various aspects including typography, layout, and spacing. To improve consistency, the layout for settings were standardized and placed within accordion components.
Iteration Point 03
Redesigned Overwrite
Settings
We found users often clicked 'Import' without configuring all of their settings. We added a 'No selection' option for Overwrite Settings so that users would be prompted to make a conscious decision before importing.
Exception Handling
Iteration Point 04
Warning Filter
Better querying patterns were created for warnings in the import package table. Using a toggle button to show only affected rows allowed for more streamlined warning handling.
Iteration Point 05
Formulaic Approach to Warning Messages
To address the ineffective warning messages in the current design, I worked closely with UX writers on my team to create a formula for writing effective warning messages.
Current: Non-Descriptive Generic Messages
The current warning messages lack a reason explaining why the issue occurred and it also does not provide instructions for the user on how to recover from the issue.
New: Diagnostic Warning Messages
The new warning messages were structured based on a 'formula' consisting of 1. A 'What Happened' statement, 2. 'Why It Happened' statement, 3. Instructions for Recovery, and 4. Last Resort Escape ('Jump Ship') CTA.
Iteration Point 06
Scenario-Based Guardrails
There are 5 different cases of exceptions that can occur during the Import process. These include 3 warning cases, 1 error case, and 1 informative case.
Rather than having a generic status message for all of these cases, I broke each case down and made specific exception handling UX for each case.

Error Cases
Error cases are detrimental to the completion of an import request. If these are not resolved, the user will not be permitted to complete the import configuration process.
Warning Cases
Warning cases are not detrimental to the successful import of a package. However, there may be errors in the import if these warnings are not resolved.
Informative Cases
Informative cases are situations where a message will appear to notify the user why an object may be missing from the package to provide transparency to the user.
Solution
The Final Design
New Import Design: Split Screen Experience
After a UX audit, countless design iterations and critiques, and a round of usability testing with customers, we landed on a split screen experience for customers. This design not only boosts transparency, showing customers how their import settings directly impact package content, but also enhances error visibility and also system performance through changing component usage.
Improvement 01
Faster Load Times⚡
Customers won't need to wait 3+ minutes for their import package summary table to load decreasing the load time to a matter of seconds. After collaborating with the dev team, we’ve implemented a more efficient tree table component with lazy loading from our component library.
Improvement 02
Diagnostic Exception Handling 🔎
Warnings are common during imports in SAC and DSP, often due to specific configurations. Our new exception handling framework simplifies this by providing real-time messages, filters, and row indicators to help users quickly identify and resolve issues.
Improvement 03
Catering to Muscle Memory 💪
We designed the import settings to balance familiarity for existing users and ease for new ones. By keeping the layout similar to the current design, we maintain consistency while improving UX and minimizing the learning curve.

Reflection
Next Steps
Impact & Next Steps
As a result of the redesign initiative and the UX research project, here are some tangible changes:
Takeaways
Leveraging UX Research Can Influence Organization-Wide Changes
The main priority for SAC as a product was to transition it from the old Belize visual theme to the new and more modern Horizon theme to visually align with the rest of SAP's products. UX enhancement projects such as this redesign project were backlogged. Using UX research findings and data allowed us to gain stakeholder buy-in from PMs and development to prioritize it on the development roadmap.
Backend is UX Too
The main complaint from our users for the UX of the Import tool was the slow performance. To fix this issue, the front-end UI could not be changed much. However, as a UX Designer I was able to get creative and investigate the loading times for different table components within SAP's design system and chose the most efficient component with developers to improve the loading times.
Words That Work
While working with UX Writers, I learned how important UX copy was in helping users understand complex settings and for conveying more effective warning messages. I learned conveying information to the user was not only reliant on the way that components are laid out on the screen but also the text that accompanies these components.
2025
William Lee