Category Archives: CRM Online
This article describes how to simulate a long operation in Dynamics 365 (CRM) using a simple custom plugin that introduces a delay using the Thread.Sleep function.
Background: recently we have been investigating an issue regarding some timeouts happening in a third party application which connects to our Dynamics 365 service. At the moment, it is difficult to tell if those timeouts are due to some slow connections to Dynamics or other reasons. In order to help us with this investigation, we are going to set the Timeout property of the OrganizationServiceProxy in the client application, which by default is 2 minutes.
Before applying this change, we also want to test it and simulate some long queries that would last longer than the client timeout limit set for the OrganizationServiceProxy. Here is where we have created this simple plugin “DelayOperation” that is going to introduce a delay for a certain number of seconds.
For testing purpose, I have prepared a simple test that creates a Task record. See below the corresponding code:
Then we have registered our “DelayOperation” plugin in the create message of the Task entity, see below this plugin registration step:
Notice we pass the number of milliseconds to be used by the Thread.Sleep function as an unsafe plugin parameter. In our example, the client would wait for 10 seconds and the plugin would delay the operation for 12 seconds, causing the client to timeout.
Finally, our “DelayOperation” plugin code is:
You can download all this code from the following Github project:
I hope you find it useful!
Time flies and suddenly 2018 will be there, when the next Summit EMEA will take place in Dublin from 24th to the 26th of April.
During the Summit EMEA, multiple users groups will participate in the conference and offer several events including presentations, essential peer-to-peer knowledge exchanges, product insight forums, and networking opportunities.
My main focus will be on the D365UG|CRMUG user group . This week we have had our first committee meeting to discuss the agenda structure and how the sessions are going to be organised, very exciting… 🙂
If you would like to be a speaker, watch this space because there will be a call for papers very soon.
I’ll keep on posting any news.
Few years ago, I started a project in Codeplex called “Dynamics CRM Custom Emails“, which allows you to send emails from a Microsoft Dynamics 365 / CRM process (e.g. workflow, action) based on an Email Template. Additionally, these emails can contain dynamic values for any entity (out-of-the-box or custom) and any type of attribute (e.g. lookup, option set, currency, etc).
Apart from just migrating the project from one place to the other, I have also updated it to the latest Dynamics 365 version.
There are some open issues in Codeplex that I would like to review, so I will try to do it before Codeplex closes and reflect them in the new Github project. I would like to thank you those guys who have collaborated and provide their feedback.
For those who has never seen this project, I would like to show you a quick example with some screenshots.
Let’s say we had the following Email Template:
We could then produce an email like this:
These would be done by a Dynamics workflow like this one:
This workflow will use the custom workflow activity provided by this solution. You can then specify the corresponding context parameters:
You will find more documentation in the Github project site:
This article describes how to create a simple Dynamics 365 (CRM) web resource that would allow us to display images based on a dynamics URL. This URL would be stored in an entity attribute and the name of the attribute would passed as a parameter to the web resource.
Preparing the demo for EMEA Summit 2017, I needed to display some logos and organisations images (covers) in the Account entity.
Let me show you a picture and you will immediately get what I mean:
In our demo, we used the account entity to track the different NGOs / charities that would be part of the end solution. Each charity would have their own different logo and image cover that would be, later on, displayed in the PowerApp we also prepared.
Those images would be defined based on the following account attributes:
Solution: A simple web resource that would allow us to specify the attribute name with the URL as a parameter.
Below you can see the form definition, which got 2 web resources to host those previous images:
If we now look at the properties of each web resource, we would see they are using the same HTML web resource behind the scene, but the parameter we are passing is different. The parameter is actually the attribute name to feed the image:
And the other one:
If you want to see the code of that HTML web resource, have a look at my GitHub link.
Hope you find it useful 🙂
We noticed during the last days multiple CRM emails were not sent and they bounced back as undelivered.
This was a CRM Online 2016 implementation using the CRM Email router.
The SMTP error messages were like 550 5.XXX.YYY (e.g. 550 5.1.8; 550 5.0.350) from different providers (Gmail, Outlook, Yahoo, etc).
Using the following online tool mxtoolbox.com, we could quickly confirm the server was blacklisted.
As Microsoft recommendation (see the following article), we had to raise a support ticket to delist it (please see below new update).
Unfortunately, the other challenge was to recover the emails, as Microsoft CRM Online 2016 doesn’t report soft or hard bounces, and all emails are marked as Sent. Some interesting ideas came around this to resolve it, I’ll try to share it in a future post 🙂
***More updates (12/01/2017):
Bounces carried on happening and after more investigation, we noticed some of the new IP’s were not added into the SPF (Sender Policy Framework) records. See the following article for more information:
After updating the SPF records, bounces carried on coming. More IP’s needed to be delisted again, but this time the Microsoft engineer pointed us to a new online tool:
This online tool allows you to delist IP’s in 3 easy steps.
But the challenge didn’t come to an end. It looks like the number of sent emails may be too high… This is where you should check the following recommendations:
Creating scheduled workflows has always been a challenge in Dynamics
CRM 365. The community and ISVs have offered several original options, but there is not yet an official out-of-the-box option. This article brings another alternative to the table using Microsoft Flows.
A scheduled workflow is the one that runs at a certain arranged time and it may recur to run again after a period of time. If you want to understand more about this challenge and how our CRM community has resolved it so far, have a look at the following articles:
Microsoft Flow offers the option to create Recurrence jobs. This can be used to schedule and trigger actions in Dynamics 365, like retrieve, create or update records (see available actions). So, using this functionality you already have a good alternative to create your own scheduled workflows without development effort. You can see some examples in the following article as well as in these Dynamics 365 Flow templates.
The other alternative would be a mix solution where a recurrence Microsoft flow creates a custom Dynamics 365 “Scheduled Job” record and this triggers the corresponding Dynamics 365 workflow. The “Scheduled Job” entity would have attributes like “Process Name”, “Run as” (e.g. system user name), “Query scope” (e.g. FetchXML or view name), …, to specify what and how to run the workflow. This option would require additional development, either a plugin or a custom workflow activity to call on demand the given process, but it would also allow you to reuse the logic and capabilities you already have within Dynamics 365.
Hope you find this article useful. Looking forward to hearing your feedback.
The new Dynamics home page gives you an easy start point to join the user experience of our CRM and ERP users:
There we can find the different functional applications, from Sales to Operations:
Everything has got the same look & feel:
A key part of Dynamics 365 is the aim of joining different apps in a single ecosystem, there is where we find a seamless integration with AppSource:
We can also feel the “Mobile First, Cloud First” strategy on the mobile apps coming with Dynamics 365:
The integration with Outlook carries on improving, providing more contextual information on our emails:
The Intelligence is another fundamental part of Dynamics 365, which covers several areas:
The Relationship Insights is definitely one of the most AI interesting points, where we will be able to get a better view of our customers. For instance, Exchange emails from Office 365 would be joined with the Dynamics 365 emails and we would be able to understand how our relationships are doing:
We will be able to see who has opened our emails and interact with them in a simple view:
As part of the analytics improvements, we have also got the just announced Customer Insights, which brings the ability to create great single customer views:
Microsoft Dynamics CRM 2016 Update 1 brings Email Signatures as an out of the box functionality. They can be used on Users or Queues (based on Teams).
Create a new email and you will see a new icon on the email designer to insert signatures:
To create more signatures, go to Personal Settings or, as an admin, Administration => Templates section.
Administration => Templates:
Notice Email Signatures is a new entity and it is part of the security roles. So, for instance, if the Customer Service Team requires to use Email Signatures, they should have access to the Email Signature Entity. See below an example security role:
Note: My current on-line build version is : 18.104.22.1682 – DB 22.214.171.1249
You can find more information in the following Microsoft CRM article: