←  IndexCase StudyGlobal Enterprise · 2025–2026中文

NDA notice

To comply with non-disclosure obligations, all corporate entities, internal ERP schemas and system identifiers have been generalised and anonymised. The methodologies, architectures and performance outcomes remain fully representative of the actual engagement.

Business Analyst Intern — Global Fortune 500 Enterprise — Dec 2025 → Feb 2026

Order Reporting
Automation System

A reporting task that depended on staff who understood how four enterprise tables connected — rebuilt so that anyone can produce the same report from a single order number, in about thirty seconds.

Power AutomateDataverseOffice ScriptSQLDynamics 365
01Problem

Knowledge locked inside people, not systems.

Generating a single customer order report required staff to navigate across multiple related Dataverse tables by hand. Although foreign-key relationships existed in the system, users still had to open each record, trace the relationships, and copy data into Excel one field at a time.

The process was slow, inconsistent, and entirely dependent on experienced staff who understood how the underlying data connected. When those staff were unavailable, reporting stopped. The challenge was never generating the report — it was making complex enterprise data understandable without requiring users to understand the database structure themselves.

01Fragmented data
Related records spread across four Dataverse tables — no unified view.
02Manual FK resolution
Users mentally traced PK/FK links between the master sales table and three transactional sub-tables.
03Undocumented logic
Business rules — coalesce fallbacks, field mappings, country codes — lived only in experienced staff.
04Repetitive Excel work
Final report assembly done by hand, every single time.
02Process

As-Is → To-Be

The same report, before and after. What changed is not the number of steps but who performs them, and how much a person has to know before they can start.

Time to produce one report — drawn to scale

Manual process5 min
Automated flow~30 s

Ten to one. The bar is the value, so a tenth of the length means a tenth of the time — a 93% reduction.

As-is · manual

  1. 01Search Dataverse manually
  2. 02Open related record
  3. 03Navigate another table
  4. 04Copy field by field
  5. 05Assemble in Excel
  6. 06Customer report

Avg 5+ minutes · inconsistent output · knowledge-dependent

To-be · automated

  1. 01Order number input
  2. 02Power Automate triggered
  3. 03Dataverse PK/FK resolved
  4. 04Business rules applied
  5. 05Office Script formats
  6. 06Customer report

Avg ~30 seconds · consistent output · no expertise needed

03Data Design

Abstracting database complexity from the user

Behind a single order number sat records spread across four Dataverse tables — an enterprise master sales table plus three transactional sub-tables for shipping, localisation and billing — connected by PK/FK relationships with multi-table coalesce fallback logic.

The resolution order checks the shipping sub-table first, falls back to billing, then to the master table — handling fields that exist only in specific sub-tables. Additional encoding covers shipping destination codes, foreign trade name truncation, and agency versus end-user name fallback.

510 → USA  ·  520 → UK
truncate at “ for ”
agency name → end-user fallback

Manual — before

Shippingopened by hand
Billingopened by hand
Localisationopened by hand
Master Salesopened by hand

Automated — after

order number  →  one input
coalesce
Shippingresolved by PK/FK
Billingresolved by PK/FK
Localisationresolved by PK/FK
Master Salesresolved by PK/FK
Customer report
04Architecture

How one report gets built

Six stages, one of which the user touches. Everything the experienced staff used to hold in their heads is encoded between stages two and four.

  1. 01

    User input

    A single order number — the only thing the user ever touches.

  2. 02

    Relationship resolution

    Power Automate queries Dataverse using the existing PK/FK structure to fetch all related records automatically.

  3. 03

    Business rule application

    Coalesce logic, country code mapping, name truncation and agency/end-user fallback, all encoded in the flow.

  4. 04

    Data aggregation

    Records from all four tables merged into a single unified structure.

  5. 05

    Template instantiation

    The master template is copied into a new transaction-specific file, protecting the original.

  6. 06

    Frozen report output

    Office Script runs formatting rules, locks the output, and delivers a standalone customer-ready report.

05Governance

Template isolation as a design principle

Rather than writing data straight into a shared master template — which risks corruption or accidental modification — the solution copies the master for each run, injects data into the copy, runs the Office Script, and freezes the result as a standalone file.

Separating configuration from runtime data is a standard principle in maintainable enterprise systems. It ensures the master can never be corrupted by an individual report run, and every output is independently auditable.

  1. 01

    Template.xlsx

    Master — never modified by a report run.

  2. 02

    Template_[OrderID].xlsx

    A per-transaction instance, copied fresh each time.

  3. 03

    Frozen_[OrderID].xlsx

    Standalone read-only output, independently auditable.

06Results
93%
Reduction in report generation time — five minutes down to about thirty seconds

across a dataset of 500,000+ historical records from eight global factories

1
User action to generate a report
a single order number
0
Manual data queries needed
lookup fully automated
4
Tables resolved automatically
master + three sub-tables

Deliverables

//Business problem analysis
//As-Is & To-Be process mapping
//Root cause analysis
//Data relationship design
//Solution architecture
//Power Automate workflow
//Governance design
//Office Script + Excel output
07Learnings

What the engagement actually taught me, as opposed to what it shipped.

01

Analysis before automation

The right process came from understanding why the manual process existed and what it was trying to achieve — not from jumping to a technical solution.

02

Remove decisions, not just clicks

The best automation shifts cognitive burden from the user to the system. Users no longer needed to understand how the data connected.

03

Reliable data, reliable output

Correctly resolving PK/FK relationships across all four tables was the foundational design decision. Everything downstream depended on it.

04

Maintainability over complexity

Separating the template from runtime data was a deliberate governance choice that makes the system auditable, recoverable, and safe to iterate on.