Surprise!!
Have a look and plan things accordingly.
below link has full information : https://docs.microsoft.com/en-ca/power-platform/admin/api-request-limits-allocations
Surprise!!
Have a look and plan things accordingly.
below link has full information : https://docs.microsoft.com/en-ca/power-platform/admin/api-request-limits-allocations
I had a hard time trying to figure out a way to retrieve members from a marketing segment in my code.
The link-entity between contact and msdyncrm_segment isn’t materialized in CRM. I even raised it here :Basic operations on segments using the Segmentation API
Finally fetch xml came to rescue. You can use below xml which can be executed by WebAPI or Organization service and it works on both static and dynamics segments.
<fetch version="1.0" output-format="xml-platform" mapping="logical" returntotalrecordcount="true" page="1" count="5000" no-lock="false">
<entity name="contact">
<attribute name="fullname"/>
<attribute name="contactid"/>
<order attribute="fullname" descending="false"/>
<link-entity name="msdyncrm_segment" from="msdyncrm_segmentid" to="msdyncrm_segmentmemberid" alias="bb">
<filter type="and">
<condition attribute="msdyncrm_segmentid" operator="eq" uitype="msdyncrm_segment" value="bfc9d5d6-d6aa-e911-a859-000d3a3159df"/>
</filter>
</link-entity>
</entity>
</fetch>
Now lets try to execute this first in web api.
Use below format : https://orgurl/api/data/v9.1/contacts?fetchXml=<xml here>
Now lets try to execute this using organization service, note that i am using paging here because the number of records can be more than 5000:
var fetch = @"<fetch version='1.0' page='##pagenumber##' count='5000' no-lock='true'>
<entity name='contact'>
<attribute name='fullname'/>
<attribute name='contactid'/>
<order attribute='fullname' descending='false'/>
<link-entity name='msdyncrm_segment' from='msdyncrm_segmentid' to='msdyncrm_segmentmemberid' alias='bb'>
<filter type='and'>
<condition attribute='msdyncrm_segmentid' operator='eq' uitype='msdyncrm_segment' value='6f5846d5-e5ae-e911-a84b-000d3a802d92'/>
</filter>
</link-entity>
</entity>
</fetch>";
var contactss = organizationService.RetrieveMultiple(new FetchExpression(fetch));
foreach(var contact in contactss.Entities)
{
var id = contact.ToEntityReference();
Console.WriteLine(contact.GetAttributeValue<string>("contactid"));
}
result:
Apart from this fetch xml there is no way to retrieve members from the segment. There are some issues and limitation i faced during this operation, will try to share them in another post.
I hope this helps!
Quick Post.
Recently when designing/creating surveys in Voice Of Customer. I faced this issue of getting anonymous response if I am using email snippet from the survey. Expectation is when you use Email Snippet copied from a survey and put it in an email and send it. Customer fills the survey, you should have the customer/respondent details.
Which means you have to generate survey activities first and copy the direct URL from there and send it but its not what you would want to do every time.
This seems to be a bug in the Voice of Customer Version 1.0.0.0/9.0.1188.4. So please check if you are facing the issue and version is same. Please upgrade it to the latest version. 1.0.0.1/9.0.1438.4.
Doing above resolved my issue and I could see the responses properly.
hope this helps!
Okay let’s face it. We are losing our lovely classic interface slowly and its fading away because as per Microsoft :
All new Dynamics 365 for Customer Engagement environments (instances) and Common Data Service environments, including those created in existing tenants, will be provisioned in Unified Interface Only
Is this transition good? bad?…..honestly, I don’t know but one thing I do know is I personally like the classic interface and would chose it/recommend it over UCI.
Good news is, there is no confirmation on time or whether it will happen that classic interface will be deprecated. I really hope UCI is always a “Choice” and not a “forced option“. 😄
Anyway for now when you see this screen:
And there it is ❤️ 😄
Let me know how you feel about this transition.
Before I start this blog – I would like to mention that my previous blog on email template functionality How to insert dynamic values from custom entities in an email template – Microsoft Dynamics CRM has been a huge success and got 10K + views on both Dynamics Community and on my personal blog.
In this blog I am going to cover below:
Quick Tips:
1. Always use Internet Explorer when creating email template
2. Adjust IE settings to be in compatible mode with your CRM. (i.e adding CRM url to compatibility mode)
The first question would be , what is the need to use html in email template? If you know email template has very limited option available from the designer such as limited number of fonts, Colors, font size etc. So using html to provide rich look to your email content can be a good choice. I have used them personally and customer loved them.
In this blog I will quickly create a basic html email template which will have a table with some information from CRM record and we will beautify it. Lets say i would like to create table with custom loyalty reward information. I can do something like below:
You can use any online html editor to create the required content like the one I used here: https://html-online.com/editor/
Now save the template and go to a contact > activities > add an email and insert this email template:
This is just to show the capability. You can do a lot with HTML in your email template.
Adding images to a email template has been very tidy work. However with correct knowledge its quiet easy. Keep below in your mind when you want to add an image to an email template:
Lets take an example below. I would add an image to my email template showing my recent accomplishment which is available on my blog page:
Now if I need this image in email template. There are two options.
1. Copy the image directly by right clicking on the image from website or create an html using image. Open in browser and copy from there and paste in your email template:
however this method is risky as your image might vanish anytime.
2. Copy image hyperlink or image address and paste it and create html by proving the image source:
Save the template and insert into email and you will see image has been populated.
Quick Tip : You can store images as Image web resource within your dynamics CRM and use them like I have used above by simply taking the image web resource url.
Though template editor gives you very limited option on fonts and size. You can very add other fonts and desired size or any colour to your content.
Here is what you can do:
<p><strong><span style="color: #ff0000;"> Rawish Kumar</span></strong></p>
I hope this helps!
Feel free to contact me in case of any difficulties.
Alternate key is a great addition to useful features in dynamics crm. I have blogged about it here : Work With Alternate Keys
In this blog I just want to quickly show resolution when you create an alternate key and its corresponding job stays in “Pending” Status.
I.e Consider an example of my entity. On my customer entity I have a contact reference field which I would like to be unique. hence I decide to create an alternate key. So I go to Settings > Customizations > Customize the System > Entity > My Enity > Key and create a new one by adding the contact reference field:
There are two possibilities:
For me 1st one was the issue. I deleted the records with same contact reference number and it worked:
Now I could create the key and it was activated:
I hope this helps!
Populating data on forms in CRM is not a headache since you can do mappings for your 1:N record or simply do a Web API request using the parent lookup exist on the new form to retrieve the values from that record and set them on the current form.
However what if you have to populate data on a parent record form from a child record form? there is no out of the box functionality or script available for this. I digged in further and found below method. Its a rare but an important requirement.
function SetLocalStorage(executionContext)
{
var formContext = executionContext.getFormContext();
var firstName = formContext.getControl("new_name").getAttribute().getValue().toString();
var refNumber = formContext.getControl("new_contactrefnumber").getAttribute().getValue();
localStorage.setItem("FirstName",firstName );
localStorage.setItem("ContactRef",refNumber );
}
In the code above I am simply retrieving the value from current record on load event and setting it to the localStorage. You have to set value using a key and the value. so from code below; FirstName is the key(using which we will retrieve the value) and firstName variable is the value.
localStorage.setItem(“FirstName”,firstName );
5. Now add below code to your onload quick create form of the parent record in my case its contact.
function RetrieveStorageValue(executionContext)
{
debugger;
var formContext = executionContext.getFormContext();
var firstName = localStorage.getItem("FirstName");
var contactRef = localStorage.getItem("ContactRef");
formContext.getAttribute("firstname").setValue(firstName);
formContext.getAttribute("new_contactref").setValue(contactRef);
localStorage.removeItem("FirstName");
localStorage.removeItem("ContactRef");
}
In the above code i am simply retrieving the value set using localStorage.getItem(“KeyName”); and then setting it on the required fields.
Use this link explained very well by Neil on how to add javascript code to your form : JS Basics
So now when Click on the new button from the lookup dropdown to add a parent record , I get values populated:
Here you go!
Few important points:
I hope this helps!
Quick post on how to search for privilege/permission name using privilege Id. You often in dynamics receive an error like below during your plugins or Web Api requests.:
“user is missing privilege ba09ec92-12c4-4312-ba16-5715c2cbd6da”
looking at the error, its difficult to tell what is the permission missing and on what entity.
All privileges are stored in an entity called privilege : Read more here.
you cannot see this entity in dynamics CRM front-end as its not available however you can easily query this entity using Web Api.
i.e. https://organizationname.api.crm8.dynamics.com/api/data/v9.1/
hope this helps!
This issue was reported in dynamics community where in customer address was not showing in the addresses subgrid.
Community Thread – Lead’s mailing address not visible on contact or account record after lead qualification
To read more about Addresses read here : Addresses In CRM
So coming to the issue. I added the subgrid of related addresses to the contact form and ideally when a contact is created with proper address information it should be added in the subgrid. (Applies to lead qualification process too). However this is what I saw:
No address was populated.
This seems to be a bug In dynamics 365 where in the view associated with this addresses subgrid is corrupted and has some errors which blocks the records from showing.
So I went to Customizations > Entities > Addresses > Views > “Customer All Addresses public view and removed the error conditions. Published the customizations.
Now I could see the related addresses without any issues.
I hope this helps!
This blog is just a reference to very important article on dealing with a problem when two or more update or delete operations on the same piece of data happen at the same time. This situation could potentially result in data loss.
Explanation : Reduce potential data loss using optimistic concurrencyReduce potential data loss using optimistic concurrency.
Sample Code : Use optimistic concurrency with update and delete operations