Tag Archives: Business Central
Managing Profile Pictures on Custom Pages in Microsoft Dynamics 365 Business Central
When creating custom pages in Business Central, sometimes you need to allow users to handle profile pictures. Whether you’re working with a custom Employee Profile page or another entity, it’s crucial to provide intuitive ways for users to manage their pictures. In this blog, we’ll walk through the process of implementing four key actions for handling profile pictures in custom pages: These features can be achieved using AL (the programming language for Business Central). Setting Up the Custom UserProfile Page Let’s first define the User Profile page where the user can manage their profile picture. This page will provide the fields for Profile ID, Profile Name, and a FactBox to display the profile picture. Code: page 50213 “UserProfileCard” { PageType = Card; SourceTable = “UserProfile”; ApplicationArea = All; Caption = ‘User Profile’; layout { area(content) { group(Group) { field(“Profile ID”; Rec.”Profile ID”) { ApplicationArea = All; } field(“Profile Name”; Rec.”Profile Name”) { ApplicationArea = All; } } } // FactBox area to display profile picture area(factboxes) { part(“Profile Picture FactBox”; “ProfilePictureFactBoxPart”) { ApplicationArea = All; } } } actions { area(Processing) { action(“Take Picture”) { ApplicationArea = All; trigger OnAction() var Camera: Codeunit “Camera”; InS: InStream; PicName: Text; begin // Validate the selected profile if not IsProfileSelected(Rec.”Profile ID”) then exit; // Check if the camera is available if Camera.IsAvailable() then begin // Get and import the picture if Camera.GetPicture(InS, PicName) then begin // Import the picture into the profile record Rec.”Profile Picture”.ImportStream(InS, PicName); Rec.Modify(); // Save the modified record Message(‘Profile picture updated successfully.’); end else Message(‘Failed to capture the picture. Try again.’); end else Message(‘No camera detected. Please connect a camera.’); end; } fileuploadaction(“Import Picture”) { ApplicationArea = All; Caption = ‘Import’; Image = Import; ToolTip = ‘Import a picture file.’; trigger OnAction(Files: List of [FileUpload]) var FileName: Text; InStream: InStream; FileUpload: FileUpload; begin Rec.TestField(“Profile ID”); if Rec.”Profile Name” = ” then Error(MustSpecifyNameErr); if Rec.”Profile Picture”.HasValue() then if not Confirm(OverrideImageQst) then exit; // Ensure the file is valid if Files.Count = 0 then Error(‘No file selected.’); // Iterate through the Files list (typically just one file) foreach FileUpload in Files do begin // Create the InStream from the current file FileUpload.CreateInStream(InStream); Rec.”Profile Picture”.ImportStream(InStream, FileName); end; Rec.Modify(true); Message(‘Picture imported successfully: %1’, FileName); end; } action(“Export Picture”) { ApplicationArea = All; Caption = ‘Export’; Image = Export; ToolTip = ‘Export the picture to a file.’; trigger OnAction() var FileName: Text; OutStream: OutStream; InStream: InStream; TempBlob: Codeunit “Temp Blob”; // Helps with the stream conversion begin Rec.TestField(“Profile ID”); Rec.TestField(“Profile Name”); // Ensure there’s a profile picture to export if not Rec.”Profile Picture”.HasValue() then begin Message(‘No profile picture found to export.’); exit; end; // Generate a file name for the exported picture FileName := Rec.”Profile Name” + ‘_ProfilePicture.jpg’; // Export the image to an OutStream via TempBlob TempBlob.CreateOutStream(OutStream); // Prepare the OutStream Rec.”Profile Picture”.ExportStream(OutStream); // Export the Media field content into the OutStream TempBlob.CreateInStream(InStream); // Create InStream from TempBlob to use for download // Trigger the file download DownloadFromStream(InStream, FileName, ”, ”, FileName); // Show success message Message(‘Profile picture exported successfully as %1’, FileName); end; } action(“Delete Picture”) { ApplicationArea = All; Caption = ‘Delete’; Image = Delete; ToolTip = ‘Delete the picture.’; trigger OnAction() begin Rec.TestField(“Profile ID”); if not Confirm(DeleteImageQst) then exit; Clear(Rec.”Profile Picture”); Rec.Modify(true); end; } } } trigger OnAfterGetCurrRecord() begin SetEditableOnPictureActions(); end; trigger OnOpenPage() begin CameraAvailable := Camera.IsAvailable(); end; var Camera: Codeunit Camera; CameraAvailable: Boolean; OverrideImageQst: Label ‘The existing picture will be replaced. Do you want to continue?’; DeleteImageQst: Label ‘Are you sure you want to delete the picture?’; SelectPictureTxt: Label ‘Select a picture to upload’; FileManagement: Codeunit “File Management”; MustSpecifyNameErr: Label ‘You must specify a profile name before you can import a picture.’; local procedure SetEditableOnPictureActions() begin // Enabling or disabling the delete/export actions based on whether a picture is present. end; // Function to check if a profile is selected procedure IsProfileSelected(ProfileID: Code[20]): Boolean begin if ProfileID = ” then begin Message(‘Please select a profile first!’); exit(False); end; exit(True); end; } Understanding the Key Actions Let’s break down the actions implemented in this custom UserProfile page: 1. Take Picture This action utilizes the Camera Codeunit to capture a picture. If the camera is connected, it will fetch an image and store it in the “Profile Picture” field. 2. Import (Upload) Picture The Import Picture action allows users to upload a picture from their local system into the “Profile Picture” field. It uses the FileUpload control and confirms if the existing image should be replaced. 3. Export Picture The Export Picture action downloads the profile picture to the user’s system. The image is exported to an OutStream, then triggered for download using DownloadFromStream. 4. Delete Picture The Delete Picture action clears the profile picture field. It prompts for confirmation before removing the image. Benefits To encapsulate, in standard Business Central, the functionality for managing user profiles and pictures is built in. However, when working with custom pages, you often need to implement these features manually. By using the actions … Continue reading Managing Profile Pictures on Custom Pages in Microsoft Dynamics 365 Business Central
Understanding and Analyzing Customer Ledger Data with Business Charts in Dynamics 365
In today’s business world, understanding your financial data is crucial for making informed decisions. One of the key areas of focus for businesses is tracking customer payments and outstanding invoices. With Dynamics 365, you can leverage customer ledger entries to provide visual insights into customer behaviors, payment patterns, and outstanding amounts. These insights help businesses optimize collections, improve cash flow, and make data-driven decisions. In this blog, we’ll explore how to analyze Customer Ledger Entries through Business Charts in Dynamics 365, focusing on Outstanding Invoices, Payments Applied, and Aging of Outstanding Amounts. What Are Customer Ledger Entries? Customer Ledger Entries in Dynamics 365 track all transactions related to a customer, including invoices, payments, credit memos, and adjustments. Each entry contains details such as: By analyzing this data, businesses can gain valuable insights into a customer’s payment habits, outstanding debts, and the status of their invoices. Why Use Business Charts? Business Charts in Dynamics 365 provide a visual representation of your data, making it easier to spot trends and gain actionable insights. Instead of manually sorting through customer ledger entries, you can use charts to instantly assess: This allows teams to make timely decisions about follow-ups with customers and plan for collections. Creating Charts to Analyze Customer Ledger Data Let’s dive into some key charting logic you can apply to Customer Ledger Entries in Dynamics 365 to get more detailed insights into your data. 1. Outstanding Invoices (Remaining Amount per Invoice) The first and most essential data point to track is the Remaining Amount of each invoice. By grouping this data by invoice number, you can quickly identify which invoices are outstanding and need to be followed up. Logic: Buffer.AddMeasure(‘Remaining Amount’, 2, Buffer.”Data Type”::Decimal, ChartType.AsInteger()); Buffer.SetXAxis(‘Document No.’, Buffer.”Data Type”::String); // Group by invoice number The chart will help visualize which invoices are outstanding and need to be prioritized for payment. Code page 50215 “Business Charts” { ApplicationArea = All; Caption = ‘Business Charts’; PageType = CardPart; UsageCategory = Administration; layout { area(Content) { usercontrol(chart; BusinessChart) { ApplicationArea = All; trigger AddInReady() var Buffer: Record “Business Chart Buffer” temporary; CustLedgerEntry: Record “Cust. Ledger Entry”; Customer: Record Customer; ChartType: Enum “Business Chart Type”; AppliedAmount: Decimal; RemainingAmount: Decimal; s: Integer; begin // Initialize the chart buffer and variables Buffer.Initialize(); ChartType := “Business Chart Type”::Pie; // Use a bar chart for better visual representation // Add measure for ‘Remaining Amount’ Buffer.AddMeasure(‘Remaining Amount’, 2, Buffer.”Data Type”::Decimal, ChartType.AsInteger()); // Set X-axis to ‘Invoice No.’ for grouping data by invoice Buffer.SetXAxis(‘Document No.’, Buffer.”Data Type”::String); // Loop through all customers if Customer.FindSet() then begin repeat // Loop through Customer Ledger Entries to accumulate remaining amounts if CustLedgerEntry.FindSet() then begin repeat CustLedgerEntry.CalcFields(“Remaining Amount”); // Only accumulate amounts for the current customer based on Customer No. if CustLedgerEntry.”Customer No.” = Customer.”No.” then begin // If it is an Invoice, accumulate Remaining Amount if CustLedgerEntry.”Document Type” = “Gen. Journal Document Type”::Invoice then begin Buffer.AddColumn(CustLedgerEntry.”Document No.”); // Label by Invoice No. Buffer.SetValueByIndex(0, s, CustLedgerEntry.”Remaining Amount”); // Set RemainingAmount for the invoice s += 1; end; end; until CustLedgerEntry.Next() = 0; end; until Customer.Next() = 0; end; // Update the chart with the accumulated data if s > 0 then Buffer.UpdateChart(CurrPage.Chart) else Message(‘No outstanding invoices to display in the chart.’); end; } } } } 2. Payments Applied (Amount Applied to Invoices) Another important metric is the Amount Applied to customer invoices. Tracking payments allows you to understand customer payment behavior and outstanding balances. By focusing on Payments, you can track how much a customer has paid against their total balance. Logic: Buffer.AddMeasure(‘Amount Applied’, 2, Buffer.”Data Type”::Decimal, ChartType.AsInteger()); Buffer.SetXAxis(‘Customer No.’, Buffer.”Data Type”::String); // Group by customer This chart will help businesses track customer payments and identify any customers with overdue payments. 3. Aging of Outstanding Amounts (Bucketed by Days Overdue) Aging reports are an essential tool for understanding the timeliness of payments. By grouping outstanding amounts into aging buckets (e.g., 0-30 days, 31-60 days, etc.), businesses can better assess which invoices are overdue and prioritize collection efforts. Logic: // Calculate aging based on Due Date if (Today – CustLedgerEntry.”Due Date”) <= 30 then AgingBucket := ‘0-30 Days’ elseif (Today – CustLedgerEntry.”Due Date”) <= 60 then AgingBucket := ’31-60 Days’ Buffer.SetXAxis(‘Aging Bucket’, Buffer.”Data Type”::String); // Group by aging bucket This chart will provide a clear picture of which invoices are overdue and for how long, helping businesses prioritize collections. Benefits of Using Business Charts for Customer Ledger Analysis By leveraging Customer Ledger Entries and Business Charts in Dynamics 365, businesses can transform raw data into valuable insights. Visualizing outstanding invoices, payments applied, and aging amounts helps businesses prioritize collections, forecast cash flow, and ultimately improve their financial health. These charts make it easier for accounting and finance teams to manage customer payments and reduce the risk of overdue balances. The ability to track customer behavior and quickly identify payment issues gives businesses a competitive edge, helping them maintain a healthy cash flow and strong customer relationships. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Mastering Date Manipulation with CALCDATE in Microsoft Dynamics 365 Business Central
Microsoft Dynamics 365 Business Central provides a comprehensive suite of tools designed to streamline business processes, and one of the most powerful tools for managing dates and times is the CALCDATE function. This versatile function enables users to perform complex date calculations with ease, making it indispensable for developers, consultants, and power users. In this blog post, we’ll dive deep into the CALCDATE function, explain its syntax, and explore how you can leverage it in your Business Central environment. Understanding CALCDATE The CALCDATE function is used to calculate a new date based on a specific date expression and an optional reference date. It is particularly helpful in scenarios where you need to determine dates relative to a given point in time. This could include calculating due dates, forecasting future events, setting up recurring transactions, or determining any other date relative to the system’s current or a user-defined date. For example, if you need to find the first day of next month or calculate a due date based on the current date, CALCDATE can handle these tasks efficiently. Syntax of CALCDATE The syntax of the CALCDATE function is simple, but the power lies in how you use the date expressions to represent relative time periods. NewDate := System.CalcDate(DateExpression: Text [, Date: Date]) Parameters DateExpression (Type: Text): This is the key input to the function, where you specify the date you want to calculate. The date expression can represent a variety of time periods, ranging from days to weeks, months, quarters, and years. The expression is evaluated from left to right, and each subexpression is processed one at a time. The valid syntax for the date expression follows a set of rules: Subexpression: A date expression consists of one or more subexpressions, each of which may be prefixed with a + or – sign. The subexpression can specify a time unit (day, week, month, etc.) along with a number. Here’s the structure of a typical date expression: <Subexpression> = [<Sign>] <Term> <Sign> = + | – <Term> = <Number><Unit> | <Unit><Number> | <Prefix><Unit> Examples of valid date expressions: The calendar in Business Central starts on Monday and ends on Sunday, where Monday is considered weekday 1 and Sunday is weekday 7. An invalid date expression, such as specifying an incorrect syntax, will result in a runtime error. 2. [Optional] Date (Type: Date):This optional parameter is used to define the reference date. If you omit it, the system defaults to the current date. You can specify any date here, and CALCDATE will perform the calculation based on that reference date instead of the current system date. Return Value Example: pageextension 50103 CustomerPageExt1 extends “Customer Card” { trigger OnOpenPage() var StartDate: Date; EndDate: Date; FirstDateofPreviousMonth: Date; LastDateofPreviousMonth: Date; FirstDateofNextMonth: Date; LastDateofNextMonth: Date; TodayDate: Date; FirstDateofYear: Date; LastDateofYear: Date; FirstDayOfNextQuarter: Date; LastDayOfCurrentQuarter: Date; FirstDayOfNextWeek: Date; FirstDayOfNextWeek10D: Date; begin // Current Month Start and End Dates StartDate := System.CalcDate(‘<-CM>’, Today); EndDate := System.CalcDate(‘<CM>’, Today); // Previous Month Start and End Dates TodayDate := TODAY; FirstDateOfPreviousMonth := CALCDATE(‘<-1M>’, CALCDATE(‘<-CM>’, TodayDate)); LastDateOfPreviousMonth := CALCDATE(‘<-1M>’, CALCDATE(‘<CM>+1D’, TodayDate) – 1); // Next Month Start and End Dates FirstDateOfNextMonth := CALCDATE(‘<+1M>’, CALCDATE(‘<-CM>’, TodayDate)); LastDateOfNextMonth := CALCDATE(‘<+1M>’, CALCDATE(‘<CM>+1D’, TodayDate) – 1); // First and Last Date of the Current Year FirstDateofYear := CALCDATE(‘<-CY>’, TodayDate); LastDateOfYear := CALCDATE(‘<CY>’, TODAY); // First Day of the Next Quarter FirstDayOfNextQuarter := CALCDATE(‘<+1Q>’, CALCDATE(‘<-CQ>’, TodayDate)); // Last Day of the Current Quarter LastDayOfCurrentQuarter := CALCDATE(‘<CQ>’, TODAY); // First Day of the Next Week FirstDayOfNextWeek := CALCDATE(‘<+1W>’, CALCDATE(‘<-CW>’, TodayDate)); // First Day of the Next Week + 10D FirstDayOfNextWeek10D := CALCDATE(‘<+1W>+10D’, CALCDATE(‘<-CW>’, TodayDate)); Message( ‘Current Month: ‘ + ‘\’ + ‘Start Date: %1, End Date: %2’ + ‘\’ + ‘\’ + ‘Previous Month: ‘ + ‘\’ + ‘Start Date: %3, End Date: %4’ + ‘\’ + ‘\’ + ‘Next Month: ‘ + ‘\’ + ‘Start Date: %5, End Date: %6’ + ‘\’ + ‘\’ + ‘Current Year: ‘ + ‘\’ + ‘Start Date: %7, End Date: %8’ + ‘\’ + ‘\’ + ‘Next Quarter: ‘ + ‘\’ + ‘Start Date: %9’ + ‘\’ + ‘\’ + ‘Current Quarter: ‘ + ‘\’ + ‘End Date: %10’ + ‘\’ + ‘\’ + ‘Next Week: ‘ + ‘\’ + ‘Start Date: %11’ + ‘\’ + ‘\’ + ‘Next Week + 10D: ‘ + ‘\’ + ‘Start Date: %12’, StartDate, EndDate, FirstDateOfPreviousMonth, LastDateOfPreviousMonth, FirstDateOfNextMonth, LastDateOfNextMonth, FirstDateofYear, LastDateOfYear, FirstDayOfNextQuarter, LastDayOfCurrentQuarter, FirstDayOfNextWeek, FirstDayOfNextWeek10D ); end; } Why Use CALCDATE in Business Central? The CALCDATE function is incredibly useful for automating and simplifying date-based calculations in Microsoft Dynamics 365 Business Central. Whether you are calculating due dates, generating reports based on time periods, or working with recurring events, CALCDATE saves time and reduces the chances of errors by automating these calculations. Here are some scenarios where CALCDATE can be particularly useful: To conclude, the CALCDATE function is a vital tool for anyone working in Microsoft Dynamics 365 Business Central. It simplifies the process of calculating dates based on specific time intervals, allowing users to manage and manipulate time-based data with ease. By understanding its syntax and functionality, you can unlock the full potential of CALCDATE and streamline your business processes. If you’re a developer or power user, mastering the CALCDATE function will not only enhance your efficiency but also give you greater control over your business data and operations. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Maximizing Sales Productivity with Dynamics 365 CE: The Power of Process Automation
In the fast-evolving business landscape, sales leaders and business owners—whether new startups or established enterprises—face an unprecedented challenge: how to scale efficiently while maintaining a competitive edge. The digital revolution has created a vast ecosystem of tools, but many businesses are still unsure of how to leverage them effectively. For existing businesses, the challenge lies in moving away from manual data entry, disjointed workflows, and delayed decision-making that hinder productivity. Many companies still rely on outdated methods like Excel sheets, paperwork, and disconnected systems, leading to inefficiencies and lost revenue. For new or growing businesses, the challenge is different—they need to build a scalable foundation from day one, ensuring that the right digital tools are in place to support growth, automation, and decision-making. This is where Microsoft’s cloud ecosystem, particularly Dynamics 365 CE, Power Platform, and Power BI, plays a critical role in setting up businesses for long-term success. Automation is no longer just an operational advantage; it is a strategic imperative. Leveraging these tools, organizations can create a seamless, data-driven ecosystem that empowers sales teams to work smarter, not harder. But automation must be approached thoughtfully. It’s not about replacing human intuition; it’s about enhancing it. The Business Challenge: Automation is for Everyone, Not Just Tech Giants A common misconception is that automation is reserved for large enterprises with vast IT budgets. However, small and mid-sized businesses, as well as new startups, can also harness automation to streamline operations and scale efficiently. The key lies in understanding where automation can add value and how leaders can architect a strategy that integrates human judgment with system intelligence. Consider a mid-sized manufacturing firm that still manages leads and customer follow-ups manually. The sales team spends hours logging interactions, tracking deals, and following up via emails, leading to lost opportunities. By implementing Power Automate with Dynamics 365 CE, the company can: For a new business venturing into the cloud ecosystem, automation is a game-changer from day one. Instead of relying on traditional methods, they can: The result? More deals closed in less time, with greater accuracy and a human-first approach to relationship-building. The “ACTION” Framework for Sales Automation (Automate, Connect, Track, Improve, Optimize, Nurture) Sales Process Automation: From Lead to Close with Structured Chaos The “SMART” Approach to Sales Automation (Simplify, Monitor, Automate, Refine, Transform) Example 1: Automating Lead Qualification Imagine a sales rep manually filtering through hundreds of incoming leads to identify high-potential prospects. This process is not only time-consuming but also prone to bias. With AI-powered lead scoring in Dynamics 365 CE, the system automatically: Example 2: Automated Follow-Ups to Prevent Lost Deals A major challenge in sales is following up consistently. Research suggests that 80% of sales require five follow-ups, yet many reps give up after one or two. With Power Automate, businesses can: These micro-automations ensure no lead falls through the cracks, keeping the pipeline healthy and sales reps focused on closing deals. Power Virtual Agents (Copilot Agents): Revolutionizing Customer Engagement With the rise of AI, Power Virtual Agents, now called Copilot Agents, have transformed how businesses handle customer engagement and service. These AI-driven chatbots can: CRM Integration: The Power of a Unified System Many organizations use third-party tools for sales, marketing, and customer service. However, seamless CRM integration with Dynamics 365 CE provides unmatched insights and operational efficiency. By integrating with external platforms: Stakeholders & Business Owners: Making Data-Driven Decisions For business owners and key decision-makers, automation isn’t just about efficiency—it’s about strategic growth and profitability. By leveraging AI and automation tools, they can: Challenges in Sales Automation and How to Overcome Them 1. User Resistance to Automation 2. Integration Difficulties 3. Lack of Proper Communication 4. Data Quality Issues Conclusion: The Future of Business is Automated, But Still Human Automation is not a replacement for human expertise—it’s a force multiplier. Businesses that embrace automation with a strategic, human-first approach will thrive in the modern market. By leveraging Dynamics 365 CE, Power Platform, and Power BI, businesses can build a scalable, insight-driven ecosystem that not only improves sales productivity but future-proofs the organization for long-term success. I hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Seamlessly Importing Images via URLs in Bulk into Business Central
Whether you’re adding product catalogs or updating images for an extensive inventory, having an efficient way to bulk import images can save time and effort. In this blog post, we will walk you through the steps to import images in bulk into Business Central, providing you with a seamless method to enhance your product data. In today’s fast-paced business environment, efficiency and accuracy in managing product data are crucial for maintaining a competitive edge. Microsoft Dynamics 365 Business Central (BC) is a comprehensive enterprise resource planning (ERP) system that integrates all business functions into one platform. One of the most time-consuming tasks for businesses, especially those with large inventories, is managing and uploading product images. 1. Create a Codeunit or Processing Report: Since Business Central doesn’t have a built-in feature for bulk image import, you can create a custom codeunit or processing report to handle this task. In this example, we’ll use a codeunit. 2. Add a New Field for Image URL: Create an Item Table Extension and add a new field called “Product Image URL” to the Item table. This field will hold the URL or path for each product image. 3. Set the Image URLs Using a Configuration Package: Use a config package to set the image URLs in the “Product Image URL” field for each item. This is where you will provide the path or URL for the image associated with each product. 4. Run the Codeunit to Update Items: After populating the image URLs via the configuration package, run the codeunit in the foreground. The codeunit will process each item and update the products that have a valid URL set, linking them to the corresponding images. Below is the logic which will use the url which is set in Item master table and update all the data in bulk codeunit 50112 SetImageUrl { Permissions = tabledata Item = rimd; Description = ‘Set Image URL’; trigger OnRun() var RecItem: Record Item; Rec_Item1: Record Item; ItemPage: page “Item Card”; PictureURLDialog: Page “Picture URL Dialog”; begin Clear(RecItem); RecItem.Reset(); RecItem.SetFilter(“Product Image URL”, ‘<>%1’, ”); if RecItem.FindSet() then repeat Rec_Item1.SetRange(“No.”, RecItem.”No.”); if Rec_Item1.FindFirst() then begin PictureURLDialog.SetItemInfo(Rec_Item1.”No.”, Rec_Item1.Description, Rec_Item1.”Product Image URL”); PictureURLDialog.ImportItemPictureFromURL(); end; until RecItem.Next() = 0; end; } This approach allows you to automate the bulk import of product images into Business Central efficiently. Conclusion Importing images in bulk into Business Central can significantly enhance your operational efficiency and ensure your product records are complete and accurate. By following the steps outlined in this blog, you can easily upload and manage product images, creating a more professional and visually appealing online presence, as well as improving internal processes. Whether you’re dealing with thousands of items or just a few, these steps will guide you through the bulk image import process, saving time, reducing errors, and providing a better user experience for both your team and customers. If you need further assistance or have specific questions about your Business Central setup, feel free to reach out for personalized guidance. Happy importing! We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Phases of Quality Control in Business Central – 3
Welcome back to our series on navigating the GMP-compliant quality control module in Business Central! In our previous blog, we took you through the process up to the Goods Receipt Note (GRN), laying the foundation for efficient and compliant quality management. In this blog, we’ll dive deeper into an equally important aspect of the process: the quality control of raw materials and packing materials. Ensuring that your raw materials meet the necessary standards is crucial for maintaining product integrity and compliance with regulatory requirements. Let’s explore how Business Central helps streamline this critical step in the manufacturing process. Previously, we discussed the process of posting a purchase order in Business Central, which triggers several behind-the-scenes actions. When the purchase order is posted, the system generates a posted purchase receipt along with an inspection datasheet document. This seamless integration ensures that both the material tracking and quality control processes are aligned. In the background, the system also handles the transfer of items between locations. For instance, the raw material (RM) item gets posted to the location specified in the purchase order. If the item is Quality Control (QC) enabled, an inspection datasheet is automatically created upon posting. The system then transfers the item from the purchase order location to an “undertest” location, where the quality control checks are carried out before the materials are accepted into stock. Inspection Datasheet When a Goods Receipt Note (GRN) is created, an inspection datasheet is automatically generated. This datasheet pulls details from the posted purchase order, such as product information, quantities, and other relevant data. The document type for this datasheet is classified as “Purchase” to indicate that it pertains to a purchased item from a vendor. Users have the ability to edit the sample quantity on the inspection datasheet. This allows for flexibility in determining how much of the received goods will be inspected or tested When an inspection datasheet is generated from the Goods Receipt Note (GRN), the Specification ID specified on the Purchase Order (PO) for each item is automatically transferred to the datasheet. The Specification ID links to a detailed set of standards or criteria that are predefined for the item (e.g., testing methods, acceptable ranges for quality attributes). The user performs the required testing on the received goods, and after testing, the user records the test results (e.g., pass/fail, measured values) in the specification table on the inspection datasheet. After all the data is filled and verified, the user posts the inspection datasheet. Posting the datasheet signifies that the inspection process is complete, and the items are ready for further processing or acceptance. Once posted, the system creates a final, official version of the inspection datasheet, capturing all test results and any other relevant data entered during the QC process. Along with the posted datasheet, the system generates an Inspection Receipt. This receipt serves as confirmation that the goods have passed or failed inspection, and it also indicate the status (e.g., approved or rejected) Inspection Receipt On the Inspection Receipt page, the user will review the test results and specifications from the inspection datasheet. a) Based on these results, the user decides whether to accept or reject the lot. Accept: If the results meet the required specifications. Reject: If the results fail to meet the specifications. b) After making the acceptance or rejection decision, the user will enter the location and bin information for the lot to be transferred. Undertest Location: Initially, the lot is in a holding or undertest location. Accepted Lot: If the lot is accepted, the user will move it to an appropriate approved location (e.g., RM-approve for raw materials). Rejected Lot: If the lot is rejected, the user will move it to a rejected location (e.g., RM-reject for raw materials). The bins will vary based on whether the lot is accepted or rejected and its type .Once posted, the system creates a final, posted inspection receipt. This document becomes part of the system’s records, confirming the final status of the lot. The lot is moved to its designated location (approved or rejected), and inventory records are updated accordingly. A transfer entry will be created in the Item Ledger to reflect that the material has been moved to an approved/Rejected location (e.g., RM-approve/reject). c) Posted inspection receipt On the posted inspection receipt page, the user can initiate the generation of the COA report. The Certificate of analysis(COA) report contains detailed test results, pass/fail statuses, specifications, and approval information, providing a formal certificate of compliance. Conclusion: In this blog, I’ve highlighted how a streamlined Quality Control (QC) process ensures that only materials meeting your standards are accepted into inventory. From automated inspection datasheets to real-time inventory updates and generating Certificates of Analysis (COA), you can be confident in the quality and compliance of every batch. Why It Matters for Your Business: a) Ensure Consistent Quality: Only accept materials that meet your standards. b) Save Time: Automation reduces manual work and errors. c) Stay Compliant: Easy access to COAs for audits and regulatory checks. d) Build Trust: Your customers will appreciate your commitment to quality. Ready to optimize your QC process and improve efficiency? We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Phases of Quality Control in Business Central – 2
In this continuation of our journey through the GMP-compliant quality control module in Business Central, we’ll be diving into key components that come into play post-MRP (Material Requirements Planning/Planning worksheet) run. The MRP identifies what’s required to meet demand, but ensuring that all materials align with quality standards demands a closer look at each phase—from defining specifications to the actual receipt of goods. This blog will cover four essential steps: setting up a Specification Master for Quality, creating a Purchase Indent to formalize demand, generating a Purchase Order to confirm procurement, and finally, processing the Goods Receipt Note (GRN), where quality checks ensure that only materials meeting specified standards are accepted. Each of these steps is integral in maintaining a seamless, controlled flow of materials that meet stringent quality requirements. Through these processes, we not only streamline procurement but also build quality control measures right into the purchasing workflow. Let’s explore how Business Central’s quality control module facilitates this alignment with Good Manufacturing Practices (GMP), helping to achieve a compliant, efficient supply chain. Specification Master In the Specifications Master is a centralized repository of quality parameters. It defines acceptance criteria for raw materials, intermediates, and finished products, ensuring compliance with regulatory standards and maintaining consistent product quality throughout procurement, production, and delivery processes. Purchase Indent Purchase indent can be created from the planning worksheet where system calculates the shortages. The EOPA no. which is tagged in the sales order will also be tagged against the shortage raw material in the planning worksheet. The quantity to purchase can be adjusted on purchase indent. Once necessary information is filled in, the purchase indent can be converted to purchase order. Multiple purchase order can be created from 1 purchase indent till the indent quantity is exhausted. Purchase Order In the purchase order page, location should be where the materials will be received. Let’s call it as quarantine. The locations will be according to the type of the material. Eg. If it is a raw material the location will be RM quarantine. While generating GRN, system creates the posted purchase receipt document and the inspection datasheet. (if the item is QC enabled) Inspection datasheet- It is a page where sampling is performed. The quality control process starts from the inspection datasheet page. Conclusion: Incorporating quality control in procurement ensures GMP compliance from the start. Business Central’s module streamlines this with defined specifications, structured purchasing, and enforced quality checks, creating a seamless and compliant supply chain. We will be continuing the quality control of purchased goods in the next blog. We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.
Seamless Integration between D365 Project Operations & Business Central
Are you an organization who has sophisticated Project needs, however your financial requirements are simple? You may be in a position where you are having Project Operations and Business Central deployed or you are considering going with Project Operations for your sophisticated Project needs, and Business Central because your finances are simple, and you feel D365 Finance & Operations would be an over kill for your requirements. Once you get into this position, you realise that Project operations and Business Central are two disintegrated systems. Microsoft does not provide this integration out of the box. While it does for Finance & Operations, it has left PO and BC integration for the partners to figure out. Why a Single Source of Truth Matters For businesses managing complex projects, real-time, accurate insights into both project progress and financials aren’t a luxury—they’re essential. Without an integrated approach, processes slow down, errors multiply, and operational agility takes a hit. Our Perspective: By integrating D365 Project Operations with Business Central, companies can seamlessly connect project and financial data. This integration reduces errors, unifies workflows, and enables decision-makers to act with confidence. Why Integrated Systems Are Essential As projects scale, cost tracking, billing, and resource management become harder to manage. An integration of D365 Project Operations and Business Central creates a cohesive environment where data flows naturally, helping teams move past the blockers of siloed systems. Here’s How Integration Changes the Game – Unified, Real-Time Data Visibility Imagine having access to all of your financial and project data in one location. Team leads and finance managers can save time, no longer needing to cross-check numbers across systems. Data flows seamlessly between Project Operations and Business Central, enabling accurate budgeting and invoicing. – Automation Cuts Out Tedious Processes Say goodbye to manual reconciliation. Updates made in Project Operations sync directly with Business Central—eliminating double entries and minimizing errors. This enhances accuracy and efficiency, freeing your team members to focus on other things rather than data entry. – End-to-End Project Lifecycle Management This integration supports each project phase, from budgeting and invoicing to reporting. Full visibility means greater accountability, and everyone—from managers to teams—has the insights needed to make informed, timely decisions. – Insights That Drive Better Planning and Execution With integrated analytics and Power BI, you’re not just gathering data; you’re transforming it into actionable insights. View project profitability and resource utilization in one place, enabling better project planning and seamless operations. – Stock scenarios are covered If you are an engineering company running heavy, long term deployment projects, you are probably worried how will Project operations cover the scenarios where I need to have stock consumption on my project tasks. We have you covered here, too, so don’t worry. With the Project operations and Business Central integration we have also figured out how the stocks entries need to flow from Project Operations to Business Central because your stock movements happen in Business Central This will ensure accurate stock consumption against the projects without worrying about what goes on in the background. – WIP tracking With the actuals being passed onto Business Central, your Finance team will have WIP postings in place to give an accurate picture of the progress on the Project. Why Partner with Us? Having guided numerous businesses through D365 implementations, we know how to bridge gaps between project and financial management to unlock greater flexibility and efficiency. Our team is here to tailor this integration to your unique business needs. Ready to See the Difference? Think about your current project and financial workflows. Imagine the time saved and clarity gained by integrating them. Ready to explore what D365 integration can do for your business? Reach out to us at transform@cloudfronts.com for a free consultation, and let’s work toward operational excellence together.
How to Setup and Manage Reminder in Business Central
Are you struggling with keeping track of important deadlines and tasks in Business Central? I’m going to show you how to easily set up and manage reminders, so you never miss a critical follow-up or due date again. Did you know that businesses using reminder systems are 70% more likely to meet their deadlines consistently? In this guide, I’ll walk you through the simple steps to create, customize, and manage reminders in Microsoft Business Central. Get ready to boost your team’s productivity and keep your projects on track! Navigate to Reminder Setup: Conclusion Setting up and managing reminders in Microsoft Dynamics 365 Business Central is a powerful way to streamline accounts receivable and maintain healthy cash flow. By configuring reminder terms, linking them to specific customers, and using Business Central’s automated reminder creation and sending options, businesses can ensure timely payment collections while reducing manual effort. Properly managed reminders not only help businesses stay organized but also improve customer relationships by clearly communicating payment expectations. Regularly reviewing and adjusting reminders allows businesses to stay flexible and responsive, ensuring that the reminder process remains efficient and effective. We hope you found this article useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com