Blog Archives - Page 21 of 169 - - Page 21

Category Archives: Blog

Streamlining Build Pipelines with YAML Template Extension: A Practical Guide

In modern development workflows, maintaining consistency across build pipelines is crucial. A well-organized build process ensures reliability and minimizes repetitive configuration. For developers using YAML-based pipelines (e.g., Azure DevOps or GitHub Actions), template extension is a powerful approach to achieve this. This blog explores how to use YAML templates effectively to manage build stages for multiple functions in your project. What is Template Extension in YAML? Template extension allows you to define reusable configurations in one place and extend them for specific use cases. Instead of repeating the same build steps for every function or service, you can create a single template with customizable parameters. Why Use Templates in Build Pipelines? – Scalability: Add new services or functions without duplicating code. – Maintainability: Update logic in one place instead of modifying multiple files. – Consistency: Ensure uniform processes across different builds. Step-by-Step Implementation Here’s how you can set up a build pipeline using template extension. 1. Create a Reusable Template A template defines the common steps in your build process. For example, consider the following file named buildsteps-template.yml: parameters: – name: buildSteps # the name of the parameter is buildSteps type: stepList # data type is StepList default: [] # default value of buildSteps stages: – stage: secure_buildstage pool: name: Azure Pipelines demands: – Agent.Name -equals Azure Pipelines x jobs: – job: steps: – task: UseDotNet@2 inputs: packageType: ‘sdk’ version: ‘8.x’ performMultiLevelLookup: true – ${{ each step in parameters.buildSteps }}: – ${{ each pair in step }}: ${{ pair.key }}: ${{ pair.value }} 2. Reference the Template in the Main Pipeline This is your main pipeline file: trigger: branches: include: – TEST {Branch name} paths: include: – {Repository Name}/{Function Name} variables: buildConfiguration: ‘Release’ extends: template: ..\buildsteps-template.yml {Template file name} parameters: buildSteps: – script: dotnet build {Repository Name}/{Function Name}/{Function Name}.csproj –output build_output –configuration $(buildConfiguration) displayName: ‘Build {Function Name} Project’ – script: dotnet publish {Repository Name}/{Function Name}/{Function Name}.csproj –output $(build.artifactstagingdirectory)/publish_output –configuration $(buildConfiguration) displayName: ‘Publish {Function Name} Project’ – script: (cd $(build.artifactstagingdirectory)/publish_output && zip -r {Function Name}.zip .) displayName: ‘Zip Files’ – script: echo “##vso[artifact.upload artifactname={Function Name}]$(build.artifactstagingdirectory)/publish_output/{Function Name}.zip” displayName: ‘Publish Artifact: {Function Name}’ condition: succeeded() Benefits in Action 1. Simplified Updates When you need to modify the build process (e.g., change the .NET SDK version), you only update the template.yml. The changes automatically apply to all functions. 2. Customization Each function can have its own build configuration without duplicating the pipeline logic. 3. Improved Collaboration By centralizing common configurations, teams can work independently on their functions while adhering to the same build standards. Best Practices Final Thoughts YAML template extension is a game-changer for developers managing multiple services or functions in a project. It simplifies pipeline creation, reduces duplication, and enhances scalability. By adopting this approach, you can focus on building great software while your pipelines handle the heavy lifting. If you haven’t already, try applying template extension in your next project—it’s a small investment with a big payoff. 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 :

Understanding Purchase & trade agreements in D365 – Part 5

In Purchase & trade agreements in D365 – Part 1 & 2 blog we have gone through overview of Purchase & trade agreements in D365 & how to setup different types of Purchase agreements in D365. In Part 3 & 4 blog we have covered setup of Trade agreement for purchase price & line discounts. Let us see difference between Line & multiline discount, if we have same range for line & multiline discount of 5% for 1-101 quantity, 10% for 101-501 quantity & 15% for 501-1001 quantity. When PO has multiple lines of same item. i.e. 1st line has 50pcs & 2nd line has 70pcs. So, in case of Line discount each line will get discount of 5% even though total quantity is greater than 100. But in case of Multiline discount, discount applied will be 10% as total is greater than 100, as it considers total of multiple lines. & In line & multiline discount, discount is applied to line. But in total discount, it is applied on total purchase order. In this blog will go through how to setup Trade agreement line discount for Multiline discount & Total discount functionality in trade agreement. Problem statement – In this scenario we need to setup trade agreements for Multiline discount & Total discount functionality in trade agreement. Solution steps – 1 – Will setup trade agreement for Multiline discount 1.1 As discussed in previous blog (Part 3) we have already created Trade agreement journal names; we can use same for this blog. For those who have not gone through blog part 3 can follow below steps Create Trade agreement journal names – Go to Procurement & Sourcing -> Setup -> Prices & discounts -> Trade agreement journal names New -> Name -> Pur Disc -> Description -> Purchase discount -> Relation -> Line disc. (purch.) -> Save. 1.2 & Enable parameters – Go to Procurement & sourcing -> Setup -> Prices & discounts -> Activate price/discount Enable all parameters for Multiline discount. Item group parameter Yes for Vendor means It is to enable price for specific vendor for specific Item. Item parameter Yes for Vendor group means if price is same for item for group of suppliers (based on vendor group) then need to enable this parameter. Item parameter Yes for All vendors means if item has same prices for all suppliers then need to enable this parameter. 1.3 Create Item group & assign it to items. Go to procurement & Sourcing -> Prices & discounts -> Price/discount group -> Item discount group -> New -> Price groups -> 01 -> Name -> High Margin -> Price/discount group type -> Multiline discount group New -> Price groups -> 02 -> Name -> Low Margin -> Price/discount group type -> Multiline discount group 1.4 Go to Released products -> respective item -> Purchase Tab -> Multiline discount group -> 01 1.5 Enable Multiline discount – Procurement & Sourcing -> Setup -> Procurement & sourcing parameters -> Prices -> discounts -> Line+Multiline 1.6 Create Trade agreement – Procurement & sourcing – Trade agreement journals -> New -> Name -> Pur disc -> Default relation -> Multiline disc. (purch) -> Lines -> Relation -> Line disc. (Purch.) -> Party code type -> Table -> Account selection -> VEN-000003 -> Product code type -> Group -> Item relation -> 01 -> Unit -> Pcs -> From -> 1 -> To -> 101 -> Unit -> Pcs -> Details (Fast tab) -> Discount percentage 1 -> 5 -> Add line -> From -> 101 -> To -> 501 -> Unit -> Pcs -> Details (Fast tab) -> Discount percentage 1 -> 10 -> Save -> Post 1.7 Create PO – For respective vendor & item. Multiline discount will not reflect automatically. 1.8 To activate discount click on – Purchase (Action pane) – Calculate – Multiline discount. Then discount will be calculated. 2 – Will setup trade agreement for Total discount 2.1 Enable parameters – Go to Procurement & sourcing -> Setup -> Prices & discounts -> Activate price/discount Enable all parameters for Total discount. Total discount will be applicable for all items. 2.2 Create Trade agreement – Procurement & sourcing – Trade agreement journals -> New -> Name -> Pur disc -> Default relation -> Total disc. (purch) -> Lines -> Relation -> Line disc. (Purch.) -> Party code type -> Table -> Account selection -> VEN-000004 -> Details (Fast tab) -> Discount percentage 1 -> 5 -> Save -> Post 2.3 Create PO for respective vendor. Multiline discount will not reflect automatically. 2.4 To check Total discount go to Purchase order (Action pane) – Totals 2.5 To activate discount click on – Purchase (Action pane) – Calculate – Total discount. Then discount will be calculated. 2.6 Go to Purchase order (Action pane) – Totals, total discount of 5% (as defined in trade agreement) is reflecting in Total discount field. With this blog we have covered various aspects of Purchase & trade agreements. 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 :

Transforming Business with AI-Driven Demand and Supply Forecasting

Organizations are constantly struggling with the complexities of demand and supply forecasting. The traditional methods, often dependent on manual intervention and assumption-based procurement, are increasingly becoming inefficient. These outdated processes lead to inventory overloads, high holding costs, and a significant backlog of orders, all which hamper business growth and scalability. It’s clear that businesses need a more robust, scalable, and accurate forecasting solution. This is where AI-driven demand and supply forecasting solutions come into play, offering a revolutionary approach to streamline operations and enhance decision-making. The Business Challenges Traditional demand and supply forecasting methods pose several challenges that can hamper business success: These challenges underscore the critical need for businesses to move away from manual methods and towards more advanced, automated solutions that can adapt to the ever-changing market landscape. The AI-Driven Solution To address these challenges, CloudFronts offers an innovative AI-driven demand and supply forecasting solution designed to transform the way businesses operate. Here’s how this solution can revolutionize your business: High-Level Architecture The architecture of our AI-driven forecasting solution is designed to ensure scalability, flexibility, and real-time processing capabilities. Key components include: Benefits of AI-Driven Forecasting Implementing an AI-driven forecasting solution offers numerous benefits that can significantly impact your business: Conclusion As the business landscape continues to evolve, the need for accurate, efficient, and scalable demand and supply forecasting solutions becomes more critical than ever. CloudFronts’ AI-driven forecasting solution not only addresses the inefficiencies of traditional methods but also empowers businesses to thrive in a competitive market. 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 :

Enhancing Dynamics 365 Forms with JavaScript: Real-Time Field Visibility and Multi-Select Handling

For businesses using Dynamics 365 CRM, creating a customized and automated user experience is essential for improving efficiency. JavaScript empowers developers to tailor form behavior based on user input or specific business logic, making your CRM highly adaptable.  Are you looking to automate form fields and improve usability in Dynamics 365 CRM? This guide will help you understand how to use JavaScript to dynamically control field visibility and behavior.  Research shows that 88% of users are more productive with tailored CRM systems. Automating workflows within Dynamics 365 CRM can reduce user errors by up to 70%, streamlining operations and enhancing user satisfaction.  Dynamics 365 CRM is highly customizable, and using JavaScript to enhance form behavior can significantly improve operational efficiency and user experience. Automating processes like field visibility and data handling minimizes manual intervention and ensures consistency.  At CloudFronts, we have extensive experience implementing Dynamics 365 CRM solutions, tailoring them with custom scripts to meet unique business needs. Through hands-on knowledge, we provide practical insights into achieving optimal CRM configurations.  Setting Up Your Dynamics 365 CRM Environment  – Go to the CRM main page, click Settings > Advanced Settings.  – Select Solutions and create a new solution.  – Provide a meaningful name and include the publisher’s name.  Develop a Web Resource  – After creating the solution, develop a web resource and ensure your code is included in it.  – After writing the code, upload the JavaScript and save it as a web resource in make.powerapps.com.  Write your JavaScript code  We’ll look at two key functions in the provided code: toggleExchangeReturnField and onChangeExhReturnItem. Let’s break them down.  Key JavaScript Functions in Action  Function 1: Toggling Fields Based on User Input  Toggling Fields Based on the Toggle Control  toggleExchangeReturnField: function(executionContext) {      var formContext = executionContext.getFormContext(); // Get the form context      var toggleField = formContext.getAttribute(“cri_rma”).getValue(); // Get the value of the toggle field      if (toggleField == true) {          formContext.getControl(“cf_exchangereturnitem”).setVisible(true); // Show the exchange return item field          formContext.getControl(“cri_rmatype”).setVisible(true); // Show the return type field      }      else {          formContext.getControl(“cf_exchangereturnitem”).setVisible(false); // Hide the exchange return item field          formContext.getControl(“cri_rmatype”).setVisible(false); // Hide the return type field      }  },  The `//` symbol in JavaScript is used to add comments within the code. Comments are helpful for explaining the logic or purpose of the code, making it easier for others (or even yourself) to understand later. However, including comments is optional and not mandatory.  Explanation  executionContext.getFormContext(): This function retrieves the form context, which provides access to the form’s controls and attributes.  formContext.getAttribute(“cri_rma”).getValue(): This gets the current value of the cri_rma field, which is assumed to be a toggle field (a boolean that indicates whether the user has opted for an exchange or return process).  formContext.getControl(“cf_exchangereturnitem”).setVisible(true): Based on the value of the cri_rma field, the cf_exchangereturnitem and cri_rmatype fields are either shown or hidden using the setVisible() method.  Purpose:  This function is designed to hide or show form fields dynamically based on the selection in the toggle field (cri_rma). If the toggle is set to true (i.e., an exchange/return is required), it displays the cf_exchangereturnitem and cri_rmatype fields. Otherwise, these fields are hidden.  Purpose: Dynamically show or hide fields based on a toggle field’s value.  How it works: Retrieves the toggle field’s value and sets the visibility of dependent fields accordingly.  Function 2: Handling Multi-Select Field Changes  Handling Changes in the Exchange Return Item Field  onChangeExhReturnItem: function(executionContext) {      var formContext = executionContext.getFormContext(); // Get the form context      var selectedoptions = formContext.getAttribute(‘cf_exchangereturnitem’)?.getSelectedOption(); // Get selected options from the multi-select field      var exchangeReturnProductDescription = “”;      if (selectedoptions != null) {          selectedoptions.forEach(ele => {              exchangeReturnProductDescription += ele.text + “,”; // Append the text of selected options          })          exchangeReturnProductDescription = exchangeReturnProductDescription.slice(0, -1); // Remove the last comma          formContext.getAttribute(‘cf_exchangereturnproduct’).setValue(exchangeReturnProductDescription); // Set the field value with selected options          formContext.data.save(); // Save the data      }      else {          formContext.getAttribute(‘cf_exchangereturnproduct’).setValue(null); // Reset the field if no options are selected      }  }   The `//` symbol in JavaScript is used to add comments within the code. Comments are helpful for explaining the logic or purpose of the code, making it easier for others (or even yourself) to understand later. However, including comments is optional and not mandatory.  Explanation  formContext.getAttribute(‘cf_exchangereturnitem’).getSelectedOption(): This retrieves the selected options from the multi-select field cf_exchangereturnitem. This field likely holds a list of items that the user can select for return or exchange.  exchangeReturnProductDescription += ele.text + “,”;: For each selected option, the code concatenates the text (name) of the item with a comma to build a string of product descriptions.  formContext.getAttribute(‘cf_exchangereturnproduct’).setValue(exchangeReturnProductDescription): The concatenated string of selected items is then assigned to the cf_exchangereturnproduct field. This could be a text field that lists the products selected for exchange or return.  formContext.data.save();: After updating the field, the form data is saved to ensure the changes are persisted.  formContext.getAttribute(‘cf_exchangereturnproduct’).setValue(null);: If no items are selected, the field value is reset to null.   The most crucial step is to add the lines of code within the field. Above all, we need to ensure that the function is added to the form properties. This process will be demonstrated below.  Purpose: Builds a comma-separated list of selected items and updates a designated field.  How it works: Gathers user selections and updates the field in real time, saving changes instantly.  Final Code for Execution  Binding the JavaScript Functions to Form Events  – Open the desired form in your solution at make.powerapps.com and select Entities > Forms.  – Add the JavaScript web resource to Form Properties.  – Under Form Libraries, click Add, select the JavaScript Web Resource you created earlier, and click OK.  Bind the toggleExchangeReturnField and onChangeExhReturnItem functions to relevant field events  – In the Form Editor, select the field (e.g., a text field or lookup) for which you want to trigger the OnChange event. – In the Field Properties window, go to the Events tab.  – Under OnChange, click Add to create a new event handler.  – Select the Library … Continue reading Enhancing Dynamics 365 Forms with JavaScript: Real-Time Field Visibility and Multi-Select Handling

Share Story :

Step-by-Step Guide: Deploying a Package from the Asset Library to UAT

Ensuring smooth and efficient operations in Finance and Operations (F&O) is crucial for success in business environment. Many teams struggle with deploying extensions effectively, leading to delays and complications. Have you ever faced challenges when deploying an extension to UAT in F&O? In this blog post, we promise to provide you with a clear, step-by-step guide that will simplify the deployment process, enabling you to achieve seamless integration and improved performance. Did you know that 70% of software deployment failures can be traced back to inadequate preparation and planning? By following our guide, you can significantly reduce the risk of errors and ensure a successful deployment. Prepare the Package – Ensure the logic or customization is thoroughly developed and tested in a development environment. – Compile the solution into a deployable package. Export the Package – Export the compiled package from Visual Studio or another integrated development environment (IDE) By Navigating it to Dynamics 365-> Deploy->Create Deployment Package – The package should include all necessary components (like all customizations models). – Select the File location where you wish to store Deployment Package. Upload to Asset Library – Log into Microsoft Dynamics Lifecycle Services (LCS). – Navigate to the Asset Library section. – Click on Import Package and click on New Button, give name and description and upload the newly created deployable package. – Wait for the upload process to complete. Select the Target Environment (UAT) – Choose the project linked to your UAT environment in LCS. – Go to the Environment Details of the UAT instance. Apply the Package to UAT – In the UAT environment’s details page, select Maintain and click on Apply Updates. – Choose the package you uploaded from the Asset Library. – Confirm the deployment request. Monitor Deployment – Track the deployment progress in LCS. – If successful, the package will be applied to the UAT environment. Validate the Deployment – After deployment, test the UAT environment to ensure the new logic works as expected. – Run key processes to validate the customizations and confirm no errors. Resolve Issues if Necessary – If there are any deployment errors or issues, review the error logs and fix them before re-deploying. – Make sure to thoroughly test before proceeding with the next environment (production). Conclusion Deploying logic to UAT in Finance and Operations (F&O) is a critical step in ensuring that your customizations and new features work as expected before going live. By following these steps from package preparation to validation you can streamline the process and minimize deployment risks. 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 :

Seamlessly Integrating Shopify with Business Central: A Comprehensive Guide

This guide provides a step-by-step walkthrough for integrating Shopify with Business Central (OnCloud). The integration focuses on synchronizing key aspects such as inventory, product details, and order information to enable efficient management of your Shopify store directly from Business Central. With this integration, you can streamline your eCommerce operations and ensure real-time data alignment between both platforms. Pre-requisites: Before beginning the integration, ensure you have the following: Steps for Shopify and Business Central Integration 1. Create an Account on Shopify – Go to Shopify Admin and create your account. – Shopify offers a 3-day free trial, so you can explore the platform before committing. 2. Access the Shopify Dashboard – After successfully creating your Shopify account, you’ll be directed to the Shopify dashboard. – From here, copy the Shopify store URL, as you’ll need it later during the integration with Business Central. 3. Navigate to Business Central – Open Business Central and search for “Shopify Shops” in the global search bar. – Click on New to add a new Shopify shop. 4. Enter Shopify Shop Information – In the new Shopify shop creation screen, enter a unique Code for the shop. – Paste the Shopify URL (copied from step 2) into the required field. 5. Set Shopify Location – In Business Central, go to Shopify Location settings. – Select the relevant location for the shop. 6. Set Stock Calculation – Choose Free Inventory for Stock Calculation. This option ensures that your available inventory is always in sync with Shopify. 7. Add Products in Business Central – First, click on the Products section in Business Central. – Then, click on Add Items to begin adding products to be synced with Shopify. 8. Sync Inventory – Set the Sync Inventory field to True by enabling the corresponding boolean field. – Enter an appropriate Item Category Code for the products, then click OK to confirm. Optional: Sync Product Images – If you wish to sync product images between Shopify and Business Central, select the Sync Item Images to Shopify option. – By enabling this setting, the images of your items will also be synchronized when the products are added to Shopify. 9. Inventory Sync in Shopify – After completing the previous steps, your inventory will be successfully synced from Business Central to Shopify. Any changes made to stock levels in Business Central will now automatically update in Shopify. 10. If you want to sync shopify to business central go to Shopify Shop Card > Select “From Shopify” in Sync Item. 11. After that go to Synchronization and click on sync products By this if you had added product in shopify it will get sync to business central. 12. Customer Synchronization – You can also synchronize customer information between the two platforms. – For example, once you sync, you’ll see that Meagan has been successfully synchronized to Shopify. 13. View Your Online Store – Now you can view your online store and see your products live on Shopify. Theme Customization in Shopify The look and feel of your Shopify store is important in building a strong brand presence. Shopify offers a variety of customizable themes that you can select and edit to match your brand’s identity. How to Select a Theme: How to Set Up Payments on Shopify? Shopify Payments is an integrated payment gateway that simplifies the transaction process for your Shopify store. Here’s how to set it up to ensure your customers can make secure payments directly on your store. Important Points to Consider Before Setting Up Shopify Payments: – Bank Account Location: Ensure that your bank account is in the same country as your Shopify store. – Enable Two-Step Authentication: For enhanced security, activate two-step authentication before setting up Shopify Payments. – Transaction Fees: Be aware that Shopify Payments charges fees for each transaction, which vary depending on your pricing plan. – Minimum Payout Threshold: Shopify Payments does not process payouts below $1, £1, or €1. These smaller amounts will be added to the next payout that meets the threshold. Did You Know? For U.S.-based stores, Shopify Payments incurs a 1% fee for cross-border transactions (for credit card payments made with cards issued outside the U.S.). Step-by-Step Guide to Setting Up Shopify Payments Step 1: Set Your Store Currency Before you begin, establish the currency for your store. This currency may differ from that of your bank account. Changing the store currency after setup will require contacting Shopify Support. To set your currency: – Navigate to Settings > General > Store defaults > Currency display. – Click on Change store currency and select your preferred currency. – Click Save to implement the changes. Step 2: Access Payment Settings Once you’ve set your store currency, return to the Settings menu and choose the Payment option to initiate the payment setup process. Note: It is essential to complete your Shopify Payments account setup within 21 days of your first sale. This includes providing your business and banking details. For merchants located in the European Union or Hong Kong, setting up Shopify Payments is necessary to accept customer payments. Step 3: Activate Shopify Payments To enable Shopify Payments, you first need to create a Stripe account. Then: – Navigate to the Payment settings page in Shopify. – Click the Activate button for Shopify Payments. If you’re transitioning from another payment provider, Shopify offers an easy way to make this switch. Step 4: Select Your Business Type During the activation of Shopify Payments, you must identify your business type: – Individual: For sole proprietors who haven’t formally registered their business. – Registered Business: For businesses operating under a registered name, such as a corporation, LLC, or partnership. – Non-Profit: For organizations that are officially recognized as non-profit entities. Step 5: Designate an Account Representative Setting up Shopify Payments requires appointing an account representative. This individual, typically the owner, senior executive, or director, must possess the authority to make decisions within the business. Their role is crucial for verification with Shopify’s banking partners. Step 6: … Continue reading Seamlessly Integrating Shopify with Business Central: A Comprehensive Guide

Share Story :

Staying Up to Date: Managing Updates in F&O

System updates are crucial for keeping systems secure, functional, and up to date with the latest technology advancements and user needs. They are typically provided by software developers, manufacturers, or service providers, and users are often encouraged or required to apply them regularly. System updates are essential for several reasons: One famous story of a catastrophic incident caused by a failure to update a system is the Equifax Data Breach of 2017. Here’s what happened: The Incident: In 2017, Equifax, one of the largest credit reporting agencies in the U.S., suffered a massive data breach that exposed the personal information of over 147 million people. The data leaked included sensitive details like Social Security numbers, birth dates, addresses, and in some cases, credit card information. Cause: The breach occurred because Equifax had failed to apply a critical security patch to a known vulnerability in Apache Struts, an open-source web application framework used in one of their online portals. The vulnerability had been identified and a patch was made available in March 2017, but Equifax did not apply the patch in time, leaving the system exposed. Hackers exploited this known vulnerability in May 2017, and over the next few months, they accessed Equifax’s systems and stole massive amounts of personal data. It wasn’t until July 2017 that the breach was detected, and Equifax publicly disclosed the breach in September 2017. Impact: The consequences were severe: Lesson: This breach became a stark example of why system updates and security patches are critical. A failure to update systems, even with known vulnerabilities, can lead to disastrous consequences, including financial loss, reputational damage, and exposure of sensitive information. Microsoft Dynamics 365, which includes Finance and Operations, has around 500,000 users worldwide as of 2024.With four service updates released each year and roughly one quality update each month, it is crucial for organizations to stay current with the latest features and security enhancements to ensure optimal performance and protection. I am confident that this article will highlight the importance of system maintenance and upkeep. References Details Proactive Quality Updates (PQUs) are automatic updates that bring important bug fixes and new features quickly, without interrupting your work.Delivered through Microsoft Dynamics Lifecycle Services (LCS), PQUs are applied in the background, so businesses hardly notice them. Benefits of PQUs Why PQUs Cause Little Disruption If a serious issue (like downtime or slow performance) happens during a PQU, Microsoft will pause the update and work with customers to fix it. If only one customer is affected, they can open a support ticket to stop the update for their environment. When Might PQUs Be Skipped? PQUs cannot be undone once applied. However, Microsoft can turn off specific changes if needed. Service updates are regular system improvements that give you new features without needing major upgrades.They contain both application changes and platform changes that are critical to the service, including regulatory updates.These updates are backward-compatible, meaning your custom code will still work.Microsoft suggests using the Regression Suite Automation Tool (RSAT) to test updates and make sure nothing breaks. How to Manage Service Updates: Four service updates are released by Microsoft annually in February, April, July, and October.You’re required to take at least two updates per year but can take up to four.You can also pause one update at a time for either your sandbox or production environment. Pre-Servicing: For service updates, the preservicing step starts when the update process begins.During this time, Microsoft Dynamics Lifecycle Services (LCS) shows the environment as Preservicing.This means the environment is online and accessible, but no other service actions can be performed.In this step, the system checks for specific errors that could cause the servicing process to fail.If any errors are found, a soft rollback occurs, which means the system goes back to its previous state without a point-in-time recovery (PITR).To resolve the issues, you can check the environment’s history logs for the errors and make necessary fixes before trying to update again. Post-Servicing: During the post-processing step after offline servicing is complete, the environment status in LCS is marked as Post-servicing.This means that any index creation or changes that couldn’t be done during offline servicing will now occur while the system is online.Users can still access the environment and continue their regular activities, but performance might be slower due to the updates being applied. However, users will not be able to cancel existing service requests or start new ones during this time. Notifications: You will receive several notifications about Microsoft Dynamics updates: Conclusion By keeping your system up to date with these automatic updates, you’ll enjoy new features, regulatory improvements, and better performance—all without the hassle of big upgrades. If all this feels overwhelming, feel free to reach out so we can help you getting this set up and manage it for you! Taking action now will lead to better user experience, minimal disruption in service and smoother operations for your business. 

Share Story :

Optimizing Cash Flow: Effective Reminder Systems in Business Central

Maintaining timely communication with customers about outstanding payments is crucial. Business Central makes this easier with its automated reminder feature, helping businesses streamline their collection process while maintaining positive client relationships. This sets the stage for discussing the “how-to” steps for sending reminders in Business Central. Reminders can be used to remind clients of past-due amounts and to solicit payment. You can assign reminder terms to customers and set them up to manage accounts receivable. You have control over how the reminder process operates with reminder terms. You can specify a set of reminder levels for each reminder term. Rules governing when to send reminders, what fees to charge, and whether to compute interest are all included in reminder levels. A grace period setting is another feature of reminder levels that makes sure you don’t remind customers about bills they have already paid. Pre-requisites – Business Central onCloud – Reminder terms You have to choose how and when to remind clients who have past-due payments. You may also wish to deduct interest or fees from their accounts. Any number of reminder terms can be configured. Lets see how we can set automate reminders for ovedue customers Configuration: – Select the reminder term or terms for which you want to use this automation in the Reminder Terms Filter field.– Select the frequency of automation runs in the Cadence field.– Next, select whether the automation generates, issues, or sends reminders by selecting New on the Actions FastTab.– Select OK.– Complete the fields on the setup page as needed, depending on the action the automation is performing.– Go to Settings for reminder actions to find out more about the settings.– The Move up and Move down actions allow you to change the sequence in which the automation’s actions execute after you’ve configured them. Set cadence to manual and click on start button it will create reminders for customers witb overdue amount Now setup automation to issue reminders similar to above Click on action and choose Issue reminder action When issuing a reminder, entries are created in the customer ledger with details like the posting and tax dates. You can use the “Issue Reminders Setup” page to decide if these dates should be replaced by the dates from the reminder itself. For instance, if a reminder was created yesterday but issued today, the due date will adjust by one day. Once you click on start button it will move all draft reminders to issue reminder. From here by using above actions, you can sent reminders to customer manually also or mark it as sent if you already sent mail by yourself. Let’s create third entry to send reminders to customers Now before running this last job que, you need to set email body for customers Search Reminder terms and choose default value in our case we have added Domestic as a reminder term This is the template you will see when you click on “Customer Communication.” It can be changed to suit your needs. Once you schedule all three-job automatic it will start sending emails to customers Conclusion: In conclusion, automating reminders in Business Central streamlines the payment collection process, helping businesses maintain cash flow and reduce overdue receivables. By leveraging customizable reminder settings, companies can create tailored communication that encourages timely payments while maintaining positive customer relationships. The system’s flexibility and automation capabilities allow for efficient financial management, minimizing manual intervention and improving overall productivity. 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 :

Simplifying Sales with Business Central 2024 Wave 2: CSV Integration Made Easy

For growing businesses, managing sales efficiently is crucial as processes and reporting become more complex. Microsoft Dynamics 365 Business Central 2024 Wave 2 (BC25) introduces an exciting new feature that helps you create sales lines quickly by using data from a CSV (comma-separated values) file. This feature, powered by Copilot, simplifies the sales order process and saves valuable time. Are You Struggling to Manage Your Sales Lines? Are you finding it challenging to keep up with sales line entries? If you’re looking to automate this process, this article is for you. According to recent studies, businesses that streamline their sales processes can reduce order creation time by up to 80%. Additionally, companies using automated solutions see a 25% increase in productivity and improved accuracy in their sales data. Why CSV Integration Matters As businesses expand, the volume and complexity of sales orders increase. Having an efficient method to manage sales lines is essential for maintaining operational flow and customer satisfaction. The new CSV integration feature in Business Central 2024 Wave 2 allows you to: – Save Time: Upload your sales data all at once, eliminating the need for tedious manual entry. – Reduce Errors: Ensure your sales line data is accurate and consistent, minimizing mistakes that can occur with manual entry. – Manage Data Easily: Use a simple spreadsheet format to organize your sales line details before uploading them. How to Use the CSV Integration Feature Step-by-Step Guide 1. Prepare Your CSV File: Start by creating a CSV file containing all the sales line details you need, such as item numbers, quantities, and prices. 2. Log into Business Central: Open your Business Central account and navigate to the sales order section. 3. Upload the CSV File: – Click on the Copilot symbol and select “Suggest Sales Line.” – Choose “Attach” and upload your CSV file. Note: Only CSV files can be selected. PS: Only CSV (comma-separated values) can be selected. 4. Review the Suggestions: After uploading, review the suggested sales lines. You can make any adjustments if necessary. – For actions like matching or viewing, choose the appropriate options and click “Generate” for Copilot to suggest sales lines based on your data. Column Action: Matching: View: 5. Finalize Your Order: Once you’re satisfied with the sales lines, click “Insert.” Your sales lines will now be successfully added to the sales order. Conclusion The new CSV integration feature in Business Central 2024 Wave 2 makes managing sales orders easier than ever. With Copilot’s assistance, you can save time, reduce errors, and streamline your sales process. We encourage you to explore this feature and see how it can transform your sales operations. If you need further assistance, feel free to reach out to CloudFronts for practical solutions that can help you implement this powerful tool effectively.

Share Story :

All-in-One Guide to C# Plugin Data Types: Working with Strings, Currency, Lookups, and More

In Dynamics 365 and Power Platform, C# plugins play a crucial role in extending the functionality of your applications. One of the key aspect’s developers need to grasp is how to handle various data types effectively. This guide will walk you through the most commonly used data types in C# plugins, including strings, currency, lookups, option sets, and more. Introduction to C# Plugins C# plugins are custom business logic that you can implement in Dynamics 365 to execute in response to specific events, like creating, updating, or deleting records. They allow you to manipulate data and interact with the system in powerful ways. Understanding how to work with different data types is essential for writing effective plugins. Retrieving Entities Before you can manipulate data types, you first need to retrieve the entity record you want to work with. Here’s how you can do that: public void Execute(IServiceProvider serviceProvider){IPluginExecutionContext context =(IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); // Retrieve entity by IDEntity entity = service.Retrieve(“entity_logical_name”, context.PrimaryEntityId, new ColumnSet(true));}   Working with Different Data Types String The most common data types are strings. They can represent text values. Getting a String Value: string name = entity.GetAttributeValue<string>(“string_attribute_name”); Setting a String Value: entity[“string_attribute_name”] = “New String Value”; Currency Currency is represented by the Money type in Dynamics 365. Getting a Currency Value: Money amount = entity.GetAttributeValue<Money>(“currency_attribute_name”);decimal currencyValue = amount?.Value ?? 0; Setting a Currency Value: entity[“currency_attribute_name”] = new Money(150.00m); // Set to 150.00 Lookups Lookup fields refer to related entities. They are represented by the EntityReference type. Getting a Lookup Value: EntityReference lookup = entity.GetAttributeValue<EntityReference>(“lookup_attribute_name”); if (lookup != null) {     Guid lookupId = lookup.Id;     string lookupName = lookup.Name; // Requires another retrieve call to get the name} Setting a Lookup Value: entity[“lookup_attribute_name”] = new EntityReference(“related_entity_logical_name”, lookupId); Option Sets (Picklists) Option sets are used to represent a list of choices. They are represented by the OptionSetValue type. Getting an Option Set Value: OptionSetValue optionSetValue = entity.GetAttributeValue<OptionSetValue>(“optionset_attribute_name”); int selectedValue = optionSetValue?.Value ?? 0; Setting an Option Set Value: entity[“optionset_attribute_name”] = new OptionSetValue(1); // Assuming 1 is a valid option Multiselect Option Set Multiselect option sets allow multiple selections from a list. Getting a Value: IEnumerable<OptionSetValue> multiSelectOptions = entity.GetAttributeValue<IEnumerable<OptionSetValue>>(“multiselect_optionset”); Setting a Value: entity[“multiselect_optionset”] = new List<OptionSetValue> {     new OptionSetValue(1),     new OptionSetValue(2) }; // Assuming 1 and 2 are valid options Boolean Values or Two Options Boolean fields represent true/false values. Getting a Boolean Value: bool? isActive = entity.GetAttributeValue<bool?>(“boolean_attribute_name”); Setting a Boolean Value: entity[“boolean_attribute_name”] = true; // or false Getting a Boolean Value: OptionSetValue twoOptionsValue = entity.GetAttributeValue<OptionSetValue>(“two_options_attribute”); bool isSelected = twoOptionsValue?.Value == 1; // Assuming 1 is ‘Yes’ Setting a Boolean Value: entity[“two_options_attribute”] = new OptionSetValue(1); // Set to ‘Yes’ DateTime DateTime fields are used for date and time information. Getting a DateTime Value: DateTime? createdOn = entity.GetAttributeValue<DateTime?>(“datetime_attribute_name”); Setting a DateTime Value: entity[“datetime_attribute_name”] = DateTime.UtcNow; // Set to current date and time Image Image fields store binary data like photos or documents. Getting an Image: var image = entity.GetAttributeValue<EntityImage>(“image_attribute”);byte[] imageData = image?.ImageData; // Assuming you handle the image type properly Whole Number Whole numbers are represented as int. Getting a Value: int wholeNumber = entity.GetAttributeValue<int>(“whole_number_attribute”); Setting a Value: entity[“whole_number_attribute”] = 42; Floating Point Number Floating point numbers allow for decimal values. Getting a Value: float floatingPointNumber = entity.GetAttributeValue<float>(“floating_point_attribute”); Setting a Value: entity[“floating_point_attribute”] = 3.14f; Decimal Number Decimal fields store precise decimal values. Getting a Value: decimal decimalNumber = entity.GetAttributeValue<decimal>(“decimal_number_attribute”); Setting a Value: entity[“decimal_number_attribute”] = 123.45m; Setting Data Types After retrieving the desired values and possibly making changes, you need to update the entity. This is done using the Update method. service.Update(entity);    Some Additional Data Types you Might Encounter in Dynamics 365 C# Plugins such as : 1. Guid Getting a Value: Guid uniqueId = entity.GetAttributeValue<Guid>(“unique_attribute”); Setting a Value: entity[“unique_attribute”] = new Guid(“d3c1d9c8-7438-44b5-91b1-f40241b0f84d”); 2. Composite Fields Getting a Value: string city = entity.GetAttributeValue<string>(“address1_city”); string state = entity.GetAttributeValue<string>(“address1_stateorprovince”); Setting a Value: entity[“address1_city”] = “Seattle”;entity[“address1_stateorprovince”] = “WA”; 3. Unique Identifier (Primary Key) Getting a Value: Guid entityId = entity.Id; Setting a Value: Entity newEntity = new Entity(“entity_logical_name”) {     Id = Guid.NewGuid() }; 4. PartyList (Used in Activities) Getting a Value: string city = entity.GetAttributeValue<string>(“address1_city”); EntityCollection partyList = entity.GetAttributeValue<EntityCollection>(“to”); foreach (Entity party in partyList.Entities) {     EntityReference partyRef = party.GetAttributeValue<EntityReference>(“partyid”);     // Do something with partyRef }   Setting a Value: Entity party = new Entity(“activityparty”); party[“partyid”] = new EntityReference(“contact”, new Guid(“c3e4b159-64af-4c3d-b894-6d62007dbe79”));   EntityCollection partyList = new EntityCollection(new List<Entity> { party }); entity[“to”] = partyList; Conclusion Handling various data types in Dynamics 365 plugins is critical for creating robust and adaptable solutions. Knowing how to work with fields such as text, currencies, lookups, option sets, and others enables you to manage data more precisely and conduct custom activities in our CRM. With these examples, you now have the ability to retrieve and set values for a variety of common data types, making it easy to create plugins that match our organization’s requirements. As you gain experience, you’ll notice that handling data in plugins becomes easier, allowing you to focus on developing smart and effective solutions. 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 :

SEARCH BLOGS:

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange