Projects Vericast — Dynamics 365
Microsoft Dynamics 365 Enterprise SaaS Data Quality Fluent UI B2B

Enterprise CRM data degrades by 30% every year. I designed a Dynamics 365 workflow that lets teams fix it systematically — not one record at a time.

Client Vericast
Platform Microsoft Dynamics 365
Design System Microsoft Fluent UI
Deliverable Figma prototype for stakeholder review
Vericast Data Quality Dashboard in Microsoft Dynamics 365
The business problem

Vericast runs their account data through Microsoft Dynamics 365. Over time, fields go stale — wrong industry tags, outdated revenue figures, missing websites. Their team was reviewing records manually with no structured workflow, no data source comparison, and no audit trail. A correction that should take 10 seconds was buried in spreadsheet chaos.

4
External data sources compared
per record — Zoom, D&B, LinkedIn, Wikipedia
Bulk
Approval in one click
vs. reviewing each record individually
Native
Microsoft 365 UI — zero learning curve
for existing Dynamics users

The product, the client, and the brief

Vericast is a B2B data and marketing company. Their sales and operations teams run on Microsoft Dynamics 365 — it's their system of record for accounts. The problem: account data in any CRM decays fast. Companies change industries, revenues shift, websites move, contacts leave.

The brief was to design a data quality improvement workflow embedded directly inside Dynamics 365. The client had a reference video showing a Salesforce-style version of this concept. My job was not to copy it — it was to understand the intent, adapt it thoughtfully to the Microsoft Dynamics environment, and improve the UX where the reference fell short.

The final output was a high-fidelity Figma prototype built on the Microsoft Fluent UI design system — ready for stakeholder communication, product planning, and executive review.

🎯

The constraint that shaped everything: this had to feel like it shipped with Dynamics 365 — not like a third-party tool bolted on top. Every component, pattern, and interaction had to be native Microsoft.

What was actually broken before this tool

01

No structured review workflow

Data quality issues were caught ad hoc — someone noticed a wrong field and fixed it manually, or it was missed entirely. There was no queue of cases to work through systematically.

02

No side-by-side source comparison

When a field looked wrong, there was no easy way to check what Zoom, Dun & Bradstreet, LinkedIn, or Wikipedia said about the same account — each required a separate browser tab and manual copy-paste.

03

No tiered prioritisation

All account records were treated equally. Tier 1 strategic accounts (highest revenue impact) sat in the same unsorted pile as low-value records, so teams couldn't focus effort where it mattered most.

04

Duplicate account creation risk

When adding a new account, there was no check against existing records or external databases. Teams would create duplicates, or worse, onboard the wrong entity entirely.

The walls we designed inside

Four hard constraints governed every design decision on this project:

Fluent UI components only. No custom widgets, no external libraries. Every button, grid, tab, dialog, and command bar had to exist in the official Microsoft 365 component toolkit — or it didn't exist in the product.

No direct database access. All four external data source columns (Zoom, D&B, LinkedIn, Wikipedia) came from pre-existing API connections. The design had to work gracefully with missing or inconsistent data from any of them.

Mandatory confirmation on all bulk actions. Any approve-all or bulk-apply action required an explicit confirmation dialog — a non-negotiable stakeholder requirement to prevent accidental mass data overwrites.

Figma prototype only, not an engineering handoff. The output was a high-fidelity prototype for executive review and stakeholder sign-off — not a dev-ready spec. This meant prioritising communicating the workflow over edge-case completeness.

Adapt, don't replicate

The reference was a Salesforce-style workflow. Salesforce and Dynamics 365 have fundamentally different interaction patterns — what feels native in one feels wrong in the other. Directly copying the flow would have produced something that worked on paper but felt foreign to users already living in Microsoft 365.

My approach was to map the intent of each screen in the reference — what decision is the user making here? — then find the right Dynamics 365 pattern to support that same decision. That meant using command bars, tabs, grid views, and side panels exactly as Microsoft specifies them, not inventing new patterns.

"Native first" — if a Dynamics 365 user couldn't look at this and assume it shipped with the product, the design wasn't done.

  • Used the Microsoft Fluent UI Figma toolkit as the component foundation — every button, tab, grid, and dialog is from the official system
  • Structured the app into four clear modules: Dashboard, Review Cases, Create Account, Explore Accounts — matching how Dynamics apps separate concerns
  • Introduced tier-based filtering the reference didn't have — Vericast's data has clear tier hierarchy, so the review queue needed to reflect that
  • Added match percentage scoring for account search — reduces subjectivity when choosing between similar records
  • Kept import/export as first-class actions on the dashboard — data teams need to bring in external files and extract processed data

Five choices that shaped the product

Decision 01

Four modules, not one monolithic view

What I changed: The app is divided into four distinct tabs — Dashboard, Review New Cases, Create Account, and Explore Accounts. Each module owns a specific job. You don't land in a generic "data" view and figure out what to do next.

Why: Data quality work involves very different mental modes — monitoring (Dashboard), triaging (Review), creating (Create Account), and auditing (Explore). Separating them reduces cognitive switching and makes it clear where to go for any task.

Problem solved: Users no longer have to scroll and filter the same screen for different jobs. The tab navigation itself communicates the workflow.

Dashboard with 4-tab navigation: Dashboard, Review New Cases, Create Account, Explore Accounts

The four-tab top bar establishes the full scope of the tool at a glance — matching Dynamics 365's standard app navigation pattern

Decision 02

Tier tabs in the review queue — priority baked in

What I changed: The Review Cases view has tabs for All Tiers, Tier 1, Tier 2, Tier 3, and Tier 4. Users can work their way through the most critical accounts first without needing to set filters each session.

Why: The reference design had no concept of prioritisation — all records were in one flat list. But in practice, a Tier 1 enterprise account with wrong revenue data causes far more damage than a Tier 4 record. The tabs make prioritisation the default, not an afterthought.

Problem solved: A team lead can assign "work Tier 1 first today" without any setup — the tab structure enforces that workflow for everyone.

Review Cases with Tier tab navigation and multi-source data columns

Tier tabs across the top — the review grid shows Current data alongside Zoom, D&B, LinkedIn, and Wikipedia columns for direct comparison

Decision 03

Multi-source columns — the comparison happens on one row

What I changed: Each case row in the review grid shows the Current value alongside what Zoom, Dun & Bradstreet, LinkedIn, and Wikipedia report for the same field. The approval action (✓ or ✗) sits at the end of the row.

Why: The old workflow required opening each external source in a new tab, reading the data, switching back to Dynamics, and updating the field. By pulling all sources into the grid, the decision is made on the same screen with no context switching.

Problem solved: Eliminated the browser-tab juggling that was slowing down every single review. The full picture is on the row — approve or reject is now a one-click decision.

Single case approved toast

Single-record approval

One click on the approve action fires the "Case Approved" confirmation toast — the row updates in place, no page reload.

Case Closed confirmation

Case closed state

Rejecting a case marks it as closed — the record is flagged but preserved for audit, not silently deleted.

Decision 04

Bulk approval for high-confidence records

What I changed: Checkboxes on each row let users select multiple cases at once. A sticky "Bulk Approve" command appears when rows are selected, approving all in a single action. "Cases Approved Successfully" confirms the batch.

Why: Not every data quality case needs deep scrutiny. When all four sources agree on a value, approving 20 records individually is pure overhead. Bulk approval is the right tool for high-confidence corrections.

Problem solved: Review sessions that took an hour can be completed in minutes when straightforward cases can be batch-processed.

Multiple rows selected with checkboxes

Rows selected for bulk action

Checkboxes on each row — select all or pick individually. The command bar activates "Bulk Approve" once a selection is made.

Cases Approved Successfully after bulk action

Bulk approval confirmed

"Cases Approved Successfully" toast confirms the batch. All selected records updated in one action.

Decision 05

Match percentage scoring on account creation

What I changed: When creating an account, the search returns results ranked by match percentage (e.g. 79%, 53%, 38%) alongside Billing Country and City. A radio-button selection model forces the user to pick one explicit match before creating.

Why: Without scoring, similar company names look identical in a list. "Book Happy" and "Book Report" both match a search for "Book" — but 79% vs 53% tells the user something meaningful about confidence before they commit to creating the account.

Problem solved: Duplicate account creation and accidental entity mix-ups — two of the most common data quality failures in CRM systems.

Explore Accounts search results with match percentages

Search results ranked by match confidence — 79%, 53%, 38% — with Billing Country and City for disambiguation

From reference video to Fluent UI prototype

The brief included a Salesforce-style reference video. Here's how I turned that into a native Dynamics 365 design.

01 — Reference

Deconstruct the intent

Watched the Salesforce reference, mapped each screen to a user decision: "what is the user choosing here?" — not "what does this screen look like?"

02 — System

Fluent UI component audit

Identified which Dynamics 365 / Fluent UI components map to each interaction: command bars for actions, tab bars for module nav, grid views for data tables, side panels for edit.

03 — Structure

Module architecture

Defined the 4-module structure (Dashboard, Review, Create, Explore), established data flows between them, and validated the navigation model against Dynamics conventions.

04 — Prototype

High-fidelity Figma build

Built every state — empty, loaded, searched, approved, bulk-selected, saved — using Fluent UI components. Connected as a working prototype for stakeholder walkthrough.

Command centre for the data quality pipeline

Dashboard — Today filter with bar chart and KPI stats
Default State — Today

Four KPIs. One chart. Immediate orientation.

The dashboard opens with a "Today" view: 98% case success rate, 12,191 open cases, 7,78,000 total records, 6,236 closed cases. The bar chart breaks down cases by tier, updated for the selected time window.

A welcome message personalises the experience — the tool knows who you are and opens ready to work, not with a blank state.

Dashboard with Imported Successfully toast
Import Functionality

Bring external data in — CSV or JSON

The Import button on the command bar lets users upload a CSV or JSON file. Once uploaded, the system previews the data before committing. The "Imported Successfully" toast confirms the operation.

This was an addition the reference didn't include — data teams frequently need to bring in processed datasets from external enrichment tools.

Time-comparative filtering — Today, Week, Month

Every KPI card compares to the previous period. Switching the filter updates the chart and the comparison deltas — "↑ vs last week" or "↓ vs last month" — so managers understand trend direction without running a separate report.

Dashboard — This Week filter

This Week

45,191 open cases compared to last week — weekly bar chart with tier breakdown. Useful for sprint-level planning.

Dashboard — This Month filter

This Month

Monthly view for leadership reporting — 15,236 closed cases vs last month, trend direction visible at a glance.

Every module, designed end-to-end

Create Account — empty state with search form
Create Account — Empty State

Search before you create

The Create Account screen is intentionally empty on load — users must search first. Account Name, Website, Billing Country, and Billing City define the search. Advanced Filters expand for more precise matching.

The "No Results — Fill the form to get results" state is direct: don't create anything until you've checked what already exists.

Create Account — search results with multi-source columns
Create Account — Results State

Four data sources. One decision.

After searching "The Walt Disney Company", results appear from Zoom, D&B, LinkedIn, and Wikipedia side-by-side. Each column shows what that source reports: website, employees, SIC code, industry, revenue.

A radio-button selection forces one explicit choice. "Create Account" activates only after a source is selected — preventing blind creation.

Account Created Successfully confirmation
Account Creation Confirmed

Clean success state, ready for the next task

After creation, the form resets to empty — the user is ready for the next account. The "Account Created Successfully" toast confirms the action without blocking the next workflow.

No modal, no redirect, no disruption — consistent with how Dynamics 365 handles confirmations throughout the product.

Explore Accounts — all accounts default view
Explore Accounts — Default

The full account registry, searchable and auditable

All registered accounts display by default — Account name, Revenue, Billing Country, Billing City. The search panel on the left accepts Account Name, Website, Billing Country, and City to narrow the list.

This is the auditing module: find any account, check its data, edit it if needed — all without leaving Dynamics.

Explore Accounts — edit view with multi-source comparison
Explore Accounts — Edit Mode

Edit with full source visibility

Clicking edit on any account opens a multi-source comparison view — Zoom, D&B, LinkedIn, and Wikipedia columns show what each source reports for Billing Country, Calculated Region, Employees, SIC Code, and Revenue.

"Update Changes" commits the edits. "Changes Saved Successfully" confirms. The workflow matches exactly what users see in the Review Cases module — consistent mental model across the whole tool.

What this workflow changes in practice

4→1
Browser tabs eliminated

Zoom, D&B, LinkedIn, and Wikipedia data brought into a single grid row. No tab switching during review.

Bulk
High-confidence records

Cases where all sources agree can be batch-approved in seconds — hours of manual review compressed into minutes.

Tier 1
Priority enforced by default

Tier tabs mean highest-impact accounts get reviewed first — no filter setup required, every session.

Zero
New UI patterns to learn

Built entirely on Fluent UI — existing Dynamics 365 users operate it from day one with no training overhead.

The exploration that didn't ship

The first design was a step-by-step wizard: one field per screen, pick a source, confirm, advance to the next field. For four fields, that was four separate confirmation screens per record — clean in isolation, painful at volume.

In a stakeholder walkthrough, the operations team lead flagged it in under two minutes: "I need to see the whole record to judge which source is most trustworthy overall — not just for one field at a time." A data quality reviewer doesn't make four independent micro-decisions; they make one holistic judgment about which external source best represents this company. The wizard made that judgment impossible.

Why we cut it: The wizard optimised for simplicity per step at the cost of judgment across steps. Replaced with the side-by-side multi-source comparison table — all fields visible at once, all sources visible simultaneously, one selection decision per record.

What I'd push further

What I'd add next

AI-suggested corrections — when 3 of 4 data sources agree on a value that differs from the current record, surface a "Suggested Fix" flag directly on the row. This would further reduce the cognitive load of reviewing each case individually and turn the tool from reactive to proactive.

What I'd validate

The multi-source column layout works cleanly for a small number of fields — but as the number of tagged fields grows, the grid becomes wide and hard to scan. A collapsible "show differences only" toggle would help users focus on the columns that actually diverged between sources.

What I learned

Designing for an existing platform isn't a constraint — it's a shortcut. When you use the host system's components faithfully, you inherit years of UX decisions your users already trust. The real design work is knowing what the platform does well and spending your energy on the parts it doesn't cover — the data comparison logic, the prioritisation model, the confirmation states.

Interested in seeing the Figma prototype?

Book intro call →