Category Archives: Blog
Resolving SSL/TLS Secure Channel Trust Errors in Dynamics 365 Finance and Operations
Have you ever encountered the error:“The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel”while deploying from Visual Studio to Finance and Operations. This error is often linked to an expired or invalid SSL certificate in your environment. This also shows up as an expired SSL Certificate warning when you open your Finance and Operations environment from the browser. Certificates are critical for securing communication channels, and an expired certificate can disrupt services and integrations.In this blog, we’ll explore the cause of the error and provide steps to resolve it. References Eugene Dmytriienko – Onpremise Certificate Rotation Said Nikjou – Rotate Secrets via LCS MS Docs – Certificate Rotation Configuration In a new cloud hosted environment, the SSL Certificate stays valid for one year by default.Post that, it expires at which point it is essential to renew the SSL Certificate. For Cloud Hosted environments, it is really simple to do via the LCS. Go to LCS and open the environment which has the expired SSL. Click on Maintain and then “Rotate Secrets” In the pop-up menu, select the change type as “Rotate SSL Certificates” After that the environment will go into servicing and the status will reflect “Rotating Secrets” This entire process should take less than 15 minutes. The documentation suggests secrets rotation should show up in the enviroment history however in my attempt it didn’t so I’m not sure if that’s reliable or not or whether that is only for Tier 2 and above environments though that doesn’t make much sense. Anyways, once this is done we can see that the SSL error has been resolved. Conclusion SSL certificates are the backbone of secure communication in Dynamics 365 Finance and Operations environments.An expired certificate can disrupt critical functionalities, but with proper certificate management, such issues can be avoided.Regularly monitor your SSL certificate validity to ensure uninterrupted operations. 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
Share Story :
How to change a Bill of material (BOM) item on a production order
In manufacturing industry, there are scenarios where there is need to change some bill of materials items due to various reasons. i.e. due to lack of availability of original material, or there may be increase in price of original material. & once production order is scheduled then it is not possible to change raw materials. As a result, Microsoft has added a new feature that allows users to switch out BOM items for other items on planned or estimated production orders. This feature is useful for production manager to keep production running as well as to business personnel to keep business running in absence of or lack of required material, provided that alternate material is available. Prerequisites for altering BOM items on production orders: – system must meet the following requirements: Also note that, one can change BOM items only for production orders that have a status of Estimated or Scheduled. 1.Now, will consider finish good L0001 for this example. Finish good number L0001, as per original BOM has raw materials M0001, M0002, M0003, M0004, M0005, M0006 & P0002. 2.Create production order for item L0001. 3.Change status to Estimate. 4.Now check estimation from Manage cost -> View calculation details -> original raw materials are considered for production order. 5.Now to change BOM item go to Production order -> Change BOM item 6.Now select raw material which needs to be replaced “From item” & “To item”. & “To item quantity” specify required quantity of new item. Or if “To item quantity” indicates how much of the new item is needed. 7.In Production order lines Tab, select required production order / Orders in which needs to replace BOM item. Click Ok. 8.Now if we check estimation from Manage cost -> View calculation details -> New raw material is considered for production order. M0007 is considered for production order instead of M0006. & consumption is same as original material as “To quantity” was kept as 0. Conclusion – By activating “Change BOM item” feature on system version 10.0.38 or later, can change BOM item on Estimated or scheduled production orders. 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
Share Story :
How to Set Up a Local Development Environment for D365 Finance and Operations Without Azure Costs
Are you looking for a cost-effective way to set up a development and testing environment for Dynamics 365 for Finance and Operations (D365FO)? If Azure expenses are a concern, deploying a local Virtual Hard Drive (VHD) is a practical alternative. This step-by-step guide will walk you through the process to get started. Why This is ImportantA local VHD setup provides a robust environment for developers to test and build without incurring cloud costs. With sufficient technical planning, you can have a fully functional Dynamics 365 instance running locally. Step 1: Download the VHD Step 2: Set Up the Virtualization Environment Step 3: Configure the Virtual Machine Step 4: Finalize Setup Step 5: Launch D365FO Environment Tips for Maintenance By following these steps, you can set up a robust development environment for D365FO without relying on Azure. 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
Share Story :
Shopify Meets Dynamics 365 Finance and Operations: A Guide to Integration [Part 2]
Integrating Shopify with Dynamics 365 Finance and Operations (FnO) requires structured data management and seamless automation. This blog covers how to create a setup table and page in FnO to securely store API credentials and endpoints. In the next blog, we’ll create an automated batch job to push product data from FnO to Shopify, automating product creation on the e-commerce platform. If you are new to this series, you can refer to my blog here for setting up the necessary Shopify components for getting started. Pre-requisites Shopify API credentials (API Key, API Secret, Auth Token)Access to the development environment in Dynamics 365 Finance and Operations. References MS Docs – Create a table MS Docs – Create a form Configuration Step 1: Create the model and project I’m going to be starting from scratch so I’ll create a new model for this. If you already have a model you’ll be using, you can skip this part. Open Visual Studio and click on Continue without Code. Click on Extensions > Model Management > Create Model. Give your model an appropriate name. After everything is selected, click on Next. Give your solution/project appropriate names and click on Create. Step 2: Create Extended Data Types Right click on the project, click on Add > EDT > String. I’ve also created a Label file to store the labels. In the properties of my EDT, I’ll set the string length to 40 and set the label. Similarly I create 2 more EDTs, with the Shopify Auth Token with string size 50. Step 3: Create Table Right click on the project, click on Add > Table. Give it an appropriate name and click on Add. Then, we’ll drag the three EDTs into the fields section of table and set the label to the table. I’ll also add a Parameters Key from the Application Platform Module Next, we create an index on the basis of the ParametersKey (renamed to Key) Drag the Key field into the newly created index and be sure to set the “Allow Duplicates” property to “No” Then we set the necessary properties. This is useful as this will prevent multiple records in our setup table. Then right click on the Methods and click on “New Method” Then add this method logic. Step 4: Create Form Right click on the project, click on Add > Form Give it an appropriate name and click on Add. Right click on the Pattern > Apply Pattern > Table of Contents Right click on the Pattern > New > Tab. Next drag your table onto the Data Sources tab. Select the datasource you just created and set the below properties. Next right click on your Tab and click on “New Tab Page” Right click on the newly created tab page, click on New > Group Right click on the Group > Add > Static Text. Then, right click on the “GeneralTabPage” and add another tab.Inside that, add another tab page (as prescriped by the pattern) and set the pattern of the inner tab page to be “Fields and Field Groups” Inside this tab page, you can directly drag and drop your fields. For the “Shopify Auth Token” set the “Password Style” property to “Yes” Right click on Methods > Override > init. Call the find method of the Integration Parameters in the init method of the form. This ensure that the record is created if it doesn’t exist already. Step 5: Create the menu item for the form Right click on the Project > Add > New Item. In the menu click on User Interface and select Display Menu item. Give it an appropriate name and click on Add. Assign the appropriate label and set the form we just created into the object field. Step 6: Extending standard menu Go to Application Explorer > Click on User Interface > Menus > right click on “System Administration” and click on “Create Extension” Go to Solution Explorer > Click on the newly created Menu Extension. Right click on the title and click on New > Sub Menu. Give it an appropriate name and an appropriate label. Drag and drop your display menu item into the submenu. Step 7: Configure Security Right click on the project > Add > New Item Go to Security and select Security Privilege. Give it an appropriate name and click on Add. Drag and drop your menu item into the “Entry points” tab of the Security Privilege. Similarly create a Security Role and give it an appropriate name. Then drag your privilege into the role. Set a label to this role. Build the entire project, sync it with database and deploy it. Search for”Assign users to roles” to assign the security role to yourself. Select the role and click on “Manually assign / exclude users” Select your User and click on Assign to role. Click on Modules > System Administration > Shopify Integration > Shopify Integration Parameters. Conclusion This blog demonstrated how to create a setup table and page in Dynamics 365 Finance and Operations for securely storing Shopify API credentials.In the next blog, we’ll focus on handling product updates and synchronization between Shopify and Finance and Operations. 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
Share Story :
Shopify Meets Dynamics 365 Finance and Operations: A Guide to Integration [Part 1]
Introduction The integration of Shopify with Dynamics 365 Finance and Operations (FnO) starts by creating a secure link.The initial step in this process involves generating an API token within Shopify, serving as the credential for verified communication between both systems.In this blog I will walk you through the steps to create the API token, facilitating a seamless beginning for your integration. Pre-requisites Access to the Shopify Admin account with appropriate permissions to create private apps or access custom apps.API access enabled in your Shopify store.A basic understanding of API concepts and authentication methods. [Available in Reference]The URL or endpoint details where the API calls will be directed. [Available in Reference] References Shopify – How to generate API token ResfulAPI.net – Basics of REST APIsShopify.dev – REST API Documentation Configuration Step 1: Access the Shopify Admin Portal Log in to your Shopify store’s Admin account. Navigate to Apps from the main menu. Step 2: Create a Custom App Click on Develop Apps (available under Apps). Select Create an App and provide a name (e.g., “Dynamics365_Integration”). Assign a developer or admin as the app owner. Step 3: Configure API Scopes After creating the app, click on it to open the configuration page. Under the Configuration section, define the API scopes required for integration based on your requirements. You can change these later if required. For example: Click on Save to save the changes. Step 4: Generate the API Token Once scopes are set, click on the API credentials tab. Click Install App to generate the credentials. A unique Access Token will be displayed. Copy and securely store this token, as it will not be shown again. If you scroll down, you’ll also see the API Key and API Secret; store these values as well. Step 5: Test the Token Use a tool like Postman to test the API token. Set up a GET request to an API endpoint (e.g., https://<API KEY>:<API Secret>@<Store Name>.myshopify.com/admin/api/2023-07/products.json). Include the token in the header as X-Shopify-Access-Token. Verify the response to confirm the token is working correctly. Or simply (https://<Store Name>.myshopify.com/admin/api/2023-07/products.json) Conclusion The API token is your gateway to integrating Shopify with Dynamics 365 Finance and Operations. By following this guide, you’ve taken the first critical step toward seamless data flow between your e-commerce platform and back-office operations. In the next blog, we’ll explore how to configure Dynamics 365 Finance and Operations to connect with Shopify and start synchronizing data. 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
Share Story :
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.
Share Story :
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
Share Story :
Unlocking the Power of Ternary Operators and Extendable Interfaces in Business Central
Developers are continually looking for ways to write cleaner, more efficient code. Two powerful tools that have emerged to meet this need are the ternary operator and extendable interfaces. This blog explores how these features can enhance your AL code, making it more readable and maintainable. Ternary Operator in Business Central The ternary operator, introduced in the 2024 release wave 2 of Business Central, is a concise way to perform conditional assignments. It offers a streamlined alternative to traditional if-else statements, promoting code clarity and reducing verbosity. Syntax and Example The ternary operator in AL has the following syntax: condition ? exprIfTrue : exprIfFalse Here’s an example that demonstrates its usage: pageextension 50300 CustomerListExtension extends “Customer List” {layout { addlast(Content) { field(“Customer Status”; IsCustomerActive) { ApplicationArea = All; } }} var IsCustomerActive: Text; trigger OnAfterGetCurrRecord();begin IsCustomerActive := Rec.Blocked = Rec.Blocked::” ” ? ‘Active’ : ‘Inactive’;end;} In this example, the ternary operator is used to determine whether a customer is active or inactive based on their Blocked status. The result is a concise and more readable conditional assignment. Extendable Interfaces in Business Central Extendable interfaces provide a modular and flexible way to define reusable logic across different components in Business Central. They allow developers to create scalable systems that can easily adapt to changing business requirements. Defining and Implementing Extendable Interfaces Base Interface: interface INotificationProvider {procedure SendNotification(Message: Text): Text;} Extended Interface: interface INotificationProviderExt extends INotificationProvider {procedure SendEmailNotification(Message: Text): Text;procedure SendSMSNotification(Message: Text): Text;} Implementing the Interfaces in Codeunits: Email Notification Provider:codeunit 50301 EmailNotificationProvider implements INotificationProvider {procedure SendNotification(Message: Text): Text;begin exit(‘Email sent with message: ‘ + Message);end;} SMS Notification Provider:codeunit 50302 SMSNotificationProvider implements INotificationProvider {procedure SendNotification(Message: Text): Text;begin exit(‘SMS sent with message: ‘ + Message);end;} Advanced Notification Provider:codeunit 50303 AdvancedNotificationProvider implements INotificationProviderExt {procedure SendNotification(Message: Text): Text;begin exit(‘Notification sent with message: ‘ + Message);end; procedure SendEmailNotification(Message: Text): Text;begin exit(‘Email sent with message: ‘ + Message);end; procedure SendSMSNotification(Message: Text): Text;begin exit(‘SMS sent with message: ‘ + Message);end;} Real-World Application Let’s implement these interfaces in a page extension to add actions for sending notifications to customers. pageextension 50300 CustomerListExt extends “Customer List” {actions { addafter(ApplyTemplate) { action(SendEmail) { ApplicationArea = All; Image = Email; Caption = ‘Send Email’; Promoted = true; PromotedCategory = Process; trigger OnAction() begin iNotificationProvider := EmailNotificationProvider; Message(iNotificationProvider.SendNotification(‘Email message to customer’)); end; } action(SendSMS) { Image = Phone; Caption = ‘Send SMS’; ApplicationArea = All; Promoted = true; PromotedCategory = Process; trigger OnAction() begin iNotificationProvider := SMSNotificationProvider; Message(iNotificationProvider.SendNotification(‘SMS message to customer’)); end; } action(SendAdvancedNotification) { Image = Notification; Caption = ‘Send Advanced Notification’; ApplicationArea = All; Promoted = true; PromotedCategory = Process; trigger OnAction() begin iNotificationProviderExt := AdvancedNotificationProvider; Message(iNotificationProviderExt.SendEmailNotification(‘Advanced Email message to customer’)); Message(iNotificationProviderExt.SendSMSNotification(‘Advanced SMS message to customer’)); end; } }} var iNotificationProvider: Interface INotificationProvider; iNotificationProviderExt: Interface INotificationProviderExt; EmailNotificationProvider: Codeunit EmailNotificationProvider; SMSNotificationProvider: Codeunit SMSNotificationProvider; AdvancedNotificationProvider: Codeunit AdvancedNotificationProvider;} This example demonstrates how to use extendable interfaces to create a flexible and maintainable notification provider system in Business Central, allowing for different types of notifications to be added seamlessly. Conclusion The ternary operator and extendable interfaces in Business Central are powerful tools that can significantly enhance your AL code. By using the ternary operator, you can streamline conditional logic and improve code readability. Extendable interfaces, on the other hand, allow for modular, scalable solutions that can adapt to changing business needs. Embrace these features to build more efficient, maintainable, and future-proof solutions in Business Central.
Share Story :
Sales Return process in Dynamics 365 Finance and Operations Part 2
In the previous part of my blog, I explained about the Credit Only process. In this part of my blog, I will go through the Physical Return process. The Physical return process is determined based on the Disposition Code that is assigned to that Return Order. Disposition Codes in D365 Finance and Operations: Disposition codes in Dynamics 365 Finance and Operations (D365FO) are essential tools used to categorize and manage returned items. These codes help businesses decide what to do with products that customers send back, whether it’s restocking, repairing, or scrapping them. By using disposition codes, companies can streamline their return processes, maintain accurate inventory records, and ensure that returned items are handled efficiently and appropriately. This not only enhances operational efficiency but also helps in improving customer satisfaction by managing returns in a clear and organized manner. Below is the List of Dispositions Codes that are available in D365 FNO: These Disposition codes are available as Standard Functionality in D365 FNO. You can also create new codes based on the business requirements. In this part of the blog, I will walk you through the Replace Item and Credit Customer scenario. Let’s take a scenario where we have sold 5 items to the customer and after delivery the customer does the Quality check in which 2 products fail due to quality issues. The customer has Scrapped those products on our behalf and now we will provide the customer with the replacement items. For that: Go to Sales and Marketing>Sales Returns>All Return Orders. On the All return orders page click New to create a New Sales Return Order. Select the Customer for which the Return Order is to be created. Enter the Site, Warehouse, RMA number and other details and click OK. In the first part of the blog I created the Return order using the Find Sales Order function so in this part I will directly add the line with negative quantity. In the below screenshot you can see that I have added a line for the Product P-000015 with negative quantity. The next step is to register the Line with the Replace and Credit customer Disposition code. For that click on the Update Line option in the Lines tab then from the drop down click on the Registration option. Then from the Disposition Code drop down select the Replace and Credit Customer option. Then add the registration line then click on Confirm Registration. In the below screenshot you can see the Line status is changed to Registered and the Return order status is changed to Open. Now if you go to the All-Sales Order Page you can see that a New Sales Order is created with the Order type as Returned Order with the Status as Open Order. Now if you open the Sales Order and check the lines the quantity of the line will be exactly same as that of the Return order. The next step is to create a Replacement order as we have selected the Disposition Code of Replace and Credit. For that click on Update Line and Click Registration which will change the Line status from Registered to Expected. As you do this you will notice that the Post Packing Slip button is now disabled, and you can see that the Replacement Order button is now available. As our disposition code is Replace and credit Customer the next step is to create a Replacement Order. For that click on the New Replacement Order button. Add the same site and Warehouse as Return order and click Ok this will create a Replacement Order. After Replacement Order is created go back to the Return Order again and Click Registration and select the Credit disposition code which will Credit the Amount back into the Customer’s account. Now after that Post the Packing slip for the Return order which will change the Return Order status to Received. Then go ahead and Invoice the Return Order from the All-Sales Order page which will again change the Return Order status to Closed. Then go ahead and process the Replacement Sales Order. If you go to the Customer transaction and check, you can see that the Amount is credited back in to the Customer Account. So, this completes the Sales Return Process of Return and Credit to customer. 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
Share Story :
Automate Asset Leasing through Microsoft D365 F&O
Leasing refers to a contractual arrangement where one party (the lessee) pays the other party (the lessor) for the use of an asset, such as property, vehicles, or equipment, for a specified period. Lease accounting is the process by which companies record the financial impacts of their leasing activities. It has become increasingly important due to new accounting standards that require most leases to be recognized on the balance sheet, enhancing transparency and providing a clearer picture of a company’s financial obligations. Microsoft Dynamics 365 Finance can help companies (CFOs, Finance & accounts team) to set up, operate and manage multiple lease accounting. The work around goes as listed below : 2. i. Create Lease Books: Asset Leasing =>Setup=> Lease Books ii. Define Interest as Expense Type iii. Define Lease rate of interest as Index rate type. iv. Define General Ledger mapping, number sequences and journal types in Asset leasing parameters. 3. Create New Lease in Lease Summary by giving unique Lease ID and update details in Open Books : Lease start date, Vendor Details, Lease Term 4. Run each schedule to ensure that journal entries are made for the chosen period and schedules are generated for the lease period. 5. For any modification in lease terms, termination or revaluation use the Maintain function. 6. Using the Inquiries and Reports – all lease related reports can be used to review and monitor the financial impact of leases. This way the entire lease accounting can be automated whether asset leasing is part or core business of the company. It takes care of the increasing number of leases with comfort and avoids risk of errors and miscalculations. 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
 
								 
															 
    