Category Archives: Dynamics 365
From Default to Dynamic: Transforming Dynamics CRM Subgrids with Custom HTML for a Netherlands-Based Sustainability Certification Non-Profit
Summary A Netherlands-based sustainability certification non-profit faced a key limitation in Dynamics CRM: the default subgrid had no way to filter related lookup values ā meaning all versions and levels appeared for every certification standard, regardless of relevance. CloudFronts replaced the default subgrid with a custom HTML Web Resource that renders each certification standard as an interactive card, with its own pre-filtered version and level dropdowns. Users selecting C2C CertifiedĀ® Full Scope now only see versions and levels that belong to Full Scope ā not a cluttered list of every record in the related table. Beyond fixing the filtering gap, the solution transformed the CRM form experience from a flat, generic grid into a clean, modern card-based interface ā significantly improving usability for both applicants and assessors. Table of Contents 1. Customer Scenario 2. The Real Problem ā Unfiltered Lookups in Subgrids 3. Solution Overview 4. Key Features of the Custom Web Resource 5. How It Works ā Technical Implementation 6. End-to-End Walkthrough 7. Architecture & Design Decisions 8. Business Impact 9. FAQs 10. Conclusion Customer Scenario A Netherlands-based non-profit organization uses Dynamics CRM to manage the full certification application lifecycle, from initial scoping through assessment and final issuance. As part of every certification application, users must define a Certification Scope, selecting which Cradle to Cradle standards they want assessed, choosing the correct version of that standard, and setting a target certification level. The available standards include: Full Scope Material Health Circularity Each standard has its own set of applicable versions and certification levels stored in related Dataverse tables. The challenge was making sure users could select and configure each standard correctly ā without the CRM form showing them irrelevant data from other standards. The Real Problem, Unfiltered Lookups in Subgrids The original design used a default CRM subgrid to list the certification scope lines. Each row in the subgrid had lookup fields pointing to related Dataverse tables, one for Standard Version, one for Certification Level. The problem was straightforward but significant: CRM subgrid lookup fields have no native mechanism to filter their values based on another field in the same row. This meant that when a user opened the Version lookup on a Full Scope row, they saw every version across every standard ā Full Scope versions, Material Health versions, Circularity versions, all mixed together in a single unfiltered list. The same issue applied to Certification Levels. There was no built-in way to say: “this row is for Full Scope ā only show me Full Scope versions.” Key Pain Points Wrong version selected by mistake: With all versions in one unfiltered list, users had to manually identify and pick the correct one ā easy to get wrong, especially for new staff unfamiliar with which version belongs to which standard. Cluttered, confusing lookup lists: A lookup showing 20+ mixed records when the user only needs to choose from 3ā4 relevant options is a frustrating experience and a source of data quality issues. No visual structure or grouping: The default subgrid renders as a flat table. There is no way to visually distinguish one standard from another or understand the overall scope at a glance. A form that did not match the product’s quality: The client wanted their CRM environment to feel professional and polished ā a plain, out-of-the-box grid did not meet that expectation. The subgrid was not broken ā it was simply the wrong tool for this job. What was needed was a control that understood the relationship between a standard and its versions, and filtered accordingly. Solution Overview CloudFronts replaced the default subgrid entirely with a custom HTML Web Resource embedded directly on the CRM application form. The web resource reads a single JSON field on the record which carries each standard along with its own pre-scoped list of versions and levels. The core idea: Each certification standard gets its own card ā Each card shows only the versions and levels that belong to that standard ā No more mixed, unfiltered lookup lists What This Achieves For Applicants and Assessors: Select one or more certification standards using clear, visual checkbox cards See only the versions relevant to the selected standard ā nothing from other standards Choose a target level from a correctly filtered, correctly sorted dropdown Get instant visual feedback on which standards are active in the scope For the CRM Platform Team: No subgrid lookup filtering workarounds, form-level JavaScript hacks, or plugin-based filtering required All filtering is naturally handled by the JSON data structure, each standard row already carries only its own versions and levels A significantly better-looking form that reflects the quality of the certification program itself Scope configuration can be extended simply by updating the JSON, no schema changes needed Key Features of the Custom Web Resource The web resource was designed with two clear goals: solve the filtering problem correctly, and make the form experience noticeably better. Here is how each feature serves those goals. 1. Card-Per-Standard Layout with Checkbox Selection Each certification standard is rendered as its own self-contained card ā with a title, a short description of what that standard covers, and a checkbox. This immediately solves the visual grouping problem that a flat subgrid cannot address. Clicking a card (or its checkbox) marks that standard as In Scope The selected card highlights with a blue left-border accent and a soft background tint ā making it immediately clear which standards are active Deselected cards remain compact and unobtrusive, keeping the form clean For assessors reviewing multiple applications, being able to scan the full scope at a glance ā without opening related records or reading through a grid ā is a meaningful time saving. 2. Filtered Version Dropdown ā Per Standard This is the feature that directly solves the original problem. When a card is selected and expands, the Standard Version dropdown is populated exclusively from the versions array within that standard’s JSON row. A user working on a Full Scope card sees only Full Scope versions A user working … Continue reading From Default to Dynamic: Transforming Dynamics CRM Subgrids with Custom HTML for a Netherlands-Based Sustainability Certification Non-Profit
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
Share Story :
Transforming Return Logistics for a USA Manufacturer: Automating Shipment Processing with Dynamics 365 Customer Service
Summary This blog highlights the integration of Microsoft Dynamics 365 Customer Service Hub with FedEx Shipping Manager to handle automated email return shipments for a consumer electronic appliances company based in Massachusetts, USA. In the original process, customer service representatives were required to manually register each return shipment through the FedEx Shipping Manager portal. This process involved copying customer details, creating shipments, generating labels, and capturing tracking numbers ā a workflow that typically required 20ā30 minutes per request. The integration project automated the entire return shipment process directly within the Dynamics 365 Customer Service Hub. With a single click, the system now registers the shipment using FedEx Shipment APIs, generates a return label, captures the tracking number, and updates the case record automatically. This innovation eliminated the need for agents to switch between systems and reduced shipment registration time from 20ā30 minutes to just a few seconds, significantly improving operational efficiency and the overall customer service experience. This blog explains: 1] The operational challenges caused by manual shipment registration. 2] How Dynamics 365 Customer Service Hub was integrated with FedEx Shipping Manager. 3] The functional workflow used to automate shipment creation. 4] How customer service representatives trigger shipments directly from CRM. 5] The business impact achieved through automation and system integration. Table of Contents 1. Customer Scenario 2. Solution Overview 3. Functional Implementation Approach 4. Email Return Label Experience 5. Handling Complex Data Automatically 6. Business Impact 7. Preview Video 8. Final Thoughts Customer Scenario A Massachusetts-based consumer appliance manufacturer known for building innovative kitchen technology was experiencing a growing operational challenge in its customer service operations. As demand for its products increased across major retail channels, the number of customer support cases related to product returns and replacements also grew significantly. The companyās customer support team handled all service requests through Microsoft Dynamics 365 Customer Service. However, when a product needed to be returned for inspection, replacement, or warranty evaluation, agents were required to manually create a shipment in FedEx Ship Manager. This manual process involved several steps: 1] Opening the customer case in the CRM system 2] Copying customer information and shipping details 3] Logging into the FedEx portal 4] Registering the shipment manually 5] Generating a return label 6] Capturing the tracking number 7] Returning to CRM to update the case Each shipment registration typically took 20ā30 minutes. When hundreds of return requests were processed weekly, this created several operational challenges: 1] Agents constantly switched between multiple systems 2] Manual data entry increased the risk of errors 3] Customer response times increased, leading to customer resentment 4] Tracking information was not always immediately available in the case record The organization needed a more efficient way to handle returns while keeping the entire process inside their CRM platform. Solution Overview To streamline the returns process, I implemented an integration between Microsoft Dynamics 365 Customer Service and FedEx shipping manager services. The goal was simple: Allow customer service representatives to generate a return shipment directly from the case record with a single click. Instead of navigating to the separate external shipping portal, agents can now initiate a return shipment directly from the CRM case page. Once triggered, the system automatically handles the entire shipment (Email/Return/Label) registration process. With this solution in place, the workflow now looks like this: A customer contacts support regarding a product return via their website, which registers an associated Case record in D365 Case Management (via existing case automation). The support agent opens the case in Dynamics 365. A āCreate Return Shipmentā button becomes available when the case meets the required conditions, e.g., Case Stage, RMA availability, Region of Customer, etc., thus validating and restricting shipment privileges. With one click, the system registers the shipment with FedEx (via appropriate FedEx Shipment APIs, as per customer requirements). The shipment tracking number is automatically captured and stored in the case record. This tracking number is useful for the customer support team as well as the customer to check the progress of the shipment on the FedEx Shipping Manager portal. The customer receives an email return label that they can print and attach to their package. FedEx Email Return Shipment Process Flow This transformation reduced a 20ā30 minute process to just a few seconds. Functional Implementation Approach The implementation focused on simplifying the experience for customer service agents while maintaining strict control over when and how shipments could be created. Intelligent Shipment Trigger Visibility Within the CRM case interface, the return shipment button appears only when specific conditions are met. This ensures that shipments are created only for valid return scenarios. Examples of conditions include: The case must have an approved return authorization The case must be in an appropriate service stage The customer address must be eligible for shipment Required customer information must be available Example: Return Shipment Trigger inside Dynamics 365 Customer Service Hub By embedding these conditions into the CRM interface, agents are guided through the correct service workflow without needing to remember complex procedures. Automated Shipment Creation Once the button is clicked, the system automatically gathers key information from the case record, such as: Customer details Shipping address Product description Return authorization number Contact phone number This information is then used to register the shipment through the FedEx shipping system. The system generates: A unique shipment tracking number A return shipment registration A digital return label The warehouse where the shipment would reach based on the product and end consumer requirement ā e.g., return, replacement, or repair of the product Example: A Successful Return Shipment to a specific warehouse. Example: Tracking a Return Shipment using the Tracking No. updated on D365 Customer Service Hub. Example: The FedEx Shipping Manager for Tracking the Integrated Shipments. The tracking number is immediately written back to the case record in Microsoft Dynamics 365 Customer Service, ensuring that support agents can track the return shipment without leaving the case. Email Return Label Experience After the shipment is registered, the customer automatically receives an email containing their return label. … Continue reading Transforming Return Logistics for a USA Manufacturer: Automating Shipment Processing with Dynamics 365 Customer Service
Share Story :
Debugging Made Simple: Using IISExpress.exe for Faster D365 Finance & Operations Development
Summary In modern web application development, debugging efficiency plays a critical role in overall productivity. While full Internet Information Services (IIS) is powerful, it often introduces unnecessary complexity and slows down development cycles. This article explores how IIS Express (iisexpress.exe) provides a lightweight, fast, and developer-friendly alternative for debugging. You will learn how to use IIS Express effectively, understand its advantages over full IIS, and discover practical ways to streamline your debugging workflow for faster and more efficient development. Debugging Faster with IIS Express: A Practical Guide for Modern Developers In modern application development, debugging speed and flexibility can significantly impact productivity. While full IIS is powerful, it often introduces overhead that slows down iterative development. This is where IIS Express (iisexpress.exe) becomes a powerful yet underutilized tool. This article explores how to effectively use IIS Express for debugging, why it matters, and how it can streamline your development workflow. What is IIS Express? IIS Express is a lightweight, self-contained version of Internet Information Services (IIS) designed specifically for developers. It allows you to: Why Use IIS Express for Debugging? Where is IISExpress.exe Located? It is typically found at: C:\Program Files\IIS Express\iisexpress.exe How to Run IIS Express Manually You can start IIS Express from the command line: iisexpress.exe /path:”C:\MyApp” /port:8080 Parameters Explained: a. /path ā Physical path of your applicationb. /port ā Port number to run the application Debugging with IIS Express in Visual Studio Step 1: Set Project to Use IIS Express a. Open Project Propertiesb. Go to the Web sectionc. Select IIS Express Step 2: Start Debugging Press F5 or click Start Debugging. Visual Studio will: Attaching Debugger Manually Sometimes you may need to debug an already running instance. Steps: You can then add breakpoints in your code. You can add break points in code. Common Debugging Scenarios IIS Express vs Full IIS Feature IIS Express Full IIS Setup Minimal Complex Admin Rights Not required Required Performance Lightweight Production-ready Use Case Development Production Best Practices Strategic Insight Many developers default to full IIS for debugging, but this introduces: IIS Express provides a developer-first approach, enabling: Final Thoughts Debugging should be fast, predictable, and low-friction. IIS Express achieves this by providing a lightweight yet powerful runtime environment. Whether you are building APIs, web applications, or integrations, mastering IIS Express can significantly improve your development efficiency. Key Takeaway Use IIS Express for fast, isolated, and efficient debugging-without the overhead of full IIS. If you are implementing of F&O and want more clarity in your finance processes, feel free to reach out to us at transform@cloudfonts.com. We have helped multiple organizations streamline exactly these scenarios.
Share Story :
How to Extract Tax Components in Purchase Orders in D365 F&O Using Standard Framework
Summary In modern enterprise systems, tax visibility is no longer optional-itās critical for compliance, reporting, and integrations. This blog explains how to programmatically extract detailed tax components (like GST and surcharges) in Microsoft Dynamics 365 Finance & Operations using standard, Microsoft-aligned methods. It highlights a scalable approach that avoids unsupported workarounds while enabling line-level transparency and integration-ready outputs. In enterprise systems, taxation is often treated as a black box, calculated correctly, yet rarely understood in depth. However, as organizations scale globally and compliance requirements tighten, visibility into tax components becomes a strategic necessity, not just a technical detail. Working with Purchase Orders in Microsoft Dynamics 365 Finance and Operations, one common challenge is: How do we break down tax into its individual components (like 18% GST, 5% surcharge) programmatically? This article explores a clean, scalable, and Microsoft-aligned approach to extracting tax components using standard framework classes-without relying on fragile or unsupported methods. The Problem: Tax Visibility Beyond Totals Most implementations stop at: But modern business scenarios demand: To achieve this, we must go deeper into the tax calculation pipeline. The Standard Tax Calculation Flow In D365 F&O, Purchase Order tax calculation follows a structured pipeline: PurchTable āPurchTotals āTax Engine āTmpTaxWorkTrans (Tax Components) The key insight here is: Tax components are not stored permanentlyāthey are generated dynamically during calculation. The Solution: Leveraging PurchTotals and Tax Framework Instead of accessing internal or temporary structures directly, we use standard classes provided by Microsoft. Here is the working approach: PurchTable purchTable;PurchTotals purchTotals;Tax tax;TmpTaxWorkTrans tmpTaxWorkTrans; purchTable = PurchTable::find(“IVC-00003”); purchTotals = PurchTotals::newPurchTable(purchTable);purchTotals.calc(); tax = purchTotals.tax(); tmpTaxWorkTrans = tax.tmpTaxWorkTrans(); while select tmpTaxWorkTrans{ info(strFmt(“Tax Code : %1”, tmpTaxWorkTrans.TaxCode)); info(strFmt(“Tax % : %1”, tmpTaxWorkTrans.TaxValue)); info(strFmt(“Tax Amount : %1”, tmpTaxWorkTrans.TaxAmountCur));} Why This Approach Matters 1. Aligns with Microsoft Standard This method mirrors what the system does when you click āSales Taxā on a Purchase Order form. 2. Avoids Unsupported APIs No dependency on: 3. Works Pre-Posting Unlike TaxTrans, this approach works before invoice posting, making it ideal for: Real-World Output For a Purchase Order with: The output becomes: Tax Code : 18Tax % : 18Tax Amount : 198 Tax Code : 5Tax % : 5Tax Amount : 55 This level of granularity enables: Extending the Approach You can filter by line: where tmpTaxWorkTrans.SourceRecId == purchLine.RecId 2. Multi-Currency Scenarios The same logic works seamlessly for: Tax is calculated in: Integration-Ready Design This structure can be easily exposed via: Strategic Insight In many projects, developers attempt to: These approaches introduce: The better approach is to embrace the framework, not bypass it. Final Thoughts Tax calculation in D365 Finance & Operations is not just about numbers-itās about designing for transparency, compliance, and scalability. By leveraging: you gain: Key Takeaway If you need tax components in Purchase Orders, donāt query tables, trigger the calculation and read from the framework. If you are implementing of F&O and want more clarity in your finance processes, feel free to reach out to us at transform@cloudfonts.com. We have helped multiple organizations streamline exactly these scenarios.
Share Story :
Tax-on-Tax Configuration in Microsoft Dynamics 365 Finance and Operations: Step-by-Step Guide for 18% + 5% Cascading Tax
SummarySales tax configurations in Microsoft Dynamics 365 Finance and Operations can go beyond simple percentage calculations. In scenarios where taxes are layered or interdependent, businesses often require a tax-on-tax (cascading tax) setup. This blog explains how to configure an 18% primary tax and an additional 5% tax calculated on top of it, ensuring accurate, automated, and compliant tax calculations for complex service-based industries like Oil & Gas. Sales Tax Setup in Microsoft Dynamics 365 Finance & Operations (18% + 5% Tax-on-Tax) In global and industry-specific implementations, taxation is not always flat. Many organizations, especially in regulated sectors, require layered tax calculations where one tax is applied on top of another. In one such implementation within Microsoft Dynamics 365 Finance and Operations, this configuration was successfully used for a service-based company in the Oil and Gas industry. The requirement was straightforward but technically nuanced: a. Apply a primary tax of 18% on the service valueb. Apply an additional 5% tax on the total amount after the first tax This type of setup is commonly required when: a. Multiple statutory taxes are interdependentb. Regulations mandate tax calculation on already taxed valuesc. Service contracts involve multi-layered billing structures By configuring this correctly, businesses can eliminate manual calculations and ensure compliance. Understanding the Requirement The logic follows a cascading structure: a. First, calculate 18% on the base amountb. Then, calculate 5% on (Base Amount + 18% tax) Example Calculation: a. Item price = ā¹100b. 18% tax = ā¹18c. 5% tax on ā¹118 = ā¹5.9d. Total tax = ā¹23.9e. Final amount = ā¹123.9 This demonstrates how the second tax depends on the first, making configuration accuracy critical. Step-by-Step Configuration 1. Create Sales Tax CodesNavigate to:Tax > Indirect taxes > Sales tax > Sales tax codes a. Create Tax Code 1Name: Tax18Percentage: 18% b. Create Tax Code 2Name: Tax5Percentage: 5% 2. Configure Tax-on-Tax For Tax5 (5%): a. Enable: Calculate tax on taxb. Select base tax: Tax18 This ensures Tax5 is calculated on the net amount + Tax18. 3. Create Sales Tax Group Navigate to:Tax > Indirect taxes > Sales tax > Sales tax groups a. Create: SALES_TAX_GROUPb. Add:i. Tax18ii. Tax5 4. Create Item Sales Tax Group Navigate to:Tax > Indirect taxes > Sales tax > Item sales tax groups a. Create: ITEM_TAX_GROUPb. Add:i. Tax18ii. Tax5 5. Assign Tax Groups a. Assign the Item sales tax group to the itemb. Ensure correct mapping in transactions Tax Calculation Flow Step Amount Base Amount ā¹1000 GST18 (18%) ā¹180 GST5 (5% on 118) ā¹59 Total Tax ā¹239 Final Amount ā¹1239 a. Tax-on-tax must always be configured on the dependent tax (5%)b. Sequence of tax codes directly impacts calculation accuracyc. Always validate through Sales Order ā Invoice ā Tax detailsd. Perform complete testing in Sandbox before Production deployment Conclusion Tax-on-tax configuration in Microsoft Dynamics 365 Finance and Operations is a powerful capability that enables businesses to handle complex, cascading tax requirements with precision. By structuring tax dependencies correctly: a. The base tax (18%) is calculated firstb. The dependent tax (5%) is automatically applied on the cumulative amount This ensures: a. Accurate financial reportingb. Regulatory compliancec. Zero manual intervention For industries dealing with layered taxation models, this approach is not just helpful-it is essential. I hope you found this blog useful. If you would like to discuss anything further, feel free to reach out to us at transform@cloudfronts.com.
Share Story :
A Custom Solution for Bulk Creating Subgrid Records Using HTML, JavaScript, and Plugins in Dynamics 365
One of the small but frustrating limitations in Microsoft Dynamics 365 is how subgrids handle record creation. If youāve worked with Opportunities, Quotes, Orders, or any parentāchild setup, youāve probably experienced this: You need to add multiple related records. The system allows you to add them one at a time. Click New. Save. Repeat. It works, but itās slow, repetitive, and not how users naturally think. Over time, that friction adds up. The Real Problem In our case, an Australia-based linen and garments company, was using Dynamics 365 to manage sales opportunities for hospitality and healthcare clients. Their sales team regularly needed to add multiple products ā such as linen packages, garment services, and rental items, to a single Opportunity. These products were organized by categories like: A typical deal didnāt include just one item. It often included five, ten, or more products across different categories. However, the out-of-the-box sub grid experience required them to: There was nothing technically broken. But from a usability perspective, it wasnāt efficient ā especially for a fast-moving sales team handling multiple client proposals daily. What they really wanted was simple: Select products by category ā Choose multiple items ā Add them in one go ā Move on. That capability simply wasnāt available within the standard sub grid behavior. Approach Instead of forcing users to follow the repetitive process, we extended the form with a custom solution. We built a lightweight HTML-based interface embedded inside the form. This interface: Once the user confirms their selection, the chosen records are sent to a custom server-side process. From the userās perspective, the experience becomes: Open selector ā Choose multiple items ā Click once ā All records created. Simple. Fast. Intuitive. What Happens Behind the Scenes While the interface feels straightforward, the actual processing is handled securely on the server. When users submit their selection: This ensures the solution is: The business logic remains centralized and controlled, not exposed on the client side.file. Why This Matters The improvement may seem small at first. But consider users who perform this task daily. Reducing repetitive actions saves time, lowers frustration, and improves overall efficiency. More importantly, it makes the system feel aligned with how users actually work. Instead of adapting their workflow to system limitations, the system adapts to their workflow. Thatās where meaningful customization adds value. The Outcome By combining: We created a smooth bulk record creation experience within Dynamics 365. The platform remains intact. The business logic remains secure, and the user experience becomes significantly better. And sometimes, thatās exactly what good system design is about, not rebuilding everything but removing friction where it matters most. We hope you found this article useful. If you would like to explore how AI-powered customer service can improve your support operations, please contact the CloudFronts team at transform@cloudfronts.com.
Share Story :
Let AI Do the Talking: Smarter AI-Generated Responses to Customer Queries
Summary Customer service teams today must handle increasing support volumes while maintaining fast response times and high customer satisfaction. Traditional service models relying on emails, spreadsheets, and manual processes often struggle to scale efficiently. In this article, we explore how organizations can transform customer service operations using Dynamics 365 Customer Service, Power Platform, and Azure OpenAI to automate workflows, generate intelligent responses, and improve service efficiency. Table of Contents 1. Watch the Webinar 2. The Challenge: Scaling Customer Support 3. Operationalizing Customer Service with Dynamics 365 4. How AI is Transforming Customer Service 5. Key Benefits for Organizations FAQs Watch the Webinar In a recent CloudFronts webinar, Vidit Golam, Solution Architect at CloudFronts, demonstrated how organizations can operationalize customer service workflows using Dynamics 365 and enhance them with AI-powered responses. The session covers real-world service automation scenarios, intelligent case management, and how AI can assist support teams with contextual response generation. Watch the full webinar here: š The Challenge: Scaling Customer Support Many organizations begin managing customer service through email inboxes or simple ticket tracking systems. While this approach may work initially, it becomes difficult to manage as the number of customer interactions grows. Common challenges include: 1. Customer emails being missed or delayed 2. No centralized system to track service requests 3. Lack of visibility into response times and SLAs 4. Inconsistent responses across support teams As customer expectations increase, businesses require more structured and scalable service management systems. Operationalizing Customer Service with Dynamics 365 Dynamics 365 Customer Service helps organizations bring structure, automation, and visibility to service operations. The platform enables organizations to manage cases, track service performance, and automate routine service tasks. Key capabilities include: 1. Automatic case creation from customer emails 2. Queue-based case management 3. Service Level Agreement (SLA) tracking 4. Automated case assignment 5. Real-time service dashboards 6. Customer self-service portals Instead of manually tracking service requests, inquiries are automatically converted into cases, ensuring every issue is logged, assigned, and resolved systematically. How AI is Transforming Customer Service The integration of Azure OpenAI with Dynamics 365 enables organizations to move beyond basic service management and adopt intelligent automation. AI-powered capabilities can assist support teams by: 1. Generating contextual responses for customer queries 2. Summarizing case details for faster resolution 3. Suggesting knowledge base articles 4. Automating repetitive service tasks 5. Improving response quality and consistency These capabilities help support teams handle more requests efficiently while improving the overall customer experience. Key Benefits for Organizations 1. Faster response times for customer inquiries 2. Reduced manual effort for support teams 3. Improved consistency in customer communication 4. Better visibility into service performance 5. Scalable support operations without increasing headcount FAQs Q1: Can Dynamics 365 automatically create cases from emails? Yes. Dynamics 365 Customer Service can automatically convert incoming emails into cases and route them to appropriate service queues. Q2: How does AI help customer service agents? AI can generate response suggestions, summarize case details, and recommend knowledge base articles to help agents respond faster. Q3: Can this solution integrate with existing systems? Yes. Dynamics 365 integrates with Microsoft Power Platform, Azure services, and many third-party applications. We hope you found this article useful. If you would like to explore how AI-powered customer service can improve your support operations, please contact the CloudFronts team at transform@cloudfronts.com.
Share Story :
How to Build an Incremental Data Pipeline with Azure Logic Apps
Why Incremental Loads Matter When integrating data from external systems, whether it’s a CRM, an ERP like Business Central, or an HR platform like Zoho People, pulling all data every time is expensive, slow, and unnecessary. The smarter approach is to track what has changed since the last successful run and fetch only that delta. This is the core idea behind an incremental data pipeline: identify a timestamp or sequence field in your source system, persist the last-known watermark, and use it as a filter on your next API call. Azure Logic Apps, paired with Azure Table Storage as a lightweight checkpoint store, gives you everything you need to implement this pattern without managing any infrastructure. Architecture Overview Instead of one large workflow doing everything, we separate responsibilities. One Logic App handles scheduling and orchestration. Another handles actual data extraction. Core components: 3. Metadata Design (Azure Table) Instead of hardcoding entity names and fields inside Logic Apps, we define them in Azure Table Storage. Example structure: PartitionKey RowKey IncrementalField displayName entity businesscentral 1 systemCreatedAt Vendor Ledger Entry vendorLedgerEntries zohopeople 1 modifiedtime Leave leave Briefly, this table answers three questions: – What entity should be extracted?– Which column defines incremental logic?– What was the last successful checkpoint? When you want to onboard a new entity, you add a row. No redesign needed. 4. Logic App 1 ā Scheduler Trigger: Recurrence (for example, every 15 minutes) Steps: This Logic App should not call APIs directly. Its only job is orchestration. Keep it light. 5. Logic App 2 ā Incremental Processor Trigger: HTTP (called from Logic App 1) Functional steps: Example: This is where the real work happens. 6. Checkpoint Strategy Each entity must maintain: – LastSuccessfulRunTime– Status– LastRecordTimestamp After successful extraction: Checkpoint = max(modifiedOn) from extracted data. This ensures: Checkpoint management is the backbone of incremental loading. If this fails, everything fails. This pattern gives you a production-grade incremental data pipeline entirely within Azure’s managed services. By centralizing entity configuration and watermarks in Azure Table Storage, you create a data-driven pipeline where adding a new integration is as simple as inserting a row ā no code deployment required. The two-Logic-App architecture cleanly separates orchestration from execution, enables parallel processing, and ensures your pipeline is resilient to failures through checkpoint-based watermark management. Whether you’re pulling from Business Central, Zoho People, or any REST API that exposes a timestamp field, this architecture scales gracefully with your data needs. Explore the case study below to learn how Logic Apps were implemented to solve key business challenges: Ready to deploy AIS to seamlessly connect systems and improve operational cost and efficiency? Get in touch with CloudFronts at transform@cloudfronts.com.