D365FO Archives -

Tag Archives: D365FO

Cancellation of Old Purchase Orders in D365 F&O

In Dynamics 365 Finance and Operations (D365 F&O), managing the lifecycle of purchase orders (POs) is important for maintaining accurate procurement, inventory, and financial records. Over time, companies may accumulate old or obsolete purchase orders that are no longer valid — whether due to supplier changes, business needs evolving, or operational delays. Cancelling these POs helps keep the system clean, improves reporting accuracy, and prevents unnecessary financial commitments. Purchase orders can have the following status & stages: Stage Status Confirmed Invoiced Rejected Received Draft Open order Approved Cancelled In review   Finalized   From Finance & Accounts point of view, Open PO means commitments to order and contingent financial liabilities. Rationale behind cancelling of old Pos: Cancelling old or unordered POs ensures that your records are up to date and reflective of actual business needs, which is important for financial planning, reporting, and auditing. Companies can streamline their procurement processes by maintaining only those Purchase Orders which are active and required as per current business needs. This was an issue faced by one of our Client in Oil and Gas industries which was resolved by using the below method. Stage Status Finalized Invoiced   Received Closing of Purchase orders: Purchase Orders can be closed only if all the items contained in the Purchase order are invoiced and the delivery is completed. Cancelling of Purchase orders: Purchase orders having In principle, in the above cases, PO is no longer required, and requirements are not fulfilled though the particular PO. Hence, it is justified to cancel the PO and not close it. Stage Status Confirmed Open order Rejected   Draft   Approved   In review   Click on Cancel quantity. In case of approved & draft purchase orders. Deactivate the workflow and continue the same process. We can delete the purchase orders which are in draft, however, then it would not be traceable in the system and the number sequences would be disrupted. By following the above process, Companies can maintain only active Purchase Orders, thereby, showing the actual committed value of an organization. Effectively cancelling old purchase orders in D365 F&O is crucial for maintaining clean procurement records, improving reporting accuracy, and ensuring better control over open financial commitments. By following systematic cancellation processes and adhering to best practices, organizations can avoid confusion, prevent overstatement of liabilities, and streamline operational workflows. Regularly reviewing and closing obsolete purchase orders not only enhances system performance but also supports better decision-making for purchasing, budgeting, and inventory management. A disciplined approach to managing old POs ultimately leads to greater efficiency, improved compliance, and stronger financial governance within D365 F&O. 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.

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

Workspace Personalization in Microsoft Dynamics 365 Finance and Operations

Personalization stands as a robust feature within Microsoft Dynamics 365 Finance and Operations, significantly enhancing consultants’ and users’ experiences while interacting with the platform. Among these personalization options, the workspace stands out as a feature I routinely recommend to end-users. Its advantages span from streamlining daily business activities, time-saving capabilities, and improved visibility into work items that require attention, to the crucial benefit of reducing clicks and navigation across multiple screens. In this blog, I aim to demonstrate the process of creating a new workspace and sharing it with the necessary users. Creating a Workspace To initiate the personalization of your Dynamics 365 experience, follow these steps to craft a new workspace tailored to your specific requirements: Right-click on the right side blank screen and select “Personalize TitlepageContainer.” Your newly created workspace will now appear on the dashboard. After completing the initial steps, it’s time to fine-tune the configuration to suit your operational needs: Navigate to the required form or list page that you wish to include in the workspace. Select the presentation type: Tile, List, or Link. Additionally, you can create a saved view on the required form by applying filters and then add that saved view to the workspace. For instance, from the “All Sales Order” page, applying a filter for invoiced orders and saving that view to be added to the workspace. For this blog’s demonstration, I’ll illustrate adding the “Sales Order Invoice” to the new workspace. Navigate to the “Open Invoice” page. Click on the “Options” tab within the action tab. Select “Add to Workspace.” Choose the workspace created in the first part of the blog. This showcases the output when you click on the Custom workspace in Dashboard Configure Workspace Post workspace creation and configuration, the subsequent crucial step is sharing it with the relevant user groups: Identify User Groups: Determine the teams or individuals who would benefit from accessing this customized workspace. In conclusion, creating and sharing personalized workspaces in Microsoft Dynamics 365 Finance and Operations empowers users with tailored interfaces, offering enhanced efficiency, streamlined workflows, and a more intuitive user experience. I hope these steps will guide you in optimizing your Dynamics 365 experience, boosting productivity, and attaining better outcomes for your business operations.

Deployment failed In LCS Because Of DB Sync error

In Dynamics 365 for Finance and Operations we have to deploy changes to environments by creating deployable packages and installing these via Lifecycle Services (LCS). This usually works pretty well, but sometimes it can fail. While doing environment update and getting error in Step 25.  Database Sync error. You can resolve this issue by performing below steps: Open environment VM, Inside VM locate the below path. Locating DBSync DbSync (syncEngine.exe) will typically be located in the following directory under the service volume: \AosService\PackagesLocalDirectory\bin Open Cmd in administartor mode and Run Command: Running DBSync Below is the template for the command to run a Full Sync. [ServiceDriveLetter]:\AOSService\PackagesLocalDirectory\bin\syncengine.exe -syncmode=”fullall” -metadatabinaries=”[ServiceDriveLetter]:\AOSService\PackagesLocalDirectory” -connect=”Data Source=[Servername];Initial Catalog=[DatabaseName];Integrated Security=False;User ID=[];Password=[]” -verbosity=”Diagnostic” > DbSync.log 2> DbSync.err Replaced with below details: [ServiceDriveLetter] = G [ServerName] = customerServer [DatabaseName] = customerAxDb [UserName] = ________            // Typically: axdbadmin [Password] = ________ After run this command, go to below path. Open  DBSync file, you will see the Output of the DBSync. Once it’s successfully Sync. Retry the deployment then this issue will resolve. Hope this help!!

Automated statement Posting in D365 Retail (Commerce)

The Retail statement functionality in D365F&O is the process that puts everything together and makes sure transactions from POS flows into D365F&O HQ.   If you are using shift-based statements, a statement will be calculated when the shift is closed. Using shift-based closing can be tricky, but I highly recommend doing this! After the statement is calculated and there are no issues, the statement will be posted, and an invoiced sales order is created. 1. Manually create a new “blank” batch job 2. Click on “View Tasks”. 3. Add the following 4 classes: Class Name Task Description RetailCDXScheduleRunner Upload channel transaction(P-job) RetailTransactionSalesTransMark_Multi  Post inventory RetailEodStatementCalculateBatchScheduler Calculate statement RetailEodStatementPostBatchScheduler Post statement Here I choose to include upload of transactions, post inventory, calculate statement and post statement into a single batch-job. Click on each task, Under the general tab. Set ignore task failure to YES.  Do this process for all task in the job. And click on the “parameters” to set the parameters on each task, like what organization notes that should be included. Add this parameter to Post inventory, Calculate Statement, Post statement. On each batch task I also add conditions, so that the previous step needs to be completed before the batch-job starts on the next. Provide condition to Post inventory, Calculate Statement, Post statement according to there sequence. Click on recurrence and set the recurrence that when the statement done. The benefit of this is that when you are opening the statements workspace you mostly see statements where there are cash differences, or where the issues on master data. Now you will able to post statement automatically as per set time in recurrence. Hope this helps!

D365 FO: Different ways to deploy SSRS Reports

There are two ways to deploy the SSRS reports in D365 for finance and operation. The first choice would be to deploy the report directly from Visual Studio. Open the Build menu, click Deploy. Alternatively, in Solution Explorer, right-click the report project and then click Deploy. In Solution Explorer, right-click the report and then click Deploy Lastly, we can deploy the reports using PowerShell. Open Windows PowerShell in Admin mode and execute the below commands as per requirement. For deploying all SSRS reportsK:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\DeployAllReportsToSSRS.ps1 -PackageInstallLocation “K:\AosService\PackagesLocalDirectory” For deploying the specific reportK:\AosService\PackagesLocalDirectory\Plugins\AxReportVmRoleStartupTask\DeployAllReportsToSSRS.ps1 -Module ApplicationSuite -ReportName <ReportName> -PackageInstallLocation “K:\AosService\PackagesLocalDirectory”(Replace <ReportName> with required report name such as RetailLabel.Report or *Retail* – this will deploy all reports containing ‘Retail’ in report name)

D365FO – HTTP Error 503. The service is unavailable

Introduction: In this blog, we will see how to resolve HTTP Error 503 – The service is unavailable in Microsoft Dynamics 365 Finance and Operations Details:  For resolving these kinds of errors, we have 2 solutions as of now. One is to do from the front end that is LCS and the second is to do from the back-end that is from Visual Studio From LCS: Reset the IIS from the LCS. Steps: 1.     Go to LCS, login 2.     Select the respective project, full details   3.     Go to Maintain -> Restart service       4.     Select IIS and confirm it     5.     Wait till the service is being restarted                       From Visual Studio: From the back-end, open the VM and follow the below steps: 1.     Login to VM 2.     Open the Visual Studio 3.     Go to Dynamics 365 tab 4.     Click on Restart IIS Express That’s it. Build the project and go to the frontend and check the output how it looks like. Thanks for reading and stay connected with us for more updates!!! Jagdish Solanki | Senior Technical Consultant | CloudFronts Business Empowering Solutions Team “Solving Complex Business Challenges with Microsoft Dynamics 365 & Power Platform”

D365 Finance and Operations – Database Synchronization using PowerShell

Introduction:  In this blog, we will see how we can synchronize the database through PowerShell in Microsoft Dynamics 365 Finance and Operations Steps:  K:\AOSService\webroot\bin\Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir “K:\AosService\PackagesLocalDirectory” metadatadir “K:\AosService\PackagesLocalDirectory” -sqluser “axdbadmin” -sqlserver “.” -sqldatabase “AxDB” -setupmode “sync” -syncmode “fullall” -isazuresql “false” -sqlpwd “*” -logfilename “H:\MSSQL_LOGS\AxDB_log.log” Example: K:\AOSService\webroot\bin\Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir “K:\AosService\PackagesLocalDirectory” metadatadir “K:\AosService\PackagesLocalDirectory” -sqluser “axdbadmin” -sqlserver “.” -sqldatabase “AxDB” -setupmode “sync” -syncmode “fullall” -isazuresql “false” -sqlpwd “AOSWebSite@123” -logfilename “H:\MSSQL_LOGS\AxDB_log.log” Thanks for reading and stay connected with us for more updates!!! Jagdish Solanki | Senior Technical Consultant | CloudFronts Business Empowering Solutions Team “Solving Complex Business Challenges with Microsoft Dynamics 365 & Power Platform”

Integrate Customers from Shopify with D365 for Finance and Operation using Microsoft flow

Using Microsoft flow you can automate and organize the flow of data between your Shopify and Microsoft D365 for Finance and Operation This the 1st part of 2. In this, I will show you how customers can be auto-created in D365 for Finance and Operation when it’s created in Shopify. First, log into Shopify as Admin. Navigate to: Settings -> Notifications -> Webhooks (Scroll to the end) -> Create Webhooks and select customer creation, and JSON format. We need a URL for sending customer details, which we will provide later. Now login to power apps or Microsoft automate with D365 account. Navigate to Flows -> New and select Instant from Blank. Now continue as shown in the below screenshots. Here the required URL will be generated after the flow has been saved. Click on the new step and search for Parse JSON. In Content select Body (parameter from previous steps). Now we need JSON schema for customers. You can find a sample Json return response from https://shopify.dev/docs/admin-api/rest/reference/customers/customer?api[version]=2020-04 Copy the response and select Generate from the sample in Powerapps and paste the response. The schema would be now generated. Click on ‘new step’. and search for Dynamics 365 for Fin & Ops. Click on Create record. Select the instance of the environment you want customers in and Entity name ‘CustomerV3’. Now you can place parameters from the previous step (Parse Json) in different fields such as. Mandatory fields that are required to create our customers are Customer account, Currency, Customer group, Company, Organization name. After the values are placed, click on Save at the top right corner. Now expand the first step and a URL will be there. Copy this URL to Shopify webhook and click Save webhook. Now let’s test this. Go to the customer’s section in Shopify and click Add Customer. Write the first name and last name for now and click save. Go to D365 F&O and navigate to All Customers. You should see a new customer created. In the next part, I will show how we can auto-create product in Shopify when created in D365 for Finance and Operation Thank you for reading!

Sales return order line registration in D365FO and AX 2012

Introduction: Sales return order line registration in X++ Details:  Consider SalesReturnOrderRegisterLine is the table where records are with SalesLine referenced. If we are required to register serialized items than salesReturnOrderRegisterLine.inventSerialId will be considered and if item referred with batch then salesReturnOrderRegisterLine.inventBatchId will be considered. public static void inventoryRegistration(SalesId _salesId) { SalesReturnOrderRegisterLine salesReturnOrderRegisterLine; SalesLine salesLine; TmpInventTransWMS tmpInventTransWMS; InventTransWMS_Register inventTransWMS_Register; InventDim inventDim; InventTrans inventTrans; VendPackingSlipTrans vendPackingSlipTransLoc; InventTransOrigin inventTransOrigin; while select salesReturnOrderRegisterLine where salesReturnOrderRegisterLine.SalesId == _salesId { salesLine = SalesReturnOrderRegister::updateDispositionCode(salesReturnOrderRegisterLine.InventTransId); inventTransWMS_Register = InventTransWMS_Register::newStandard(tmpInventTransWMS); select firstonly inventTrans where inventTrans.StatusReceipt == StatusReceipt::Ordered exists join inventTransOrigin where inventTransOrigin.RecId == inventTrans.InventTransOrigin && inventTransOrigin.InventTransId == salesLine.InventTransId && inventTransOrigin.ReferenceId == _salesId; tmpInventTransWMS.clear(); tmpInventTransWMS.initFromInventTrans(inventTrans); tmpInventTransWMS.InventQty = salesReturnOrderRegisterLine.SalesQty; tmpInventTransWMS.LineNum = int642int(salesLine.LineNum); inventDim = salesLine.inventDim(); inventDim.inventSerialId = salesReturnOrderRegisterLine.inventSerialId; inventDim.inventBatchId = salesReturnOrderRegisterLine.inventBatchId; tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId; tmpInventTransWMS.ItemId = salesLine.ItemId; inventTransWMS_Register.writeTmpInventTransWMS(tmpInventTransWMS, inventTrans, InventDim::find(tmpInventTransWMS.InventDimId)); if (!inventTransWMS_Register.updateInvent(salesLine)) { throw error(“Error during sales return order registration”); } } } Consider SalesReturnOrderRegister is the class which has below static methods public static SalesLine updateDispositionCode(InventTransId _inventTransId) { SalesLine salesLine = SalesLine::findInventTransId(_inventTransId, true); ReturnDispositionCode returnDispositionCode; SalesReturnOrderRegister::runPreReturnOrderRegisterLine(salesLine); salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId; salesLine.update(); return salesLine; } public static void runPreReturnOrderRegisterLine(SalesLine _salesLine) { InventTransOriginId salesLineInventTransOriginId; InventTransOriginId reservationLineInventTransOriginId; SalesLine reservationLine; ReturnDispositionCode returnDispositionCode; if (_salesLine.ReturnStatus == ReturnStatusLine::Awaiting) { if (!_salesLine.ReturnAllowReservation && _salesLine.isStocked()) { SalesLine::changeReturnOrderType(_salesLine.InventTransId); _salesLine = SalesLine::findInventTransId(_salesLine.InventTransId, true); } select firstOnly returnDispositionCode where returnDispositionCode.DispositionAction == DispositionAction::Credit; _salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId; _salesLine.update(); } else if (_salesLine.ReturnStatus == ReturnStatusLine::Registered) { select forupdate firstonly reservationLine where reservationLine.InventRefTransId == _salesLine.InventTransId; if (reservationLine || _salesLine.qtyMarked()) { if ((_salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReplaceScrap || _salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReturnToCust || _salesLine.returnDispositionCode().DispositionAction == DispositionAction::Scrap)) { if (reservationLine.SalesQty == reservationLine.RemainSalesPhysical) { reservationLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(reservationLine.DataAreaId, reservationLine.InventTransId); salesLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(_salesLine.DataAreaId, _salesLine.InventTransId); InventTransOrigin::deleteMarking(salesLineInventTransOriginId, reservationLineInventTransOriginId, -_salesLine.QtyOrdered); reservationLine.delete(); } } else { throw error(“@SYS332911”); } } } } Thanks for reading and stay connected with us for more updates!!! Jagdish Solanki | Senior Technical Consultant | CloudFronts Business Empowering Solutions Team “Solving Complex Business Challenges with Microsoft Dynamics 365 & Power Platform”

SEARCH :

FOLLOW CLOUDFRONTS BLOG :

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange