Sync Office 365 User Photos to CRM Users with Flow

Background

I got a requirement that the client needs user profile photos in Office 365 to be synced to CRM Users. It is Dynamics 365 CE Online, and users don’t change profile photo often. There is no OOB way to achieve it so I need to develop custom synchronization.

Continue reading “Sync Office 365 User Photos to CRM Users with Flow”
Advertisements

“Record is unavailable” error when publishing solution

Problem

When publishing unmanaged solution, this error shows up

Record Is Unavailable

The requested record was not found or you do not have sufficient permissions to view it.

Although you have system admin role. Even worse, the download error log button is disabled and you can’t find out which component causing the error.

Solution

Clearly that there is something in the solution which you can see, but the system can’t.

If you try to pulish components one by one, there will be no error. But publishing all won’t work.

It will be quicker if you can narrow down what are added recently that may cause the error. Then you can use a different tool to publish the solution, either writing your own tool or use a plugin in XrmToolbox called “Manage Solution”, to catch the exception and see what the root cause is.

In my case it was a web resource, I deleted it and publishing all worked like a charm. Note that removing it from the solution doesn’t help.

Capture.PNG

Cheers!

Alternative to HttpUtility.UrlEncode in Dynamics CRM Online

If you try to use HttpUtility.UrlEncode in your plugin or workflow code, you’ll get a security error:

System.Security.SecurityException: That assembly does not allow partially trusted callers.

Because it’s not allowed in CRM Online.

Instead, we should use this one:

Uri.EscapeDataString

When to trigger plugin or workflow on Survey Response Voice of Customer

Voice of Customer (VoC) is a excellent tool for survey editor right in CRM, though it still lacks some nice to have functionalities. I’m not going to discuss about VoC in this post.

Survey Response is a entity collecting all Answers for Questions in the Survey. When user submits the survey, Survey Response and Answers will be created in CRM from Azure. The Survey Reponse will be created first and then related Answers will be created and look up to the Survey Response. This happens asynchronously.

So if we want to trigger a plugin or a workflow on Survey Reponse, we want to make sure the Survey Reponse has been created and all related Answers have come through. We shouldn’t trigger it on creation of the Survey Response as not all the Answers created in CRM; we shouldn’t trigger on creation of Answers either as Answers are created unorderly, the last answer may be created first. Instead, we should use an OOTB field called “msdyn_processingcompletetrigger”, it will be updated to Yes if the Survey Reponse and all Answers are created.

surveyresponsetrigger.png

Cheers!

Can’t set record Status Reason to default value in CRM Worklfow with Status Transition Rules Enabled

I encountered a weird case when trying to set record status reason to default value on creation of the record in CRM Workflow with Status Transition Rules enabled in the entity configuration. I’ll replicate the case and implement a workaround in my trial CRM Online instance. Continue reading “Can’t set record Status Reason to default value in CRM Worklfow with Status Transition Rules Enabled”

Set default value to a Prompt and Response step from a Currency (Money) field

You may know that Dialog Process is deprecated, but I’ve kept bumping into it recently with past projects. Today I have a request to set default value to a Prompt and Response step with value from a Currency field. It should be easy as I first thought but it isn’t.

Continue reading “Set default value to a Prompt and Response step from a Currency (Money) field”