CRM Archives -

Tag Archives: CRM

Bridging the Gap: How Sales Reporting Aligns Teams with Business Objectives

In today’s fast-paced business landscape, alignment between sales teams and overall business objectives is crucial for success. However, many organizations struggle with fragmented communication, misaligned goals, and inefficient decision-making. This is where sales reporting plays a transformative role. By leveraging accurate and real-time data, businesses can ensure that every department—from sales to marketing to finance—is working towards a unified vision. The Importance of Sales Reporting in Business Alignment Sales reporting is more than just tracking revenue—it’s a strategic tool that helps businesses: How Sales Reporting Aligns Teams 1. Data-Driven Goal Setting Sales reporting provides clear benchmarks for teams to measure performance. By using historical data, businesses can set realistic sales targets that align with revenue goals, ensuring that every department contributes to overall growth. 2. Transparency and Accountability When all departments have access to sales performance metrics, it promotes accountability. For example, if a sales team struggles with conversions, marketing can adjust its lead generation strategies accordingly. This ensures that teams are not working in silos but rather as a cohesive unit. 3. Optimizing Sales Strategies Regular sales reports highlight which products or services are performing well and which need improvement. Sales managers can use these insights to refine sales pitches, adjust pricing strategies, or reallocate resources to high-performing areas. 4. Customer Insights for Better Engagement Sales reports provide valuable data on customer behavior, preferences, and buying patterns. This enables teams to personalize their approach, leading to higher customer satisfaction and increased retention rates. For example: A mid-sized SaaS company struggling with declining sales implemented real-time sales dashboards to track performance across multiple teams. By analyzing the data, they: Example 1: CRM Dashboard for Sales Performance Analysis A CRM Dashboard, like the one shown below, helps businesses track critical sales metrics: By leveraging such dashboards, companies can make data-driven decisions, enhance collaboration, and ultimately align sales efforts with overarching business goals. Example 2: Sales and Brand Performance Dashboard Another example of effective sales reporting is a Sales and Brand Performance Dashboard, which provides: This level of visibility ensures that sales, marketing, and finance teams are working towards common business objectives, optimizing resources, and increasing profitability. To Conclude, sales reporting is not just about numbers—it’s about aligning teams with business goals to drive success. If your business is looking to improve sales performance, start by implementing data-driven reporting tools to enhance collaboration, optimize strategies, and achieve long-term growth. Want to learn more about how sales reporting can transform your business? Get in touch with us today for consultation! 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.

Automating Opportunity Timeline Updates for Owners and Sales Teams in Dynamics 365 using power automate

Posted On September 5, 2024 by Mithun Varghese Posted in Tagged in

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

Trigger Power Automate Flow using JavaScript – Uni-Directional

Hi All, Did you know you can use JavaScript to trigger Power Automate flows and pass input data? So, I’ll show you how to do that, as well as how to pass strict structured data and dynamic schema in Power Automate. In the next blog, I’ll talk about Trigger Power Automate Flow using JavaScript – Bi-Directional Steps to follow for Initial Setup Step 1: Let’s create a Power Automate Flow and define the input JSON schema.Go to: Power Automate Create an Instant Flow with the trigger ‘When a HTTP request is received‘ Step 2: Let’s outline the input schema and then focus on the output in a ‘Compose’ block. I’ll describe two types of inputs. (Strict and Dynamic).Our strict schema will be identified by a specific pattern indicating how the input should be given.Our dynamic schema will be recognised by an unknown pattern, and input will not always be fixed. Click on ‘Use sample payload to generate schema’. Apply the following code, click on Done and you will see the schema in ‘Request Body JSON Schema’. Add a Compose Block to check the output of the request and save the Flow. URL will be generated and is ready to be used. Let’s now proceed to create JavaScript to trigger this flow Steps to follow for calling Flow using JavaScript Since I’ll show the code snippet, adjust it as per your use case. Note: Copy your HTTP Post URL from the trigger as it will be used in the JavaScript Step 1: Type the following code Step 2: Execute the JS with ‘TriggerFlow.Main()‘. Note: Make sure you pass Execution Context to the JS Step 3: Check your Power Automate Flow History and open the Run. That’s how Power Automate is triggered using JavaScript. Hope this has helped you 🙂 Next blog – Trigger Power Automate Flow using JavaScript – Bi-Directional

Make form read-only using JavaScript 

Posted On September 23, 2022 by Richie Jacob Posted in Tagged in ,

One way to lock down a form is through JavaScript. Let’s go through how to do this by looking at the code. var formCustomizations = { disableForm: function (executionContext) { let formContext = executionContext.getFormContext(); let formControls = formContext.ui.controls; formControls.forEach(element => { if (element.getName() != “” && element.getName() != null) { element.setDisabled(true); } }); } } Here when the JavaScript Function Is called and the execution parameter is passed, the user can see the desired output. formContext.ui.controls; Provides the properties and methods to retrieve information about the user interface (UI) controls for several sub-components of the form. formControls.forEach(element => { if (element.getName() != “” && element.getName() != null) { element.setDisabled(true);} Here the forEach loop will traverse and see if there are any fields that are not blank and the field value is not null, then set all that fields to read only on that form. Hope this helps!

Create new records in CRM from JSON data in Blob Storage

If you want to create new records from a json data, you can do it by using Logic App. First you need to make sure to upload json file in blob container Steps for Logic App: First select a HTTP Trigger block in a new logic app designer Next step is to select Get blob content (V2) and choose the storage account name and the blob file where you uploaded the json file. Note: If you don’t have a connection to Blob Storage account already you need to create one by clicking on change connection and the Add New. You need to fill the details properly to create a correct connection. Access Key of the storage account can be found in Storage account in access keys section Now select Parse Json block to extract all values. Click on use sample payload and paste your payload there to get a schema. Note: In Content if you directly put File content then you will get error after you run the logic. Error: You get this error so for the you need to convert the octet-stream file to json file by writing the following function json(body(‘Get_blob_content_(V2)’)) Now once your json is parsed you need to create record in CRM using this data by selecting Create a new record block in CRM. You need to first sign in with your CRM account and then choose the organization and entity. Later you need to map the fields. Note: If there are mulitple records in json then the logic app will automatically take the create new record block in  for each block as a step. Now the records will be created in CRM.

Event Based Processing – Creating a Request/Reply Map in Tibco Scribe Online

In this Blog a Request/Reply Map is created to verify the Event based map which can send and receive data. This can be done a number of ways but Postman is more commonly used utility that can be used for this purpose. Login to app.scribesoft.com and select the Organization as CloudFronts Technologies LLP. To Create a new Solution click on the + Button and Select Integration Event Now Rename the Solution and in the Maps section, click on the three ellipsis and select Create Request/Reply Map to create a new Map. Now Rename the Map and Add Connector. You can Create a new Connector or select any connector which is already created. Create a Map as shown below. In Wait for Request Block, click on Request and add field names as desired and Click on Validate and then OK. In Create Block, in General Tab and add the entity name in which you want to integrate. In Fields Tab, map the important fields and click on OK. In Build Reply Block, in the Fields tab drag and drop the fields from Results section to the Target Connection side and the click OK. Once the Map is created then Click on Apply and OK. Again open the map and copy the Endpoint URL. Now in Postman click on + icon and Add a request. Select POST and paste the Endpoint URL, then in Authentication tab select No Auth. In the Headers tab, enter the Key and the value as shown In the Body tab, select raw and select JSON, then type the JSON Format and enter the field and value as desired. Click on Send. You will get this as result in the Body section. In Tibco, in the execution history you can see the process is completed successfully. In CRM, you can now see the Record is created.

Disable field on change of tab in D365 CE

Use case – Our requirement is to enable field description field on invoice line form on clicking of tab General. Let’s see how we can achieve this Solution – Step 1 – Create web resource with below function- var invoiceLineCustomization = {     unlockField : function(executionContext)     {         var formContext = executionContext.getFormContext();             formContext.getControl(“description”).setDisabled(false);     }, } Step 2: Add this web resource on tab property event TabStateChange and try. (path to go to event tab – Click on tab -> change properties -> event) Output – Hope this helps !

Disable field in Business Process Flow in D365 CE using JavaScript

Use case – Our requirement is to mark field Purchase time Frame disabled in Business process flow on change of disable field(custom field) on opportunity form. Let’s see how we can achieve this Solution – Step 1 – Create web resource with below function- Add header_process before schema name of field. Here schema name of purchase time frame field is purchasetimeframe. And after adding header_process_purchasetimeframe var opportunityCustomization = {     //opportunityCustomization.disableField     disableField : function(executionContext)     {         var formContext = executionContext.getFormContext();         var disable = formContext.getAttribute(“cf_disable”).getValue();         if (disable == true)         {             formContext.getControl(“header_process_purchasetimeframe”).setDisabled(true);         }     } } Step 2: Add this web resource on form load, on Save and on change of the field. And try Output – Hope this helps !

Let’s get started with Azure Function for Dynamics 365 CRM: Part 2 [Cloud Deployment]

In the previous blog, we have learned how to create an azure function to connect with Dynamics 365 CRM and create an account record whenever an azure function is triggered by the HTTP request. [Link]. In this blog, we will learn how to deploy the Azure Function App to Azure Cloud so that we can trigger that function anywhere. Prerequisite 1. Microsoft Azure Account 2. Active Subscription [Create a Free trial or Pay-as-you-Go Subscription] If you are creating an azure function for learning purposes, then go with Free Trial but if you are working on the development for your organization or client then go for a Pay-as-you-Go subscription. Step 1: Create a resource on Azure Portal for Azure Function Deployment. Login to the portal.azure.com with your account and click on Create a resource: Create a resource for Function App as mentioned below screenshot: Here we will create a new resource group but If you don’t have any existing resources. Following are configuration details that you need to fill during the creation of the resource. Function Name: It is a global URL to access the Azure Function App and it must be unique. Publish: You can directly publish your code or use Docker Container for publishing your Azure function Runtime stack: Here we are building the .net application so we will choose .Net as our Runtime stack to support Azure Function. We have multiple options we can create an azure function for Nodejs, Python, Java, Powershell core or you can use customer handler. After configuration are you ready to click on “Review and Create” It will take a few minutes to create and deploy the Azure Function App in the cloud. Step 2: Publishing the Azure Function from Visual Studio: Open the Azure Function project in Visual studio. Right-click on the Project and click on the Azure. You will get the below screen on that we need to click on the Start. Now we will choose Azure as we are deploying the Azure Function on the Azure Cloud and click on Next: Once you select the azure then it will open the configuration screen. In the configuration window, you need to log in with Azure Account with Active Subscription. Select the resource group and select the function app as mentioned below screenshot. After the configuration is finished click on Publish. It will take a few minutes to deploy the application to the cloud. Step 3: Get Azure Function URL from Azure Portal. Open newly create Function App in the Azure portal app and click on the Function App: You will find the function1 has been deployed. Click on that function to open it. To Get the Function URL click on the Get Function URL and copy the URL. Testing We will require the API testing tool, here I am using Postman and the following is the link to download “Postman”. https://www.postman.com/downloads/ Open the Postman and click on the create a new tab. Select request as POST and paste the URL: After pasting the URL, click on Send: Now, we will take look at Dynamics 365 CRM environment and check whether the account is created or not. Before After: Stay Tuned for the next Blog. In the next blog, we will create a Contact Us form in HTML and post data using Azure Function Dynamics 365 CRM to store the responses from your website. External Links: Azure Function Pricing: https://azure.microsoft.com/en-in/pricing/details/functions/

Populate Signature In Word Template using Cloud flows

Let see how we can populate signature from CRM to Word Template using Cloud flows First we need to understand how to create word template with Content Controls – Create Word Template with Content Controls In Word Document, Select Developer Tab Under the Developer Tab, Insert picture control After Inserting a picture control, Click on Properties -> Name the Title and Tag according to your requirement. In my case I have named title and Tag as Signature. Now we have created a Word Document with content controls. Upload this document in your SharePoint 2. Populate Signature Field using Cloud flows Signature field in CRM is pen control and when we run a flow, we get the field as below Split the above field by “,” Use below expression – split(triggerOutputs()?[‘body/cf_signature’],’,’) Output of above expression – Initialize a variable of type Object and set the Object as shown below- Content is output of split,To get the output of split expression, use below outputs(‘Compose_2’)[1] Syntax – outputs(<stepname>)[position of array] And save the object in a Compose Populate a Microsoft Word Template Add action “Populate a Microsoft word template” in flow Create File in SharePoint File Content of Create file step is the output of Populated Word Template Input – Output –

SEARCH :

FOLLOW CLOUDFRONTS BLOG :

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange