Category Archives: PowerApps
From Quote to Signed Contract in Minutes: Automating DocuSign Integration for an Australia-Based Commercial Laundry Services Company
From Quote to Signed Contract in Minutes | Cloudfronts DocuSign Blog Summary Automated end-to-end contract generation and digital signing for an Australia-based commercial linen and garment services company using Dynamics 365 Sales, Power Automate, and DocuSign. Eliminated manual contract preparation and PDF email workflows, replacing them with a one-click process triggered directly from the Dynamics 365 Quote record. Integrated DocuSign envelope creation, recipient assignment, and signature tab placement ā all orchestrated through Power Automate cloud flows. Enabled real-time contract status tracking and automatic archival of signed PDF contracts back into SharePoint, linked directly to the originating Quote. Reduced contract turnaround time from days to hours, allowing the sales team to focus on customer relationships rather than administrative paperwork. Delivered a seamless customer experience ā recipients receive a professionally formatted DocuSign email and can sign digitally from any device. 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 industries where service agreements govern weekly delivery schedules, pricing structures, and compliance obligations, the speed and accuracy of contract execution can directly impact revenue and customer satisfaction. For commercial textile and linen services businesses in Australia, every signed contract represents a new route, a new customer, and a new revenue stream. Yet for many organisations, the final leg of the sales journey ā converting an approved quote into a signed, legally binding contract ā remains a surprisingly manual, error-prone process: exporting Word documents, emailing PDFs, chasing signatures, and manually filing returned documents. This blog documents how we at Cloudfronts transformed that process for a leading Australian commercial linen and garment services provider ā deploying a fully automated DocuSign integration within Microsoft Dynamics 365 and Power Automate to take contracts from generation to signature without any manual intervention. The Business Problem Our client operates across multiple depots in Australia, servicing hotels, aged care facilities, hospitality venues, and healthcare providers with regular linen and garment delivery contracts. Their sales team works within Dynamics 365 Sales Hub, managing quotes that detail complex pricing, delivery schedules, weight-based charges, and product schedules. Before the integration, the contract signing process looked like this: A sales representative would generate a contract Word document from a template. The document was manually reviewed and converted to PDF. The PDF was emailed to the customer’s contact for signature. The customer would print, sign, scan, and return the document. The signed document would be manually uploaded to SharePoint and linked to the quote. This process introduced several critical pain points: Delays of 3ā7 business days waiting for customer signatures. Inconsistent document versions being sent to customers. No visibility into whether a contract had been opened, reviewed, or signed. Risk of lost or misplaced signed documents. Significant administrative burden on the sales team. The business needed a solution that was seamless for both their internal team and their customers ā something that could be triggered with a single action and would handle everything from document preparation to legally valid digital signature collection and storage. The Solution We designed and implemented a fully automated contract signing workflow that integrates Dynamics 365 Sales, Microsoft Power Automate, SharePoint, and DocuSign. The solution covers the entire lifecycle of a contract ā from generation to signing to archival. Key Components Dynamics 365 Sales HubCentral system for quote and customer management. Power AutomateOrchestration layer connecting Dynamics 365, SharePoint, and DocuSign. SharePointDocument storage for generated and signed contracts. DocuSignDigital signature platform for legally binding contract execution. How It Works ā At a Glance The solution is driven by two connected Power Automate flows: Send Contract Flow ā Triggered manually from the Dynamics 365 Quote record. Retrieves the contract document from SharePoint, creates a DocuSign envelope, adds the contract document and recipient, places signature/name/date tabs, and sends the envelope. Receive Signed Contract Flow ā Triggered automatically when the DocuSign envelope is completed. Retrieves the signed PDF from DocuSign and saves it to the same SharePoint folder, linking it back to the quote for a complete audit trail. Implementation 1 Step 1 Generate the Contract from Dynamics 365 The process begins in the Dynamics 365 Sales Hub on an approved Quote record. The sales representative clicks the Create Contract button in the command bar. This action triggers a workflow that generates a Service Contract Word document using the quote data and saves it to a dedicated Contracts folder in SharePoint, organised under the Quote number. Once generated, a confirmation dialog appears prompting the user to Open Contract for review before sending. The contract document is auto-named with the Quote ID and a timestamp, ensuring version control and traceability. 2 Step 2 Send the Contract for Signing After reviewing the document, the representative clicks Send Contract from the same Quote record. This triggers the main Power Automate flow ā To send Contract Document to Customer for DocuSign. The flow executes the following steps: Compose Quote ID ā Extracts and formats the Quote identifier. Get document location related to quote ā Uses a FetchXML query against the SharePoint Document Location entity in Dataverse to locate the correct SharePoint folder linked to the Quote. Get Quote, Get Customer, Get Contact ā Retrieves the customer’s full name and email address from Dynamics 365 for use as the DocuSign recipient. Initialise variables ā Sets up Envelope ID, Recipient ID, and Parent Site location for downstream use. Iterate and locate the contract file ā Loops through the SharePoint document library, resolves parent locations, retrieves file content, properties, and metadata. Create DocuSign Envelope ā Creates an envelope with the subject line ‘DocuSign: Review & Sign the Contract Document’ and a personalised email body addressed to the customer contact. Add Document to Envelope ā Attaches the contract Word document (encoded as Base64) to the envelope as a DOCX file. Add Recipient ā Adds the customer contact as a signer with their full name and email from Dynamics 365. Add Signature Tabs ā Places signature & other fields expaected to be filled by the recipient on … Continue reading From Quote to Signed Contract in Minutes: Automating DocuSign Integration for an Australia-Based Commercial Laundry Services Company
Share Story :
From Unstructured Project Data to Executive-Ready Reporting: Transforming Project Reviews with Power BI Matrix Visuals for a Houston-Based Industrial Cybersecurity Provider.
Summary A Computer Security Service provider based in Houston, Texas needed a better way to review large-scale project reports where financial, billing, delivery, and schedule metrics were difficult to analyze in a flat table structure. This blog explains how a Power BI Matrix visual was used to create grouped business headers such as: Contract & Billing Status Schedule Status Budget & Hours Cost Performance & Forecast The solution uses: Custom DAX mapping tables Dynamic SWITCH measures Matrix column hierarchies Custom sorting logic The final report improved readability and made project reviews easier by grouping related KPIs into meaningful business sections for leadership and delivery teams. Power BI Matrix visual with grouped business headers Table of Contents 1. The Reporting Problem 2. Why Matrix Visual Was Used 3. Create a Header Mapping Table 4. Create the Dynamic Measure 5. Configure the Matrix Visual 6. Important Limitations and Learnings 7. Frequently Asked Questions 8. Conclusion The Reporting Problem A company working in industrial infrastructure and operational technology services needed a better way to review project financial and delivery data inside Power BI. The existing report already contained all required metrics, including: Contract value Budget usage Project schedule Billing status Margin calculations Cost forecasts Although all required information existed in the report, the layout was difficult to review because every column appeared as a flat list. During project review meetings, users had to manually scan unrelated columns to understand project health. The business requested: Grouped business sections Better column organization Formula explanations for KPIs Easier financial review Structured project reporting The goal was to organize the report in the same way projects are discussed during operational reviews. Why Matrix Visual Was Used Power BI table visuals do not support grouped or merged headers. To create multi-level business headers, the report had to use a Matrix visual. This allowed related columns to appear under parent business sections such as: Contract & Billing Status Schedule Status Budget & Hours Cost Performance & Forecast This structure made the report easier to scan during financial and project discussions. Create a Header Mapping Table The first step was creating a metadata table that controls: Group names Column names Column order Section order This table drives the Matrix visual structure dynamically. DAX Table Project Matrix Headers = DATATABLE( “Group Name ā”ļø”, STRING, “Column Header”, STRING, “Sort”, INTEGER, “Master_Sort”, INTEGER, { {“Project Identification”, “Billing Method”, 1, 1}, {“Overall Project Status”, “Overall Project Status”, 5, 2}, {“Contract & Billing Status”, “Contract Total (FF)”, 6, 3}, {“Contract & Billing Status”, “Contract Not-to-Exceed (T&M)”, 7, 3}, {“Contract & Billing Status”, “Payment Terms”, 8, 3}, {“Contract & Billing Status”, “YTD Invoiced Amount”, 9, 3}, {“Contract & Billing Status”, “% Invoiced”, 10, 3} } ) After creating the table: Column Header was sorted by Sort Group Name ā”ļø was sorted by Master_Sort Without this step, Power BI sorts headers alphabetically, which breaks the business layout. Create the Dynamic Measure The Matrix visual uses one dynamic measure that returns values based on the selected column header. This was implemented using SWITCH(). Dynamic Measure Project Matrix Values = SWITCH( SELECTEDVALUE(‘Project Matrix Headers'[Column Header]), “Billing Method”, MAX(salesorder[Billing Method]), “Overall Project Status”, MAX(msdyn_projects[Overall Project Status]), “Contract Total (FF)”, SUM(salesorder[Total Amount]), “Contract Not-to-Exceed (T&M)”, SUM(salesorder[Not-to-exceed Limit]), “Payment Terms”, MAX(salesorder[Payment Terms]), “YTD Invoiced Amount”, SUM(invoice[Total Amount]), “% Invoiced”, invoice[% Invoiced] * 100 ) Aggregation handling became very important during implementation. Metric Type Correct Aggregation Amounts SUM Status MAX Dates MAX or MIN Percentages AVERAGE or calculated measure Using incorrect aggregation inside the SWITCH measure can produce duplicate totals, incorrect percentages, or unexpected values. Configure the Matrix Visual The Matrix visual was configured using: Matrix Area Field Rows Business Unit ā Client ā Project Name Columns Group Name ā”ļø ā Column Header Values Project Matrix Values This automatically created grouped business headers. Power BI Matrix visual configured with grouped business headers Important Limitations and Learnings Grouped Headers Only Work Properly for Columns Power BI supports grouped headers only through the Columns section of the Matrix visual. Dynamic grouping for Matrix row headers is limited. For example: Business Unit Client Project Name cannot be dynamically grouped the same way as column headers. Since these row sections were static, text boxes and manual formatting were used to simulate grouped row labels. Aggregation Logic Must Be Handled Carefully The dynamic measure requires every metric to be properly summarized and mapped. Incorrect aggregation logic can produce: Incorrect totals Duplicate values Wrong percentages Blank results This becomes especially important in financial and project reporting where different KPIs require different summarization methods. Matrix Visual Performance Large Matrix visuals with many dynamic measures can become slow. Performance was improved by: Reducing unnecessary measures Avoiding repeated calculations Using summarized tables Keeping hierarchies simple Frequently Asked Questions Can Power BI tables create grouped headers? No. Standard table visuals do not support grouped or merged headers. The Matrix visual is required for this approach. Why use a Matrix visual instead of a Table visual? Matrix visuals support hierarchical columns, allowing related KPIs to appear under common business headers. Does Power BI support dynamic row grouping? No. Dynamic grouping for row headers is limited. Static row sections usually require text boxes and manual formatting. Why do Matrix values sometimes show incorrect totals? This usually happens because aggregation logic inside the SWITCH measure is incorrect. Each KPI must use the proper summarization method such as: SUM MAX MIN AVERAGE Dedicated calculated measures Conclusion Power BI Matrix visuals can be used to create structured multi-level business headers for large operational reports. By combining: Matrix hierarchies DAX metadata tables Dynamic SWITCH measures Custom sorting logic large reports can be organized into meaningful business sections that are easier to review and maintain. The most important learning from this implementation was understanding the limitations of Matrix visuals and handling aggregation logic carefully. When implemented correctly, this approach makes project and financial reporting significantly easier for leadership teams to use. We hope you found this blog useful. If you would like to discuss similar Power BI visualization solutions, … Continue reading From Unstructured Project Data to Executive-Ready Reporting: Transforming Project Reviews with Power BI Matrix Visuals for a Houston-Based Industrial Cybersecurity Provider.
Share Story :
How We Built a Real-Time Lightweight Financial Statement Reporting Experience Directly Inside D365 PO for a Texas-Based Cybersecurity Firm
How We Built a Real-Time Lightweight Financial Statement Reporting Experience Directly Inside Microsoft Dynamics 365 Project Operations Summary Designed and deployed a lightweight, real-time financial statement reporting solution directly inside Microsoft Dynamics 365 Project Operations for a Texas-based Cybersecurity & AI Business Solutions firm. Eliminated dependency on heavy paginated reporting and large-scale Power BI datasets for operational financial visibility. Built an interactive HTML + JavaScript reporting framework embedded natively within Dynamics 365 CRM. Enabled dynamic filtering, instant report rendering, and printable customer-ready statements directly from the CRM interface. Introduced popup-based full-screen report rendering for detailed review and print-ready output without leaving Dynamics 365. Integrated funding balances, allocations, transactions, installment schedules, and financial snapshots into a single operational reporting experience. Reduced reporting development complexity, minimized data transformation overhead, and improved scalability compared to traditional BI-heavy architectures. Created a highly maintainable reporting model that scales efficiently as operational datasets grow without introducing significant Power BI licensing or performance constraints. Table of Contents Introduction The Business Problem The Solution Architecture Real-Time CRM-Native Reporting Lightweight Front-End Reporting Framework Popup-Based Printable Report Experience Data Model and Reporting Components Design Principles Business Impact Why This Approach Worked FAQs Conclusion 1. Introduction As organizations scale, operational reporting often becomes increasingly difficult to maintain. For a Texas-based Cybersecurity & AI Business Solutions firm operating on Microsoft Dynamics 365 Project Operations, this challenge became especially visible in financial agreement tracking and customer funding visibility. The business already had access to reporting platforms such as Power BI and paginated reports. However, these approaches introduced several operational problems: Long development cycles Heavy data-cleaning requirements Complex transformation pipelines Delayed visibility into operational data Increasing licensing costs as datasets expanded Slow report rendering for operational users Dependency on external reporting infrastructure Instead of another external BI layer, the organization wanted a lightweight operational reporting experience directly inside Dynamics 365 CRM itself. The Goal: Build a real-time, CRM-native financial reporting experience that renders instantly, supports dynamic filtering, enables printing, and scales without heavy BI infrastructure. 2. The Business Problem The organization manages multiple long-running service agreements, funding allocations, installment schedules, and customer financial balances across cybersecurity services, managed services, and AI solution engagements. Operational users needed a consolidated statement experience that could answer questions such as: What is the customerās current available balance? Which transactions impacted the balance during a selected period? Which allocations are currently active? How much funding has been consumed vs allocated? Which installments are pending, paid, or overdue? What does the latest funding snapshot look like? Can the report be reviewed and printed directly from CRM? Paginated Reporting Limitations Increasing query complexity Performance degradation with larger datasets Heavy formatting maintenance Limited interactivity Rigid deployment cycles Power BI Challenges Significant Power Query transformations Data-cleaning pipelines Incremental refresh considerations Dataset refresh latency Licensing growth with scale Overengineering for transactional operational reporting 3. The Solution Architecture The reporting framework was designed as a native Dynamics 365 embedded reporting experience using: HTML Web Resources JavaScript Dynamics 365 Web API Native CRM navigation APIs Real-time entity retrieval Popup-based print rendering Embedded Operational Report Apply filters Select funding records Choose reporting periods Generate statements instantly Navigate operational financial data Popup Print Report Detailed review Executive presentation Customer-facing statements Printing and PDF generation 4. Real-Time CRM-Native Reporting One of the most important architectural decisions was avoiding external data replication entirely. Instead of pushing transactional data into a separate reporting warehouse, the report retrieved data directly from Dynamics 365 using the native Web API. Real-time visibility Zero synchronization lag Reduced infrastructure complexity Lower maintenance overhead Faster deployment cycles Everything rendered on demand inside the CRM session itself. 5. Lightweight Front-End Reporting Framework The reporting experience was intentionally designed to behave more like a modern application than a traditional report. Dynamic Filter Bar Users could dynamically filter reports using: This Month Last Month This Quarter Current Year Custom Date Ranges Funding Status Funding Selection The report regenerated instantly without page reloads. Responsive Report Rendering The reporting layout dynamically populated: Account Summary Transaction Details Allocation Summary Installment Details Detailed Account Summary Each section rendered independently based on live API responses. Intelligent Empty-State Handling Instead of showing blank tables or errors, the framework displayed contextual empty-state messaging such as: āNo transactions during this statement periodā āNo active allocationsā āNo installment details availableā This significantly improved usability for operational teams. 6. Popup-Based Printable Report Experience A major requirement was enabling users to thoroughly review and print reports directly from CRM. To solve this, the solution introduced a dedicated popup rendering architecture. Users could click: āExpand Reportā This launched a fullscreen popup using Dynamics 365 navigation APIs with: Large-format rendering Print-optimized layout Full customer statement formatting Multi-page support Consistent branding Printable tables Customer reference guides The popup approach delivered several advantages: Better readability Cleaner print formatting Improved executive review experience Isolation from CRM form clutter Easier PDF generation Most importantly, the popup still worked entirely against live CRM data. 7. Data Model and Reporting Components The report consolidated multiple operational areas into a single experience. Account Summary Provided a high-level balance overview including: Balance Forward Total Credits Total Debits Closing Balance This gave immediate visibility into customer financial standing. Transaction Details Displayed detailed running balance activity including: Document date Transaction description Service type Credits Debits Running balance Transactions dynamically recalculated balances during rendering. Allocation Summary Tracked funding allocation activity including: Allocated funds Consumed funds Remaining balance Allocation status Returned allocations were handled separately with custom date logic. Installment Tracking Displayed installment lifecycle visibility including: Invoice dates Due dates Payment dates Payment terms Installment status The report intelligently handled future-dated payments and pending statuses. Detailed Funding Snapshot Displayed operational funding metrics including: Starting Balance Contracted Funds Total Budgeted Funds Collected Funds Used Funding Available Funds Allocated Funds Unallocated Funds This created a complete operational funding overview within a single screen. 8. Design Principles Several architectural principles guided the solution. Real-Time Over Batch Processing Operational reporting should reflect current business activity immediately. The solution avoided overnight refresh cycles entirely. Lightweight Over Heavy BI Not … Continue reading How We Built a Real-Time Lightweight Financial Statement Reporting Experience Directly Inside D365 PO for a Texas-Based Cybersecurity Firm
Share Story :
Building a Controlled Booking-to-Time Entry Import Framework Inside Dynamics 365 Project Operations for Texas-Based Operational Security & Cybersecurity Firms
Building a Controlled Booking-to-Time Entry Import Framework Inside Dynamics 365 Project Operations Summary Two Texas-based firms ā one in Cybersecurity, another in Operational Security ā required a streamlined and controlled Time Entry (TE) creation process inside Dynamics 365 Project Operations. Native D365 Project Operations limitations around Project Task visibility, booking-driven TE creation, and inconsistent resource submissions created operational inefficiencies. A fully customized solution was implemented directly inside Dynamics 365 CRM using HTML Web Resources, JavaScript, Dataverse Web API, Ribbon Enable Rules, and custom plugins. The solution centralized TE creation under Project Managers and Project Approvers, enabling controlled and secure booking-based TE management. A custom booking import framework dynamically surfaced only authorized projects and resources based on Project Approver relationships. Custom plugin logic and Resource Assignmentābased task resolution automated Project Task mapping for accurate Time Entry creation. Key capabilities delivered included controlled booking imports, role-based visibility, automated task association, external comments support, and bulk TE creation. Dynamic filtering ensured Project Managers could only access resources and bookings associated with projects they were authorized to manage. The entire experience operated natively inside Dynamics 365 Project Operations without external portals, Power Apps screens, or third-party applications. The implementation reduced manual effort, improved TE submission reliability, increased operational flexibility, and enabled more accurate tracking of actual project work. Table of Contents Introduction The Business Problem & Pain Points The Solution Architecture Implementation Design Principles Business Impact Why This Approach Worked FAQs Conclusion 1 Introduction Two Texas-based firms operating in the Cybersecurity and Operational Security space relied heavily on Dynamics 365 Project Operations for project delivery tracking, resource management, and operational execution. As project operations scaled, Project Managers and Project Approvers required a faster and more controlled mechanism for creating Time Entries (TEs) directly from resource bookings. The organizations needed a solution that could simplify booking imports, improve Project Task mapping, enforce role-based visibility, and reduce the dependency on individual resources for manual TE submissions. Operationally, Project Managers were often responsible for validating and entering actual work performed, making the standard TE process inefficient and time-consuming. Key Challenges Standard Dynamics 365 Project Operations behavior did not fully support project-task-aware Time Entry creation from bookings. Project Task values were not consistently available across Resource Requirements and bookings in several PO environments. Resource-driven TE submission resulted in inconsistent and delayed operational reporting. Project Managers lacked centralized visibility and controlled access to resource bookings across approved projects. Native booking import and TE creation workflows lacked flexibility for operational governance and scalability. Goals of the Solution Centralize Time Entry creation under Project Managers and Project Approvers. Enable controlled booking imports with role-based project visibility. Automate Project Task association during TE creation. Allow bulk creation of booking-driven Time Entries directly inside CRM. Improve operational accuracy, flexibility, and governance without relying on external applications or custom portals. 2 The Business Problem & Pain Points 1. Native Booking-to-Time Entry Limitations Standard Dynamics 365 Project Operations behavior did not consistently expose Project Task information through Resource Requirements and Bookings. This created gaps in task-aware Time Entry creation and forced users to manually reconstruct operational context during the TE process. 2. Lack of Controlled Booking Visibility Default system behavior provided broader booking visibility than operationally required. The organizations needed a controlled access model where only designated Project Managers and Project Approvers could view and manage booking imports for authorized projects. 3. High Manual Effort in Time Entry Creation Project Managers and operational teams spent significant time manually entering project references, tasks, durations, and external comments for each Time Entry. This increased administrative overhead and reduced operational efficiency. 4. Inconsistent Resource-Driven Submission Process The organizations faced reliability challenges with resource-submitted Time Entries, leading to delays, missing entries, and inconsistencies in operational reporting. Project Managers required centralized ownership over TE creation to ensure accurate work tracking. 5. Fragmented User Experience Users were required to navigate across multiple Dynamics 365 screens and entities to complete routine booking import and Time Entry operations, making the process cumbersome and inefficient for daily operational usage. 6. Scalability and Maintainability Concerns The firms required a lightweight and scalable solution that could operate natively within Dynamics 365 Project Operations without introducing unnecessary Power Apps layers, external portals, or high-maintenance custom applications. 3 The Solution Architecture Architecture Diagram and Flow Figure: Complete Frontend – Backend behaviour of the TE Automation Module. Dynamics 365 Ribbon Workbench A custom “Import Resource Bookings” ribbon action was introduced to provide controlled access to the booking import process only for authorized Project Managers and Project Approvers. JavaScript + Dataverse Web API JavaScript and Dataverse Web API were used to handle dynamic project filtering, approver validation, booking retrieval, task mapping, and automated Time Entry creation directly inside CRM. HTML Web Resources Two custom HTML-based interfaces were developed: Resource Selection Interface ā controlled resource visibility and selection Booking Import & TE Creation Interface ā booking imports, task selection, external comments, and bulk Time Entry creation Dataverse Plugin Layer A lightweight custom C# plugin was implemented to support Project Task resolution, task validation, and booking-to-Time Entry automation scenarios not fully supported natively in Dynamics 365 Project Operations. Dataverse Entities Involved The solution leveraged multiple Project Operations entities: msdyn_project msdyn_projectteam msdyn_resourceassignment msdyn_projecttask bookableresource msdyn_resourcerequirement bookableresourcebooking msdyn_timeentry Together, these entities enabled secure, project-aware, and task-aware operational workflows directly inside Dynamics 365 CRM. Entity Relationships Figure: Relationships and associations of the involved entities. 4 Implementation 1. Role-Controlled Ribbon Visibility A custom ribbon action was implemented to ensure only authorized Project Managers and Project Approvers could access the booking import functionality. Visibility was dynamically controlled based on project approval relationships inside Dynamics 365. Figure: Case 1: When Logged in as a Project Approver/Manager. Figure: Case 2: When NOT Logged in as a Project Approver/Manager. 2. Resource Selection Experience A custom resource selection interface was developed to display only eligible resources associated with projects managed by the logged-in approver. This provided secure and simplified operational visibility. Figure: Bookable Resource Selection from a list of Active Bookable Resources, which are under any Project, where the current … Continue reading Building a Controlled Booking-to-Time Entry Import Framework Inside Dynamics 365 Project Operations for Texas-Based Operational Security & Cybersecurity Firms
Share Story :
From Manual Emails to Power Automate Cloud flows: Connecting Dynamics 365 Sales to the Shop Floor
Summary A custom steel windows and doors manufacturer had complex shop floor stages tracked entirely by hand, with no system connecting the sales office to production. CloudFronts developed a custom Order Fulfillment module within Dynamics 365 Sales and implemented trigger-based Power Automate flows to automate over 60 internal and external email communications across every stage of production. Microsoft recommends Power Automate cloud flows as the modern path forward over classic workflows, which receive limited ongoing investment. These were fully migrated, restoring consistent and professional client communication. The sales commitment now automatically extends into every production stage ā from Preprocessing Order through Engineering & Calculations all the way to Scheduling Arrangements ā without any manual follow-up from staff. Table of Contents 1. Customer Scenario 2. The Real Problem 3. Solution Overview 4. Key Components of the Solution 5. How It Works: Technical Implementation 6. End-to-End Walkthrough 7. Architecture and Design Decisions 8. Business Impact 9. FAQs 10. Conclusion Customer Scenario A manufacturer of custom steel windows and doors uses Dynamics 365 Sales to manage its customer relationships and order pipeline. The business builds bespoke, high-specification products where every order is unique, every unit requires individual engineering, and every delivery carries a direct reputational commitment to the client. The production journey for each order moves through a structured Business Process Flow (BPF) with the following discrete stages: Preprocessing Order: Initial order intake, validation, and readiness checks before the order enters the formal workflow Order Details: Full capture of specifications, dimensions, materials, and client requirements against the order record Assign Project Manager: A project manager is designated and formally takes ownership of the order in Dynamics 365 Project Manager: The assigned PM reviews the order, aligns with the client if required, and confirms the production brief Engineering & Calculations: Structural and thermal specifications are drawn up; shop drawings are prepared and sent for customer approval Production Review: Internal sign-off before the order enters active fabrication In Production: Active manufacturing ā covering CNC machining, welding, painting, finishing, and quality control as sub-activities within this stage Quality Control: Final inspection against specification before dispatch clearance is issued Scheduling Arrangements: Protective packaging, carrier coordination, dispatch scheduling, and delivery confirmation Each stage involves different teams, different external parties, and different communication requirements. All of this was being managed entirely by hand. The Real Problem The organisation’s CRM and manufacturing operations existed in two separate worlds. A deal won in the sales office would trigger a handoff to the shop floor, but from that point the CRM had no visibility into what happened next. Production moved forward, but the system of record did not. This disconnect created three compounding problems: 1. Manual Tracking Across Nine BPF Stages With nine distinct BPF stages per order ā from Preprocessing Order through to Scheduling Arrangements ā and dozens of active orders at any given time, tracking which orders were where and who needed to be notified was a full-time administrative burden. Teams relied on printouts, spreadsheets, and internal messaging. The risk of an order falling through the cracks was constant. 2. Over 60 Email Templates Managed by Hand Customer-facing and internal communications spanned more than 60 distinct email templates covering stage transition notifications, drawing approvals, production confirmations, and dispatch alerts. Each one required a staff member to remember when to send it, select the right template, fill in the correct order details, and copy the right recipients. A missed email left a customer without an update. A wrong email required a correction and an apology. 3. Legacy Classic Workflows Limiting Reliability Some automation had been attempted through Dynamics 365’s classic workflow engine. Microsoft has been steering organisations toward Power Automate cloud flows as their modern, actively invested automation platform ā classic workflows have not kept pace in terms of investment or feature development. Beyond this strategic direction, the existing classic workflows had become fragile over time: triggering at the wrong time, failing silently, or firing duplicate emails when conditions were partially met. The team had lost confidence in the automation and was increasingly bypassing it, falling back to manual processes. The system was not broken in any single dramatic way. It was failing in dozens of small ways, every day, and the cumulative cost showed up in staff time, customer experience, and operational risk. ⚠ Manual Tracking 9 BPF stages per order Dozens of active orders Printouts and spreadsheets No real-time visibility Orders falling through gaps ⚠ 60+ Email Templates All managed by hand Wrong template = apology Missed email = unhappy client No standardisation High staff cognitive load ⚠ Legacy Classic Workflows Microsoft recommends moving to Power Automate Limited ongoing investment in classic workflows Duplicate emails firing Silent failures Team bypassing automation Figure 2: The three core pain points driving the need for change Solution Overview CloudFronts addressed each pain point with a targeted, interconnected solution built on the existing Dynamics 365 platform. No third-party systems, no new infrastructure, and no disruption to the tools the team already knew. Custom Order Fulfillment Module in Dynamics 365 + Trigger-Based Power Automate Cloud Flows + Full Migration from Legacy Classic Workflows For the Production Team: Every order’s BPF stage ā from Preprocessing Order to Scheduling Arrangements ā is tracked directly within Dynamics 365, visible to sales, operations, and management in real time Stage transitions automatically trigger the correct notification with no manual action required Engineering & Calculations, Production Review, Quality Control, and Scheduling Arrangements are managed as structured fields rather than informal notes or emails For the Sales Team: The CRM record now follows the order all the way to delivery. The sale does not end at contract signature Customer-facing communications are consistent, professionally formatted, and sent automatically No more chasing production teams for status updates to relay to clients For the Organisation: A single source of truth for every order, from first contact through final dispatch Reliable, Microsoft-supported Power Automate automation that can be trusted rather than worked around A professional communication experience that reflects the quality … Continue reading From Manual Emails to Power Automate Cloud flows: Connecting Dynamics 365 Sales to the Shop Floor
Share Story :
How we designed & deployed an Income Pipeline Report for a Texas, U.S. based Cybersecurity & AI Business Solutions Firm, via MS D365 Project Operations and Power BI.
Summary Designed a two-page Power BI Income Pipeline Report for a Texas-based Cybersecurity & AI Business Solutions firm using Microsoft Dynamics 365 Project Operations. Unified visibility across Opportunity, Unbilled Income, Billed Income, and Paid Income in a single view. Introduced Average Turnaround to forecast realistic cash collection timelines based on actual payment behavior. Integrated Dynamics 365 Project Operations with QuickBooks to connect sales, delivery, invoicing, and cash collection. Enabled a 17-week rolling revenue forecast with week-by-week cash visibility. Provided dual invoice status for contractual vs realistic payment tracking. Table of Contents 1. Introduction 2. The Business Problem 3. Report Structure Overview 4. The Income Pipeline 5. Project Revenue Forecast 6. Design Principles 7. Business Impact 8. FAQs 9. Conclusion 1. Introduction Managing revenue across a professional services firm is rarely straightforward. When your business spans cybersecurity assessments, AI-driven solutions, and long-term managed services engagements, the gap between work being delivered and cash actually landing in the bank can be wide ā and costly if left unmonitored. This is precisely the challenge we set out to solve for a U.S.-based Cybersecurity and AI Business Solutions firm running their operations on Microsoft Dynamics 365 Project Operations. The result was a two-page Power BI report ā the Income Pipeline Report ā that gives leadership a real-time, end-to-end view of every dollar moving through the business: from early-stage opportunity, through unbilled and billed income, all the way to cash collected. This post walks through how the report was built, how each data layer was modelled, and why the design decisions were made the way they were. 2. The Business Problem The firm needed clarity across four distinct but connected stages of their revenue lifecycle: Sales opportunities and pipeline value Delivered but unbilled work Outstanding invoices and expected payments Actual vs expected payment behavior This would answer as well as resolve the following questions – Where are active sales opportunities sitting, and how much pipeline value do they represent? Which project work has been delivered but not yet invoiced? Which invoices have been raised and sent to clients, and when are they realistically going to be paid? And finally, how does actual payment behaviour compare against what was expected? Each of these questions existed in isolation before. Project managers had partial visibility into their own contracts, and needed a comprehensive birdās eye view of all of these together. Finance had QuickBooks data but lacked the context of the delivery pipeline. Leadership had no consolidated view. The Income Pipeline Report brought all of this together in a single, navigable Power BI experience. 3. Report Structure Overview The report consists of two pages: Income Pipeline Report ā a high-level pipeline view across four stages: Opportunity, Unbilled Income, Billed Income, and Paid Income, each with summary cards and interactive donut charts. Project Revenue Forecast ā a time-distributed breakdown of expected cash collection across a rolling 17-week horizon, organised by customer and contract. 4. The Income Pipeline The Four-Stage Pipeline Banner Across the top of the report, four chevron-style stage indicators guide the revenue journey: Opportunity ā Unbilled Income ā Billed Income ā Paid Income Each stage includes a summary card showing record count and total value Provides immediate visibility into where revenue is sitting Highlights potential bottlenecks across the pipeline Stage 1 ā Opportunity Data sourced from Dynamics 365 Sales using Business Process Flow (BPF) Uses active BPF stage (Develop, Propose, Close) instead of static fields Ensures accurate reflection of real sales progression Estimated revenue pulled directly from opportunity records Donut chart shows distribution across Develop, Propose, and Close stages Stage 2 ā Unbilled Income Represents contracted or delivered work not yet invoiced Sourced from project contract lines in Dynamics 365 Project Operations Includes: Fixed Fee milestones (explicit values) Time & Material (T&M) estimates based on resource allocations T&M calculated as allocated hours Ć billing rate Clearly marked as estimated until billing run is executed Grouped into payment expectation buckets (30, 60, 90, 120, 180+ days) Uses Average Turnaround to forecast realistic payment timing Stage 3 ā Billed Income (Confirmed Invoices) Combines Dynamics 365 Project Operations and QuickBooks data Tracks invoices that are confirmed and sent to clients Introduces Average Turnaround: Average days from invoice creation to payment Based on historical payment behaviour Each invoice has two statuses: Contractual (due date) Estimated (based on Average Turnaround) Provides realistic vs contractual payment visibility Includes: Due-date based categorisation Estimated overdue analysis Prevents misleading insights from strict payment terms alone Stage 4 ā Paid Income Tracks fully collected invoices Uses QuickBooks for actual payment dates Groups payments by time bands (under 30, 60, 90 days, etc.) Enables comparison between actual vs estimated payment behaviour Continuously improves accuracy of Average Turnaround Tooltip Drill-Down Hover shows: Payment band Record count Total value Drill-through available for detailed record-level analysis 5. Project Revenue Forecast Overview Distributes expected cash collection across a rolling 17-week window Shifts view from pipeline stage to time-based forecasting Hierarchy and Structure Customer ā Contract ā Revenue Type Revenue types include: T&M run schedules Fixed Fee milestones Confirmed invoices Each row shows: Customer Contract Billing type Average Turnaround Value mapped to expected payment week Weeks range from Week 0 to Week 16 Top row aggregates total expected cash per week Colour Coding Amber ā Unbilled income Green ā Invoice within terms Red ā Overdue (based on estimated payment date) Drill-Through to Detail Click any row to view detailed breakdown Includes: Billed invoices with due and estimated dates Unbilled milestones and run schedules Connects high-level forecast to transactional detail 6. Design Principles Average Turnaround over payment terms Reflects actual customer behaviour instead of contractual assumptions. Dual invoice status Provides both contractual and realistic payment visibility. Consistent time buckets Ensures comparability across Opportunity, Unbilled, Billed, and Paid stages. Weekly forecasting instead of monthly Supports short-term cash flow planning aligned with operational rhythm. 7. Business Impact Improved cash flow predictability Earlier visibility of at-risk invoices Unified cross-team visibility Improved T&M billing discipline Increased accountability 8. FAQs What is Average Turnaround and why does it … Continue reading How we designed & deployed an Income Pipeline Report for a Texas, U.S. based Cybersecurity & AI Business Solutions Firm, via MS D365 Project Operations and Power BI.
Share Story :
Skip the Overbuilt ERP: How Small Teams Can Use Power Apps to Get Focused Business Solutions Without the Big License Price Tag
Summary: In todayās Agentic AI conversations, existing suite of business applications by Microsoft Dynamics 365 like CE applications, Business Central or Finance and Operations still make sense ā but too early for your needs? Well, hereās where Power Apps proves to be the most apt choice in terms of license spend, use case for smaller but growing business till you need to move to full-fledged applications. Why Power Apps Premium? If you are a smaller team of about 5-10 and currently operating with 1-2 systems or file repositories which are smaller but disparate, hereās how this approach works best – One of the recent examples is helping an American ISVās build a Power Apps version of a job costing module coming from Dynamics GP which will sunset in a few years. This paves way for existing customers move to a relatively smaller license footprint while the application remains focused on a specific purpose only. With Power Apps Premium, this is a huge deal for organizations who want to do Job Costing but donāt really need the full Field Service or Project Management applications. This lowers the barrier to entry in Dynamics 365 cloud and also enables them to spend on Power Apps Premium as well as Business Central to handle the accounting for Job Costing. What to take care about? While choosing Power Apps may seem like the right choice for smaller use cases that donāt need full-scale Dynamics 365 Applications, here are some of the aspects you must take care of – To conclude, if you are a small business and looking to get started on Power Platform / Power Apps for specific needs, it makes more sense to build small using Canvas or Model Driven Apps instead of going for a full-fledged business system like Dynamics 365 CE Apps, Business Central or Finance and Operations. This gives you the right cover for specific needs till you really get to the scale where your growth actually demands for full-scale applications. This helps keep the cost low, applications focused to serve designated purposes and deploy and connect to existing data sources quicker. Connect with CloudFronts to get started at transform@cloudfonts.com
Share Story :
Real-Time PDF Report Generation on Power Pages: Replacing SSRS with Azure Function Apps for a US-Based Cybersecurity Firm
Summary A Houston-based cybersecurity firm eliminated report failures (~65%) by replacing SSRS with an Azure Function App pipeline. Dynamics 365 bound action ensured authentication stayed internal, bypassing Defender-related token failures. Integrated Power Pages, Power Automate, Dynamics 365, and Azure Functions for real-time PDF generation. Report generation time reduced from 3ā8 minutes to under 15 seconds with zero infrastructure overhead. Table of Contents 1. About the Customer 2. The Challenge 3. The Solution 4. Technical Implementation 5. Business Impact 6. FAQs 7. Conclusion 1. About the Customer The client is a technology consulting and cybersecurity services firm based in Houston, Texas. They manage multiple concurrent client engagements using Dynamics 365 Project Operations as their core platform. Project managers and clients access live project data through a customer-facing portal built on Microsoft Power Pages. 2. The Challenge The organization needed one-click downloadable Project Status Reports from their Power Pages portal covering risks, issues, logs, and timelines. Their SSRS-based solution failed frequently due to authentication breakdowns caused by Microsoft Defender for Cloud Apps across multiple service boundaries. Key pain points: Silent authentication failures with no clear errors Retry delays of 60ā90 seconds per attempt Separate SSRS infrastructure dependency Slow report customization cycle Project managers avoided generating reports during live meetings due to reliability concerns. 3. The Solution At Cloudfronts, while working on this project, I replaced the SSRS pipeline entirely with a synchronous, serverless architecture that keeps the authentication context inside the Dynamics 365 service layer. Technologies Used: Dynamics 365 Project Operations Power Pages Power Automate Plugins Azure Function Apps The solution generates fully formatted PDFs in real time using structured JSON payloads. This eliminated authentication failures while significantly improving speed and reliability. 4. Technical Implementation 1] Power Pages Button triggers Flow A “Download Report” button captures the project GUID and triggers a Power Automate flow with real-time progress feedback. 2] Dynamics 365 Plugin prepares JSON payload A bound action plugin retrieves all project data and converts it into a clean JSON payload for PDF generation. 3] Azure Function generates PDF The Azure Function processes the JSON and generates a formatted PDF, returning it as a Base64 string. 4] SharePoint Integration The generated PDF is automatically stored in the associated SharePoint document location linked to the project. This ensures centralized document management, version control, and easy access for stakeholders directly within the project workspace. 5] Portal PDF Preview The Base64 PDF is rendered directly in the portal using an iframe, allowing instant preview and download. Video: End-to-end implementation of real-time PDF report generation. 5. Business Impact 100% success rate ā zero failures post deployment Under 15 seconds report generation time No infrastructure ā fully serverless Zero authentication failures Faster iteration for report updates Project managers can now confidently generate reports during live client meetings. 6. FAQs Why not fix the SSRS authentication issue instead of replacing SSRS entirely? The authentication failures were a structural consequence of traversing multiple service boundaries in an environment with strict Defender for Cloud Apps session policies. Fixing them would have required either relaxing those policies ā which the client’s security posture did not permit ā or re-architecting the data retrieval to stay inside the platform, which is exactly what the bound action approach achieves. Replacing SSRS also removed a separate infrastructure dependency and gave the client full control over report formatting in code. Can this pattern be reused for other document types in Dynamics 365? Yes. The Azure Function App’s renderer is data-driven ā it consumes a JSON payload and builds tables from whatever keys are present. The Dynamics 365 plugin can be adapted to query any entity and produce an equivalent payload. CloudFronts has applied the same pattern to inspection records, summary reports, and client-facing status documents across Professional Services and Manufacturing implementations. Does this work for environments without Microsoft Defender for Cloud Apps? Yes. The architectural benefits ā synchronous generation, serverless PDF rendering, no SSRS infrastructure, and in-browser preview ā apply regardless of the security layer on the environment. 7. Conclusion Replacing SSRS with an Azure Function App-based PDF renderer resolved both the reliability and authentication problems in a single architectural shift, delivering instant, professional-quality Project Status Reports from a Microsoft Power Pages portal with no legacy reporting infrastructure to maintain. The key lesson from this project is that keeping authentication within the Dynamics 365 service layer ā rather than bridging to external systems ā eliminates an entire category of environment-specific failures that are otherwise very difficult to diagnose and fix. By keeping authentication within Dynamics 365 and leveraging serverless architecture, the solution delivers instant, high-quality reports without infrastructure overhead. This approach demonstrates how modern cloud-native patterns can eliminate entire classes of system failures while improving user experience dramatically. Ready to modernise document generation in your Dynamics 365 environment?CloudFronts builds scalable Power Platform and Dynamics 365 solutions that replace legacy reporting infrastructure and automate document workflows. Reach out at transform@cloudfronts.com. Shashank Keny Associate Consultant Ā· CloudFronts Shashank Keny is an Associate Consultant at CloudFronts with 1.5+ years of experience in cloud, data, and business applications. He specializes in building scalable, API-driven architectures and integrating enterprise systems across the Microsoft ecosystem. He is a Certified Databricks Data Engineer with hands-on experience in Dynamics 365 Project Operations and Dynamics 365 Sales, along with delivering business intelligence solutions using Power BI. His expertise also extends to modern AI solutions, including building custom copilots and implementing intelligent applications using Azure AI Foundry. Passionate about solving real-world business challenges through data and AI, he focuses on delivering efficient, scalable, and production-ready solutions. Experience: 1.5+ years Certification: Databricks Certified Data Engineer Specialization: Dynamics 365 Project Operations, Power BI, Azure Integrations, AI Solutions View LinkedIn Profile
Share Story :
How We Built & Deployed a Mobile-Based Canvas App for Unified Time, Expense (with Receipts) & Material Submission with Project-Based Approvals for a US Cybersecurity Firm
Summary A US-based oil & gas cybersecurity firm implemented a mobile-first Canvas App integrated with Dynamics 365 Project Operations to unify time, expense, and material submission, tracking, and approval. The solution enabled project-specific approval workflows where only assigned approvers could validate submitted records. CloudFronts introduced a dual-mode interface (Day Mode and Week Mode) to improve usability for both field engineers and managers. Submission and approval cycle time reduced from hours/days to near real-time visibility. Table of Contents 1. Customer Scenario 2. Solution Overview 3. Key UX Features 4. Functional Implementation 5. Solution Walkthrough 6. Architecture & Integration Approach 7. Business Impact 8. FAQs 9. Conclusion Customer Scenario A Texas-based cybersecurity firm specializing in operational technology (OT) security for oil rigs manages multiple concurrent field projects using Dynamics 365 Project Operations. Employees and resources were responsible for logging: Time entries Expense entries (travel, accommodation, airfare, etc.) Material usage logs (equipment, parts, consumables, etc.) However, the system was not designed for mobile-first usage, and processes were fragmented across multiple interfaces. Key Challenges Field engineers & other Resources could not efficiently submit entries from mobile devices Time, expense, and material tracking existed in separate workflows Approval processes had to be restricted to project-specific stakeholders Project managers lacked real-time visibility into resource usage ⢠Delays in submission can cause downstream billing and reporting issues Project tracking accuracy can get compromised, and reporting delays directly affected client communication and billing cycles. Solution Overview CloudFronts designed and deployed a unified mobile application using Power Apps (Canvas Apps) integrated with Dynamics 365 Project Operations. Objective: One app ā All submissions ā Controlled approvals ā Real-time visibility What the App Enables For Field Users: Submit time entries (daily or weekly) Create expense entries with receipt validation Log material consumption against projects Track submission status instantly For Project Approvers: View only entries related to assigned projects Approve or reject submissions directly from mobile Maintain audit-ready approval workflows Key UX Features The application is designed with a strong focus on usability for both resources and project approvers, ensuring a seamless mobile experience across submission and approval workflows. 1. Day Mode / Week Mode Toggle The app provides a flexible entry experience through a dual-mode interface: Day Mode: Enables detailed entry for a single day, ideal for precise logging and corrections. Week Mode: Allows bulk entry across multiple days, reducing effort for repetitive data entry. This flexibility significantly improves usability across different working styles and scenarios. 2. Calendar-Based Swipe Navigation The application introduces a Dynamics-style calendar navigation with swipe support, allowing users to: Traverse across multiple days or weeks effortlessly View and manage multiple submission records in sequence Navigate between historical and current entries with minimal effort This mobile-first interaction design reduces friction in high-frequency data entry scenarios. 3. Unified Submission & Approval Experience The UI/UX is intentionally designed to mirror the complete lifecycle of a record, ensuring consistency between submission and approval stages. Each record follows a structured lifecycle aligned with Dynamics 365 stages: Submitted Pending Approved Rejected Recall Requested Recall Request Approved Recall Request Rejected The interface dynamically adapts based on the current stage: Action buttons (Approve, Reject, Recall, etc.) are conditionally visible Status indicators are clearly displayed Users experience the same structured flow from creation to closure This ensures clarity, reduces errors, and improves user confidence in the system. 4. Dynamic Action-Based UI (Smart Button Behavior) The app intelligently modifies UI controls based on record state: Submit button appears only for draft entries Approve/Reject buttons are visible only to project approvers Recall option is available only after submission Post-approval states restrict further edits This enforces role-based and state-based control, preventing invalid actions and maintaining process integrity. 5. Conditional Receipt Upload for Expense Entries Expense submission logic is enhanced with category-driven validation: Mandatory: Airline tickets, OT hardware purchases Optional: Meals, local travel This balances compliance requirements with user convenience, avoiding unnecessary friction. 6. On-Demand Data Refresh Users can manually refresh data within the app to: Fetch the latest submission and approval statuses Sync newly created or updated records Ensure real-time visibility without relying solely on background refresh Especially useful in environments with intermittent connectivity. 7. Mobile-First Interaction Design Touch-friendly controls Swipe navigation Lightweight screens for faster performance Minimal navigation depth This ensures field engineers working in remote or on-site environments can operate efficiently. Functional Implementation This section outlines how the solution was implemented within Dynamics 365 Project Operations and the Power Platform to enable end-to-end submission and approval management. 1. Unified Data Model in Dataverse All three entry types ā Time, Expense, and Material ā are structured within Dataverse and linked to: Project Resource (User) Approval records Supporting documents (for expenses) Each submission creates a corresponding record with a defined lifecycle stage, ensuring consistency across all entry types. 2. Submission Logic from Canvas App Each submission type follows a structured flow: User selects project and entry type (Time / Expense / Material) Required fields are validated based on entry type Conditional logic enforces: Receipt requirement (for specific expense categories) Mandatory fields (based on business rules) Record is created in Dataverse Submission triggers backend approval workflow This ensures that all records entering the system are complete, validated, and ready for approval processing. 3. Approval Record Creation & Routing Upon submission: A corresponding approval record is automatically created The system identifies project-specific approvers Key behavior: Only assigned project approvers can view and act on records Approval actions update the main record status 4. Record Lifecycle Management (Status-Driven System) Lifecycle: Draft ā Submitted ā Pending ā Approved / Rejected ā Recall Flow Users submit records ā moves to Submitted Approvers review ā Approved or Rejected Users request recall ā Recall Requested Approvers respond ā Recall Approved or Rejected Controlled through: Power Apps UI logic MS Bound Actions for submission and approval handling Dataverse status fields 5. Expense Receipt Handling (Integrated from Previous Solution) Receipt upload enforced conditionally Files stored as Notes (Annotations) in Dataverse Linked to expense records This eliminates manual document handling and ensures compliance. Solution Walkthrough The following walkthrough … Continue reading How We Built & Deployed a Mobile-Based Canvas App for Unified Time, Expense (with Receipts) & Material Submission with Project-Based Approvals for a US Cybersecurity Firm
Share Story :
Stop Creating Entities: Simplifying CRM with JSON and Custom HTML for a Sustainability Certification Non-Profit in the Netherlands
Summary A non-profit sustainability certification organization reduced CRM complexity by replacing multiple custom entities with a JSON-based data structure in Microsoft Dynamics 365 CRM. CloudFronts implemented a custom HTML interface to dynamically render input fields and manage document uploads within a single, unified UI. The approach eliminated repeated schema changes, reduced admin overhead, and enabled faster adaptation to evolving certification requirements. Business impact: Reduced CRM customization overhead, accelerated onboarding of new certification types, and a more maintainable solution that scales without structural rework. About the Customer The customer is a non-profit organization focused on sustainability certification across industries. They operate across multiple certification programs, each with distinct documentation requirements, input fields, and approval workflows. Their team relies on Microsoft Dynamics 365 CRM as the central platform for managing certification applications, applicant data, and compliance records. The Challenge Microsoft Dynamics 365 CRM is built for structured data ā but not all business processes follow fixed structures. The organization managed several certification programs, each requiring different sets of input fields, document uploads, and validation logic. Initially, each new certification type was handled by creating a new custom entity or modifying existing ones to accommodate the required fields. While this worked for a small number of programs, the approach quickly revealed significant limitations: Schema rigidity: Every time a new certification type was introduced, or an existing one updated, the CRM schema had to be modified. This meant new fields, new relationships, and repeated deployment cycles. Administrative overhead: Each schema change required coordination between developers and CRM administrators, creating delays and dependency bottlenecks. Inconsistent UI experience: With different entities handling different certification types, the user interface lacked consistency. Applicants and internal users faced a fragmented experience depending on which program they were working in. Scalability ceiling: The entity-per-program model was not designed to scale. Adding a tenth or fifteenth certification type would exponentially increase the complexity of the CRM data model. Document management friction: Handling document uploads across multiple entities was cumbersome, with no unified approach to tracking submission status or linking files to the correct certification record. The organization needed a solution that could accommodate evolving certification structures without requiring constant schema modifications or developer intervention. The Solution CloudFronts redesigned the data architecture by replacing the multi-entity model with a JSON-based structure stored within Dynamics 365 CRM, paired with a custom HTML interface to dynamically render the appropriate fields and manage document workflows. Technologies Used Microsoft Dynamics 365 CRM, Core platform for certification records, applicant data, and workflow management JSON, Flexible data structure for storing dynamic certification inputs within a single CRM field Custom HTML with JavaScript, Dynamic front-end interface rendered within the CRM form, replacing static entity-based layouts Power Automate, Supporting workflows for notifications, approvals, and document status updates What CloudFronts Configured Rather than creating a separate entity for each certification type, CloudFronts introduced a single Certification Application entity with a dedicated JSON field to store all variable inputs. A configuration-driven approach was used, each certification type is defined by a schema that specifies which fields to show, what validations to apply, and which documents are required. The custom HTML interface reads this configuration at runtime and dynamically renders the correct form, no code changes required when a new certification type is added or an existing one is modified. The same interface handles document uploads, linking each file to its corresponding certification record and tracking submission status in real time. CloudFronts also implemented role-based visibility within the HTML component, ensuring that internal reviewers, applicants, and administrators each see only the sections relevant to their function. Business Impact Metric Before After Adding a new certification type Requires schema changes and deployment Configuration update only UI consistency Fragmented across entities Unified interface for all programs Developer dependency High, every change needed development effort Low, administrators manage configurations Document tracking Manual, per entity Centralized and automated CRM data model complexity Growing with each program Stable and maintainable The organization can now onboard new certification programs in a fraction of the time, without touching the underlying CRM schema. Internal teams manage certification configurations independently, and the development team focuses on feature improvements rather than reactive schema maintenance. Frequently Asked Questions When should I use JSON instead of CRM entities? JSON is a strong fit when input structures vary frequently, differ across record types, or are driven by business rules that change regularly. If your data model is stable and relational, entities remain the better choice. Is it possible to query or filter on JSON data in CRM? Direct filtering on JSON fields in Dynamics 365 is limited. CloudFronts structured the solution so that key filterable attributes, such as certification type, status, and applicant ID, remain as standard CRM fields, while the variable payload lives in JSON. Does the custom HTML approach work on mobile? Yes. The HTML web resource is built to be responsive and functions within the Dynamics 365 mobile app, though optimal use is on desktop given the complexity of certification forms. Can this approach support approval workflows? Yes. Power Automate workflows trigger based on standard CRM field changes, such as status updates, and do not depend on the JSON structure, keeping workflow logic clean and maintainable. Conclusion Not every data problem in CRM needs a new entity. When business requirements are variable and evolving, as they often are in certification, compliance, and document-heavy workflows, a rigid entity model can become a liability rather than an asset. By combining JSON-based storage with a dynamic HTML interface, CloudFronts helped this organization build a CRM solution that adapts to change without requiring structural rework. The result is a leaner data model, a more consistent user experience, and a team that can move faster because they are no longer dependent on developer cycles for every process update. Sometimes the best CRM architecture is the one that knows when not to add more to the schema. We hope you found this article useful. If you would like to explore how AI-powered customer service can improve your support … Continue reading Stop Creating Entities: Simplifying CRM with JSON and Custom HTML for a Sustainability Certification Non-Profit in the Netherlands