Category Archives: Dynamics CRM
Understanding Azure Function Trigger Methods and Recurrence Syntax in Dynamics 365
Azure Functions are a vital component of serverless computing, offering the flexibility to run event-driven code without the need to manage infrastructure. When integrated with Dynamics 365, they provide a robust mechanism for automating processes and extending the platform’s functionality. This blog explores Azure Function trigger methods and recurrence syntax, highlighting their relevance in Dynamics 365 scenarios. Azure Function Trigger Methods Azure Functions can be triggered by various events. These triggers determine how and when the function executes. Here are some commonly used trigger methods in Dynamics 365 integrations: 1. HTTP Trigger Example: 2. Queue Storage Trigger Example: 3. Timer Trigger Example: 4. Service Bus Trigger Example: Recurrence Syntax for Timer Triggers Timer Triggers in Azure Functions rely on CRON expressions to define their schedule. Understanding this syntax is crucial for scheduling Dynamics 365-related tasks. CRON Expression Format: Examples: 2. Run daily at 2:30 AM: 3. Run every Monday at 9:00 AM: Key Points: Integrating Azure Functions with Dynamics 365 To integrate Azure Functions with Dynamics 365: 4. For asynchronous processes, leverage Azure Storage Queues or Service Bus to manage workload distribution To conclude that, Azure Functions, with their diverse trigger options, provide unmatched flexibility for extending Dynamics 365 capabilities. The recurrence syntax in Timer Triggers ensures that tasks are executed precisely when needed, enabling efficient process automation. By combining these tools, organizations can unlock the full potential of Dynamics 365 in their digital transformation journey. 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.
Share Story :
Unlock the Power of Power Pages: Building Websites with Dynamics 365
Power Pages, which was earlier known as Power Apps Portals, a powerful low-code platform from Microsoft, allows you to create websites seamlessly integrated with Dynamics 365. Whether you’re building a customer portal, a partner collaboration site, or an internal application, Power Pages makes it easy to deliver rich web experiences. Here’s a beginner-friendly guide to help you create your first Power Pages site. What is the difference between Normal Websites and Websites Created by Power Pages? Getting Started with Power Pages: Sign in to Power Pages:To get started, sign in to the Power Pages platform using your Microsoft account. If you don’t have one, create a new account. Once signed in, you’ll be taken to the Power Pages home screen where you can begin creating your site. Create a New Site:You can start by creating a site from scratch. Choose the “Start from blank” option or use one of the available templates to speed up your development process. Templates are pre-built designs that you can customize to fit your needs. Choose a Site Name and Web Address:Select a site name that reflects the purpose of the site (e.g., “Customer Portal” or “Partner Collaboration Site”). Choose an appropriate web address (URL) that aligns with your business branding. Power Pages will guide you through the process of selecting a domain name and integrating it with your site. Configure Site Settings:Once your site is created, you’ll be able to configure various settings such as branding, theme, and layout. Power Pages provides an intuitive interface where you can adjust these settings with minimal effort. Click to edit the Power Pages using the Studio. Design and Edit Your Site:Click to open and edit your site using Power Pages Studio. This drag-and-drop interface makes it easy to add content such as text, images, forms, and data from your Dynamics 365 system. The Studio allows you to customize the site’s design, layout, and interactive elements to create a rich user experience. Let’s add a section and select the column as per your wish. Select ‘List’ Select the table and the list of records you want to see in your Webpage This appears after adding the List. There is a notification to set up permissions on the list. Click on + New permission. Let’s Add roles and click Save. Now click Sync followed by Preview. Sync feature is to make sure that the changes made in the Power Pages Studio are reflected across the platform whereas Preview feature allows you to see a live, interactive version of your website before publishing it. This gives you the opportunity to review and test how the site will look and function for end users. Also, there is another way of editing and designing Power Pages. Why do we need Power Pages Management? While Power Pages Studio is designed for creating and designing websites, focusing on content, layout, and interactivity, the Power Pages Management App provides a separate interface for managing the operational, security, and administrative aspects of the site. Key Functions of Power Pages Management: The separation of responsibilities between the design and management aspects ensures that both designers and administrators can focus on their respective tasks without compromising the site’s functionality, security, or scalability. This division enhances the overall efficiency and flexibility of managing a Power Pages website. Happy Developing! 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
Share Story :
Triggering Custom Action Without Modifying the Record in Dynamics 365 using JavaScript
In Dynamics 365, custom actions allow you to perform specific business logic, such as sending emails, making calculations, or calling external services. Often, these actions are triggered based on field updates or changes to records. However, there may be situations where you want to trigger a custom action through a button click, without modifying any record fields or triggering unnecessary updates. In this blog, we’ll explore how to use a button to trigger a custom action for a creating a specific task record in Dynamics 365 using JavaScript, that too, without modifying the record. Here’s the JS code used to trigger the action: Attach the JavaScript function to the button ‘Create Task’ event of the Case form, so that every time a case is created, the follow-up task is automatically generated. Click on the ‘Create Task’ button. And here, we have the follow up task created. Happy Developing! 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.
Share Story :
Building Custom Solutions with Low-Code Plugins: Part 1- Overview
Low-code development has revolutionized the way businesses build software applications. By providing a visual, drag-and-drop interface, low-code platforms enable developers to quickly create complex applications without writing much code. However, even with the power of low-code platforms, there may be times when you need to extend their capabilities to meet specific business requirements. This is where low-code plugins come into play. Low-code plugins are small pieces of software that can be added to a low-code platform to extend its functionality. In this blog post, we will discuss the benefits of using low-code plugins, the steps involved in creating them, and some tips for successful development. Benefits of Using Low-Code Plugins Low-code plugins offer a number of benefits for businesses, including: Steps in Creating a Low-Code Plugin The process of creating a low-code plugin typically involves the following steps: Tips for Successful Low-Code Plugin Development Here are some tips for developing successful low-code plugins: Example Use Cases Low-code plugins can be used to solve a variety of business problems. Here are some examples: Conclusion Low-code plugins offer a powerful way to extend the capabilities of low-code platforms and create custom solutions that meet specific business needs. By following the steps outlined in this blog post and incorporating the tips for successful development, you can effectively leverage low-code plugins to drive innovation and achieve your business objectives. Later we will see working of the Low-Code Plugin in Dynamics 365 CRM with an example. 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.
Share Story :
Building Better Forms: Mastering Form Components in Dynamics 365
In today’s ever-evolving app development landscape, delivering an exceptional user experience is critical. Power Apps offers various tools to help developers create intuitive and efficient applications, and one of the standout features is the Form Component. This feature simplifies the design and usability of forms, making applications more scalable and maintainable. What Are Form Components? Form Components in Power Apps are modular elements that can be created once and reused across multiple forms or applications. By utilizing these components, developers can maintain consistency in design, functionality, and behavior. Essentially, they act as reusable building blocks for forms, streamlining the development process and enhancing the user experience. A common use case for Form Components is displaying entity-specific forms, such as a Quote Lookup field. Let’s explore how to implement a Form Component for this scenario. Implementing a Form Component for the Quote Lookup Field Imagine you have a requirement to display the form of a specific entity, such as a Quote, using the Quote Lookup field. Follow these steps to set it up: After selecting the form in the Component, the Lookup field will display like this Save and Publish: After adding the Form Component, click ‘Save’ and then ‘Publish’ to apply your changes. Key Considerations Once the setup is complete, your Quote Lookup field will display the desired form seamlessly. Here’s how it will look: With these steps, you can enhance the functionality of your forms and deliver a better user experience in your Dynamics 365 applications. Happy developing! 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.
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 :
How to Send D365 CRM Emails with Attachments Using Power Automate
Introduction In this guide, we’ll walk through the process of sending emails from D365 CRM with attachments using Power Automate. This step-by-step approach will help you understand how to automate your email communications from CRM with attachments efficiently. Use-Case Let’s say you’re working on a project where you need to send emails from D365 CRM that include attachments. In this example, the document is stored in SharePoint, and its URL is linked within the CRM record. This setup is common in CRM where files are centrally stored in SharePoint but need to be easily accessible in CRM for email communication and tracking in CRM. However, this approach is versatile—whether you want to attach specific documents, generate them dynamically, or handle a range of file types, it can be adapted to meet your use-case needs. Why this solution? Main objective of using D365 Emails is the ability to track the emails to the record to keep track of communications in timeline. Also, manually attaching documents to each email is time-consuming and prone to errors. With Power Automate, you can automate this process, ensuring that every email includes the right attachment without extra steps. This solution not only saves time but also reduces the risk of sending incorrect or outdated files, keeping your communications accurate and efficient. Implementation – Step by Step As per my use-case, I have added a column in Accounts table that will hold my SharePoint file URL which I’ll use in power automate. Step 1: Trigger the Flow when a flag is marked true to send email report. Step 2: Get the file content using SharePoint path Step 3: Create a new ‘Email Message’ record in data verse (Add a new row) Step 4: Add a new row for ‘Attachments’ and link to email message record Add the custom value as shown below Add Base64 to your file content Add file name Step 5: Send the email That’s it Let’s test it – Results Trigger the flag (as per my use-case) The Email record with attachment Conclusion By integrating Power Automate to handle attachments from SharePoint, you streamline your email process, save time, and minimize errors. This solution is especially valuable for cases requiring frequent attachments or centralized file storage, as it keeps communication efficient and files up-to-date. 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 :
Automating Opportunity Timeline Updates for Owners and Sales Teams in Dynamics 365 using power automate
What is Opportunity in D365 CRM? The opportunity table represents a potential sale to new or established customers. It helps you to forecast future business demands and sales revenues. You can create a new opportunity in Dynamics 365 for Customer Engagement to monitor an inquiry from your existing customer or convert a qualified lead into an opportunity. Opportunities are frequently used by salespeople to monitor the sales engagements they are presently working on. For More details, please follow the linkhttps://learn.microsoft.com/en-us/dynamics365/sales/developer/opportunity-entities What are Notes in Timeline Section of D365 CRM? The timeline makes the entire history of activities visible to app users. The timeline control is used to capture activities like notes, appointments, emails, phone calls, and tasks to ensure that all interactions with the related table are tracked and visible over time. Use the timeline to quickly catch up on all the latest activity details. For More details, please follow the link https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/set-up-timeline-control Use Case: Using Power Automate, whenever the notes in the Opportunity’s Timeline are updated, an automated email will be sent to the Opportunity Owner and associated Sales Team in the timeline of that Opportunity. Steps: – Login to make.powerautomate.com with your CRM credentials and you will land onto this page. – Once you have landed into Power Automate Page, click on Create and selected Automated Cloud Flow – Set your Trigger as the below since the flow should start working only when the Notes are added in the timeline of the Opportunity. – I have also set a certain condition to this flow. In other words, it checks whether there is a non-empty value in _objectid_value and that this value’s type is ‘opportunities’. The expression returns true if both requirements are satisfied and returns false otherwise. – The Expression is @and(not(empty(triggerOutputs()?[‘body/_objectid_value’])), equals(triggerOutputs()?[‘body/_objectid_type’], ‘opportunities’)) – Then Initializing variable for Email Addresses – Initializing variable for Notes Table – Retrieving the Owner’s Email Address. This step is necessary to obtain the Opportunity Owner’s email address so that we can send the initial notification email to them. – List All Notes in the Opportunity. We use the List rows action to retrieve multiple Note records associated with the Opportunity. This allows us to access all the notes within the Opportunity’s timeline. – Get opportunity by ID. Here we are fetching the complete details of to access all the fields and data associated with the specific record. We are filtering out based on name and opportunity id. The row ID is typically obtained from another step in your flow, such as a “List rows” action or a trigger that provides record details. My record details where I need fetch details is from Opportunity. – After retrieving the record, we need to fetch details of the associated Sales Team. This ensures that whenever a record is linked to the Sales Team, all members of the Sales Team receive an email notification. Thus, we are connecting the Sales Team to the Opportunity to include them in the notification process. The Fetch XML needs to be taken from Advanced Find in CRM. – In this step, we need to store the email address of the sender (i.e., the “From” user). We initialized this variable in step 3, so here we will save the GUID of the sender into that variable. – In this step, we need to save the email address of the recipient (i.e., the “To” user). We initialized this variable in step 3, so here we will store the GUID of the recipient into that variable. a participationtype mask of 2 indicates a specific participant role or type, i.e., sales team members associated with this Opportunity. – Next, we need to ensure that the content is structured within a table. As specified in step 6, I created a variable called `NotesTable` to hold this data. We will use this table to format the content into an HTML table for the email. – In this step, we are configuring the URL link for the Opportunity. Include the base URL of the environment and append the unique identifiers for both the Opportunity and the Topic field (which is a field within the Opportunity). – Sending an Outlook Email to the Opportunity Owner and Sales Team associated with the Opportunity. This Outlook mail works only if ‘Email Addresses Sales Team is Skipped’. – In Power Automate, adding a new row typically involves using actions provided by connectors such as Dataverse, SQL Server, SharePoint, or others, depending on where your data is stored. Here we have created an email body in this action. – In this step, we are using a bound action to send emails within the CRM system. Output: – Once, I click on Add Note, waiting 5-10 seconds and then you find the email within the timeline. Please note that the Email is tracked within CRM itself. – Below is the Opportunity which contains the Opportunity Owner, and the Sales team associated with that Opportunity. The Owner is CF Admin, and the Sales Team Members are Amit Prajapati, Ethan Rebello and Mithun Varghese. – The Opportunity Owner and Sales Team will receive notifications about the Notes in the timeline. All email interactions will be tracked in the Opportunity’s timeline, where you can also view all previous notes associated with this timeline. Conclusion: Automating bulk case resolution using Power Automate in Dynamics 365 CRM offers an efficient way to streamline your workflows and reduce manual errors. By setting up automated email notifications for updates in the Opportunity’s timeline, your sales team and opportunity owners stay informed, ensuring smoother communication and faster response times. We hope you found this article useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfronts.com
Share Story :
How to bulk resolve cases using Power Automate?
Introduction When dealing with a large volume of cases, manually handling each one can be time-consuming and error prone. Thankfully, Microsoft Power Automate provides a powerful solution for automating bulk case resolution, streamlining your workflow, and saving valuable time. Why Automate Bulk Case Resolution? Bulk case resolution involves addressing multiple cases at once, which can be necessary for various reasons, such as resolving customer complaints, updating status, or closing resolved cases. Automating this process can: Getting Started with Power Automate Flows Log in to Power Automate and sign in with your credentials. Start a new flow. Click on ‘Create’ from the left-hand menu and select ‘Automated flow’ for a trigger-based flow or ‘Instant flow’ for a manual trigger. Click on ‘Create’ from the left-hand menu and select “Automated flow” for a trigger-based flow or ‘Instant flow’ for a manual trigger. Add an appropriate Flow Name and also, select the Trigger. Once the trigger has been added to the flow, click on ‘+ New Step’ to add an action to process the cases. We have an Excel sheet that contains the records of the cases to be resolved. So, we add an action of ‘List rows present in a table’. Add a step ‘Apply to Each’ where it iterates through list of cases in the Excel sheet and retrieves the case using ‘Get a row by ID’ Finally, add another step ‘Add a new row’ a record of Case Resolution and pass the Case GUID which resolves the case. Conclusion Automating bulk case resolution with Microsoft Power Automate can significantly improve your team’s efficiency, reduce manual errors, and free up valuable time for more strategic tasks. By setting up flows to handle multiple cases at once, you can streamline your workflow and ensure that cases are resolved quickly and accurately. 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 :
Integrating Azure Logic Apps with Common Data Service
Integrating Azure Logic Apps with the Common Data Service (CDS) opens up a world of possibilities for automating business processes and enhancing productivity within your organization. This blog will guide you through the steps to set up this integration, explaining the benefits and practical applications along the way. Azure Logic Apps is a powerful cloud-based service that allows you to automate workflows and integrate apps, data, and services across organizations. The Common Data Service, now known as Dataverse, provides a secure and scalable data storage solution that supports integration with various Microsoft and third-party applications. By integrating these two services, you can streamline data flow and automate complex workflows with ease. Prerequisites Before you begin, ensure you have the following: – An active Azure subscription. – Access to the Common Data Service (Dataverse) environment. – Necessary permissions to create and manage Logic Apps and CDS. Log in to the Azure Portal: Go to Azure Portal. Create a New Logic App: – Search for “Logic Apps” in the search bar. – Click on “Add” to create a new Logic App. – Fill in the required details (name, resource group) and click “Create”. Add a CDS Connector: – Once the Logic App is created, open the Workflow and Add one. – Click on “When a row is added” under Common Data Service triggers. – Sign in to your CDS environment and grant the necessary permissions. Configure the Trigger: – Select the relevant entity – Accounts and specify the trigger conditions – When a row is added. – Accordingly, when a record is added then create a Contact Record. – Save the Logic App Testing Out: Scenario – Create a new account in your Dynamics 365 / Power App. After a few moments, refresh and we see the contact has been created and assigned to the new Account. – So, we know our Logic App has run. Now let’s look at it in the Azure portal. Under Metrics, we see the Logic App has run. Why Integrate Azure Logic Apps with Common Data Service? 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
