D365 finance and operation Archives -

Tag Archives: D365 finance and operation

How to Eliminate Invoice Posting Blind Spots Between D365 Project Operations and Finance Using Custom Business Events

How a Leading Professional Services Organization Eliminated Invoice Posting Blind Spots Between D365 Project Operations and Finance Using Custom Business Events Summary In a D365 Project Operations and Finance integrated setup, invoices are created in Project Operations but posted in Finance. Once the accountant posts the invoice in F&O, the project team in PO has no real-time signal that it happened — so they wait for an email, check a report the next day, or chase finance with “has my invoice been posted yet?” CloudFronts solved this with a custom business event in D365 Finance that fires the moment a project invoice proposal is posted. The event triggers an Azure Logic App, which sends the posted status straight back into D365 Project Operations. The project manager sees the update instantly — no emails, no waiting, no manual follow-up. This article walks through the end-to-end flow, the custom business event, the exact JSON payload, what the Logic App receives, and the related scenarios where the same pattern applies. Table of Contents 01 About the Scenario 02 Why This Matters 03 Why We’re Writing This 04 How D365 F&O Business Events Work 05 The Problem 06 The Fix 07 The Payload 08 The Logic App 09 Other Scenarios 10 Conclusion 11 Your Next Step 01 — Context About the Scenario A Familiar PO–FO Integration Gap In a D365 Project Operations and Finance integrated environment, the billing lifecycle is split across two systems. Project invoices originate as invoice proposals in Project Operations, then get reviewed and posted by the accountant in D365 Finance. The posting creates the general ledger entry, records tax and subledger postings, and finalizes the financial transaction. For growing organizations running this dual-system setup, real-time visibility is non-negotiable. As invoice volume climbs and project teams depend on accurate billing status to communicate with clients and forecast cash flow, even a small gap in how posting status is communicated can quietly erode trust between delivery and finance. One of the most common and most overlooked gaps in a PO–FO integration is surprisingly simple: the project team never finds out, in real time, that their invoice was posted in Finance. Have you ever posted a project invoice in F&O, then spent the rest of the day answering “has invoice AC-000051 been posted yet?” messages from project managers? If you’re nodding, this article is for you. Consider this: in most PO–FO implementations, the only way the project team learns an invoice is posted is through a manual email from finance, a next-day report, or a direct follow-up. Multiply that across dozens of invoices every month, and the overhead — and the risk of a missed update — adds up fast. The cumulative effect on billing visibility, client communication, and finance–delivery trust is significant. By the end of this article, you will understand exactly why this happens, how D365 F&O’s Business Events framework can close the gap, and the single pattern that eliminates the problem entirely. 02 — Impact Why This Matters No Real-Time Posting Visibility Creates Real Business Risk When the project team in PO has no real-time way of knowing that their invoice has been financially posted in Finance, it isn’t just an inconvenience. It leads to delayed client communication that chips away at trust, manual follow-ups that clog up both delivery and finance, and worst of all, project managers who stop trusting the system and start maintaining their own spreadsheets of “what’s been posted.” Once that happens, the entire value of a unified PO–FO integration is gone. Dynamics 365 Finance — Custom Business Event Dynamics 365 Finance — Project Invoice Proposal Posting 03 — Our Perspective Why We’re Writing This A Pattern We See Across D365 PO–FO Integrations At CloudFronts, we’ve implemented and supported Dynamics 365 Project Operations and Finance integrations across professional services, engineering, and project-based organizations. This specific issue — the project team being left blind to invoice posting in Finance — has come up in nearly every engagement where invoices originate in PO and are posted in F&O. We’ve seen the pattern, diagnosed the root cause repeatedly, and built the automation to prevent it. This article distils that experience into something actionable. 04 — The Flow How D365 F&O Business Events Work The Flow: F&O → Business Event → Logic App → Project Operations The integration is straightforward. Four things happen in sequence: Step What Happens Detail 1 Invoice is Posted in D365 Finance The project invoice proposal — which originates from D365 Project Operations — is reviewed and posted by the accountant in D365 Finance. The posting creates the GL entry, records tax and subledger postings, and finalizes the financial transaction. 2 Custom Business Event Fires The moment the posting completes, our custom business event (CFProjectInvoiceProposalUpdatedBusinessEvent) fires automatically. It sends a lightweight JSON payload containing the ProposalId, ProjectContractId, Currency, Company, and event timestamp to the configured endpoint. 3 Logic App Receives and Processes The Azure Logic App (FO-PO-Integration-Invoice-Confirmation) is triggered instantly. It receives the payload, extracts the relevant fields, and executes the configured workflow — updating the invoice status in Project Operations and notifying stakeholders. 4 Status Updated in D365 PO The Logic App calls back into D365 Project Operations and updates the invoice record with the “Posted” status. The project manager sees this immediately in PO without any manual intervention. The entire sequence — from the accountant clicking Post in Finance to the status appearing in Project Operations — takes less than a second. 05 — The Gap The Problem The Project Team Is Left in the Dark Here’s how the issue plays out. A project invoice proposal is created and sent from D365 Project Operations to Finance for posting. The accountant reviews and posts it in D365 F&O. The financial transaction is complete — GL, tax, and subledger all finalized. But in Project Operations, the invoice record still looks unposted. The project manager has no automated signal that the posting happened. Root Cause There is no event-driven bridge between the two systems for this … Continue reading How to Eliminate Invoice Posting Blind Spots Between D365 Project Operations and Finance Using Custom Business Events

Part 2: Configuring and Testing Security Roles in Microsoft Dynamics 365 Finance & Operations

In Part 1, we covered the fundamentals of security roles, duties, privileges, and permissions in Dynamics 365 Finance & Operations. Now, let’s explore how to create, modify, and test security roles using the Security Configuration and Security Diagnostic Tools. How to Add a New Role Using the Security Configuration Tool Step 1: Create a New Role Step 2: Name the Role Step 3: Assign Duties to the Role Step 4: Assign Tasks & Privileges Step 5: Modify Object Permissions Step 6: Publish the Role Security Diagnostic Tool: Analyzing Security Assignments The Security Diagnostic Tool allows security administrators to analyze security roles, duties, and privileges associated with a form. Benefits of the Security Diagnostic Tool: ✔ Quickly identify security gaps by viewing all assigned roles and privileges.✔ Available on any form, allowing instant analysis.✔ Streamlines security adjustments without manual role mapping. How to Use the Security Diagnostic Tool: By using this tool, administrators can quickly review security settings and make necessary adjustments to ensure data protection and compliance. To conclude, managing security roles in Microsoft Dynamics 365 Finance and Operations is crucial for data security and system integrity. The Security Configuration Tool helps create and modify roles, while the Security Diagnostic Tool provides a quick way to analyze security gaps. By following these steps, administrators can effectively control user access, ensure compliance, and streamline security management. Need further assistance? Feel free to leave a comment or reach out for expert guidance on security configurations in D365FO! Thank you for reading! 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.

Part 1: Understanding Security Roles in Microsoft Dynamics 365 Finance & Operations

Ensuring user security is a crucial aspect of Microsoft Dynamics 365 Finance and Operations (D365FO). To access or utilize any features within the system, users must be assigned a security role. Without a role, they will be unable to perform any actions. Access levels and business processes for a role are defined by duties and privileges, ensuring that users have the appropriate permissions for their responsibilities. In this blog, we will explore the fundamentals of security roles and their functionality in Dynamics 365 Finance and Operations (FO). Understanding Security in Dynamics 365 Security in Dynamics 365 Finance & Operations is built around four key components: 1. Security Roles 2. Duties 3. Privileges 4. Permissions Security Configuration Tool: Managing Security in D365FO The Security Configuration Tool allows administrators to create, modify, and test security roles, duties, and privileges. Key Features of the Security Configuration Tool: ✔ View Entry Point Permissions – Displays permissions assigned to any role, duty, or privilege.✔ Test Security Role – Allows users to test security settings without creating a test user.✔ Non-Permanent Changes – Changes must be published before they take effect.✔ Export & Import Security Changes – Security settings can be exported and imported across environments.✔ Hierarchy View – Provides a full view of roles, duties, privileges, and entry points.✔ Duplicate Existing Roles – Users can create copies of existing roles to modify. To conclude, security roles in D365FO ensure that users have access only to the necessary data and functions required for their specific job roles. By understanding roles, duties, privileges, and permissions, businesses can maintain control and prevent unauthorized access. In Part 2, we will dive deeper into the step-by-step process of creating and modifying security roles using the Security Configuration and Diagnostic Tools. Stay tuned for Part 2!???? 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.

Bank Integration and Reconciliation using D365 F&O

Timely vendor invoice processing and vendor payments means good supplier relationships and operational efficiency. Manual processing of vendor invoice and payments involve risks of amount error, duplicate payment. Challenges:   Solution : This will allow automation for invoice processing and no scope for manual intervention for payment processing and record reconciliation. Conclusion: Apt vendor invoice management is essential in building and sustaining a company’s operational capabilities and financial balance. This translates into streamlining payment operations, avoiding expensive delays, and strengthening supplier relationships. With the rise of automation and digital solutions, managing procurement and payments has become more efficient and error-free. 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. ‍

Security Roles in D365 Finance and Operation

Introduction: Ensuring user security is a crucial aspect in Dynamics 365 for Finance and Operations. To access or utilize the features of Dynamics 365 F&O, a user must have a role assigned to them. Without a role, the user will be unable to perform any actions within the system. Access levels and business processes for a particular role are determined by the duties and privileges associated with that role. In this blog post, we will explore two recently introduced features that simplify the process of comprehending and setting up customized security roles within Dynamics 365: security diagnostic and security configuration tools. Defining terms used in Security: Security Roles: – Security roles in Dynamics 365 define how users can access different modules. – The system comes with pre-defined security roles that can be assigned to users. A user has the ability to possess multiple security roles. – Data security policies can only be applied by the administrator to limit user access to data. – To gain access to Finance and Operations, it is mandatory for users to be assigned to at least one security role.  – Security roles correspond to company responsibilities and contain a set of duties required to carry out functions. Duties: – Duties correspond to tasks of a role and are part of a business process. – They are composed of privileges necessary for performing an action. – Duties can be assigned to multiple security roles and help reduce fraud and detect errors. – Segregating duties is important for regulatory compliance such as SOX and IFRS. – Default duties are provided, and administrators can modify or create new duties. Privileges: – Privileges are unit action sets that correspond to system functions. – They specify the level of access required to perform a job or complete an assignment. – Privileges refer to specific permissions granted to application objects such as UI elements and tables. – Default privileges are provided, and administrators can modify or create new privileges. Permissions: – Permissions are required for accessing functions in Dynamics 365. – Access levels are grouped for permissions to tables, fields, forms, or server-side methods. – Permissions include any tables, fields, forms, or server-side methods accessed through the entry point. Security Configuration Tool: The Security Configuration Tool is a useful tool for administrators as it enables them to create and manage security roles, duties, and privileges.  The Security Configuration Tool is a feature in Dynamics 365 that offers various benefits to users. Here are some of the benefits: Display Entry Point Permissions: The tool enables administrators to display entry point permissions for a given role, duty, or privilege. Test Security Role is a useful feature that allows users to check if a security role, duty, or privilege has been newly created or modified, without having to create a separate test user account.  Non-Permanent Changes: Changes made in the Security Configuration Tool are not permanent and must be published to take effect. Data Export/Import: Changes can be saved as a data export file that can be imported into desired environments. Full Hierarchy View: Users can access the tool by going to System Administration > Security > Security Configuration and have a full hierarchy view of roles, duties, privileges, and entry point security assignments. Duplicate Existing Roles: Users can duplicate existing roles, duties, and privileges. Various Options: The tool offers several options for performing against the currently selected role/duty/privilege, including undo/redo customizations, creating new roles, showing all levels, deleting roles, duplicating roles, copying roles, viewing permissions, and displaying the audit trail. To add a new role in Dynamics 365 with the Security Configuration Tool, you can follow these easy steps: Step 1: Select the ‘Roles’ tab and click ‘Create new’ to create a new role in Dynamics 365. Step 2: Enter the name of the new role using a different naming convention so that it is easily identifiable. Step 3: To add a new duty to a role, highlight it, go to the Duties column, and select Add references. All duties (and customs if created) will be available in the list. Step 4: You can select certain tasks, and their corresponding privileges, to be available in a role. If needed, users can remove certain tasks from the role. Step 5: To modify object permissions, go to the Privileges section. Dynamics 365 has different access levels, such as Read, Update, Create, and Delete, that determine a user’s level of access to a particular record or record type. Security roles have three types of access levels: Unset, Grant, and Deny. Step 6: Any modifications made in the user interface must be published before they are implemented. This list shows all the changes that are not yet published. Security Diagnostic Tool: The Security Diagnostic Tool is a unique feature of Dynamics 365 that empowers individuals with a security administrator or system administrator role to conduct an assessment on any form to identify the roles, duties, and privileges required to accomplish a task.  The tool provides numerous advantages to its users, including: To use the Security Diagnostic Tool, simply follow these steps: go to the Option tab, then select Page Options, and finally, click on Security Diagnostics.  This will automatically run the tool for you. Remember that the Security Diagnostic Tool is available on any form.  After the tool runs, it will generate a comprehensive list of all the roles, duties, and privileges related to that particular form.  This enables administrators to quickly identify any gaps in security and make necessary adjustments to ensure the protection of the system and its data. Conclusion: In conclusion, Dynamics 365 for Finance offers a reliable and secure role-based security system that guarantees that users have access to only the data that is necessary for them to carry out their tasks. The security roles, duties, privileges, and permissions collaborate to create a comprehensive security system that is effective.  Moreover, the security diagnostic and configuration tools make it simpler to comprehend and customize security roles in Dynamics 365. We hope you found this … Continue reading Security Roles in D365 Finance and Operation

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”

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”

Factbox of workflow history on purchase order in D365FO

Introduction: In this blog, we will see how to create factbox of workflow history of purchase order in Microsoft Dynamics 365 Finance and Operations Details:  Well, Factbox is a very pretty cool feature available from the earlier version AX 2012. It is very easy to achieve in Dynamics 365 as well.  Here we will see how easy it is and steps for that.    As shown in the above image, we will be going to create factbox for the “Tracking details list” Steps:  Create the solution in Visual Studio and project for that. We’ll be required four objects mainly that is one display MenuItem, Table, Form (on which to display factbox), another Form (factbox). Reference attached below: 1. Table For displaying workflow history, we need to create the extension of table WorkflowTrackingStatusTable and create the normal relation and its relevant properties as 2. Factbox Now we are required to create the factbox of workflow history. For that we will use the effortless technique, where we will duplicate the standard form “WorkflowStatus” and will name as CFSPurchTableWorkflowHistoryFactBox (give name as per your naming convention standards) After duplicating and renaming the form, we need to change the pattern as “custom” After applying the custom pattern, delete the NavigationList which is not required in factbox, and do visible false ActionPane and PanelTab After that create the new Grid and assign the data source to it in the property and put all the required fields to show in factbox 3. Display MenuItem We will attach the created factbox form to the display menu item and relevant label “Workflow history” 4. Base form Base form we call it as where we will attach the factbox. Here it is purchase form. Go to Parm section and create a new part and give it a relevant name and its properties Properties:  Data source: Attached data source with which workflow history is connected Data Source Relation: WorkflowTable.RelationName Name: Part name That’s it. Build the project and go the frontend and check the output how it looks like. Conclusion: It results as (we can scroll left and right to see all the tracking details list) Hurray, How pretty it looks like! In the above example, we have seen how we can develop factbox in Microsoft Dynamics 365 Finance and Operations.   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”

Email Parameters | SMTP Configurations for sending Test Mail from D365FO

Introduction: In this blog, we will see how to set up email parameters and SMTP configuration for sending test mail from Microsoft Dynamics 365 Finance and Operations. Details:  Go to the Email Parameters by follow this path: System administration -> Setup -> Email -> Email Parameter. Another easiest way to find the email parameter in a quick manner, go to the search box and simply write email parameter as below shown screenshot Steps:  1. In the configuration tab, set up the SMTP as in shown below image Move SMTP in the right box named with ENABLED to enable  2. In SMTP settings tab, configure the below stuff:      Outgoing mail server: smtp.office365.com     SMTP port number: 587     Username: put the email id from which email should be sent      Password: appropriate password of the email     Specify if SSL is required: true 3. In Test mail tab:      Email provider: SMTP     Send to: Put the email to whom test mail should be sent  In the final, click on the “Send test mail” and then sample mail will be sent to the respective email address.      Conclusion: In the above blog, we have seen how to set up SMTP configuration to test “send email” functionality from the email parameter form.  Thanks for reading !!!

SEARCH :

FOLLOW CLOUDFRONTS BLOG :

FOLLOW CLOUDFRONTS BLOG :


Categories

Secured By miniOrange