Simplifying File-Based Integrations for Dynamics 365 with Azure Blob and Logic Apps
Integrating external systems with Dynamics 365 often involves exchanging files like CSVs or XMLs between platforms. Traditionally, these integrations require custom code, complex workflows, or manual intervention, which increases maintenance overhead and reduces reliability. Thankfully, leveraging Azure Blob Storage and Logic Apps can streamline file-based integrations, making them more efficient, scalable, and easier to maintain. Why File-Based Integrations Are Still Common While APIs are the preferred method for system integration, file-based methods remain popular in many scenarios: The challenge comes in orchestrating file movement, transforming data, and ensuring it reaches Dynamics 365 reliably. Enter Azure Blob Storage Azure Blob Storage is a cloud-based object storage solution designed for massive scalability. When used in file-based integrations, it acts as a reliable intermediary: Orchestrating with Logic Apps Azure Logic Apps is a low-code platform for building automated workflows. It’s particularly useful for integrating Dynamics 365 with file sources: Real-Time Example: Automating Sales Order Uploads Traditional Approach: Solution Using Azure Blob and Logic Apps: Outcome: Best Practices Benefits To conclude, file-based integrations no longer need to be complicated or error-prone. By leveraging Azure Blob Storage for reliable file handling and Logic Apps for automated workflows, Dynamics 365 integrations become simpler, more maintainable, and scalable. The real-time sales order example shows that businesses can save time, reduce errors, and ensure data flows seamlessly between systems allowing teams to focus on their core operations rather than manual file processing. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
How to Enable Recycle Bin in Dynamics 365 CRM
When working with Dynamics 365 CRM, one common request from users and admins is:“How do we get a Recycle Bin to recover accidentally deleted records?” Unlike SharePoint or Windows, Dynamics 365 doesn’t come with a native Recycle Bin. But that doesn’t mean you’re out of luck! There are a few smart ways to implement soft delete or restore capabilities depending on your organization’s needs. In this blog, we’ll explore all the available options — from built-in Power Platform features to custom approaches — to simulate or enable Recycle Bin-like functionality in Dynamics 365 CRM. Option 1: Use the Built-in Dataverse Recycle Bin (Preview/GA in Some Regions) Microsoft is gradually rolling out a Recycle Bin feature for Dataverse environments. How to Enable: Option 2: Implement a Custom Recycle Bin (Recommended for Full Control) You can also write a bulk delete after 15-30 days to actually clear these records from Dataverse. Option 3: Restore from Environment Backups If a record is permanently deleted, your last line of defence is a full environment restore. Not ideal for frequent recovery, but lifesaving in major accidents. Tips and Tools you can use. If you also want to track who deleted what and when, Auditing might be helpful. You cannot restore deleted records using this. It is useful only for traceability and compliance, not recovery. XrmToolBox Plugins like Recycle Bin Manager simulate soft delete and allow browsing deleted records. While Dynamics 365 CRM doesn’t provide a built-in Recycle Bin like other Microsoft products, there are several reliable ways to implement soft-delete or recovery mechanisms that fit your organization’s needs. Whether you leverage Dataverse’s native capabilities, create a custom status based Recycle Bin, or track deletions through auditing and backups, it’s essential to plan ahead for data protection and user experience. By proactively enabling recovery options, you not only safeguard critical business data but also empower users with confidence and control over their CRM operations. What’s Your Approach? Have you built your own Recycle Bin experience in Dynamics 365? Share your thoughts or tips in the comments below! We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
Mastering String Functions in Business Central: Practical Examples with AL
When working with Microsoft Dynamics 365 Business Central, string manipulation is an essential part of everyday development. From reversing names to formatting messages, AL provides multiple ways to handle text. In this blog, we’ll explore different approaches to string handling through practical examples, including custom logic and built-in AL string functions. Why String Handling Matters in Business Central Strings are everywhere—customer names, item descriptions, invoice messages, and more. Being able to manipulate these strings efficiently allows developers to: Let’s dive into some real-world AL examples where we extend the Customer List page with new actions for string manipulation. Part 1: Custom String Handling Approaches 🔹 a) Method 1: Using List of Text We can reverse a string by adding each character into a List of [Text] and then calling .Reverse(). action(CFS_ReverseSelectedCustomerName) { Caption = ‘Reverse Customer Name’; ApplicationArea = All; trigger OnAction() var StringList: List of [Text]; StringLetter: Text; ReversedString: Text; begin ReversedString := ”; foreach StringLetter in Rec.Name do StringList.Add(StringLetter); StringList.Reverse(); foreach StringLetter in StringList do ReversedString += StringLetter; Message(ReversedString); end; } This approach is useful when you want more control over the collection of characters. Output: Method 2: Using Index Manipulation Here, we iterate through the string from end to start and build the reversed string. action(CFS_NewIndex) { Caption = ‘New Index’; ApplicationArea = All; trigger OnAction() var ReversedString: Text; i: Integer; begin for i := StrLen(Rec.Name) downto 1 do ReversedString += CopyStr(Rec.Name, i, 1); Message(ReversedString); end; } A more direct approach, simple and efficient for reversing text. Method 3: Using CopyStr The CopyStr function is perfect for extracting characters one by one. action(CFS_NewText) { Caption = ‘New Text’; ApplicationArea = All; trigger OnAction() var ReversedString: Text; i: Integer; begin for i := StrLen(Rec.Name) downto 1 do ReversedString += CopyStr(Rec.Name, i, 1); Message(ReversedString); end; } Part 2: Built-in AL String Functions Beyond custom logic, AL offers powerful built-in functions for working with text. Let’s explore a few. Evaluate Examples The Evaluate function converts text into other datatypes (integer, date, boolean, duration, etc.). action(CFS_EvaluateExamples) { Caption = ‘Evaluate Examples’; ApplicationArea = All; trigger OnAction() var MyInt: Integer; MyDate: Date; MyBool: Boolean; MyDuration: Duration; Value: Text; OkInt: Boolean; OkDate: Boolean; OkBool: Boolean; OkDur: Boolean; begin Value := ‘150’; OkInt := Evaluate(MyInt, Value); Value := ‘2025-09-01’; OkDate := Evaluate(MyDate, Value); Value := ‘TRUE’; OkBool := Evaluate(MyBool, Value); Value := ‘3d 5h 45m’; OkDur := Evaluate(MyDuration, Value); Message( ‘Integer = %1 (Ok: %2)\Date = %3 (Ok: %4)\Boolean = %5 (Ok: %6)\Duration = %7 (Ok: %8)’, MyInt, OkInt, MyDate, OkDate, MyBool, OkBool, MyDuration, OkDur); end; } Super handy when parsing user input or imported text data. String Functions Examples Now let’s use some of the most common string functions in AL. action(CFS_StringFunctions) { Caption = ‘String Functions’; ApplicationArea = All; trigger OnAction() var SourceTxt: Text[100]; CopyTxt: Text[50]; DelTxt: Text[50]; Len: Integer; SubstTxt: Text[100]; UpperTxt: Text[50]; LowerTxt: Text[50]; begin SourceTxt := ‘Dynamics 365 Business Central’; CopyTxt := CopyStr(SourceTxt, 1, 8); // “Dynamics” DelTxt := DelStr(SourceTxt, 1, 9); // “365 Business Central” Len := StrLen(SourceTxt); // 29 SubstTxt := StrSubstNo(‘Hello %1, welcome to %2!’, ‘User’, ‘Business Central’); UpperTxt := UpperCase(SourceTxt); // “DYNAMICS 365 BUSINESS CENTRAL” LowerTxt := LowerCase(SourceTxt); // “dynamics 365 business central” Message( ‘Original: %1\CopyStr: %2\DelStr: %3\Length: %4\Substitute: %5\Upper: %6\Lower: %7’, SourceTxt, CopyTxt, DelTxt, Len, SubstTxt, UpperTxt, LowerTxt); end; } These built-in functions save time and make string handling straightforward. To conclude, whether you’re reversing a customer’s name, converting text into other data types, or formatting user-friendly messages, AL’s string manipulation capabilities are both flexible and powerful. By combining custom logic with built-in functions, you can handle almost any text-related scenario in Business Central. Try experimenting with these functions in your own extensions—you’ll be surprised how often they come in handy! We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
How to Use Metadata Search in Visual Studio for Dynamics 365 Finance & Operations
When working on big projects, it can be hard to quickly find classes, methods, or properties spread across different libraries. Searching through files one by one takes too much time. This is where metadata search in Visual Studio helps. It lets you explore and navigate types from external libraries (like .NET assemblies or NuGet packages) even if you don’t have the source code. Visual Studio creates a readable view of the compiled metadata, so you can instantly see definitions and details, almost like built-in documentation. References Metadata search – Visual Studio Usage -In Visual Studio, go to Dynamics 365 > Metadata Search OR Ctrl + R, Ctrl + S.-Start typing the name of the element you are looking for.-Results appear as you type.-Double-click a result to go directly to that metadata or code.-You can also right-click to add items to your project. You can filter via the follow criteria: To conclude, Metadata search in Visual Studio is a fast and easy way to find code and metadata in Dynamics 365 F&O projects. Using it saves time, reduces frustration, and helps you understand and work with large projects more efficiently.If you require additional support or have specific questions about your ERP setup, please don’t hesitate to contact us for personalized guidance. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
Why Clients Need Custom Power BI Solutions for Territory-Based Reporting
Data is one of the most valuable assets for modern organizations. But without the right reporting structure, decision-makers struggle to extract meaningful insights. At CloudFronts, we specialize in tailoring Power BI to meet specific client needs. In this blog, we’ll share how we customized a territory-based account analysis report for a client’s sales team—and why such customizations deliver real business value. Problem Statement The client’s leadership team faced three challenges with their existing reports: 1. Lack of clarity: Territories on the map looked identical, creating confusion. 2. No drill-down path: Managers could not move easily from high-level territory views to account-level details. 3. Data security concerns: All managers could see all account data, raising confidentiality issues. These gaps reduced adoption of the reports and slowed decision-making. Solution Approach We delivered a tailored Power BI solution with the following enhancements: 1. High-Impact Visuals with Conditional Formatting Each territory was assigned a unique color on the map, instantly improving readability. 2. Structured Multi-Page Navigation – Page 1: Territory Map – for leadership to view performance at a glance. – Page 2: Drill-Through – for Territory Managers to analyze accounts in detail. – Page 3: Tabular Data – for operations teams to validate and export account data. 3. Data Security with Row-Level Security (RLS) Each Territory Manager could only view accounts from their assigned states, ensuring sensitive client data was protected. 4. User Adoption Focus By mirroring the real workflow of Territory Managers, adoption rates significantly increased. Key Learnings – Custom visuals drive clarity: Unique formatting makes reports intuitive. – Security builds trust: Clients are reassured when their data is properly protected with RLS. – Role-based design improves efficiency: Reports that align with how teams work reduce training needs and accelerate insights. – Better adoption leads to ROI: Customized reports quickly become part of daily decision-making, maximizing the value of Power BI investments. To conclude, for clients, Power BI customizations are not just a “nice-to-have”—they are a business necessity. By aligning reports with organizational structures, ensuring secure access, and simplifying navigation, businesses gain faster insights, stronger adoption, and higher ROI from their BI investments. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
Automating Document Vectorization from SharePoint Using Azure Logic Apps and Azure AI Search
In modern enterprises, documents stored across platforms like SharePoint often remain underutilized due to the lack of intelligent search capabilities. What if your organization could automatically extract meaning from those documents—turning them into searchable vectors for advanced retrieval systems? That’s exactly what we’ve achieved by integrating Azure Logic Apps with Azure AI Search. Workflow Overview Whenever a user uploads a file to a designated SharePoint folder, a scheduled Azure Logic App is triggered to: Once stored, a scheduled Azure Cognitive Search Indexer kicks in. This indexer: Technologies / resources used: –-> SharePoint: A common document repository for enterprise users, ideal for collaborative uploads. -> Azure Logic Apps: Provides low-code automation to monitor SharePoint for changes and sync files to Blob Storage. It ensures a reliable, scheduled trigger mechanism with minimal overhead. -> Blob Storage: Serves as the staging ground where documents are centrally stored for indexing—cheaper and more scalable than relying solely on SharePoint connectors. -> Azure AI Search (Cognitive Search): The intelligence layer that runs a skillset pipeline to extract, transform, and vectorize the content, enabling semantic search, multimodal RAG (Retrieval Augmented Generation), and other AI-enhanced scenarios. Why Not Vectorize Directly from SharePoint? Reference:-1. https://learn.microsoft.com/en-us/azure/search/search-howto-index-sharepoint-online2. https://learn.microsoft.com/en-us/azure/search/search-howto-indexing-azure-blob-storage How to achieve this? Stage 1: – Logic App to sync Sharepoint files to blob Firstly, create a designated Sharepoint directory to upload the required documents for vectorization. Then create the logic app to replicate the files along with it’s format and properties to the associated blob storage – 1] Assign the site address and the directory name where the documents are uploaded in Sharepoint – In the trigger action “When an item is created or modified”. 2] Assign a recurrence frequency, start time and time zone to check/verify for new documents and keep the blob container updated. 3] Add an action component – “Get file content using path”; and dynamically provide the full path (includes file extension), from the trigger 4] Finally, add an action to create blobs in the designated container that would be vectorized – provide the storage acc. name, directory path, the name of blob (Select to dynamically get the file name with extension for the trigger), blob content (from the get file content action). 5] On successfully saving & running this logic app, either manually or on trigger, the files are replicated in it’s exact form to the blob storage. Stage 2 :- Azure AI Search resource to vectorize the files in blob storage In Azure Portal (Home – Microsoft Azure), search for Azure AI Search service, and provide the necessary details, based on your requirement select a pricing tier. Once resource is successfully created, select “Import & vectorize data” From the 2 options – RAG and Multimodal RAG Index, select the latter one.RAG combines a retriever (to fetch relevant documents) with a generative language model (to generate answers) using text-only data. Multimodal RAG extends the RAG architecture to include multiple data types such as text, images, tables, PDFs, diagrams, audio, or video. Workflow: Now follow the steps and provide the necessary details for the index creation Enable deletion tracking, to remove the records of deleted documents from the index Provide a document intelligence resource to enable OCR, and to get location metadata for multiple document types. Select image verbalization (to verbalize text in images) or multimodal embedding to vectorize the whole image. Assign the LLM model for generating the embeddings for the text/images provide an image output location, to store images extracted from the files Assign a schedule to refresh the indexer and to keep the search index up to date with new documents. Once successfully created, search keywords in the search explorer of the index, to verify the vectorization, the results are provided based on it’s relevance and score/distance, to the user’s search query. Let us test this index in Custom Copilot Agent , by importing this index as an azure ai search knowledge source. On fetching details of certain document specific information, the index is searched for the most appropriate information, and the result is rendered in readable format by generative AI. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
From Data Chaos to Clarity: The Path to Becoming AI-Ready
Most organizations don’t fail because of bad AI models; they fail because their data isn’t clear. When your data is consistent, connected, and governed, your systems begin to “do the talking” for your teams. In our earlier article on whether your tech stack is holding you back from achieving AI success, we discussed the importance of building the right foundation. This time, we go deeper because even the best stack cannot deliver without data clarity. That’s when deals close faster, billing runs itself, projects stay on track, and leaders decide with confidence. This blueprint shows how to move from fragments to structure to precision. The Reality Check For many businesses today, operations still depend on spreadsheets, scattered files, and long email threads. Reports exist in multiple versions, important numbers are tracked manually, and teams spend more time reconciling than acting. This is not a tool problem, it is a clarity problem. If your inventory lives in spreadsheets, if the “latest report” means three versions shared over email, no algorithm will save you. What scales is clarity: one language for data, one source of truth, and one way to connect systems and decisions. 💡 If you cannot trust your data today, you will second guess your decisions tomorrow. What Data Clarity Really Means (in Plain Business Terms) Clarity is not a buzzword. It makes data usable and enables scalability, giving every AI-ready business its foundation. Here’s what that looks like in practice: 💡Clarity is not another software purchase. It is a shared business agreement across systems and teams. From Chaos to Clarity: The Three Levels of Readiness Data clarity evolves step by step. Think of it as moving from fragments to gemstones, to jewels. Level 1: Chaos (fragments everywhere) Data is spread across applications, spreadsheets, inboxes, and vendor portals. Duplicates exist, numbers conflict, and no one fully trusts the information. Level 2: Structure (the gemstone taking shape) Core entities like Customers, Products, Projects, and Invoices are standardized and mapped across systems. Data is stored in structured tables or databases. Reporting becomes stable, handovers reduce, and everyone begins pulling from a shared source. Level 3: Composable Insights (precision) Data is modular, reusable, and intelligent. It feeds forecasting, guided actions, and proactive alerts. Business leaders move from asking “what happened?” to acting on “what should we do next?” [Image Alt: Data Fragments to Jewel Levels] How businesses progress: 💡Fragments refined into gemstones, and gemstones polished into jewels. Data clarity and maturity are the jewels of your business. In fragments, they hold little value. The Minimum Readiness Stack (Microsoft First) You don’t need a long list of tools. You need a stack that works together and grows with you: 💡A small, well-integrated Tech stack outperforms a large, disconnected toolkit, every time. What Data Clarity Unlocks Clarity does not just organize your data. It transforms how systems work with each other and how your business operates. CloudFronts provided solutions, the real-world impact: Benefits enabled across departments in your business: 💡When systems talk, your teams stop chasing data. They gain clarity. And clarity means speed, control, and growth. Governance That Accelerates Governance is not red tape, it is acceleration. Here’s how effective governance translates into business impact. Proof in action includes: 💡Trust in data is engineered, not assumed. Outcomes That Matter to the Business Clarity shows up in business outcomes, not just dashboards. Tinius Olsen-Migrating from TIBCO to Azure Logic Apps for seamless integration between D365 Field Service and Finance & Operations – CloudFronts BÜCHI’s customer-centric vision accelerates innovation using Azure Integration Services | Microsoft Customer Stories 💡Once clarity is established, every new process, report, or integration lands faster, cleaner, and with more impact. To conclude, getting AI-ready is not about chasing new models. It is about making your data consistent, connected, and governed so that systems quietly remove manual work while surfacing what matters. All of this leads to one truth: clarity is the foundation for AI readiness. This is where Dynamics 365, Power Platform, and Azure integrations shine, providing a Microsoft-first path from fragments to precision. If your business is ready to move from fragments to precision, let’s talk at transform@cloudfronts.com CloudFront will help you turn data chaos into clarity, and clarity into outcomes.
Share Story :
Auto Refresh Subgrid in Dynamics 365 CRM Based on Changes in Another Subgrid
In Dynamics 365 CRM implementations, subgrids are used extensively to show related records within the main form. But what if you want Subgrid B to automatically refresh whenever a new record is added to Subgrid A, especially when that record triggers some automation like a Power Automate flow or a plugin that creates or updates related data? In this blog, I’ll walk you through how to make one subgrid refresh when another subgrid is updated — a common real-world scenario that enhances user experience without needing a full form refresh. Let’s say you have two subgrids on your form: Whenever a new record is added in the Chargeable Categories subgrid, a Power Automate flow or backend logic creates corresponding records in Order Line Categories. However, these new records are not immediately visible in the second subgrid unless the user manually refreshes the entire form or clicks on the refresh icon. This can be confusing or frustrating for end-users. Solution Overview To solve this, we’ll use JavaScript to listen for changes in Subgrid A and automatically refresh Subgrid B once something is added. Here’s the high-level approach: Implementation Steps 1. Create the JavaScript Web Resource Create a new JS web resource and add the following code: How It Works To conclude, this simple yet effective approach ensures a smoother user experience by reflecting backend changes instantly without needing to manually refresh the entire form. It’s particularly helpful when automations or plugins create or update related records that must appear in real-time. By combining JavaScript with Dynamics’ form controls, you can add polish and usability to your applications without heavy customization. I hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
Add or Remove Sample Data in a Dynamics 365 CRM Environment
Let’s say you configured a Dynamics 365 Sales or Project Operation or a field service trial for a client demo to save your efforts on creating sample data dynamics gives you an option to add data in any dynamics 365 environment, you can either choose to install the sample data while creating the environment however if you forgot to do so, here is how you can add sample data within your dynamics 365 environment. Step 1 – Go to https://admin.powerplatform.microsoft.com/environments select your dynamics 365 environment and click on view details. Step 2 – On the details page click on setting. Step 3 – On the setting page under data management you will see an option named sample data, click on it. Step 4 – Click installed and after a few minutes sample data will be added within your dynamics 365 environment. Similarly, if sample data is already installed and you wish to remove it, you will see a button Remove sample data instead of Install sample data. Hope this helps! 😊 I hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com.
Share Story :
Disqualify Single or Multiple Quotes in Dynamics 365 with One Click!
If you’ve ever needed to mark multiple quotes as lost in Dynamics 365, you know the default “Close Quote” dialog can be slow and repetitive.In my recent project, the sales team wanted a faster way, one click from the main Quotes view, to disqualify single or multiple quotes, without opening each one or clicking through extra prompts. Using the out-of-the-box CloseQuote action, a small JavaScript function, and a custom Ribbon Workbench button, I built exactly that. Here’s how. Why I Needed This Our sales team often manages multiple quotes at once. The standard process meant: It was time-consuming, especially for bulk operations. We needed a quick, grid-based action that would: Step 1 – Using the OOB CloseQuote Action Dynamics 365 provides a built-in CloseQuote bound action that changes the state and status of a quote to closed. Instead of creating a custom action, I decided to call this OOB action directly from JavaScript. Step 2 – JavaScript to Call the OOB Action Here’s the function I wrote to handle both single and multiple quotes: Step 3 – Adding the Ribbon Button in Ribbon Workbench Now, the button will be available directly on the Quotes view. Step 4 – Testing the Feature This reduced what was previously a multi-click, per-record task into a single action for any number of quotes. Why This Works Well To conclude, by combining the OOB Close Quote action with Ribbon Workbench, I could instantly disqualify quotes from the main grid, saving hours over the course of a month. If you’re looking to simplify repetitive processes in Dynamics 365, start by exploring what’s already available out of the box, then add just enough customization to make it your own. 🔗 Need help implementing a custom button or enhancing your Dynamics 365 sales process? At CloudFronts, we help businesses design and implement scalable, user-friendly solutions that streamline daily operations and improve adoption. Whether it’s customizing Ribbon Workbench, integrating OOB actions, or building tailored automation, our team can make it happen. 📩 Reach out to us at transform@cloudfronts.com and let’s discuss how we can optimize your Dynamics 365 environment.