Tag Archives: Business Central
Adding Task Dependency & Auto-Forecasting in Business Central – A Client Story
As a Business Central functional consultant, I often come across clients who want to stretch the system just a little further than what the standard product offers. And honestly? That’s the fun part of my job, taking a real business problem and making Business Central work for it. Recently, one of our clients came to us with an interesting ask. They were using Projects in Business Central (note: not full-blown Project Operations, since BC’s project functionality is more limited) just to track their internal projects. For them, it wasn’t about billing customers or external reporting, it was about managing their own internal tasks in a structured way. But soon, they hit a snag: “We want task dependencies. Unless Task A is done, Task B should not be editable. And while we’re at it, can we also forecast task timelines automatically?” The Customization: Task Dependency + Forecasted Dates We built a customization with two powerful features: This combination turned their static task list into a dynamic project plan inside Business Central. Why This Feature Made a Big Difference Here are a few ways it improved their day-to-day working: A Small Customization, A Big Win Sometimes, it’s not about adding a huge new module, it’s about adding the right control and visibility at the right place. This customization gave our client confidence that their internal projects would stay on track, with dependencies and timelines automatically adjusting in Business Central. And that’s the beauty of Business Central: it gives you a strong foundation, and with a little tailoring, it can adapt perfectly to your unique business needs. 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.
Service Management in Microsoft Dynamics 365 Business Central
Service Management in Dynamics 365 Business Central supports companies that provide after-sales services such as repairs, maintenance, installation, and support. It allows users to manage service agreements, quotes, orders, invoicing, and even loaner equipment, ensuring full control of service delivery and customer satisfaction. This article outlines the entire flow of managing service operations in D365 Business Central—from quote to invoicing and everything in between. Create Service Quotes A Service Quote is the initial estimate given to a customer before approving or scheduling the actual service. Steps: Once accepted, convert it directly into a Service Order. Create Service Orders A Service Order is used to record and execute the actual service work. Types of Services: Key Components: Once created, the order acts as the central document for planning, execution, and billing. Create Service Invoices or Credit Memos After the service is completed, a Service Invoice or Credit Memo is generated. Invoice: Credit Memo: Allocate Resources Assign technicians or engineers to perform the work: This ensures the right person is assigned to the right task with visibility for planning teams. Work on Service Tasks Each Service Order can include multiple Service Tasks: Technicians can: These tasks provide visibility for both field and back-office teams. Service Posting Service Posting involves updating financial and inventory records after service execution. Items/Resources Posted: System ensures all services are financially accounted for and supports audit trails. Post Service Orders and Credit Memos Once the work is completed and verified: Posted documents are archived and accessible under: Lend and Receive Loaners D365 BC allows you to lend temporary replacement items (Loaners) while the customer’s equipment is being serviced. Loaner Process: This boosts customer satisfaction during long repairs and keeps service transparent. Service Management Features Here are some of the advanced features D365 BC provides in the Service Management Module: Feature Purpose Service Contracts Recurring maintenance or warranty-based agreements Service Items Registers customer equipment and service history Fault/Repair Codes Standardize service documentation Service Pricing Price groups, discounts, and warranty handling Response Time Setup SLAs based on service priority or zone Service Dispatching Schedule and manage field technicians To Conclude, service Management in Dynamics 365 Business Central enables complete control over the entire lifecycle of customer service, from the initial quote to the final invoice. With integrated features for resource allocation, task execution, inventory tracking, and loaner control, the system enhances service efficiency and customer satisfaction. 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.
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.
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.
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.
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.
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.
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.
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.
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.