Category Archives: Dynamics 365
Dynamic Expense Entry Submission with Receipt Attachments in Power Apps: A Practical Implementation for a Texas-Based Operational Technology Security Organization
Blogger CloudFrontsbloggerEdit Profile Summary Expense management processes in enterprise project environments often require strict documentation controls to ensure financial accuracy and compliance. One common requirement is the mandatory attachment of receipts when submitting expense entries, especially for specific expense categories such as airfare, accommodation, or high-value reimbursements. My blog describes how a project-driven organization streamlined its expense submission workflow using Canvas Apps integrated with Dynamics 365 Project Operations. The solution I had implemented automates the validation and submission process for expense entries while ensuring that receipt files are attached before submission. By combining form validation logic in the Canvas App with backend automation using Power Automate, the organization eliminated the manual process of attaching receipts and creating notes in the system. The result was a seamless, user-friendly expense submission experience that enforces compliance while significantly improving operational efficiency. Table of Contents 1. Customer Scenario 2. Solution Overview 3. Understanding the Expense Data Structure 4. Canvas App Validation Logic 5. Expense Creation and Submission Process 6. Automating Receipt Handling with Power Automate 7. Enforcing Mandatory Receipts for Specific Categories 8. Business Impact 9. Solution Walkthrough 10. Final Thoughts 1. Customer Scenario A Texas based Cyber Security organization managing multiple client engagements relied on Dynamics 365 Project Operations to track project expenses incurred by consultants and field staff. While the system allowed users to create draft expense entries, the process of submitting those expenses required additional manual steps. To submit an expense, users had to: Create the expense entry in draft mode. Upload the supporting receipt manually. Navigate to the expense record. Create an associated Expense Receipt record. Attach the receipt file under Notes (Annotations). Convert the file into the required document format stored in the system. Update the expense status to Submitted. This workflow introduced several challenges: Users frequently forgot to attach receipts. Manual creation of Notes records was error-prone. Finance teams had to follow up for missing documentation. Expense approvals were delayed due to incomplete submissions. Employees found the process unnecessarily complex. The organization needed a simpler, controlled way to ensure receipts were always attached when expenses were submitted, without requiring users to understand the underlying system structure. 2. Solution Overview To address these challenges, a custom expense submission experience was built using Canvas Apps integrated working in conjunction with D365 Project Operations. The solution introduced a dynamic expense entry submission interface where users can: Create expense entries Upload receipt files Submit expenses directly from the app Figure: Canvas App interface enabling dynamic expense entry submission with receipt attachment. Figure: Canvas App interface enabling dynamic expense entry submission with receipt attachment. Behind the scenes, the application automatically: Creates the expense entry in Dataverse Generates the related Expense Receipt record Uploads the receipt file to Notes (Annotations) as a document Updates the expense status to Submitted Figure: A Submitted Expense Entry Record. Figure: The Expense Receipt Record + Receipt PDF Annotation associated with the Expense, without which Submission won’t have been possible. This automation completely overrides the manual procedure of attaching receipts and creating notes, ensuring the process is both compliant and seamless for users. 3. Understanding the Expense Data Structure Within Dynamics 365 Project Operations, expense documentation follows a structured relationship model. The hierarchy looks like this: Expense ↓ Expense Receipt ↓ Notes (Annotation) ↓ Blob/Base64 File Storage of Expense Receipt. Figure: Implementation of the Expense Entry -> Expense Receipt -> Annotation -> Receipt File Workflow. In this structure: The Expense record stores the financial transaction. The Expense Receipt record acts as a container for receipt documentation. The Notes (Annotation) entity stores the actual file. The receipt file is stored as Base64 binary data (blob). While this structure is technically sound, it requires multiple manual steps when performed directly by users. The custom Canvas App abstracts this complexity and handles it automatically. 4. Canvas App Validation Logic To ensure all required data is captured before submission, the Canvas App includes dynamic validation logic. The application checks whether essential fields are populated before allowing the expense to be saved or submitted. These validations include fields such as: Transaction Date Project Expense Category Reimbursable Indicator External Comments Unit Quantity Unit Price If any required field is missing, the user receives an immediate notification explaining what needs to be completed. Example logic used in the application: If( Or( IsBlank(DatePicker2_5.SelectedDate), IsBlank(Project_Combobox_5.Selected), IsBlank(ExpenseCategory_Combobox.Selected), IsBlank(Dropdown1.Selected.Value), IsBlank(External_Input_7.Text), IsBlank(Project_Combobox_6.Selected), IsBlank(NumberInput2.Value), IsBlank(NumberInput2_1.Value) ), Notify(“Required fields are missing.”, NotificationType.Error) ) This validation ensures data completeness before the expense record is created. 5. Expense Creation and Submission Process Once validation passes, the Canvas App uses a Dataverse Patch operation to create or update the expense record. The logic dynamically calculates financial values such as the subtotal based on quantity and unit price. Example logic: Set( varSavedExpense, Patch( Expenses, Defaults(Expenses), { ‘Transaction Date’: DatePicker.SelectedDate, Project: Project_Combobox.Selected, ‘Expense Category’: ExpenseCategory_Combobox.Selected, Quantity: Value(NumberInputQuantity.Value), ‘Unit Price’: Value(NumberInputPrice.Value), Subtotal: Value(NumberInputQuantity.Value) * Value(NumberInputPrice.Value) } ) ); ‘SubmitExpense(CanvasApp)’.Run( varSavedExpense.Expense, First(fileupload.Attachments).Name, First(fileupload.Attachments).Value ); Notify( “Expense submitted successfully.”, NotificationType.Success ) This creates the draft expense entry in the system. 6. Automating Receipt Handling with Power Automate After the expense entry is saved, the Canvas App triggers a Power Automate flow. The flow receives: Expense record ID File name Receipt file content The flow then performs the following steps automatically. Step 1: Create Expense Receipt Record A new Expense Receipt record is created and linked to the expense entry. Step 2: Upload Receipt as Note The receipt file is stored as a Note (Annotation) associated with the expense receipt. This note contains: File Name Document Type Base64 encoded file content MIME type Step 3: Update Expense Status Finally, the expense record status is updated from Draft to Submitted. This ensures the expense becomes available for approval workflows and financial processing. 7. Enforcing Mandatory Receipts for Specific Categories An important requirement D365 PO is ensuring that certain expense categories cannot be submitted without receipts. Examples include: Airline tickets Travel expenses Accommodation High-value reimbursements The Canvas App logic ensures that a receipt file must be attached before submission is triggered. If the … Continue reading Dynamic Expense Entry Submission with Receipt Attachments in Power Apps: A Practical Implementation for a Texas-Based Operational Technology Security Organization
Share Story :
Building a Unified My Allocations Dashboard in Microsoft Dynamics 365 Project Operations for an Industrial Cybersecurity Company in Texas
Summary 1. Built a unified “My Allocations” dashboard in Microsoft Dynamics 365 Project Operations for a project-based professional services organization. 2. Consolidated resource assignments, weekly hour breakdowns, and time entry management into a single custom view. 3. Eliminated the need to navigate between separate Project, Time Entry, and Calendar views for day-to-day tracking. 4. Enabled Practice Managers to switch between team members and instantly review billability without leaving the page. 5. Added inline time entry creation, submission, recall, and deletion all from one interface. 6. Introduced a consolidated calendar view showing all time entries across projects in a single month-at-a-glance layout. 7. Reduced clicks and screen-switching for both individual contributors and managers tracking team billability. Table of Contents Introduction The Business Problem The Solution One Dashboard for Allocations and Time Entries Real-Time Hours Consumption Tracking Inline Time Entry Management The Consolidated Calendar View The Practice Manager View, Billability at a Glance Security and Role-Based Access Business Impact Frequently Asked Questions Conclusion 1. Introduction For teams running project-based delivery on Microsoft Dynamics 365 Project Operations, a simple question, “How many hours are left on this task, and did I log time for it today?”, often takes far more clicks than it should. Resource assignments live in one view, time entries live in another, and consumption summaries require yet another. For project managers tracking billability across an entire team, the problem multiplies with every resource. To solve this, a custom “My Allocations” dashboard was built directly into Dynamics 365 as a web resource, bringing project assignments, weekly hour breakdowns, hours consumption, and time entry management into a single screen. No tab switching, no re-navigation; just one view that adapts to whether you’re an individual contributor or a manager overseeing a team. 2. The Business Problem In a typical Dynamics 365 Project Operations setup, resource assignments, time entries, and consumption reporting exist as separate entities, each with its own view or form. A consultant checking their weekly workload has to open one screen for assignments, another to log time, and a third to check whether they’re over or under budget on a task. For Practice Managers, this friction compounds. Reviewing billability across a team means repeating this multi-screen process for every resource, switching context, re-filtering views, and manually piecing together a picture of who’s on track and who isn’t. The Objective: Build a single, role-aware dashboard where any user can see their assignments, track hours consumed versus planned, and manage time entries; managers can do the same for any resource on the team, without leaving the page. 3. The Solution The “My Allocations” dashboard was designed around one core idea: everything a resource or manager needs for day-to-day tracking should live on one screen. Instead of navigating between the Project entity, the Time Entry list, and separate consumption reports, users get a consolidated view that surfaces assignments, hours, and entry management side by side. The sections below walk through each part of the dashboard and explain how it removes a specific step from the old multi-screen workflow. Figure 1: My Allocations dashboard overview showing summary cards, toolbar, and project hierarchy. 3.1 One Dashboard for Allocations and Time Entries At the top of the dashboard, summary cards provide an instant overview of active projects, active weeks, allocated hours, and assigned tasks. Instead of navigating through multiple Project Operations entities, users immediately understand their workload from a single screen. Each project expands into its assigned weeks, while every week further expands into a detailed day-by-day breakdown of allocated work. This hierarchical layout lets users drill down naturally, from the project level to weekly allocations and finally to individual daily assignments, without leaving the dashboard. By consolidating this information into one interface, the dashboard eliminates repetitive navigation and significantly reduces the time required to understand upcoming work. Figure 2: Project hierarchy showing projects, weekly allocations, and day-level task breakdown. 3.2 Real-Time Hours Consumption Tracking A dedicated Hours Consumption panel gives resources and managers real-time visibility into task progress. For every task, the dashboard displays planned hours, approved hours, submitted hours awaiting approval, remaining hours, and overall consumption using an intuitive progress indicator. Color-coded progress bars immediately communicate project health. Blue indicates healthy consumption, orange highlights tasks approaching their allocated budget, and red clearly identifies tasks that have exceeded planned effort. This removes the need to generate reports or manually compare planned and actual effort across multiple Project Operations views. Figure 3: Hours Consumption panel displaying planned, consumed, submitted, and remaining hours with visual progress indicators. 3.3 Inline Time Entry Management Every task includes built-in actions that allow users to create new time entries or review existing ones without leaving the dashboard. Instead of opening the standard Time Entry entity, users can complete the entire process from the same interface. The entry form captures all required information including work date, duration, role, and external comments. Users may either save entries as drafts or immediately submit them for approval depending on their workflow. Existing entries can also be reviewed, recalled, resubmitted, or deleted directly from the dashboard, significantly reducing navigation while simplifying daily time tracking. Figure 4: Inline Time Entry form used for creating and submitting project hours. Figure 5: Task calendar displaying existing time entries grouped by day and submission status. 3.4 The Consolidated Calendar View Beyond task-specific calendars, the dashboard provides a consolidated monthly calendar that displays every time entry recorded across all assigned projects. Users no longer need to inspect individual tasks separately to understand their monthly workload. Each calendar day displays the total hours logged together with the number of recorded entries. Color indicators provide an instant visual summary of each day’s dominant submission status. Selecting a day immediately displays every recorded time entry beneath the calendar, making monthly reviews significantly faster for both consultants and managers. Figure 6: Consolidated monthly calendar showing all time entries across projects for the selected resource. 3.5 The Practice Manager View – Billability at a Glance For Practice Managers, the dashboard extends beyond personal allocations by introducing … Continue reading Building a Unified My Allocations Dashboard in Microsoft Dynamics 365 Project Operations for an Industrial Cybersecurity Company in Texas
Share Story :
How a Leading North American Commercial Vehicle Manufacturer Optimized Sales Order Posting Using Trace Parser
How to Use Trace Parser in Microsoft Dynamics 365 Finance & Operations Article · Cloudfronts Summary Trace Parser is a Microsoft diagnostic tool that analyzes execution traces captured from Dynamics 365 Finance & Operations (D365 F&O) to help troubleshoot performance issues without traditional debugging. It records detailed information on X++ method execution, SQL queries, call stacks, execution time, user sessions, database interactions, and RPC calls. Traces are captured directly from the D365 F&O application UI, saved as .aet files, and then opened and analyzed in the Trace Parser desktop application. The tool’s Sessions, Call Tree, SQL Statements, and Timeline views make it possible to pinpoint slow forms, long-running SQL queries, and inefficient X++ code. A real-world example shows Sales Order posting time reduced from 40 seconds to 8 seconds after identifying and fixing a looped validation method using Trace Parser. Following best practices — short, targeted traces and before/after comparisons — makes analysis faster and results more reliable. Table of Contents 01 Summary 02 Introduction 03 What is Trace Parser? 04 Why Use Trace Parser? 05 When Should You Use Trace Parser? 06 Prerequisites 07 Capturing and Opening a Trace 08 Understanding the Trace Parser Interface 09 Analyzing Performance Issues 10 Common Performance Problems 11 Best Practices, Limitations & Tips 12 Real-World Example 13 Conclusion Introduction Performance issues and unexpected system behavior can be challenging to troubleshoot in Microsoft Dynamics 365 Finance & Operations (D365 F&O). While debugging X++ code is useful during development, it is often not possible in Sandbox or Production environments. This is where Trace Parser becomes an invaluable diagnostic tool. Trace Parser captures detailed execution information, allowing developers and support engineers to analyze application performance, identify slow processes, review SQL queries, and understand the execution flow of X++ code. In this blog, you’ll learn what Trace Parser is, when to use it, how to capture a trace, and how to analyze the results effectively. What is Trace Parser? Trace Parser is a Microsoft diagnostic tool used to analyze execution traces generated by D365 Finance & Operations. It records detailed information about: X++ method execution SQL queries Call stacks Execution time User sessions Database interactions RPC calls Unlike traditional debugging, Trace Parser helps analyze issues after they occur by reviewing a captured trace file. Why Use Trace Parser? Trace Parser is commonly used to: Investigate slow forms and reports Identify long-running SQL queries Analyze batch job performance Detect inefficient X++ code Find excessive database calls Troubleshoot performance bottlenecks Understand application execution flow When Should You Use Trace Parser? Consider using Trace Parser in scenarios such as: A form takes too long to open. A report is running slowly. A batch job is consuming excessive time. A custom process performs poorly after deployment. Users report intermittent performance issues. You need to identify the exact SQL query causing delays. Prerequisites Before capturing a trace, ensure you have: Access to the D365 F&O environment Permission to use Trace functionality Trace Parser installed (typically on a development VM) A reproducible scenario Capturing and Opening a Trace 1 Step 1 Enable Tracing In D365 Finance & Operations: Sign in to the application. Click the Question Mark icon. Open the Trace tab. Click Start Trace. The system will begin recording user activities. Tip: Only capture the specific business process you want to analyze. Long traces create large files and are harder to analyze. 2 Step 2 Reproduce the Issue Perform only the actions related to the issue, for example: Open the problematic form Run the report Execute the batch job Perform the slow business process Avoid unrelated activities during tracing. 3 Step 3 Stop the Trace Once the scenario is complete: Return to the Trace tab. Click Stop Trace. Save the generated trace file (.aet). This file contains all recorded execution details. 4 Step 4 Open Trace Parser Launch the Trace Parser application on your development machine. Go to File → Open Trace. Choose the saved .aet file. Trace Parser will import and process the trace, which may take a few minutes depending on the file size. Open Trace dialog” src=”https://www.cloudfronts.com/wp-content/uploads/2026/07/1-image4.png”> Understanding the Trace Parser Interface After loading the trace, you’ll see several sections: SessionsDisplays all captured user sessions. Useful for identifying the correct user, filtering traces, and analyzing specific requests. Call TreeShows the hierarchy of X++ method calls, including which methods were executed, parent-child relationships, and time spent in each method. SQL StatementsDisplays all SQL queries executed during the trace, useful for identifying long-running queries, missing indexes, repeated calls, and excessive SELECTs. TimelineShows the execution flow over time, making it easier to identify performance spikes, waiting periods, and expensive operations. Analyzing Performance Issues When reviewing a trace, focus on: 1 Focus Area 1 Long-Running Methods Sort methods by execution time. Look for: High execution duration Frequent method calls Recursive methods 2 Focus Area 2 SQL Execution Time Check: Query duration Number of executions Table scans Repeated queries Repeated SQL queries often indicate inefficient code. 3 Focus Area 3 Excessive Database Calls Example — instead of calling CustTrans::find() inside a while select loop over custTable, consider reducing repeated database calls using joins, caching, or optimized queries. 4 Focus Area 4 Nested Loops Deep nested loops can significantly impact performance. Optimize by: Reducing iterations Using set-based operations Minimizing database access inside loops Common Performance Problems Identified by Trace Parser # Issue Recommendation 1 Repeated SQL queries Cache data or combine queries 2 Long-running methods Optimize business logic 3 Excessive RecIds lookups Use joins where appropriate 4 Full table scans Review indexes and filtering 5 Nested loops Refactor using set-based operations 6 Slow report execution Optimize queries and data providers Best Practices, Limitations & Tips Best Practices Capture only the required scenario. Keep traces short. Test in a Sandbox or development environment whenever possible. Compare traces before and after code changes. Archive traces for future reference. Avoid tracing during peak business hours unless necessary. Limitations Trace Parser is a powerful tool, but it has some limitations: Large trace files require more time to process. … Continue reading How a Leading North American Commercial Vehicle Manufacturer Optimized Sales Order Posting Using Trace Parser
Share Story :
How an Industrial Cybersecurity Company in Texas Improved Field Time and Expense Tracking with Microsoft Power Apps and Dynamics 365 Project Operations
Summary Designed and deployed a mobile-first Power Apps Canvas App for a Texas-based industrial cybersecurity firm specializing in operational technology (OT) security for oil and gas infrastructure. Unified time tracking, expense management, material consumption logging, and approvals into a single experience integrated with Dynamics 365 Project Operations. Eliminated fragmented desktop-based workflows that delayed project reporting, approvals, and billing. Automated expense receipt processing through Power Automate, improving compliance and reducing manual effort. Implemented project-scoped approval routing to ensure submissions were reviewed only by authorized stakeholders. Enabled real-time project visibility through structured Dataverse-driven workflows and lifecycle tracking. Provided mobile approvals and submission monitoring, dramatically reducing turnaround times. Improved data accuracy, audit readiness, and billing efficiency across field operations. Table of Contents Introduction Requirement & Business Scenario Solution Implementation Implementation Gallery Outcome FAQs Conclusion 1. Introduction Field-driven organizations live and die by the accuracy and speed of their project data. For a company securing critical infrastructure like oil rigs, every hour an engineer spends fighting with a clunky time-entry screen is an hour not spent on the job site — and every delayed expense submission is a delay in client billing and financial reporting. This is the story of how a Texas-based cybersecurity firm moved away from a fragmented, desktop-oriented workflow inside Dynamics 365 Project Operations and adopted a unified, mobile-first Canvas App that brought time tracking, expense submission, and material logging into one place, with built-in compliance controls and project-specific approval routing. The Goal: Build a unified mobile-first experience that allows field engineers to submit time, expenses, and materials from anywhere while ensuring compliance, controlled approvals, and real-time project visibility. 2. Requirement & Business Scenario The firm manages multiple concurrent field engagements using Dynamics 365 Project Operations as its system of record. Consultants and field engineers were expected to log three categories of activity against active projects: Time entries for hours worked Expense entries covering travel, accommodation, airfare, and related costs Material usage logs for equipment, parts, and consumables The core issue was that the underlying system was built for desktop use, not for engineers working on-site at remote rig locations. This created several compounding problems: Field staff had no efficient way to submit entries from a mobile device, so submissions piled up until they were back at a desk. Time, expense, and material tracking lived in separate workflows, forcing users to context-switch between screens for what should have been a single daily task. Expense compliance was inconsistent — receipts were sometimes attached, sometimes forgotten, and the process for linking a receipt to an expense record involved several manual, error-prone steps behind the scenes. Approvals had no project-level boundaries, making it hard to guarantee that only the right project stakeholders could review and approve specific submissions. Project managers lacked real-time visibility into resource usage, which meant billing and client reporting cycles were consistently delayed. Left unaddressed, these gaps were directly affecting data accuracy, audit readiness, and the speed at which the business could invoice clients. 3. Solution CloudFronts designed a unified mobile experience using Power Apps Canvas Apps layered on top of Dynamics 365 Project Operations and Dataverse, built around one guiding principle: One App. All Submissions. Controlled Approvals. Real-Time Visibility. For field users, the app became the single place to submit time entries on a daily or weekly basis, create expense entries with automatic receipt handling, log material consumption against the correct project, and track the live status of every submission. For project approvers, the same app surfaced only the entries tied to projects they were actually responsible for, let them approve or reject submissions directly from their phone, and preserved a clean, audit-ready trail for every decision. Day Mode and Week Mode Users could switch between a detailed single-day entry view, useful for precise logging and corrections, and a bulk weekly view that sped up repetitive data entry — letting each person work the way that suited their role. Calendar-Based Swipe Navigation A Dynamics-style calendar with swipe gestures let users move quickly across days and weeks, reviewing or correcting historical entries without friction. Stage-Aware Interface Every record followed the same lifecycle — Submitted, Pending, Approved, Rejected, Recall Requested, Recall Approved, Recall Rejected — and the UI adapted to whatever stage a record was in. Action buttons such as Submit, Approve, Reject, and Recall only appeared when they were actually valid, significantly reducing user confusion and accidental actions. Conditional Receipt Enforcement Rather than requiring a receipt for every expense category, the app applied compliance rules selectively. Receipts were mandatory for airfare and OT hardware purchases, while remaining optional for lower-risk categories such as meals and local transportation. 4. Implementation The technical implementation centered on a unified Dataverse data model and a set of automations that removed manual work from both the field user and the back office. Unified Data Model Time, expense, and material entries were all structured in Dataverse and linked back to the relevant project, resource, approval record, and — for expenses — supporting documentation. Every submission created a record with a clearly defined lifecycle stage, ensuring all three entry types behaved consistently even though their underlying business logic differed. Validation Before Submission The Canvas App enforced field-level validation before allowing a record to be saved, checking that essentials such as transaction date, project, category, quantity, and cost information were populated. If( Or( IsBlank(DatePicker.SelectedDate), IsBlank(ProjectCombobox.Selected), IsBlank(CategoryCombobox.Selected), IsBlank(QuantityInput.Value), IsBlank(PriceInput.Value) ), Notify(“Required fields are missing.”, NotificationType.Error) ) Patch-Based Record Creation Once validation passed, the application used Dataverse Patch operations to create records and calculate derived values such as expense subtotals dynamically based on quantity and unit price. Automated Receipt Handling For expense submissions, the previously manual chain of creating an Expense Receipt record, attaching a file as a Note, converting it to the correct document format, and updating the status to Submitted was fully automated. The Canvas App passed the expense ID, file name, and file content to a Power Automate flow, which created the Expense Receipt record, stored the file as a Note (Annotation) with the correct MIME type, … Continue reading How an Industrial Cybersecurity Company in Texas Improved Field Time and Expense Tracking with Microsoft Power Apps and Dynamics 365 Project Operations
Share Story :
Mastering MRP: From Disconnected Data to Unified Insights for a Leading North American Commercial Vehicle Manufacturing Company
Summary Large manufacturing companies depend on Material Requirements Planning (MRP) to manage demand, supply, inventory, procurement, and production. In many organizations, planning data is spread across ERP systems, legacy applications, spreadsheets, and manufacturing systems, making it difficult to answer a critical question: Will we have the right material at the right time? A centralized MRP reporting solution built using Dynamics 365 and Power BI provides a single view of demand, inventory, procurement, production, and supplier performance. The result is better visibility, faster planning decisions, reduced manual effort, and improved supply chain performance. Table of Contents Customer Spotlight The Challenge The Solution Executive Supply Chain Overview Detailed MRP Analysis MRP Trends Over Time Inventory Optimization & Supplier Performance Production Planning Insights Business Impact FAQs Conclusion Customer Spotlight A Large Manufacturing Company in North America The organization manages complex manufacturing operations involving procurement, inventory, warehousing, production planning, and supplier management. Their planning environment includes: Large volumes of customer demand Thousands of raw material items Multiple suppliers and sourcing channels Complex production schedules Inventory distributed across warehouses and plants The Challenge The challenge was not a lack of data but having too much disconnected data across multiple systems. Planning teams needed answers to questions such as: Which materials may cause production shortages? Is demand data accurate? Are materials being ordered at the correct time and quantity? Which items are overstocked or understocked? Which suppliers are causing delays? Can production begin without material shortages? Which items require urgent planner attention? The Solution The solution combines Dynamics 365 planning data with Power BI reporting capabilities. Demand from sales orders and forecasts Inventory and on-hand balances Planned purchase orders Planned production orders Planned transfer orders Purchase orders and supplier data Bills of Materials (BOM) Production routes Lead times Safety stock parameters Executive Supply Chain Overview The dashboard provides a high-level view of supply chain performance and enables filtering by Site, Warehouse, Item, Supplier, Planner, and Date. Demand Visibility Demand vs Supply Inventory Health Stock & Shortages Supplier Metrics OTIF & Delays Detailed MRP Analysis The dashboard helps planners understand why MRP generated a recommendation. Item details and inventory balances Demand and supply transactions Planned orders Net requirements Lead times Order quantities MRP exception messages MRP Trends Over Time The trend dashboard enables proactive planning by highlighting: Demand changes over time Inventory movement trends Material shortages Purchase order delays Forecast accuracy Inventory Optimization & Supplier Performance The objective is simple: Right Material, Right Place, Right Time. The dashboard identifies: Items below safety stock Excess inventory Slow-moving inventory Location-based shortages Inventory in transit Supplier performance is measured using: On-time delivery OTIF (On Time In Full) Lead-time performance Supplier delays Open purchase orders Production Planning Insights This dashboard connects production planning with material planning. Production order status Material availability Capacity constraints Work-In-Progress (WIP) Production delays Business Impact Before After Data spread across systems Centralized visibility Manual reporting Automated insights Late issue detection Early issue identification Reactive planning Proactive decision-making Disconnected processes Connected planning view Limited executive visibility Real-time dashboards FAQs 1. Does Dynamics 365 support MRP? Yes. Dynamics 365 supports Material Requirements Planning and automatically generates planned orders based on demand and supply. 2. Why use Power BI? Power BI transforms planning data into actionable dashboards and visual insights. 3. What data is typically included? Inventory, sales orders, forecasts, purchase orders, suppliers, planned orders, and production data. 4. Can legacy planning systems be integrated? Yes. External planning and demand data can be consolidated into the reporting solution. 5. Can shortages and supplier performance be tracked? Yes. Dashboards can track shortages, supplier reliability, OTIF, and delivery performance. Conclusion MRP is not simply about generating planned orders. It is about making better business decisions. When Dynamics 365 planning data is combined with Power BI analytics, organizations gain visibility into demand, inventory, procurement, supplier performance, and production readiness. Instead of asking “Why did production stop?”, organizations can focus on “What should we act on today to prevent tomorrow’s disruption?” The result is a more proactive and data-driven approach to manufacturing planning that improves service levels, reduces risk, and enhances operational performance.
Share Story :
From Quote to Signed Contract in Minutes: Automating Adobe Acrobat Sign Integration for an Australia based Linen and Garments company
Summary Automated end-to-end contract generation, digital signing, and document filing for an Australia-based commercial linen and garments company using Dynamics 365 Sales, Microsoft Power Automate, and Adobe Acrobat Sign. Eliminated manual contract preparation by generating personalized Word contracts directly from accepted Dynamics 365 Quotes using a reusable Word template. Leveraged Adobe Acrobat Sign text tags embedded within the Word template to automatically create signature, date, and fillable fields without manual field placement or custom development. Automated agreement creation, customer notifications, and real-time signing status tracking through Adobe Acrobat Sign, providing complete visibility throughout the contract lifecycle. Implemented a dedicated child Power Automate flow that automatically identified completed agreements from Adobe Sign emails and archived signed contracts into the correct SharePoint document library. Reduced contract turnaround from a manual, multi-step process to a one-click, fully automated workflow while ensuring audit-ready signed documents and eliminating manual document handling. Table of Contents Introduction Business Challenge Procedure End-to-End Flow Why This Approach Works Conclusion Introduction For any business that runs on contracts — service agreements, quotes-turned-orders, vendor sign-offs — the gap between "quote accepted" and "contract signed" is often where deals slow down. Manual document preparation, back-and-forth emails, chasing signatures, and manually filing signed copies all eat into time that should be spent serving the customer. For an Australia based Linen and Garments, a commercial textile services company, CloudFronts built an end-to-end automation that takes a sales quote all the way through to a fully signed, filed contract — with zero manual document handling in between. The solution combines a Word contract template, Microsoft Power Automate, and Adobe Acrobat Sign, orchestrated across two connected flows: a parent flow that creates and sends the contract, and a child flow that listens for the signed response and files it automatically. This post walks through how that solution works, including the one detail that makes the whole thing possible without any custom code: Adobe Sign text tags embedded directly inside the Word template. The Business Challenge Once a quote is accepted, the team needed the resulting contract to: Be generated automatically from the quote and its line items — no manual copy-pasting of customer details into a Word document. Be sent for signature immediately, with the right fields ready for the customer to fill in and sign — bank details, account information, and a signature block, all in the right place. Notify both the customer and the internal Adobe Sign account holder the moment it’s out for signing. Automatically file the final, fully signed PDF back into the correct SharePoint location tied to that quote — without anyone needing to remember to save it. Doing this by hand across multiple people and mailboxes was slow and error-prone. The goal was to make the entire journey — quote to signed, filed contract — happen in minutes, with no manual document work at any step. Procedure Step 1: Auto-Generating the Contract from the Quote The process starts with a single action: Create Contract. This triggers the parent Power Automate flow, which: Composes the Quote ID from the selected record. Retrieves the document location tied to that quote (the Word contract template). Pulls the Quote, the associated Customer, and the Contact record for the signer. Uses these to populate a Word template — the standard “Populate a Word Template” merge step — filling in customer name, contract terms, line items, and contact details automatically. This is the same idea used in most contract-automation flows: merge structured CRM/quote data into a pre-built Word template, so the resulting document is fully personalized without a single manual edit. Step 2: Making the Contract Signable — Text Tags in the Template This is the step that makes the entire signing experience work, and it's worth explaining properly, because it's easy to get wrong. A merged Word document, by itself, is just static text. For Adobe Acrobat Sign to know where a customer needs to sign, initial, or fill something in, the template needs special markers called text tags — plain text strings embedded directly into the Word template before it's ever merged. When the finished document is sent to Adobe Sign, Adobe automatically scans it, finds these tags, and converts them into live, interactive fields for the signer. For the contract, the template includes tags like: {{Customer_Sign_es_:signer1:signature}} {{Date_Of_Signature_es_:signer1:date}} {{Financial_Institution_es_:signer1}} {{BSB_Number_es_:signer1}} {{Account_Name_es_:signer1}} {{Account_Number_es_:signer1}} Each tag follows Adobe's syntax: a field name, the _es_ identifier, the signer role (signer1), and an optional field type (signature, date, or left blank for a plain fillable text box). Because these tags are just text, they can sit anywhere in the Word template exactly where the business wants the field to appear — no separate field-placement tool required. Getting this right matters more than it looks. A few lessons learned building this out: The entire tag must stay on a single line and in a common font — if it wraps across a line break during merge or PDF conversion, Adobe won’t recognize it, and the raw tag text stays visible instead of becoming a field. Field type directives are limited to what Adobe actually supports (signature, date, initials, etc.) — leaving the type off entirely creates a plain fillable text field, which is what was used for the banking detail fields here. Converting the merged Word document to PDF before sending it to Adobe Sign tends to produce more consistent tag detection than sending the raw .docx. Because the tags are static text baked into the template, no extra configuration is needed in Power Automate to "activate" detection — it happens automatically the moment the document is sent to Adobe Sign for signature. Step 3: Sending the Contract for Signature Once the Word template is fully populated, the flow hands it off to Adobe Acrobat Sign using the Create an agreement from a file content and send for signature action — passing the merged file straight through, along with the signer's name, email, and role. At this point, two things happen simultaneously: a) The customer's Contact person receives … Continue reading From Quote to Signed Contract in Minutes: Automating Adobe Acrobat Sign Integration for an Australia based Linen and Garments company
Share Story :
How a Leading North American Commercial Vehicle Manufacturer Prevented Incorrect Purchase Prices on Purchase Orders Using Dynamics 365 Finance & Operations
Summary A leading North American commercial vehicle manufacturer was experiencing incorrect purchase prices on Purchase Orders in Dynamics 365 Finance & Operations. The root cause: overlapping trade agreement records in the PriceDiscTable that were never closed when new prices were introduced. CloudFronts diagnosed the issue and implemented a single rule – close the active trade agreement record before creating a new one – enforced through automation on both inbound integrations and manual entry workflows. The result: deterministic price resolution, clean audit trails, and procurement teams that trust the system again. Table of Contents 01Summary 02Customer 03Why it matters 04Our perspective 05Price logic 06Problem 07Fix 08Example 09Automation 10Edge cases 11Conclusion About the Customer Customer Overview Our customer is one of North America’s leading manufacturers of heavy-duty commercial vehicles, operating an extensive network of manufacturing and logistics facilities. As part of its supply chain operations, the organization manages high-volume production, component manufacturing, and distribution processes that require seamless integration across enterprise systems. For growing businesses running Dynamics 365 Finance & Operations, procurement accuracy is non-negotiable. As order volumes climb and vendor pricing evolves, even a small gap in how purchase prices are managed can quietly erode margins, trigger invoice disputes, and undermine trust in the system. One of the most common and most overlooked causes of pricing errors on Purchase Orders is something surprisingly simple: outdated trade agreement records that were never closed. Have you ever updated a vendor’s price in D365 FO, only to find that Purchase Orders raised the next week still show the old price? If you’re nodding, this article is for you. Consider this: organisations that leave overlapping trade agreement records unmanaged often find hundreds, sometimes thousands, of duplicate active price records for the same Item x Vendor combination in their PriceDiscTable. Each one is a potential pricing conflict waiting to surface on a Purchase Order. The cumulative effect on procurement accuracy, AP reconciliation time, and vendor relationships is significant. By the end of this article, you will understand exactly why this happens, how D365 FO’s price engine actually resolves trade agreements, and the single rule that eliminates the problem entirely. Why This Matters Incorrect Purchase Prices Create Real Business Risk Incorrect purchase prices on POs are not just a data nuisance. They lead to overpayments that chip away at margins, invoice mismatches that clog up Accounts Payable, and worst of all, procurement teams who stop trusting the system and start overriding prices manually on every order. Once that happens, the entire value of centralized pricing governance is gone. Why We’re Writing This A Pattern We See Across D365 F&O Implementations At CloudFronts, we’ve implemented and supported Dynamics 365 F&O procurement modules across manufacturing, distribution, and services organisations. This specific issue, stale trade agreements causing wrong PO prices, has come up in nearly every engagement where vendor prices are managed through the Trade Agreement Journal. We’ve seen the pattern, diagnosed the root cause repeatedly, and built the automation to prevent it. This article distils that experience into something actionable. How D365 F&O Resolves Purchase Prices The Price Comes From Trade Agreements, Not the Item Master The price on a Purchase Order line does not come from the item master. It is resolved from a Trade Agreement, a dated record that says: “For this item, from this vendor, in this currency, starting from this date, the unit price is X.” These records are created through the Trade Agreement Journal, posted, and stored in the PriceDiscTable. When a PO line is created, the price search engine finds every posted record whose date window, from From Date to To Date, covers the PO date. It then filters by matching keys such as item, vendor, currency, site, warehouse, and quantity break, and selects the price. Critically, the system does not prefer the most recently posted record. It looks at date windows. If two records both cover today, the engine has two valid candidates. Its tie-breaking behaviour is not something you should rely on for pricing accuracy. The Problem Overlapping Records Create Pricing Conflicts Here’s how the issue plays out. A vendor price is loaded into D365 FO, either from a legacy system integration or manually by a buyer. The record is created with an open-ended To Date, the sentinel 1900-01-01 or a far-future date, meaning it never expires. Months later, a new negotiated price arrives. A fresh trade agreement line is added for the same Item x Vendor. But nobody closes the original record. Both records now have date windows that include today. The price engine finds two matches, and sometimes the older, stale price wins. Root Cause There is no closure step. Every new price is layered on top of the old one instead of replacing it in time. The Fix Close Before You Create The rule is simple: whenever a new price record is created for an Item x Vendor combination, the currently active record must have its To Date set to Today – 1. The new record’s From Date is set to Today. This produces two non-overlapping windows: old price valid up to yesterday, new price effective from today. Why Today – 1? If both dates include the same day, the engine still finds two candidates. One day’s difference makes the price resolution deterministic. Worked Example One Item, One Vendor, One Clean Price Timeline Item purchased from Vendor A, USD, quantity break of 1: Event Action From Date To Date Price 22 June – Initial load Create Record A 22 June 2026 Open-ended $7.00 24 June – New price Close Record A 22 June 2026 23 June 2026 $7.00 24 June – New price Create Record B 24 June 2026 Open-ended $6.50 After posting, any PO dated 24 June or later picks $6.50. Historical POs on or before 22 June still resolve to $7.00. Clean, unambiguous, audit safe. Where to Enforce This Rule Automation Should Handle the Closure Inbound Integration If prices flow from a legacy system via OData, build a custom API endpoint in D365 FO that … Continue reading How a Leading North American Commercial Vehicle Manufacturer Prevented Incorrect Purchase Prices on Purchase Orders Using Dynamics 365 Finance & Operations
Share Story :
No Plugin, No Flow: Auto-Propagating Legal Entity Across 18 D365 Tables Using Formula Fields
No Plugin, No Flow: Auto-Propagating Legal Entity Across 18 D365 Tables Using Formula Fields Summary As part of our internal PO (Project Operations) to F&O integration product, every transaction needs to know which legal entity it belongs to — yet no out-of-box mechanism exists to propagate this across the 18+ connected tables involved. We built a zero-code, zero-maintenance solution using Dataverse formula fields: set Legal Entity once on Account, and every related record inherits it automatically. A custom Legal Entity table maps company master records to FO DataAreaId codes, and formula fields chain the value down through the entire relationship hierarchy. Three entities with polymorphic lookups blocked formula traversal — solved with a direct lookup field auto-populated via a Business Rule, requiring no user action. Business impact: eliminated manual per-record entry, removed CRM–FO mismatch risk, and replaced plugin/flow maintenance overhead with pure declarative formula fields. Table of Contents 01 Summary 02 The Challenge 03 What We Built 04 How It Works 05 The One Technical Wall 06 The Outcome 07 The Bigger Point 08 FAQs 09 Conclusion 10 About Me The Challenge In our internal PO (Project Operations) to F&O integration product, every transaction needs to know which legal entity it belongs to — yet no out-of-box mechanism exists to auto-propagate this across the 18+ connected tables involved. The traditional approach? Manual entry, plugins, or complex flows — all high maintenance, all error-prone. What We Built A zero-code, zero-maintenance auto-propagation solution using Dataverse formula fields — no plugin, no Power Automate flow for downstream entities. The core idea: set Legal Entity once on Account. Every related record inherits it automatically. How It Works One custom table — Legal Entity — stores company master records mapped to FO DataAreaId codes (e.g. ac, USMF). One manual input — user sets Legal Entity on Account. That’s it. Everything else is automatic — formula fields chain through the relationship hierarchy. Account (set once) → Contact, Project Contract, Invoice → Contract Lines, Projects → Tasks, Time Entries, Expenses, Actuals, Team Members, Role Prices… The One Technical Wall Three entities — Contact, Salesorders, Invoices, Projects — use polymorphic lookup fields that block formula traversal. Solved by adding a clean direct lookup — cf_accountref — populated automatically via a Business Rule. No user action needed. The Outcome Before After Legal Entity entered manually per record Set once on Account — cascades to 18 tables Risk of mismatch between CRM and FO Single source of truth — always in sync Plugin or flow required for automation Pure formula fields — zero maintenance Existing records needed manual update One-time bulk flow backfilled all records The Bigger Point Data Governance Principle This isn’t just a technical pattern — it’s a data governance principle: in multi-entity implementations, master attributes should live at the top of the hierarchy and flow down automatically, not be re-entered at every level. Formula fields make this possible in Dataverse without a single line of code. Frequently Asked Questions Why not just use a plugin or Power Automate flow instead? Plugins and flows both introduce ongoing maintenance overhead — deployment, error handling, throttling limits, and monitoring. Formula fields are declarative, run natively inside Dataverse, and require no execution infrastructure or upkeep. What happens when a polymorphic lookup blocks the formula chain? Dataverse formula fields can’t traverse polymorphic (multi-target) lookups directly. The fix is a dedicated single-target lookup field, populated automatically by a Business Rule, that formula fields can then reference downstream. Does this approach scale beyond 18 tables? Yes. As long as each new table has a traceable relationship path back to Account (directly or through an intermediate entity), a formula field can be added to inherit Legal Entity without any additional plugin or flow logic. What about records that already existed before this was implemented? A one-time bulk update was run to backfill Legal Entity on existing records. Going forward, all new and related records inherit the value automatically through the formula field chain. Conclusion Legal Entity tracking is a small field with outsized consequences — get it wrong, and financial reporting, cross-entity reconciliation, and downstream automation all inherit the error. The instinct in most implementations is to reach for a plugin or a flow to keep it in sync. This solution proves that’s not always necessary. By anchoring Legal Entity at the top of the hierarchy on Account and letting Dataverse formula fields carry it down through 18 connected tables, we removed an entire category of maintenance — no custom code to patch, no flow runs to monitor, no throttling limits to worry about. The system simply stays correct by design. It’s a reminder that the most resilient integrations are often the ones that need the least ongoing attention. When a platform-native feature can solve a problem cleanly, it usually outlasts a custom-built one. About Me DC Author Deepak Chauhan Consultant and Databricks Certified Data Engineer with 4 years of experience across Dynamics 365, Data & AI, and BI. Building Something Similar? If you’re wrestling with multi-entity data consistency in Dataverse or D365, formula fields might solve more than you expect — before you reach for a plugin or a flow. Get in Touch
Share Story :
How Project-Based Profitability Reporting Turns Dynamics 365 PSA Data into Better Business Decisions
How Project-Based Profitability Reporting Turns Dynamics 365 PSA Data into Business Decisions Summary Managing multiple customer engagements means thousands of monthly records — time entries, resource allocations, invoices, and project costs — yet this data often remains fragmented across systems, making it difficult to answer one critical question: “Is this project actually profitable?” We built a comprehensive profitability reporting solution using Dynamics 365 PSA and Power BI for a Microsoft Solutions Partner headquartered in Texas, USA, delivering enterprise technology services across multiple practice areas. The solution unifies financial and operational data into two complementary dashboards: an Executive Profitability Overview for leadership and a Detailed Hours & Financial Analysis page for project managers. Key capabilities include continuous gross margin monitoring, resource utilization tracking linked directly to profitability, solution-area performance analysis, and dynamic filtering by project, manager, status, and date. Business impact: manual financial reconciliation was replaced with automated real-time dashboards — enabling earlier margin interventions, reduced revenue leakage, and faster executive decision-making. Table of Contents 01 Summary 02 About the Customer 03 The Challenge 04 The Solution 05 Executive Dashboard 06 Profitability Trends 07 Resource Utilization 08 Business Impact 09 FAQs 10 Conclusion About the Customer Customer Spotlight A Microsoft Solutions Partner — Texas, USA Our customer is a leading Microsoft solutions provider headquartered in Texas, USA, delivering enterprise solutions across cybersecurity, cloud infrastructure, systems management, mobility, and business intelligence. With numerous customer projects running simultaneously, leadership required a centralized reporting solution to monitor project financial health across the organization. The Challenge Most organizations using Dynamics 365 PSA successfully capture operational data. The problem isn’t collecting it — the problem is connecting it into meaningful business insights. Project managers frequently found themselves asking: 1Which engagements are generating healthy margins? 2Which projects are consuming more cost than expected? 3How much revenue has actually been billed? 4Are allocated resources being utilized efficiently? 5Which solution areas contribute the highest profitability? Answering these questions required manually comparing multiple reports across finance, operations, and project management. By the time profitability issues were discovered, corrective action was often too late. The Solution To eliminate fragmented reporting, we designed a centralized Engagement Profitability Report in Power BI using Dynamics 365 PSA as the primary data source. The report is divided into two complementary dashboards: Executive Profitability Overview Strategic visibility with consolidated KPIs, margin trends, and interactive portfolio filters for leadership teams. Detailed Hours & Financial Analysis Operational drill-down to engagement and resource level, enabling project managers to trace profitability directly. Dynamics 365 PSA Integration Primary data source connecting contracts, actuals, time entries, invoices, and resource allocations in one model. Power BI Analytics Layer Dynamic filtering, trend analysis, treemap solution-area breakdowns, and real-time gross margin monitoring. Executive Profitability Dashboard The executive dashboard provides leadership with an instant view of project performance. It consolidates key KPIs into one interactive page: Total Contract Value Original Contract Amount Change Orders & Value Total Cost Incurred Gross Margin Amount Gross Margin % Billable Hours Non-Billable Hours Invoice Amount The dashboard also includes interactive filters for Project Status, Project, Project Manager, and Date Range — enabling instant analysis across any project portfolio without rebuilding reports. Profitability Trends Over Time One of the most valuable capabilities is tracking profitability throughout the project lifecycle rather than waiting until project closure. Management can continuously monitor: Monthly cost incurred vs. monthly billable revenue Invoice trends and billing progress Gross margin performance over time These trend analyses quickly surface rising project costs, revenue slowdowns, billing delays, and margin deterioration — transforming profitability reporting from a historical exercise into an operational management tool. “A project may have a high contract value but low billable utilization, delayed invoicing, and increasing delivery costs — the report surfaces this gap immediately.” Resource Utilization Insights People are the largest investment in professional services organizations. The report compares Allocated Hours, Billable Hours, and Non-Billable Hours at both project and individual resource levels, helping managers identify: Under-utilized consultants Excessive non-billable work patterns Resource allocation imbalances across engagements Delivery efficiency trends by team member Instead of tracking utilization in isolation, the report links it directly to project profitability through resource-level cost breakdowns showing Role, Allocated Hours, Billable Revenue, and Delivery Cost per person. Solution Area Performance Using Power BI treemap visualizations, the report analyzes profitability across Solution Areas, Solution Plays, and Business Units — enabling strategic questions such as: Which service offerings generate the highest margins? Which solution areas consume the highest delivery cost? Where should future investment be focused? Business Impact Before After Multiple disconnected operational reports Unified profitability dashboard Manual financial reconciliation Automated real-time reporting Limited visibility into project margins Continuous gross margin monitoring Separate operational and financial analysis Single integrated business view Difficult executive reporting Interactive executive dashboards Resource utilization tracked independently Utilization linked directly to profitability Frequently Asked Questions Does Dynamics 365 PSA provide profitability reporting out of the box? Dynamics 365 PSA captures the underlying operational data, but organizations typically require customized Power BI reports to combine contracts, costs, invoices, resources, and profitability metrics into meaningful business insights. Why combine operational and financial data in one report? Project profitability depends on multiple factors including hours worked, delivery cost, billing progress, and contract value. Bringing these together provides a complete view of project health and supports faster, more informed decisions. Who benefits most from this type of report? Executive leadership, project managers, finance teams, PMOs, and delivery managers all benefit. Executives gain portfolio-level visibility, while project managers can investigate profitability at the engagement and resource levels. Can this be extended to other Dynamics 365 modules? Yes. The same Power BI model can be extended to incorporate data from Dynamics 365 Finance & Operations, including actuals from Project Accounting, enabling even deeper financial reconciliation across modules. Conclusion Project success is measured by more than completed tasks or delivered hours — it is ultimately defined by profitability. By bringing together Dynamics 365 PSA operational data and Power BI analytics, organizations gain a real-time view of project financial performance. Instead of asking “Was the project … Continue reading How Project-Based Profitability Reporting Turns Dynamics 365 PSA Data into Better Business Decisions
Share Story :
How a Netherlands-Based Nonprofit Achieved Global Scalability with Microsoft Dynamics 365 CRM and Power Platform
Summary A Netherlands-based non-profit sustainability certification organisation reduced manual certification configuration time from hours to mere seconds using Microsoft Power Apps, implemented by CloudFronts. CloudFronts configured a multi-level assessment framework — Scope, Category, Requirement, Criteria — to automate 100% of assessment generation based on user-selected certification types and versions. The solution integrated Microsoft Power Apps with Azure Blob Storage to provide a secure, centralised repository for thousands of pieces of certification evidence, linked directly to each requirement record. Microsoft Dynamics 365 Customer Service was configured to streamline global applicant inquiries with automated case routing across Marketing, Finance, and Info queues. Business impact: eliminated manual configuration errors, provided real-time progress visibility for global applicants, and established a scalable digital foundation for global circular economy standards. Table of Contents 01 Summary 02 Introduction 03 The Business Problem 04 The Solution 05 Implementation 06 Business Impact 07 FAQs 08 Conclusion Introduction In a world where manufacturers and brands are under increasing pressure to prove the sustainability credentials of their products, the rigour and speed of certification processes can directly determine an organisation’s ability to scale its global mission. For certification bodies operating across multiple geographies, managing assessments, evidence, and applicant communication through fragmented manual processes is a bottleneck that no amount of headcount can solve. For one Netherlands-based non-profit at the forefront of the global circular economy movement, this bottleneck was real and growing. Their certification programme, built on a rigorous multi-level standard covering material safety, circularity, and responsible production, was being administered through massive Excel files, disconnected email threads, and manual document searches. This blog documents how CloudFronts partnered with this organisation to replace those fragmented processes with a unified, automated certification platform built on Microsoft Power Apps, Azure Blob Storage, Dynamics 365 Customer Service, and Power Automate, reducing certification setup time from hours to under thirty seconds. The Business Problem The organisation operates as the leading global authority on circular economy certification, serving manufacturers and brands worldwide. Their certification programme evaluates products across categories like Material Health and Circularity, across multiple standard versions — v3.1 and v4.1 — each with its own hierarchy of scopes, categories, requirements, and criteria. Before partnering with CloudFronts, this complexity was managed almost entirely by hand: Each new certification application required assessors to manually configure assessment structures from sprawling Excel files with hundreds of rows, a process that took two to four hours per applicant. Supporting evidence such as product test reports, material declarations, and third-party certificates was stored without a structured system, making retrieval slow and validation unreliable. Neither applicants nor internal assessors had real-time visibility into application status or outstanding requirements, creating persistent communication delays. Managing different certification versions across different scopes manually made scaling the programme globally nearly impossible without proportionally growing the team. The organisation needed a platform that could encode their complex certification logic, automate the heavy lifting of assessment generation, and give every stakeholder a single, reliable view of the certification pipeline. The Solution CloudFronts implemented a comprehensive digital certification ecosystem anchored by a custom Microsoft Power Apps application — the Certification Manager. The platform automates the core logic of the certification standard end-to-end, from application intake through assessment generation, evidence management, and case resolution. Key Components Microsoft Power Apps Core Certification Manager application handling applications, multi-level assessments, and the applicant-facing UI. Azure Blob Storage Secure, centralised repository for all certification evidence, linked directly to individual requirement records. Dynamics 365 Customer Service Configured to streamline global applicant inquiries with automated case routing across Marketing, Finance, and Info queues. Microsoft Power Automate Automation layer handling document upload workflows and notification triggers throughout the certification lifecycle. How It Works, At a Glance The centrepiece of the solution is a version-driven automation engine. When an assessor creates a new certification application and selects the standard version and scope, the backend logic automatically generates the complete assessment structure — all categories, requirements, and criteria — without any manual configuration. What previously took hours now takes under thirty seconds. A custom HTML-based interface within Power Apps provides visual progress indicators, allowing assessors to track completion rates across requirements at a glance. All supporting evidence is stored in Azure Blob Storage and linked directly to the specific requirement record it supports, creating a fully auditable, ISO 17065-compliant evidence trail. Implementation 1 Step 1 Certification Scheme Definition and Version Logic The foundation of the platform is the Certification Scheme Definition module. CloudFronts built a backend logic engine that stores the full structure of each certification version including all scopes, categories, requirements, and criteria as configuration data rather than hardcoded templates. When a user selects a version and scope combination, this engine automatically pulls the correct downstream structure and generates it on the application record. Updates to global standards can be deployed instantly by updating the configuration, with no changes to the application logic required. The four-level assessment hierarchy: Scope, Category, Requirement, Criteria is the structural backbone of the entire certification standard, now encoded directly into the platform. 2 Step 2 Automated Assessment Generation Once the version and scope are selected on a new application, the platform’s automation engine generates the full assessment structure in under thirty seconds, replacing a manual Excel-driven process that previously took two to four hours per applicant. The generated assessment is displayed through a custom HTML interface inside Power Apps, with visual progress indicators showing completion rates at the category and requirement level. Assessors can immediately see which requirements are outstanding, which have linked evidence, and which are ready for review. 3 Step 3 Evidence Management via Azure Blob Storage A core architectural decision was to decouple evidence storage from the Power Platform’s native Dataverse storage. CloudFronts integrated Azure Blob Storage as the document repository, with each uploaded file linked directly to the specific requirement record it supports within Power Apps. This approach delivers high-performance scalability for large evidence files while significantly reducing long-term storage costs compared to storing files natively in Dataverse. Power Automate flows handle upload automation and trigger notifications … Continue reading How a Netherlands-Based Nonprofit Achieved Global Scalability with Microsoft Dynamics 365 CRM and Power Platform
