Category Archives: Dynamics CRM
How to create and add/attach a custom activity-type entity to an existing entity in Dynamics 365 CRM
Introduction Activities are tasks or sorts of homework that we as a team perform when contacting a customer for example making a phone call, making an appointment or calls, and so on. You can set the status of this activity to complete pending or in progress. For more details, please follow the link: Activity entities (Developer Guide for Dynamics 365 Customer Engagement … Steps to create and add/attach a custom activity entity in D365 CRM Step 1: Log in to the required D365 CRM environment using the URL https://home.dynamics.com. by providing a username and password and selecting your environment accordingly. Step 2: Once logging into your Dynamics 365 CRM, select the model-driven app you are currently working on. In my case, it’s Sales Team Member. Step 3: Once you are in your app, Click on the Settings icon and select [Advanced Settings]. Step 4: Click on Solutions. Create a solution or go to an existing solution. Click on Entities once inside the solution and Click on New. Once you name your entity don’t forget to tick on the [Define as an activity entity] checkbox. You can also check boxes on other options according to your need. Step 5: You can also notice the other checkboxes in Communication & Collaboration column, most of the options are non-editable.It’s because we are enabling it as an activity entity. Hence, all the checkboxes related to the Custom Activity Entity get non-editable. Step 6: Now we have to add the custom activity which we created. Click on the entity with which you are working. Then go onto the Forms inside that Entity in which you are working. Step 7: In Forms, once you have done your customizations, Add the activity timeline by enabling it during the entity creation on which you are currently working (checkbox those 2 columns and that’s how you can view the activities timeline in Form). Step 8: Once done with the above step, click on Activities & Notes and you can view the Activities & Notes Timeline. Step 9: Double tap on the Notes timeline and go to Activities. Step 10: Select the custom activity which you created. In my case, it was Order Review. Step 11: Click Ok. Save and Close and don’t forget to Publish the Customizations. Once this is done navigate to the Dynamics 365 CRM Main Form. As you Can the custom entity which we created has been added. Step 12: Click on ‘Order Review’ and add the details. Also, remember you can add many fields to this custom entity as per your requirements. How to do that is by going back to the Solution and navigating to this entity(Order Review). Create or add a new field and then add the Field to the Form. Save and Publish the Customizations. Hope this Helps.!!!
Share Story :
How to add an Entity and fields in Global Search On Dynamics 365 CRM
Introduction Global Search for Microsoft Dynamics 365 is a custom module, which allows you to search across all CRM entities at the same time, providing results in a single-view convenient layout. For more details please follow the link: Global Search for Microsoft Dynamics CRM Online User Manual Adding an Entity and fields in Global Search On Dynamics 365 CRM Step 1: Log in to the required Power Apps environment using the URL https://home.dynamics.com. by providing a username and password and select your environment accordingly. Step 2: Once you have logged into your environment, click on the Settings Icon and select Advanced Settings. Step 3: Drop down Settings and then click on Administration. Step 4: After clicking on Administration, select System Settings. Step 5: Go onto the option Set up Search and then click on Select. Step 6: For FYI, you can select 10 Entities at a time for Global Search. So Select the 10 Entities according to your requirements. We can even sort the Entities using the options Move up and Move down. Step 7: As I have said in Step 5, the maximum number of entities that can be added is 10. Step 8: Once the above steps are done, Return to the below page and click on [Solutions]. Create a solution and add the required table which you wanted to show in Global Search. In my case, the table name is Order Fulfillment. So accordingly add your Entity/Tables. Step 9: Click on the Entity in which you are working inside the solution and click on Views. Step 10: Typically, the global search option in D365 CRM is associated with Quick Find View. Select the Quick Find Active Order Fulfilments view. Step 11: Add the Fields which are needed for View and Find Columns. FYI, in the main D365 CRM Form, the global search has the feature of displaying only the first 3 fields of that view. So insert the important 3 fields in the view first. Step 12: Once all the customizations are done, Save and publish the solution. Step 13: Return to the D365 CRM Main page of our Model Driven App and as highlighted below, click on that icon and try searching for the value of the field. For example, If you have added a field named ‘Order Number’, Try searching the value of that field. Step 14: Once I type the value, the entity in which the value has been present has shown up. For your information, only three fields will be visible once you do the global search and 10 Entities can be visible during the global search. Hope this Helps!!!
Share Story :
How to create a SharePoint site and enable Server-Based SharePoint Integration for Document Management System in D365 CRM
What is a SharePoint site? Sharepoint site is an application which is provided by Microsoft which can be used to store information and content. This may include documents, images videos, tasks, and so many things. For more details please follow the link Steps to create a site and integrate your SharePoint with D365 CRM Step 1: Log in to Office 365 login and open SharePoint. Step 2: Once you click on Sharepoint, go onto the Home icon and click on +Create site. Step 3: Click on Team site. My requirement is to track my project status and to share team resources and co-author content. So that’s why I select the Team site. Step 4: Enter your details for your new site and once done, click on Next. Step 5: You can also add specific members for your site(not necessary). Once done click on Finish. Step 6: Once you click on Finish, it will redirect it to your site which you created. Just copy the above link of your site which I highlighted. Just copy the link to your site. It will be used later. Step 7: Go into Dynamics 365 CRM and login in with your credentials OR mention your URL for e.g. abcde.crm.dynamics.com and then login. Once done, click on the ellipses(3 dots) and select Advanced Settings. Step 8: Drop down the Settings icon and click on Document Management. Step 9: Click on Enable Server-Based Sharepoint Integration. Step 10: In simple terms, what we are doing is integrating and validating the configuration of SharePoint. Click on Next. Step 11: Select Online and then click on Next. Step 12: Enter the URL I previously asked to copy and paste(In Step 6). Paste that link here and click on Next. In the Next Step, it will validate that site. After that click on Finish and wait for 3-4 mins. Step 13: After Refreshing you will observe that Enable Server-Based Sharepoint Integration section has changed to One Note Integration. This means that your SharePoint has been enabled and what’s remaining is to add the entities which need to be stored in Sharepoint. Step 14: In Order to do that, click on Document Management Settings. Step 15: Select the entities which you want to enable for the Document Management System. Step 16: If you want a folder structure based on a certain entity you can check the option Based on entity and select the entity you want. Step 17: Click OK to continue. Step 18: FYI the status is showing me cancelled since I have already created the document management system for these selected entities previously. In your case, the status will show completed if you are doing it for the first time. Step 19: Go onto your SharePoint site and click on Site contents Step 20: Here you can view all the entities which were selected for the Document Management System. Hope this Helps!!!
Share Story :
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
Share Story :
How to Use Solution Checker to identify usage of the OrganisationData.svc endpoint (Odata Deprecation for Web resources)
The Organization Data Service is an OData v2.0 endpoint introduced with Dynamics CRM 2011. The Organization Data Service was deprecated with Dynamics 365 Customer Engagement v8.0 in favor of the Web API, an OData v4.0 service. For more details please follow the link https://powerapps.microsoft.com/en-gb/blog/odata-v2-0-service-removal-date-announcement/ OData v2.0 Service removal date announcement | Microsoft Power Apps To determine the deprecation in your old javascripts below is the blog you can refer to. Step 1: Log in to the required Power Apps environment using the URL make.powerapps.com by providing a username and password and select your environment accordingly. Step 2: Go onto Solutions and click on [+ New solution] from the menu bar Step 3: Name your Solution and fill in all the details which include the Publisher as well as the Version details. Step 4: Go inside your solution and select Add existing option. Click on More and select Web resource. Step 5: Search for your web resources using your custom publisher. For example, your publisher might be new_ or abc_ and so on.It depends on how you name your publisher. Step 6: Select all the web resources you required and once done, go back to the solution and click on the ellipses(3 dots) of your solution. Click on the option Solution checker and select Run. Step 7: We can also view the Run Status of the solution. Step 8: Click on Ellipses(3 dots) again of the solution you have worked on and click on Solution checker and then you can view the option Download results. Click on that option and once you download it, it will be downloaded in the form of xlsv(excel). Try searching the issue for web-avoid-crm2011-service-data on that excel sheet. Hope this helps!!!
Share Story :
Button missing from ribbon Dynamics CRM (Field Service Work Orders)
Recently I faced issues with some of our custom and Out of the Box ribbon buttons disappearing for example look at the snapshot below. For any selected service order I was not able to see the Run Flow button which runs on-demand workflows and Power Automate Flow (and a few custom ribbon buttons as well). I investigated and found out that this happens because of a field service setting called “Show Simplified Work Order Command”. As per the document – https://learn.microsoft.com/en-us/dynamics365/field-service/configure-default-settings This setting influences the command bar on work order records and lists. By default, this field is set to Yes, which shows only the most relevant commands for work orders. The following commands will be hidden from the form: deactivate, check access, process, add to queue, queue item details, assign, share, email a link, flow, Word templates. The following commands will be hidden from the list view when no records are selected: email a link, flow, import from Excel. The following commands will be hidden from the list view when a record is selected: activate, deactivate, email a link, add to queue, flow, Word templates, Excel templates. When set to No, all commands are shown. To turn it off in your field service app go to settings from the change area and select Field Service Settings, under field service setting turn off Show Simplified Work Order Commands to No. Now we can see our run flow button along with a couple of other buttons. I hope this helps!
Share Story :
Exploring XRM Toolbox Part 1
In this blog, we will explore the use of the XrmToolBox and different tools present in the store. XrmToolBox is free to use tool that connects with the Dataverse environment and provide you with various tools that allow performing heavy management task very easily. Many developers have contributed to XrmToolBox Store by creating a tool/library which is beneficial in the regular development and management work of Dynamics 365 CRM Consultants/Developers. You can find the Installation and setup guidance from a website that you can follow as we directly going to start exploring different types of tools available. Home Page: https://www.xrmtoolbox.com/ Connection Setup with Dataverse Environment: https://www.xrmtoolbox.com/documentation/for-users/manage-connections/ Tool #1: “Security Role Sync” created by Bharath Sheelam The tool is created to sync the security roles between two users. I have two users present in the dataverse environment and I have a requirement to sync roles from one user to another. If we need to sync the roles from “Amit Prajapati” to “CRM Admin” we need to select “Amit Prajapati” in Source and “CRM Admin” in Destination. Once you select the user, you need to click on Sync Security roles it will start syncing and notify you once it is completed. Result: Amit Prajapati has below roles: Before Sync Roles on CRM Developer Account After Sync Roles on CRM Developer Account Use Case and Benefits: Developer work can be minimized using this tool as they might be having multiple users to sync the roles and debug the security permission. Remove the manual efforts to check for the reference user’s security permission and apply it to the required user. Let’s say you have to replicate the security permission from User 1 to User 2 and without this tool you need to open the security permission of User 1 and note it down then only replicate the same permission to User 2 If you have a scenario where functionality is working for one user and not working for another user due and you are getting a security permission error. You can use this tool and sync the security roles considering they should be belonging to the same security based on business requirements. Tool #2 “Security Debugger” created by Mark Carrington This tool is very useful, and it helps you to find the solution to all permission-related issues. It will provide you with the details of which security roles are missing considering you have a security permission error log with you which is required for this tool.
Share Story :
Dynamically filter required Fields/Columns from a Record’s BPF and Form and apply Requirement to those fields
Hi Everyone, Let me explain this topic with an example of a scenario that you might encounter. I’ll walk you through how to complete this scenario in a concise manner below. Use Case Let’s say you have a Table (Entity) with or without multiple Business Process Flows (BPFs) that include some required Fields and even on the Form. Even if the required fields are empty and you want to change a field or flag within the form and save the record. We must disable all required Fields on the Form and then re-enable the requirements for those fields. We can do this with some simple JavaScript code. Step 1: Find a trigger point for your JS function to be called.It can be done with a Ribbon Button or by manually changing a Field. Find the code you’ll need below. I’ll be using Ribbon Button to trigger my JS Function. Quick Tip: You cannot get any Attribute Value of a Field residing in BPF directly. You need to get the entire Control of the Field and then call its attribute values. Step 2: Register your JS function onto your Ribbon Workbench or OnChange of any Field on Form. Since I called my function using Ribbon Button, I used “OpportunityForm.executeMain” with Parameters; “CRM Parameter -> Primary Control“ If you’re calling the JS using Field OnChange, then register the function as “OpportunityForm.executeMain” and do pass ‘executionContext‘. In this case, your part of the script will change as below (use this if you use JS on your Form only) OUTPUT This is how all fields will have no requirement on the Form. I took this output before re-enabling the requirement level for the fields. That’s all, I hope this helped you
Share Story :
Make form read-only using JavaScript
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!
Share Story :
Cancel the running flows with JavaScript code
We will look at how we can use JavaScript to cancel flows that are running without canceling each flow manually. To do this, follow the steps below. Let’s look at a scenario where we are seeing the flows that are in a running state and are not terminating. Click on All runs, this navigates you to all flow runs view. When we are in the All runs view, we need to open the developer console in the browser. The developer console can be opened by clicking F12 (or holding fn and F12) on Windows. Or by right-clicking on the screen and clicking Inspect. In the developer console, navigate to the Console pane. To clear the console window, click CTRL + L. The console pane is where we will add the JavaScript code that will cancel the running flows. As can be seen in the next step. // Copy this first and run it in the console var jq = document.createElement(‘script’); jq.src=”https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js”; document.getElementsByTagName(‘head’)[0].appendChild(jq); // … give time for script to load, then type (or see below for non wait option) jQuery.noConflict() //Paste the same again var jq = document.createElement(‘script’); jq.src=”https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js”; document.getElementsByTagName(‘head’)[0].appendChild(jq); // … give time for script to load, then type (or see below for non wait option) jQuery.noConflict() // Then copy this in the console to start the cancelation of the flows. confirm = function () {return true;}; setInterval(function () { $(“.fl-StatusInCell:contains(‘Running’)”).parent().parent().find(‘.ms-DetailsRow-cell’).last().click(); $(‘button[name=”Cancel”]’).click(); },5000); Click the running code after the code is implemented in the console, and the output will be seen below Hope this Helps!
