Category Archives: D365 Business Central
Microsoft Dynamics 365 Business Central: The Future of Mid-Market ERP Growth
Microsoft Dynamics 365 Business Central: The Future of Mid-Market ERP Growth The ERP market is undergoing a fundamental transformation, and Microsoft Dynamics 365 Business Central (BC) is at the center of this evolution. Once perceived as a mid-market ERP solution, BC has rapidly matured into a powerful, cloud-first platform capable of supporting not just small businesses but also larger enterprises looking for agility, scalability, and deep integration. The Growth Story Business Central has experienced unprecedented growth over the past few years. Today, it powers more than 45,000 organizations worldwide, doubling its customer base in less than three years. Equally impressive is the growth in active users, which has risen by more than 75% year-on-year, with a particularly strong uptake among organizations with over 100 users—showing BC is no longer just an SMB tool. Microsoft’s investment in global expansion has also paid dividends. With localization support across 160+ countries, BC has become a truly international solution, making it the go-to ERP for businesses seeking consistency across geographies. Drivers Behind the Momentum Several factors are fueling this surge in adoption: A Strategic Shift in Customer Profile What’s particularly notable is the rapid growth of larger customers adopting BC. The number of customers with 100+ paid users has grown by more than 100% year-on-year. This shift highlights BC’s ability to scale and compete directly with larger ERP players traditionally serving the enterprise segment. The Challenges Ahead Despite its growth trajectory, Business Central faces challenges: The Road Ahead Looking ahead, Business Central is poised to play a leading role in shaping the ERP landscape. Its cloud-native architecture, combined with Microsoft’s innovation in AI and global reach, positions it as the ERP of choice for mid-market businesses scaling rapidly—and even for enterprises seeking agility. In many ways, BC represents more than just an ERP system; it’s a strategic growth enabler. By embedding intelligence, integrating seamlessly with the Microsoft stack, and offering flexibility through partners, Business Central is proving that the future of ERP is not just in the cloud—it’s intelligent, scalable, and accessible. To conclude, the story of Business Central is a story of transformation—of ERP systems, of business models, and of organizations embracing agility. For leaders looking ahead, BC is not just a software choice; it’s a growth strategy. 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 :
Preview and Download Selected Documents as PDFs in Business Central Using AL
In Microsoft Dynamics 365 Business Central, users frequently need to generate and review Purchase Order (PO) documents. Traditionally, this process involved downloading PDF files locally and then opening them with an external PDF viewer. While functional, this workflow can be inefficient, especially when reviewing multiple purchase orders. With recent enhancements in the AL language and web client capabilities, it is now possible to preview PDF documents directly within the browser, eliminating unnecessary steps and improving user experience. Additionally, Business Central continues to support direct file downloads for scenarios where saving a copy locally is required. This article presents a customization to the Purchase Order List page, allowing users to select multiple purchase orders and either preview or download their PDF documents using AL code. Functional Overview The proposed solution introduces a new action on the Purchase Order List page titled “Preview Selected Purchase Orders”. This action performs the following tasks: Role of Report Selections Report Selections play a vital role in ensuring flexibility and modularity. Instead of hardcoding specific report IDs, the system determines the report to be used for each Purchase Order based on vendor configuration. Example AL Snippet: This method respects configurations made in the Report Selection – Purchase page, allowing different vendors to use different report formats or layouts for the same document type. AL Implementation Below is the complete AL code for the pageextension object: File Handling Options: Preview vs Download Depending on business needs, developers can choose between two methods: 1. File.ViewFromStream 2. File.DownloadFromStream Output This customization provides two ways to handle PDF outputs for Purchase Orders: 1. For a Single Selected Document When a single purchase order is selected and the action is triggered: 2. For Multiple Selected Documents (Merged into One PDF) Business Benefits To Conclude, by leveraging AL capabilities such as Report Selections, Temp Blob, and the File data type methods, developers can significantly enhance document handling processes in Microsoft Dynamics 365 Business Central. Offering both in-browser preview and direct download options provides users with flexibility and improves overall productivity. This customization is a practical example of how small enhancements can deliver substantial value in day-to-day business operations. 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 Change Posting Number Series in Business Central: Configuration and Customization Guide
In many businesses, especially those involved in international trade, it’s common to handle both import and export transactions. To keep records clean and compliant, companies often want to assign separate posting number series for exports and imports in Microsoft Dynamics 365 Business Central. In this guide, we’ll walk you through how to configure and automate posting number series selection based on the sales order type Export or Import helping your business maintain accurate and organized documentation. Business Scenario: A customer requires that: When a Sales Order is created for EXPORT, a specific Export Posting No. Series should be applied. When a Sales Order is created for IMPORT, a different Import Posting No. Series should be used. This allows for easy tracking, filtering, and compliance with customs or internal auditing processes. Steps to achieve goal Step 1: Create Two Posting Number SeriesGo to “Number Series”. Create two new series: SO-EXP-2025 → for Export SO-IMP-2025 → for Import Set appropriate starting numbers, prefixes, and increment-by values. And then create another No series for Sales Order relationship S-ORD-R add above no series in relationship in Sales & receivable setup add the new S-ORD-R Step 2: Create a field add field in page extension and table extension of No series Line. Step 3: Add Logic in the Sales Order Page ExtensionIn your Sales Order page extension, implement logic to check if the selected No. Series is tagged as “Export”. If so, automatically assign the corresponding value from the “Posted No. Series Code” to the “Posting No. Series” field on the Sales Order. This ensures that when an Export-related number series is used, the correct posting series is set without manual intervention. To conclude, setting different posting number series based on whether a Sales Order is for Export or Import is a simple yet powerful customization in Business Central. With a small extension or logic-based workflow, you can automate this process to enhance control and compliance. 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 :
Work Smarter, Not Harder: Use Copilot to Summarize Records in Dynamics 365 BC
With the 2025 Wave 1 release, Dynamics 365 Business Central becomes even more user-friendly thanks to a smart new feature powered by Copilot: Summarize a Record. This feature allows users to instantly view a plain-language summary of key records, such as customers, vendors, items, and sales or purchase documents. Instead of clicking through multiple tabs or analyzing raw data, you now get a clear, AI-generated overview in seconds. The Summarize with Copilot action reviews all relevant data from a record and provides a quick summary in natural language. Steps to use this feature:Open a supported record (e.g., a customer or sales order). Click on “Summarize with Copilot” which is on right side. Copilot instantly generates a readable summary based on available data. This works seamlessly across environments where Copilot is enabled and enhances the way you interact with Business Central data. To conclude, summarize a Record with Copilot is a perfect example of working smarter, not harder. Whether you’re preparing for a customer call, reviewing a vendor, or checking on an item, this feature gives you quick context without the clicks. It’s one more step toward making Business Central faster, simpler, and more intelligent just like modern business software should be. 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 :
Struggling to Bulk Upload “Item Revaluation Entries”? Here’s What Could Be Going Wrong
In this blog, one of our clients had made some small mistakes while providing the data for their opening balances, which caused the item costs to be wrong. After a lot of back-and-forth, we finally got a list of 100+ items with the correct costs. We thought it would be easy to fix using Edit in Excel but then we ran into an error:“Quantity must have a value in Item Journal Line.” But this is odd as when we are creating the entries manually, we don’t need to set the Quantity from anywhere. In fact, the Quantity field isn’t even editable, it is populated when the “Applies-to Entry” field is updated. We tried using Configuration Package.. same thing! We tried to create an excel import, that uploads data in the journal.. same thing! So what’s going on? Details After a bit of debugging we found this piece of code to be the problem – And this -> When you update the “Unit Cost (Revalued)” field in Business Central, it also updates the “Inventory Value (Revalued)” field automatically. This part is simple. But the system also tries to update “Unit Cost (Revalued)” again based on the value you just changed—almost like it’s going in circles. To avoid this, the system checks which field is currently being updated. If it’s not “Unit Cost (Revalued)”, the update is allowed. When you make changes from the Business Central screen, the system knows which field you’re changing, thanks to something called CurrFieldNo. But when you use Edit in Excel, Config Packages, or AL code, this info is missing. That confuses the system and can cause it to divide by zero, which leads to an error. Also, there’s a rule that checks quantity in the “Applies-to Entry” field. This check only happens if the “Value Entry Type” is not set to “Revaluation”. This was raised back in 2018 on Github as a bug but it was closed as intended system design. At the end, we had to bypass the validation and assign the values directly to the fields. To conclude, what seemed like a simple task updating revalued costs turned into a deep dive into Business Central’s internal logic. The issue stemmed from how the system handles field updates differently depending on the entry method. While the manual interface sets background values like CurrFieldNo to help Business Central track changes properly, external methods like Edit in Excel or Config Packages don’t provide that context. If you need further assistance or have specific questions about your ERP setup, feel free to reach out 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 :
Migrating from Dynamics GP to Business Central: A Leap Towards the Future
For years, Microsoft Dynamics GP has been a reliable ERP system, helping businesses streamline financial operations. But the world has changed. Markets move faster, customer expectations are higher, and technology is no longer just a support function – it’s the backbone of growth. This is why the transition from Dynamics GP to Microsoft Dynamics 365 Business Central isn’t just another upgrade. It’s a strategic leap forward. The Real Question: Maintain or Evolve? In today’s world, standing still is the same as moving backward. The choice is simple: maintain what works or evolve to what’s next. What Businesses Gain with Business Central A Transformation Story We’re currently working with a mid-sized client who has been running Dynamics GP for nearly 3 decades. While GP had served them well, the leadership team realized that GP will be obsolete in just a few years. Continuing with GP would only add more risk and cost. That’s why they made a strategic decision: migrate to Business Central, ensuring they move to a platform built for the future. Their goals for the migration are clear: This migration is underway, and the client sees it as the foundation for their next decade of growth. Why Now Is the Right Time Postponing migration might feel safe, but it carries hidden risks: increasing IT costs, reliance on outdated processes, and missing out on innovations competitors are already leveraging. Business Central is more than an ERP—it’s a platform for growth, intelligence, and resilience. The Takeaway Migrating from GP to Business Central is not a technical move – it’s a business transformation. It means: With GP reaching its end of life in the coming years, now is the time to make the transition confidently and strategically. Feel free to reach out. You can contact us at transform@cloudfronts.com. Let’s work together to find the right step for your success.
Share Story :
Dealing with ISV Extension Updates in Business Central: A Practical Guide
As of August 2025, the number of third-party apps available for Dynamics 365 Business Central on Microsoft AppSource is estimated to be between 4,000 and 6,500. Microsoft regularly publishes marketplace updates, with 200–300 new offers added monthly across all product lines, a significant portion of which are Business Central extensions. It’s clear that the Business Central ecosystem is rapidly growing, making extension update management increasingly critical. The majority of clients we’ve worked with use third-party modules to enhance their business processes, making the management of extension updates a critical part of our environment health checklist. References Apps added to MS App Source MSLearn | Automatically update appsource apps with business central updates Configuration If you don’t have access to the Business Central Admin Center, your only option is to uninstall the extension and then reinstall it from AppSource. However, if you do have access to the Admin Center and prefer to manage app updates manually. Navigate to your environment and click on Apps. Here, you can – For those looking to automate this process, Microsoft offers the “Appa Update Cadence” setting, which controls how and when apps are updated alongside Business Central. There are three available settings: To conclude, managing third-party extension updates in D365 Business Central is essential to maintaining a stable and reliable environment. Whether updates are handled manually through the Admin Center or automated using the App Update Cadence feature, having a clear process helps minimize disruptions. With the growing number of extensions in AppSource, proactively testing updates, monitoring changes, and coordinating with ISV partners ensures your Business Central environment stays healthy and future ready. If you need further assistance or have specific questions about your ERP setup, feel free to reach out 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 :
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 :
Monitoring Job Queues: Setting Up Failure Notifications within Business Central
A job queue lets users set up and manage background tasks that run automatically. These tasks can be scheduled to run on a recurring schedule. For a long time, users had a common problem in Business Central—when a job queue failed, there was no alert or warning. You’d only notice something was wrong when a regular task didn’t run for a few days. Some people tried to fix this by setting up another job queue to watch and restart failed ones.But that didn’t always work, especially if an update happened at the same time. Now, Microsoft has finally added a built-in way to get alerts when a job queue fails. You can get notified either inside Business Central or by using Business Events. In this blog, we’ll look at how to set up notifications directly within Business Central. Configuration Search for “Assisted Setup” in Business Central’s global search. Scroll down till “Set up Job Queue notifications”. Click on Next. Add the additional users who need to be notified when the job queue fails along with the job creator (if required). Choose whether you want the notification to be in-product or using Business Events (and Power Automate). For now, I’m choosing in-product. Choose the frequency of the notification, you can have it either when a single job fails or you can have it after 3-5 jobs have failed (as per settings) Click on Finish. Now for testing I’ve run a job queue and on the home page, I get the following notification. Clicking on “Show more details” give me a list of all the failed job queues. To conclude, this new notification feature is a much-needed improvement and a good step forward. It helps users catch job queue failures quickly, without having to manually check every day. However, the setup and experience still feel a bit buggy and lacklustre. With some refinements, it could be a lot smoother and more user-friendly. If you need further assistance or have specific questions about your ERP setup, feel free to reach out for personalized guidance. 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 :
Boost Job Automation in Business Central with Maximum Number of Attempts
Automation in Microsoft Dynamics 365 Business Central can drastically improve efficiency, especially when scheduled jobs run without manual intervention. But occasionally jobs fail due to temporary issues like network glitches or locked records. Setting the Maximum number of attempts ensures the system retries automatically, reducing failures and improving reliability. Steps to Optimize Job Automation 1. Navigate to Job Queue Entries Go to Search (Tell Me) → type Job Queue Entries → open the page. 2. Select or Create Your Job Either choose an existing job queue entry or create a new one for your automated task. 3. Set Maximum No. of Attempts In the Maximum No. of Attempts field, enter the number of retries you want (e.g., 3–5 attempts). This tells BC to retry automatically if the job fails. 4. Schedule the Job Define the Earliest Start Date/Time and Recurring Frequency if applicable. 5.Enable the Job Queue Make sure the Job Queue is On and your job is set to Ready. 6.Monitor and Adjust Review Job Queue Log Entries regularly. Pro Tips -Keep your jobs small and modular for faster retries. -Avoid setting attempts too high it may overload the system. -Combine retries with proper error handling in the code or process. To conclude, by leveraging the Maximum No. of Attempts feature in Business Central, you can make your job automation more resilient, reduce downtime, and ensure business processes run smoothly without constant supervision. 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.