{"id":36044,"date":"2023-09-21T15:01:05","date_gmt":"2023-09-21T09:31:05","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=36044"},"modified":"2023-09-21T15:01:05","modified_gmt":"2023-09-21T09:31:05","slug":"use-dataverse-search-suggestions-api-of-microsoft-dynamics-365","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2023\/09\/use-dataverse-search-suggestions-api-of-microsoft-dynamics-365\/","title":{"rendered":"Use Dataverse search Suggestions API of Microsoft Dynamics 365"},"content":{"rendered":"<p>Dataverse Search has been a prominent feature in the Microsoft Dynamics 365 CRM environment, offering access to advanced search capabilities. The earlier &#8220;Relevance Search&#8221; has been upgraded to &#8220;Dataverse Search&#8221; with some interesting additional enhancements.<\/p>\n<p>Previously, we <a href=\"https:\/\/www.inogic.com\/blog\/2021\/01\/use-relevance-search-api-in-power-automate-canvas-app-part-1\/\" target=\"_blank\" rel=\"noopener\">demonstrated how to utilize the Relevance Search API in Power Automate and Canvas Apps<\/a>. Today, let\u2019s explore the enhancements.<\/p>\n<p><strong>Configuring Dataverse Search<\/strong><\/p>\n<p>Before you use this feature, an <strong>Administrator<\/strong> must enable \u201c<strong>Dataverse search<\/strong>\u201d in the target environment.<\/p>\n<p>Note: Enabling &#8220;<strong>Dataverse Search<\/strong>&#8221; is required to make \u201c<strong>Suggestions Search<\/strong>\u201d work.<\/p>\n<p>To enable \u201cDataverse Search\u201d simply follow the steps given below:<\/p>\n<ol>\n<li>Navigate to\u00a0<a href=\"https:\/\/admin.powerplatform.microsoft.com\/\" target=\"_blank\" rel=\"noopener\">Power Platform Admin Center<\/a>, and select the appropriate environment<\/li>\n<li>Click on the \u201cSettings\u201d in the \u201cProduct\u201d area and click open the \u201cFeatures\u201d section<\/li>\n<li>Under the \u201cSearch\u201d section, there is an option to turn on the \u201cDataverse Search\u201d<\/li>\n<li>Click on the Save button to save the changes<\/li>\n<\/ol>\n<p><strong><img decoding=\"async\" class=\"alignnone size-full wp-image-36050\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/1Dataverse-search-Suggestions-API-1.jpeg\" alt=\"Dataverse search Suggestions API\" width=\"1296\" height=\"615\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/1Dataverse-search-Suggestions-API-1.jpeg 1296w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/1Dataverse-search-Suggestions-API-1-300x142.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/1Dataverse-search-Suggestions-API-1-1024x486.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/1Dataverse-search-Suggestions-API-1-768x364.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/1Dataverse-search-Suggestions-API-1-660x313.jpeg 660w\" sizes=\"(max-width: 1296px) 100vw, 1296px\" \/><br \/>\nSuggestion Search<\/strong><\/p>\n<p>Now, let&#8217;s understand the usage of Dataverse Search <strong>Suggestions<\/strong>.<\/p>\n<p>Suggestion is another feature of the Dataverse Search API. With the HTTP <strong>POST<\/strong> endpoint <strong><em>[Organization URI]\/api\/search\/v1.0\/suggest<\/em><\/strong>, a list of records where their primary field matches the input term will be returned.<\/p>\n<p>Search requests scan through all dataverse search-enabled entity fields.<\/p>\n<p>The comprehensive list of input parameters is outlined in <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-apps\/developer\/data-platform\/webapi\/relevance-search\" target=\"_blank\" rel=\"noopener\">Microsoft&#8217;s documentation<\/a>. Perhaps the most critical parameter is the &#8220;<strong><em>usefuzzy<\/em><\/strong>&#8221; option, which holds a Boolean value to determine whether to enable fuzzy search.<\/p>\n<p>By default, the result records that are retrieved are 5 and the Top Max count is 100.<\/p>\n<p><strong>Here, is a List of Some Similar Records inside our Account Entity-<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36048\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/2Dataverse-search-Suggestions-API.jpeg\" alt=\"Dataverse search Suggestions API\" width=\"1429\" height=\"683\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/2Dataverse-search-Suggestions-API.jpeg 1429w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/2Dataverse-search-Suggestions-API-300x143.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/2Dataverse-search-Suggestions-API-1024x489.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/2Dataverse-search-Suggestions-API-768x367.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/2Dataverse-search-Suggestions-API-660x315.jpeg 660w\" sizes=\"(max-width: 1429px) 100vw, 1429px\" \/><\/p>\n<p>To use the fuzzy search inside our suggested API:<\/p>\n<p>POST [Organization URI]\/api\/search\/v1.0\/suggest<br \/>\n{<\/p>\n<p>&#8220;search&#8221;: &#8220;aiden&#8221;,<\/p>\n<p>&#8220;usefuzzy&#8221;: true ,<\/p>\n<p>}<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36047\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/3Dataverse-search-Suggestions-API.jpeg\" alt=\"Dataverse search Suggestions API\" width=\"1314\" height=\"430\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/3Dataverse-search-Suggestions-API.jpeg 1314w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/3Dataverse-search-Suggestions-API-300x98.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/3Dataverse-search-Suggestions-API-1024x335.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/3Dataverse-search-Suggestions-API-768x251.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/3Dataverse-search-Suggestions-API-660x216.jpeg 660w\" sizes=\"(max-width: 1314px) 100vw, 1314px\" \/><\/p>\n<p>In this scenario, we are issuing the POST API request with a JSON-formatted request body.<\/p>\n<p>The Below content is our received response:<\/p>\n<pre class=\"lang:css gutter:true start:1\">{\r\n\r\n\"value\":\u00a0[\r\n\r\n{\r\n\r\n\"text\":\u00a0\"{crmhit}Aiden{\/crmhit}\",\r\n\r\n\"document\":\u00a0{\r\n\r\n\"@search.objectid\":\u00a0\"07a22dec-6750-ee11-be6e-000d3af2ec33\",\r\n\r\n\"@search.entityname\":\u00a0\"account\",\r\n\r\n\"@search.objecttypecode\":\u00a01,\r\n\r\n\"name\":\u00a0\"Aiden\",\r\n\r\n\"versionnumber\":\u00a07401941,\r\n\r\n\"statecode\":\u00a0[\r\n\r\n\"Active\"\r\n\r\n],\r\n\r\n\"statuscode\":\u00a0[\r\n\r\n\"Active\"\r\n\r\n],\r\n\r\n\"entityimage_url\":\u00a0<strong>null<\/strong>,\r\n\r\n\"createdon\":\u00a0\"9\/11\/2023\u00a011:26\u00a0AM\",\r\n\r\n\"modifiedon\":\u00a0\"9\/11\/2023\u00a011:26\u00a0AM\",\r\n\r\n\"accountnumber\":\u00a0<strong>null<\/strong>,\r\n\r\n\"address1_city\":\u00a0<strong>null<\/strong>,\r\n\r\n\"emailaddress1\":\u00a0<strong>null<\/strong>,\r\n\r\n\"primarycontactid\":\u00a0<strong>null<\/strong>,\r\n\r\n\"primarycontactidname\":\u00a0<strong>null<\/strong>,\r\n\r\n\"telephone1\":\u00a0<strong>null<\/strong>\r\n\r\n}\r\n\r\n},\r\n\r\n{\r\n\r\n\"text\":\u00a0\"{crmhit}Ayden{\/crmhit}\",\r\n\r\n\"document\":\u00a0{\r\n\r\n\"@search.objectid\":\u00a0\"a2bc4df3-6750-ee11-be6e-000d3af2ec33\",\r\n\r\n\"@search.entityname\":\u00a0\"account\",\r\n\r\n\"@search.objecttypecode\":\u00a01,\r\n\r\n\"name\":\u00a0\"Ayden\",\r\n\r\n\"versionnumber\":\u00a07401943,\r\n\r\n\"statecode\":\u00a0[\r\n\r\n\"Active\"\r\n\r\n],\r\n\r\n\"statuscode\":\u00a0[\r\n\r\n\"Active\"\r\n\r\n],\r\n\r\n\"entityimage_url\":\u00a0<strong>null<\/strong>,\r\n\r\n\"createdon\":\u00a0\"9\/11\/2023\u00a011:26\u00a0AM\",\r\n\r\n\"modifiedon\":\u00a0\"9\/11\/2023\u00a011:26\u00a0AM\",\r\n\r\n\"accountnumber\":\u00a0<strong>null<\/strong>,\r\n\r\n\"address1_city\":\u00a0<strong>null<\/strong>,\r\n\r\n\"emailaddress1\":\u00a0<strong>null<\/strong>,\r\n\r\n\"primarycontactid\":\u00a0<strong>null<\/strong>,\r\n\r\n\"primarycontactidname\":\u00a0<strong>null<\/strong>,\r\n\r\n\"telephone1\":\u00a0<strong>null<\/strong>\r\n\r\n}\r\n\r\n},\r\n\r\n{\r\n\r\n\"text\":\u00a0\"{crmhit}Aaden{\/crmhit}\u00a0K\",\r\n\r\n\"document\":\u00a0{\r\n\r\n\"@search.objectid\":\u00a0\"7366032a-6850-ee11-be6e-000d3af2ec33\",\r\n\r\n\"@search.entityname\":\u00a0\"account\",\r\n\r\n\"@search.objecttypecode\":\u00a01,\r\n\r\n\"name\":\u00a0\"Aaden\u00a0K\",\r\n\r\n\"versionnumber\":\u00a07401953,\r\n\r\n\"statecode\":\u00a0[\r\n\r\n\"Active\"\r\n\r\n],\r\n\r\n\"statuscode\":\u00a0[\r\n\r\n\"Active\"\r\n\r\n],\r\n\r\n\"entityimage_url\":\u00a0<strong>null<\/strong>,\r\n\r\n\"createdon\":\u00a0\"9\/11\/2023\u00a011:28\u00a0AM\",\r\n\r\n\"modifiedon\":\u00a0\"9\/11\/2023\u00a011:28\u00a0AM\",\r\n\r\n\"accountnumber\":\u00a0<strong>null<\/strong>,\r\n\r\n\"address1_city\":\u00a0<strong>null<\/strong>,\r\n\r\n\"emailaddress1\":\u00a0<strong>null<\/strong>,\r\n\r\n\"primarycontactid\":\u00a0<strong>null<\/strong>,\r\n\r\n\"primarycontactidname\":\u00a0<strong>null<\/strong>,\r\n\r\n\"telephone1\":\u00a0<strong>null<\/strong>\r\n\r\n}\r\n\r\n}\r\n\r\n],\r\n\r\n\"querycontext\":\u00a0<strong>null<\/strong>\r\n\r\n}<\/pre>\n<p>Our response will be in <strong>JSON Format, <\/strong>we can Deserialize the JSON as per our requirement, We\u2019ll show you that later in the Code.<\/p>\n<p>We got three Responses Names\u2013<\/p>\n<p>&#8221; Ayden &#8220;,<\/p>\n<p>&#8221; Aaden\u00a0K &#8220;,<\/p>\n<p>&#8221; Aiden &#8220;.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36046\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API.jpeg\" alt=\"Dataverse search Suggestions API\" width=\"2560\" height=\"1224\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API.jpeg 2560w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API-300x143.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API-1024x490.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API-768x367.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API-1536x734.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API-2048x979.jpeg 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/4Dataverse-search-Suggestions-API-660x316.jpeg 660w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>In this case, we are getting records from all CRM Database entities, However, if we wish to perform entity-specific searches, that is also achievable.<\/p>\n<p><strong>Note<\/strong>: It is necessary to specify the entity within the request body. Moreover, it&#8217;s possible to define multiple entities by separating them with commas.<\/p>\n<pre class=\"lang:css gutter:true start:1\">{\r\n\r\n\"entities\":\u00a0[\"contact\",\u201d account\u201d],\r\n\r\n\"search\":\u00a0\"aiden\",\r\n\r\n\"usefuzzy\":\u00a0<strong>true<\/strong>\r\n\r\n}<\/pre>\n<p>One can also include or exclude an entity from the Dataverse search.<\/p>\n<p>To <strong>Configure Dataverse<\/strong> in a way that allows you to <strong>Include or Exclude<\/strong> entities based on your requirements, you should refer to our <a href=\"https:\/\/www.inogic.com\/blog\/2021\/12\/configuring-dataverse-search-in-dynamics-365-crm\/\" target=\"_blank\" rel=\"noopener\">Blog<\/a> post.<\/p>\n<p><strong>Note: <\/strong><br \/>\n<em>Fuzzy matches the search term with the <strong>PrimaryAttribute <\/strong>of the entity only and even if not specified in the <\/em><a href=\"https:\/\/learn.microsoft.com\/en-us\/power-apps\/developer\/data-platform\/webapi\/relevance-search\"><em>documentation<\/em><\/a><em>, it seems that the fuzzy search shows only those records with just 1 letter misspelled. <\/em><\/p>\n<p>If you want to apply this API search inside the <strong>Console App<\/strong> and <strong>WPF (Windows Presentation Foundation)<\/strong>, you can utilize the following code snippet within them to capture the response<\/p>\n<p>In the below code, we\u2019re using the search term \u201c<strong>Aiden<\/strong>\u201d inside the \u201c<strong>Account<\/strong>\u201d Entity,<\/p>\n<pre class=\"lang:css gutter:true start:1\">using Microsoft.Xrm.Tooling.Connector;\r\nusing Newtonsoft.Json;\r\n\r\nusing System;\r\n\r\nusing System.Net.Http;\r\n\r\nusing System.Threading.Tasks;\r\n\r\n\u00a0\r\n\r\nnamespace FuzzyAPIinConsole\r\n\r\n{\r\n\r\nclass Program\r\n\r\n{\r\n\r\nstatic void Main(string[] args)\r\n\r\n{\r\n\r\n\/\/Create a connection string inside which you\u2019ve to pass your Credentials in the given format\r\n\r\nstring connectionString = @\"AuthType=OAuth;Url=https:\/\/YOUR_URL.crm8.dynamics.com;Username=YOUR_USERNAME.onmicrosoft.com;Password=YOUR_PASSWORD;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d; RedirectUri=app:\/\/58145B91-0C36-4500-8554-080854F2AC97;LoginPrompt=Auto\";\r\n\r\n\u00a0\r\n\r\n\/\/Creating CrmServiceClient object to build the connection by passing the connectionString as a parameter\r\n\r\nCrmServiceClient crmService = new CrmServiceClient(connectionString);\r\n\r\n\u00a0\r\n\r\nif (crmService != null)\r\n\r\n{\r\n\r\n\/\/Create an object of the current class and call the ExecuteAsync method\r\n\r\nProgram obj = new Program();\r\n\r\nConsole.WriteLine(\"connected\");\r\n\r\nobj.ExecuteAsync(crmService);\r\n\r\nConsole.ReadLine();\r\n\r\n\u00a0\r\n\r\n}\r\n\r\nelse\r\n\r\nConsole.WriteLine(\"connnection error\");\r\n\r\n}\r\n\r\n\u00a0\r\n\r\npublic async Task ExecuteAsync(CrmServiceClient crmService)\r\n\r\n{\r\n\r\n\/\/Access token get from CrmServiceClient\r\n\r\nstring accesstoken = crmService.CurrentAccessToken;\r\n\r\n\u00a0\r\n\r\n\/\/ HttpClient Object\r\n\r\nHttpClient client = new HttpClient();\r\n\r\n\u00a0\r\n\r\n\/\/ Endpoint URL inside HttpRequestMessage to send the request\r\n\r\nHttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $\"https:\/\/YOUR_URL.crm8.dynamics.com\/api\/search\/v1.0\/suggest\");\r\n\r\n\u00a0\r\n\r\n\/\/Passing access token in the request so that it can connect to the environment\r\n\r\nrequest.Headers.Add(\"Authorization\", $\"{accesstoken}\");\r\n\r\n\u00a0\r\n\r\n\/\/Specify the request body, as per the body it'll give us the output\r\n\r\nvar searchRequest = new\r\n\r\n{\r\n\r\nentities = \"account\",\r\n\r\nsearch = \"aiden\",\r\n\r\nusefuzzy = true,\r\n\r\n};\r\n\r\n\u00a0\r\n\r\n\/\/ Serializing the Search Response in JSON format\r\n\r\nstring jsonContent = JsonConvert.SerializeObject(searchRequest);\r\n\r\n\u00a0\r\n\r\nHttpContent content = new StringContent(jsonContent, System.Text.Encoding.UTF8, \"application\/json\");\r\n\r\n\u00a0\r\n\r\nrequest.Content = content;\r\n\r\n\u00a0\r\n\r\nvar response = await client.SendAsync(request);\r\n\r\n\u00a0\r\n\r\nresponse.EnsureSuccessStatusCode();\r\n\r\n\u00a0\r\n\r\n\/\/ Converting the response in string format\r\n\r\nstring result = await response.Content.ReadAsStringAsync();\r\n\r\n\u00a0\r\n\r\n\/\/ Deserialize the JSON response into a dynamic object which is captured in the result variable\r\n\r\ndynamic jsonResponse = JsonConvert.DeserializeObject(result);\r\n\r\n\u00a0\r\n\r\n\/\/ You'll get all the Data of the record, Here I'm getting the names of the records by the \"name\" property from each object in the array\r\n\r\nforeach (var item in jsonResponse.value)\r\n\r\n{\r\n\r\nstring name = item.document.name;\r\n\r\nConsole.WriteLine(\"Name: \" + name);\r\n\r\n}\r\n\r\nConsole.ReadLine();\r\n\r\n}\r\n\r\n}\r\n\r\n}<\/pre>\n<p><strong>Here is the Result we received in our Console App Based on Fuzzy Logic,<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36045\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/5Dataverse-search-Suggestions-API.jpeg\" alt=\"Dataverse search Suggestions API\" width=\"1304\" height=\"548\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/5Dataverse-search-Suggestions-API.jpeg 1304w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/5Dataverse-search-Suggestions-API-300x126.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/5Dataverse-search-Suggestions-API-1024x430.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/5Dataverse-search-Suggestions-API-768x323.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/5Dataverse-search-Suggestions-API-660x277.jpeg 660w\" sizes=\"(max-width: 1304px) 100vw, 1304px\" \/><\/p>\n<p><strong>Code Summary<\/strong><\/p>\n<ul>\n<li>A connection string is Created with OAuth authentication, organization URL, username, password, and app ID (App ID will be same as it is)<\/li>\n<li>A `CrmServiceClient` object, `crmService`, is created passing as connectionString as a parameter.<\/li>\n<li>The access token is obtained from `crmService.CurrentAccessToken`, So that we can access the environment.<\/li>\n<li>An `HttpClient` object named `client` is created for making HTTP requests.<\/li>\n<li>The URL for the fuzzy search API endpoint is created using the organization&#8217;s URL, Replace the URL with your URL before executing it.<\/li>\n<li>An `HttpRequestMessage` object, `request`, is created for a POST request to the \u2018suggest\u2019 endpoint.<\/li>\n<li>The access token is added to the request headers for authentication.<\/li>\n<li>The search request is defined with parameters such as `entities` (Specific Entities to search), `search` (search value), and `usefuzzy` (enabling fuzzy search).<\/li>\n<li>The search request is serialized to JSON format and added as the content of the HTTP request.<\/li>\n<li>The request is sent asynchronously using `client.SendAsync(request)`.<\/li>\n<li>The response is read, ensuring its success and the result is read as a string.<\/li>\n<li>Deserialize the JSON response and only take the list of names from all the JSON<\/li>\n<\/ul>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Utilizing suggestion searches within Dataverse offers an efficient means of locating information within your dataset. You can tailor your searches to specific requirements by leveraging the &#8220;<strong><em>usefuzzy<\/em><\/strong>&#8221; parameters and filters, thereby enhancing data retrieval and facilitating informed decision-making processes.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><a href=\"https:\/\/www.inogic.com\/product\/productivity-apps\/user-adoption-monitor-in-dynamics-crm\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"alignnone size-full wp-image-36054\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/09\/Get-visual-reports-of-D365-CRM-user-actions-for-increased-user-adoption-using-User-Adoption-Monitor.gif\" alt=\"\" width=\"700\" height=\"200\" \/><\/a><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Dataverse Search has been a prominent feature in the Microsoft Dynamics 365 CRM environment, offering access to advanced search capabilities. The earlier &#8220;Relevance Search&#8221; has been upgraded to &#8220;Dataverse Search&#8221; with some interesting additional enhancements. Previously, we demonstrated how to utilize the Relevance Search API in Power Automate and Canvas Apps. Today, let\u2019s explore the\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2023\/09\/use-dataverse-search-suggestions-api-of-microsoft-dynamics-365\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2354,16,2361],"tags":[2769],"class_list":["post-36044","post","type-post","status-publish","format-standard","hentry","category-dataverse","category-dynamics-365","category-technical","tag-dataverse-search-suggestions-api"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/36044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=36044"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/36044\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=36044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=36044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=36044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}