<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>EMEA Dynamics CRM Support</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/emeadcrmsupport/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 06 Sep 2016 20:10:54 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Dynamics CRM Override the Price per Product on Your Order</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/dynamics-crm-override-the-price-per-product-on-your-order</link>
      <pubDate>Tue, 06 Sep 2016 20:10:05 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3335</guid>
      <description><![CDATA[&nbsp; The following steps that you can follow if you did not know is to be able to override the...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>The following steps that you can follow if you did not know is to be able to override the price per product on your order products in Dynamics CRM.  <p>&nbsp; <p>You will need to grant access to the person who is creating the order by going to <b>Settings =&gt; Security =&gt; Security Roles =&gt; Sales</b> as per the following screenshot,  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/09/clip_image0021.jpg"><img title="clip_image002" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/09/clip_image002_thumb1.jpg" width="970" height="475"></a>  <p>&nbsp; <p>On the Products Grid, Don’t click on the Product Name or on the Price Per Unit Boxes, click on any empty space on the item row (example like the red box below).  <p><b><a href="https://msdnshared.blob.core.windows.net/media/2016/09/clip_image0041.jpg"><img title="clip_image004" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/2016/09/clip_image004_thumb1.jpg" width="973" height="295"></a></b></p> <p><strong></strong>&nbsp;</p> <p>This will open you another window where you can edit the product price. Edit the price then click the&nbsp; Save icon on the bottom right and go back to the order from the recent opened tabs. You will see the changes have been reflected.  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/09/image201.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2016/09/image_thumb150.png" width="995" height="520"></a>  <p>&nbsp; <p>Best Regards  <p>EMEA Dynamics CRM Support Team  <p>&nbsp; <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Dynamics CRM Entity Ribbon not loading in IFD Environment</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/dynamics-crm-entity-ribbon-not-loading-in-ifd-environment</link>
      <pubDate>Wed, 10 Aug 2016 13:28:35 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3295</guid>
      <description><![CDATA[Some users have been having this issue in CRM so the blog below will highlight this scenario....]]></description>
      <content:encoded><![CDATA[<p>Some users have been having this issue in CRM so the blog below will highlight this scenario.  <p>&nbsp; <p>Imagine that on the case entity, you have created a custom button on the ribbon “Create New Article”.  <p>If you accessed your CRM Organization using the IFD URL and clicked on the “Create New Article” button out of the context of the case record, then the ribbon bar on the new article form didn’t appear. <br>If you accessed the Organization using Internal URL then the ribbon got loaded.  <p><b>Why does this happen?</b>  <p>This happens in situations in which the function responsible for the Create New Article button had following structure: <br>function CreateNewArticle() { <br>var serverUrl = Xrm.Page.context.getServerUrl(); <br>var kbarticletemplateId = '{C3F93721-91B6-475A-ACD0-0A68AA1CB842}'; <br>var url = ""; <br>url = serverUrl + "/main.aspx?etn=kbarticle&amp;extraqs=_CreateFromId%3d%26_CreateFromType%3d%26_tmplid=" + kbarticletemplateId + "%26etc%3d127&amp;pagetype=entityrecord"; <br>window.open(url, null, 'width=900,height=750,location=no,toolbar=no,status=yes,resizable=yes', false); <br>}  <p>&nbsp; <p>The cause is that when you use the Xrm.Page.context.getServerUrl() method, this will return following: </p> <p><br>1. For IFD, you get following URL format: <br><a href="https://OrganizationName.DomainName.com/">https://OrganizationName.DomainName.com/</a><br>2. While, when retrieving an Internal URL (http or https) the format is the following: <br>http(s)://CRMServerName.Domain.Com/OrganizationName</p> <p>Based on the above, if we access the CRM Organization using the IFD URL then “/main” is appended to the <a href="https://OrganizationName.DomainName.com/">https://OrganizationName.DomainName.com/</a> and it results in <a href="https://OrganizationName.DomainName.com/main">https://OrganizationName.DomainName.com//main</a> and it is failing.  <p><b>What can we do to solve this problem?</b>  <p>To work around this, you can modify the script to identify which URL we are using. This will check if the URL is for IFD or Internal URL. This is based on the fact that we know that if we access the CRM Organization using the IFD URL, this will contain the OrganizationName right after <a href="https://">https://</a>, .We can then extract it and compare with the actual OrganizationName. If they match, then we know that we are accessing CRM via IFD and we need to change the URL accordingly. If they don’t match then we know that we don’t access CRM via IFD and there is no need to change the URL.  <p>The resulting code would be something similar to this. You can find in yellow the most relevant parts of the applied workaround:  <p>function CreateNewArticle() { <br>var serverUrl = Xrm.Page.context.getServerUrl(); <br><strong><font color="#0000ff">var organizationName = Xrm.Page.context.getOrgUniqueName();</font></strong><br>var kbarticletemplateId = '{C3F93721-91B6-475A-ACD0-0A68AA1CB842}'; <br>var url = ""; <br>//We will use the tempServerUrl variable to see if we are accessing the CRM Organization via IFD or via the Internal URL <br>//when we access the CRM Organization via IFD the URL format is <a href="https://CRMOrganizationName.domain.com">https://CRMOrganizationName.domain.com</a>: <br>//what we can do to see if we are accessing via IFD or not is to get the CRMOrganizationName from the Url returned by Xrm.Page.context.getServerUrl() <br>//and compare it to the actual organization name returned by Xrm.Page.context.getOrgUniqueName(); <br>//If they match, then we know that we are accessing the CRM Organization via IFD and not via the Internal URL or via http <br>var tempServerUrl = ""; <br>//We remove the first 8 characters (<a href="https://">https://</a>) from the Server URL so from "<a href="https://CRMOrganizationName.domain.com:">https://CRMOrganizationName.domain.com:</a>", we will have "CRMOrganizationName.domain.com:" <br>//this will not affect the http connection as the http url has 7 characters https:// instead of 8 https:// <br><strong><font color="#0000ff">tempServerUrl = serverUrl.substring(8, serverUrl.length);</font></strong><br>//Then we check for the organizationName length and and keep the number of characters from the tempServerUrl matching the number of characters in the organizationName <br>//so we will have from "CRMOrganizationName.domain.com:" only "CRMOrganizationName" <br>tempServerUrl = tempServerUrl.substring(0, organizationName.length); <br>//We set them both to lower case so that we can compare them <br>tempServerUrl = tempServerUrl.toLowerCase(); <br>organizationName = organizationName.toLowerCase(); <br>//we then compare them. <br>//if these strings match, then we know we are using IFD and we build the URL accordingly -&gt; we remove the extra '/' which is added by Xrm.Page.context.getServerUrl() <br><strong><font color="#0000ff">if (tempServerUrl == organizationName) { <br>serverUrl = serverUrl.substring(0, serverUrl.length - 1);<br></font></strong>} <br>//else we keep the URL untouched. <br>url = serverUrl + "/main.aspx?etn=kbarticle&amp;extraqs=_CreateFromId%3d%26_CreateFromType%3d%26_tmplid=" + kbarticletemplateId + "%26etc%3d127&amp;pagetype=entityrecord"; <br>window.open(url, null, 'width=900,height=750,location=no,toolbar=no,status=yes,resizable=yes', false); <br>}  <p>&nbsp; <p>Best Regards  <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Project Services Trial or Buying</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/project-services-trial-or-buying</link>
      <pubDate>Mon, 25 Jul 2016 10:56:27 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3285</guid>
      <description><![CDATA[&nbsp; This article is to explain about Project Services trial or buying, including guidance for...]]></description>
      <content:encoded><![CDATA[<p>&nbsp; <p>This article is to explain about Project Services trial or buying, including guidance for Existing Trial Customers.  <p>&nbsp; <p><b></b> <p>As of July 6th, Trial editions for Project Service Automation are installed through CRMOL Settings &gt; "Dynamics Marketplace" or Microsoft AppSource (link below).  <p><b></b>&nbsp; <p><b>Step 1:</b>  <p>Go to the marketplace and find ‘Trial for Project Service Automation’ solution  <p><a href="https://appsource.microsoft.com/en-us/marketplace?product=dynamics-crm">https://appsource.microsoft.com/en-us/marketplace?product=dynamics-crm</a>  <p>Review the application information and click on the “Try” button. You must also to provide credentials (the same ones that you use to connect to the CRM Online organization)  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image00210.jpg"><img title="clip_image002" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image002_thumb8.jpg" width="850" height="512"></a>  <p>&nbsp; <p>Alternatively, you can go into your Dynamics CRM Online instance and go to Settings &gt; Dynamics Marketplace to get to the below list of apps.  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image0048.jpg"><img title="clip_image004" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image004_thumb8.jpg" width="862" height="244"></a>  <p><b></b> <p><b></b> <p><b></b>&nbsp; <p><b>Step 2:</b>  <p>Select the target instance on which to install the Trial solution and agree to the Terms of Service and Privacy statement.  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image0068.jpg"><img title="clip_image006" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image006_thumb8.jpg" width="869" height="426"></a>  <p>This will take the user to the CRM Online Admin Center “Manage your solutions” page.  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image0087.jpg"><img title="clip_image008" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image008_thumb7.jpg" width="882" height="600"></a>  <p><b></b>&nbsp; <p><b>STEP 3:</b>  <p><b></b> <p>Wait for the “Trial for Project Service Automation” installation to go from “Installation pending” to “Installed”  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image0105.jpg"><img title="clip_image010" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image010_thumb5.jpg" width="878" height="615"></a>  <p><b></b>&nbsp; <p><b>Step 4:</b>  <p><b></b> <p>Then you can go to the CRM Online instance to access the new Project Services installed via the CRM Menu.  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image0124.jpg"><img title="clip_image012" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image012_thumb4.jpg" width="889" height="115"></a>  <p><b></b>&nbsp; <p><b>Existing Customer Trial Updates</b>  <p><b></b> <p>If you have already installed a Trial for Project Services, then this provisioning model change will remove the line entry from their “Manage your solutions” view in the CRM Admin Portal.  <p>To get updates for a Trial edition of the solution, you need to follow the above process to install the “latest” edition of the Trial package on at least one instance in your tenant.  <p>This will make the Trial for Project Services package visible again in the “Manage your solutions” view and will make updates available for other instances with an installation of the trial solution.  <p><b></b>&nbsp; <p><b>Buying the CRM Project Services solution</b>  <p><b></b> <p>There are 2 situations we are facing at the moment:  <p><b></b> <p><b></b>&nbsp; <p><b>1. SANDBOX: - CANNOT INSTALL PAYED VERSION ONLY TRIAL</b>  <p>To use it here, you should Access to CRM Sandbox &gt; Go to Settings &gt; Customizations &gt; Dynamics Marketplace, you will find Trial for Project Service and Field Service and you should just click on "Try" and the installation begins  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image0142.jpg"><img title="clip_image014" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image014" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image014_thumb2.jpg" width="864" height="570"></a>  <p>The only prerequisite is to have CRM 2016 Service Pack 1 installed.  <p><b></b>&nbsp; <p><b>2. PRODUCTION</b>  <p>You need to firstly buy the solutions and after that, you will be able to access them. In order to buy them, you should either request support from the Billing department or get in touch with a TAM (Technical Adviser Manager) or SAM (Account Manager).  <p>The recommendation will be to firstly UNINSTALL IT from Manage your Solutions on the Office 365 Portal, buy it, install it again. After the install is over, you should be able to see it like in the below image:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image015.jpg"><img title="clip_image015" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image015" src="https://msdnshared.blob.core.windows.net/media/2016/07/clip_image015_thumb.jpg" width="877" height="113"></a>  <p>If you do not uninstall it first, then it is still going to show as trial but it will be the paid one if you purchased it.  <p>&nbsp;</p> <p>Best Regards</p> <p>EMEA Dynamics CRM Support Team</p> <p><b></b>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Dynamics XRM Service Toolkit</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/dynamics-xrm-service-toolkit</link>
      <pubDate>Mon, 04 Jul 2016 14:31:38 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3125</guid>
      <description><![CDATA[&nbsp; This article is to publicise one interesting component in Dynamics CRM that probably not...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>This article is to publicise one interesting component in Dynamics CRM that probably not everybody is aware of. It is the <a href="https://xrmservicetoolkit.codeplex.com/">XRMServiceToolkit</a>  <p>This is in essence a Javascript library that can help us do certain tasks more easily and quickly; for instance, tasks like CRUD (Create, Update, etc.) via REST and SOAP among other things.  <p>It is important to note, that it is only available for CRM 2011, 2013 and 2015. You can use it for CRM 2016, by pointing to the old /XRMServices/2011/Organization.svc endpoint. The developers are considering extending the support to v2016, but a final decision hasn’t been made as of yet.  <p>&nbsp; <p>As an example of its usage, we can use this code to create a record:  <p><font color="#0000ff">var contact = {};</font>  <p><font color="#0000ff">contact.FirstName = "Diane";</font>  <p><font color="#0000ff">contact.LastName = "Morgan";</font>  <p><font color="#0000ff">contact.MiddleName = "&lt;&amp;&gt;";</font>  <p><font color="#0000ff">contact.GenderCode = { Value: 2 };</font>  <p><font color="#0000ff">contact.CreditLimit = { Value: "2.00" };</font>  <p><font color="#0000ff">contact.BirthDate = birthDate;</font>  <p><font color="#0000ff">contact.DoNotEMail = true;</font>  <p><font color="#0000ff">contact.DoNotPhone = true;</font>  <p><font color="#0000ff">XrmServiceToolkit.Rest.Create(</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contact,</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ContactSet",</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function (result) {</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contactId = result.ContactId;</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function (error) {</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(error.message);</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</font>  <p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false</font>  <p><font color="#0000ff">);</font>  <p>&nbsp; <p>As you can see, it reduces the length and complexity of the code that would be needed in case of not using the toolkit.  <p>In order to use it, the following steps are needed:  <ol> <li>Download it from the site referenced above, and extract its contents.  <li>Create a new web resource in CRM called “JQuery”, Select the ‘Script(JScript)’ as the Type, and then browse for the jQuery.js file that you extracted.  <li>Create two more web resources called “json” and “XRMServiceToolKit”, by repeating the step ‘4’.  <li>Add all these web resources to a form in the following order:<br>i. jQuery<br>ii. jSon<br>iii.XrmServiceToolkit<br>iv.Your web resource library</li></ol> <p>&nbsp;</p> <p>Best Regards</p> <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>CRM 2016 On Premise claim based enabled &amp; SharePoint 2013 On Premise with server-based authentication integration – 401 error</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/crm-2016-on-premise-claim-based-enabled-sharepoint-2013-on-premise-with-server-based-authentication-integration-401-error</link>
      <pubDate>Tue, 14 Jun 2016 14:53:55 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3115</guid>
      <description><![CDATA[&nbsp; This article is regarding CRM 2016 On Premise claim based enabled and SharePoint 2013 On...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>This article is regarding CRM 2016 On Premise claim based enabled and SharePoint 2013 On Premise with server-based authentication integration, and CRM users are unable to create SharePoint folders and get&nbsp; 401-Unauthorized error.</p> <p>&nbsp;</p> <p>After having configured the server-based authentication for the integration between CRM2016 On Premise with claim based enabled and SharePoint 2013 On Premise by following this technical article <a href="https://technet.microsoft.com/en-us/library/dn949332.aspx">https://technet.microsoft.com/en-us/library/dn949332.aspx</a>, the CRM user will receive an error from SharePoint saying that he is not authorized to create a SharePoint folder.  <p>This can affect also if a CRM user has administrative privileges on both CRM and SharePoint.  <p>&nbsp; <p>The complete error description received by SharePoint while performing the action, is:  <p><font color="#ff0000" size="2">"Authorization Failure - The remote server returned 401 unauthorized error. Please contact your administrator. "</font>  <p><font color="#ff0000" size="2">&lt;errorlog&gt;&lt;sites&gt;</font>  <p><font color="#ff0000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;site&gt;</font>  <p><font color="#ff0000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url&gt;</font><a href="https://intranet.ufs.ac.za/sites/crm%3c/url"><font color="#ff0000" size="2">https://intranet.ufs.ac.za/sites/crm&lt;/url</font></a><font color="#ff0000" size="2">&gt;</font>  <p><font color="#ff0000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;exception&gt;The remote server returned an error: (401) Unauthorized.&lt;/exception&gt;</font>  <p><font color="#ff0000" size="2">&lt;errorcode&gt;-2147088204&lt;/errorcode&gt;</font>  <p><font color="#ff0000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;correlation&gt;0568719d-b0d5-90f6-c44e-ee933c5728fa&lt;/correlation&gt;</font>  <p><font color="#ff0000" size="2">&lt;/site&gt;</font>  <p><font color="#ff0000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/sites&gt;&lt;/errorlog&gt;</font>&nbsp;&nbsp; <p>&nbsp; <p>As a note, SPS does not need to be configured for ADFS.  <p>&nbsp; <p>The cause of this is when CRM 2016 is claims enabled, then the SharePoint 2013 (that was integrated with the server-based authentication method) expects that CRM sends the SharePointEmailAddress attribute value with a value equal to the value that the same ActiveDirectory user has in its Workemail attribute in the SharePoint user profile.  <p>Because this value is taken from the ActiveDirectory Account email attribute or ProxyEmail attribute, on CRM of the CRM user SharePointEmailAddress attribute should be populated with a consistent value.  <p>However, because the mapping of the attributes between Active Directory and SharePoint user profiles can be changed manually or automatically on a SharePoint side (depending on how the SharePoint 2013 is configured, this means that there could be different way on how to populate properly the value for the SharePointEmailAddress attribute (for example a CRM workflow that is triggered when the emailaddress of the CRM user is modified, then it goes to populate with the same value the SharePointemailAddress).  <p>&nbsp; <p><u>Workaround</u>  <p>As a preamble:  <p>On the SharePoint side, be sure that the CRMuser ActiveDirecotry account is part of the site members to allow the creation of the document library and SharePoint folders from CRM, and also that for the same user, the work email attribute in his profile is exact the same of the attribute SharePointEmailAddress for the CRM user.  <p>In case of you cannot see the WorkEmail attribute on the SharePoint user profile have a look at the communication section of this blog <a href="https://sharepointobservations.wordpress.com/2013/07/16/error-you-do-not-have-an-email-address/">https://sharepointobservations.wordpress.com/2013/07/16/error-you-do-not-have-an-email-address/</a>  <p>On CRM side, be sure that when provisioning the CRM user, double check that the SharePoint Email Address attribute of the CRM user is populated with the same value of the Work Email attribute of the SharePoint user.  <p>Note: for the same ActiveDirectory user, in case of the value of the SharePoint <b><u>work email </u></b>attribute or the value of the CRM <b><u>SharePoint Email Address </u></b>attribute are not matching, then the 401 error will appear.  <p>&nbsp; <p>As a side note on how to apply the workaround, since it depends on the specific scenario and how it is working the sync between ActiveDirectory users and the SharePoint user profiles, we can do the following on CRM:  <p>- Customize the system user main form on the CRM, to add the sharepointemailaddress attribute on the form  <p>- Publish All  <p>- Locate the CRM users under settings, and open the CRM user form  <p>- Locate the added attribute and fill in the email address value (this need to be exactly the same value that the same related AD user has in SharePoint for the work email attribute in its profile)  <p>&nbsp; <p>For example:  <p>- We have in AD the user user1, where it’s email is <a href="mailto:user1@localserver.com">user1@localserver.com</a>  <p>- We add the user to the CRM org, so the CRM user user1 will get the primaryemail address equal to <a href="mailto:user1@localserver.com">user1@localserver.com</a> because it is taken from AD  <p>- On SPS, the same user was added, and (in the OOB scenario) the work email attribute is equal to <a href="mailto:user1@localserver.com">user1@localserver.com</a> as well, because it is taken from AD  <p>Remark: a remote far situation, but that can happen is that if the customer goes to AD and modify the emailaddress for user1, and then the AD-SPS user profile sync job run and apply the new value on the work email attribute for the user1 in SPS, the customer need to go also on CRM, edit the CRM user1 user information, and update the SharePointemailaddress attribute to maintain the match.  <p>&nbsp; <p>Best Regards  <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>CRM Online 2016 Low number of options displayed when option set is alone in a bottom tab</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/crm-online-2016-low-number-of-options-displayed-when-option-set-is-alone-in-a-bottom-tab</link>
      <pubDate>Tue, 14 Jun 2016 09:34:57 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3106</guid>
      <description><![CDATA[&nbsp; You may come across an issue when you have an option set, but the options are not displayed...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>You may come across an issue when you have an option set, but the options are not displayed as a dropdown.  <p>If spacers are added to the section where the option sets control is located, the dropdown will display correctly.  <p>For a specific scenario, option Sets when placed at bottom of a form only display two values.&nbsp; <p>Note:&nbsp; These Option Sets contains more than 2 values.  <p>&nbsp; <p>This is a By design limitation of the specific scenario stated.  <p>With the current design of CRM, the opened option set is already using the maximum space available in the tab to display the options.  <p>The tab's height is very small because it only has one field in it (just one control that is the Option Sets) and even if we increased the opened option set’s default/minimum height, you would not even be able to see the additional options because the options do not overflow outside of the tab.&nbsp; <p>&nbsp; <p><u>To reproduce this:</u></p> <p><br>1. Create an option set.<br>a. Click on Microsoft Dynamics CRM → Settings → Customizations → Customize the system<br>b. Then expand Entities (under components) → expand Accounts → Forms → Accounts (Main) → New Field<br>c. Enter the mandatory details<br>d. Select the type as option set<br>e. Click on the “+” sign<br>f. Enter “Item 1” to "Item 9" under the Label<br>g. Click on the description field<br>h. Click on save and close<br>2. Now open the account form and in the command bar click on the FORM button to customize the form.<br>3. Go to the insert tab in the form customization, and insert a new tab with 3 Columns for example at the very end.<br>4. Add now the custom field from the right pane.<br>5. Save customizations and publish them.<br>6. Refresh the account form now navigate to the bottom of the form where you added the field in the tab, and expand it.<br>&gt;&gt; You will see only one option is getting displayed even if the space on the top is more than enough to display it.</p> <p>&nbsp;</p> <p><u>Workaround</u></p> <p>The workaround for this issue is to place spacers below the attribute/ option set. <br>Each spacer is equal to one value. E.g. 2 spacers = option set will display two extra values.  <p>Adding spacers on the tab below the option Sets control will create room for displaying the items of the option Sets control.  <p>Note: In this example the bottom fields are not set as visible.  <p>The picture below shows how the form customization and the UI experience is before applying the workaround:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image00213.jpg"><img title="clip_image002" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image002_thumb11.jpg" width="570" height="162"></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image0046.jpg"><img title="clip_image004" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image004_thumb4.jpg" width="575" height="94"></a>  <p>&nbsp; <p>&nbsp; <p>After applying the workaround:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image0065.jpg"><img title="clip_image006" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image006_thumb3.jpg" width="586" height="273"></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image0084.jpg"><img title="clip_image008" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/2016/06/clip_image008_thumb4.jpg" width="588" height="118"></a>  <p>&nbsp; <p>&nbsp; <p>Best Regards  <p>EMEA Dynamics CRM Support Team  <p>&nbsp; <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Workflows in Dynamics CRM</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/workflows-in-dynamics-crm</link>
      <pubDate>Mon, 23 May 2016 22:33:05 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=3045</guid>
      <description><![CDATA[&nbsp; &nbsp; This article has the purpose of being an in depth discussion of what is a workflow in...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>&nbsp; <p>This article has the purpose of being an in depth discussion of what is a workflow in CRM, what are possibilities and how you can develop a simple workflow for CRM.  <p>&nbsp; <p>For the purpose of this article, the author decided to go with the CRM 2016 version of the SDK (available <a href="https://www.microsoft.com/en-us/download/details.aspx?id=50032">here</a>). It is strongly recommended that you keep up to speed with the changes in the SDK, as new information is always released.  <p>The term workflow implies that in order to get to it, there is something that defines it - a business process. A business process can be thought of as set of specific steps that have to be undertaken by a business worker in order to attain a specific objective.  <p>How can we express a business process in CRM? For that we have 4 distinct ways of doing it:</p> <p>&nbsp;</p> <p> <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td valign="top" width="283"> <p>Type of business process</p></td> <td valign="top" width="283"> <p>When to use it</p></td></tr> <tr> <td valign="top" width="283"> <p>Workflow</p></td> <td valign="top" width="283"> <p>When you want to automate processes that were accomplished before by one or more people within a business.</p></td></tr> <tr> <td valign="top" width="283"> <p>Action</p></td> <td valign="top" width="283"> <p>When you want to combine a set of steps that are not otherwise made available by standard CRM components</p></td></tr> <tr> <td valign="top" width="283"> <p>Business Process Flow</p></td> <td valign="top" width="283"> <p>When you want to give the users a visual representation of a business processes. Users are guided through the various stages of the process, whether it is a sales or customer service related process</p></td></tr> <tr> <td valign="top" width="283"> <p>Dialog</p></td> <td valign="top" width="283"> <p>When you want the user to interact with the system, and collecting data from users along the steps of the dialog.</p></td></tr></tbody></table></p> <p>&nbsp;</p> <p>Creating a workflow is in Settings -&gt; Processes (It is under Process Center). Once the page loads, you’re greeted with the “My Processes” view, which is the default view for Processes.  <p>Note: The content below can also be found on Technet. Click <a href="https://technet.microsoft.com/en-us/library/dn531067.aspx">here</a> to get more information.  <p>Click on the “New” button to create a new workflow. The following dialog appears:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image00232.jpg"><img title="clip_image002" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image002_thumb24.jpg" width="701" height="526"></a>  <p>&nbsp; <p>Process Name: You should always put a descriptive enough name for the process, so that once people see the workflow name, have an idea of what it is supposed to do, rather than having to open it to understand what it does.  <p>Category: Since the process we’re trying to create is a workflow, we’ll set this to “Workflow”  <p>Entity: This field defines the primary entity record (in this case, the Account entity), upon which the workflow will perform some action. You can’t change the entity once the workflow has been set.  <p>&nbsp; <p>The “Run this workflow in the background (Recommended)” checkbox is there to let us decide if we want to run the workflow in an asynchronous (i.e. in the background) or in a synchronous fashion. Let’s leave it checked for now.  <p>The last option that we are given is whether we want to create a new process or based on an already existing template. Let’s go with the blank process option.  <p>Once we click OK, the below dialog appears:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image00419.jpg"><img title="clip_image004" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image004_thumb19.jpg" width="671" height="376"></a>  <p>&nbsp; <p>We’ll begin with the “Activate As” dropdown. The following values are available:</p> <p>&nbsp;</p> <p> <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td valign="top" width="283"> <p>Option</p></td> <td valign="top" width="283"> <p>What happens if I select it?</p></td></tr> <tr> <td valign="top" width="283"> <p>Process</p></td> <td valign="top" width="283"> <p>An actual instance of a workflow will be created every time the workflow is run</p></td></tr> <tr> <td valign="top" width="283"> <p>Process Template</p></td> <td valign="top" width="283"> <p>It will make the workflow available in the template list. This is useful to create a set of workflows that can share a common set of logic.</p></td></tr></tbody></table></p> <p>&nbsp; <p>Under Available to Run you are given three checkboxes:  <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td valign="top" width="283"> <p>Option</p></td> <td valign="top" width="283"> <p>What does it mean</p></td></tr> <tr> <td valign="top" width="283"> <p>Run this workflow in the background (recommended)</p></td> <td valign="top" width="283"> <p>The workflow will be invoked in an asynchronous fashion once the trigger conditions are met.</p></td></tr> <tr> <td valign="top" width="283"> <p>As an on-demand process</p></td> <td valign="top" width="283"> <p>The user will have the possibility of running the workflow by accessing it in the Run Workflow command under “More Commands” (see screenshot below)  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0056.png"><img title="clip_image005" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image005" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image005_thumb5.png" width="220" height="214"></a></p></td></tr> <tr> <td valign="top" width="283"> <p>As a child process</p></td> <td valign="top" width="283"> <p>This will allow for a workflow to be called from another <a>workflow</a><a href="/Users/kevtunst/AppData/Local/Microsoft/Windows/INetCache/Content.Outlook/AXKYLA0C/#_msocom_1" name="_msoanchor_1">[HFLVD1]</a> .</p></td></tr></tbody></table> <p>&nbsp; <p>The option “Automatically delete completed workflow jobs” will allow for some housekeeping regarding the records left in the AsyncOperationBase table. Do use some caution when deciding not to have completed jobs be deleted (this leads to excessive growth of the AsyncOperationTable – clean-up procedures for this table can be found <a href="https://support.microsoft.com/en-us/kb/968520">here</a>)  <p>As you can see, for automatic processes, you have a number of options. Let’s go over each one of them:  <p>&nbsp; <p>The scope restricts the records upon which the workflow will run.  <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td valign="top" width="283"> <p><a>Scope</a></p></td> <td valign="top" width="283"> <p>What records will be affected</p></td></tr> <tr> <td valign="top" width="283"> <p>User</p></td> <td valign="top" width="283"> <p>Records owned by the user that created the workflow</p></td></tr> <tr> <td valign="top" width="283"> <p>Business Unit</p></td> <td valign="top" width="283"> <p>All records within the user’s business unit</p></td></tr> <tr> <td valign="top" width="283"> <p>Parent: Child Business Unit</p></td> <td valign="top" width="283"> <p>All records belonging to the user’s business unit and children business units</p></td></tr> <tr> <td valign="top" width="283"> <p>Organization</p></td> <td valign="top" width="283"> <p>All records<a href="/Users/kevtunst/AppData/Local/Microsoft/Windows/INetCache/Content.Outlook/AXKYLA0C/#_msocom_2" name="_msoanchor_2">[HFLVD2]</a> in the organization.</p></td></tr></tbody></table> <p>&nbsp; <p>For the purpose of the exercise, set the scope to organization.  <p>Finally, you get to select when the workflow is started:  <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td valign="top" width="283"> <p>Record is created</p></td> <td valign="top" width="283"> <p>Upon record creation</p></td></tr> <tr> <td valign="top" width="283"> <p>Record status changes</p></td> <td valign="top" width="283"> <p>When the status of the record changes</p></td></tr> <tr> <td valign="top" width="283"> <p>Record is assigned</p></td> <td valign="top" width="283"> <p>When the record is assigned to a user or team</p></td></tr> <tr> <td valign="top" width="283"> <p>Record fields change</p></td> <td valign="top" width="283"> <p>When a field (from a list of fields selected by the user) changes</p></td></tr> <tr> <td valign="top" width="283"> <p>Record is deleted</p></td> <td valign="top" width="283"> <p>When the record is deleted from the system</p></td></tr></tbody></table> <p>&nbsp; <p>Once all these settings are done, we can get to the actual steps of the workflow itself.  <p>From this point onwards, all you need to add to the workflow are its steps. If you click on the Add Step button, you’ll have an array of options, most of which are self-explanatory. It is at this time that we strongly recommend that you have the flowchart of the workflow handy so that you don’t make any mistakes creating the workflow.  <p>&nbsp; <p>Imagine that the existing options you have for a workflow just don’t cut it and you want something that it is just not available within the UI. Here is the point where you need to start looking into code.  <p>And that part happens to be Custom Workflow Activities and Custom XAML Workflows (see doc links <a href="https://msdn.microsoft.com/en-us/library/gg309745.aspx">here</a> and <a href="https://msdn.microsoft.com/en-us/library/gg309458.aspx">here</a>).  <p>Be mindful of the following when developing Custom Workflow Activities and Custom XAML Workflows:  <p><u></u>&nbsp; <p><u>For CRM OnPremises</u>  <p>Custom Workflow Activities can run under full trust and partial trust code execution  <p>Custom XAML Workflows can be run.  <p>&nbsp; <p><u>For CRM Online</u>  <p>Custom Workflow Activities only run under partial trust code execution  <p>Custom XAML workflows are not allowed.  <p>&nbsp; <p>Let us focus solely on the Custom Workflow Activities. Custom XAML Workflows are a whole other topic of discussion and well worth a separate article for themselves.  <p>Let’s then dig deeper into creating Custom Workflow Activities. Below are the prerequisites for developing a custom workflow activity:</p> <p>&nbsp;</p> <p> <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td valign="top" width="283"> <p>Prerequisite</p></td> <td valign="top" width="283"> <p>Detail</p></td></tr> <tr> <td valign="top" width="283"> <p>Which .NET Framework version to target?</p></td> <td valign="top" width="283"> <p>.NET 4.5.2</p></td></tr> <tr> <td valign="top" width="283"> <p>Which DLL’s from the SDK do we need to reference</p></td> <td valign="top" width="283"> <p>Microsoft.Xrm.Sdk.dll  <p>Microsoft.Xrm.Sdk.Workflow.dll</p></td></tr></tbody></table></p> <p>&nbsp; <p>Now for the code itself:  <p><font color="#0000ff">using System.Activities</font>  <p><font color="#0000ff">using Microsoft.Xrm.Sdk;</font>  <p><font color="#0000ff">using Microsoft.Xrm.Sdk.Workflow</font>  <p><font color="#0000ff">namespace CodeSamples</font>  <p><font color="#0000ff">{</font>  <p><font color="#0000ff">public class MyVeryFirstCodeActivity : CodeActivity</font>  <p><font color="#0000ff">{</font>  <p><font color="#0000ff">protected override Execute(CodeActivityContext context) {}</font>  <p><font color="#0000ff">}</font>  <p><font color="#0000ff">}</font>  <p>&nbsp; <p>Since the underlying workflow technology is Windows Workflow Foundation 4.0, we will require a reference to it (System.Activities)  <p>Every custom code activity will be required to extend the System.Activities.CodeActivity class (hence the inheritance shown above)  <p>Finally, much like the Main function on a C program or the Main method on a C# program, we will need a method where the execution will take place. Since the CodeActivity class is an abstract class and and the method Execute within it is also an abstract method, we will then need to override the Execute method (as per object oriented programming concepts) in order to run the code activity.  <p>Now, is this all there is to it? Unfortunately, that is not the case. Like a plug-in, custom code activities will also require to know what are their input parameters and all of the necessary metadata so that it can then work with CRM information. This documentation link (click <a href="https://msdn.microsoft.com/en-us/library/gg327842.aspx">here</a>) explains it in greater detail.  <p>Once you’ve set all necessary info, and signed your assembly (remember: All assemblies in CRM need to be strongly signed), it is now time to build it.  <p>&nbsp; <p>Let’s then go to the CRM SDK (note: for this we’re focusing on CRM 2016, so get it from <a href="https://www.microsoft.com/en-us/download/details.aspx?id=50032">here</a>). Once you’ve opened up the SDK folder, find and execute the Plugin Registration Tool (found in SDK\Tools\PluginRegistration in your CRM SDK installation folder).  <p>Once you’ve registered your workflow assembly by giving it a name and a group name (more details <a href="https://msdn.microsoft.com/en-us/library/gg328515.aspx#NameandGroupName">here</a>), it is time that you use it, so go into creating a new workflow, or editing an existing one (assuming you’ve deactivated it first prior to editing) and just click on ”Add Step” and you’ll see your brand new code activity.  <p>That’s it for this in-depth look into workflows and how you can create them both from the UI and within code.  <p>&nbsp; <p>Best Regards  <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Dynamics CRM App for Outlook</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/microsoft-dynamics-crm-app-for-outlook</link>
      <pubDate>Wed, 18 May 2016 13:00:40 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=2955</guid>
      <description><![CDATA[&nbsp; The CRM app for Outlook has been introduced in CRM 2015 Update 1 as a preview feature and is...]]></description>
      <content:encoded><![CDATA[<p><b></b>&nbsp;</p> <p>The CRM app for Outlook has been introduced in CRM 2015 Update 1 as a preview feature and is fully supported with CRM Online 2016. CRM On Premises Support will come with CRM 2016 Update 1.0.  <p>Microsoft Dynamics CRM App for Outlook is a lightweight app you can use to view Microsoft Dynamics CRM information and track email from within Outlook. The CRM data appears right in your Outlook Inbox.  <p>The CRM App for Outlook is available also in the Outlook Web Access (OWA), the Desktop Outlook (PC or laptop) and as a Mobile App (for Phones and Tablets).  <p>&nbsp; <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image00214.png"><img title="clip_image002" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image002_thumb9.png" width="633" height="418"></a>  <p>&nbsp; <p>Without requiring installation or configuration, Dynamics CRM App for Outlook allows you to:  <p>Work in the familiar Outlook environment,  <p>Easily track/ untrack emails wherever you are&nbsp; <p>Convert an email message into a new CRM Record.  <p>Create CRM contact records for people on the <b>from</b> list that aren’t already included in the CRM database.  <p>Preview information about contacts and leads stored in CRM.  <p>Open CRM records directly to find or enter more detailed information.  <p>Create new CRM records for any entity, as long as the entity has been enabled for mobile<b> <sup>(*)</sup></b> and for multi-entity search.  <p><b><sup>(*)</sup> </b><b>Only entities enabled for mobile are visible in the CRM App for Outlook. To enable an entity for mobile you need to access the specific entity under Settings -&gt; Customization -&gt; Customize the System and mark “enable for mobile”</b>  <p><b><u>&nbsp;</p> <p><br></p></u></b> <p><b><u></u></b> <p><b><u>Support Matrix:</u></b><b><u></u></b>  <p>&nbsp; <p><b><u></u></b>&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/2016/05/228.jpg"><img title="22" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="22" src="https://msdnshared.blob.core.windows.net/media/2016/05/22_thumb.jpg" width="685" height="208"></a> <p>&nbsp; <p><b><u>Eligibility Requirements &amp; Deployment:</u></b><b><u></u></b>  <p>The CRM App for Outlook can be enabled only for CRM Online 2016 or later deployments. Dynamics CRM App for Outlook availability for Microsoft Dynamics CRM on-premises is planned for CRM 2016 Update 1.0.  <p>Following settings are required in order to be able to enable Dynamics CRM App for a CRM user:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0043.png"><img title="clip_image004" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image004_thumb3.png" width="52" height="52"></a>  <p><b>Mailbox Settings</b>  <p>Make sure that the user’s mailbox is configured to synchronize incoming emails through Server side Sync!  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0062.png"><img title="clip_image006" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image006_thumb2.png" width="716" height="83"></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0082.png"><img title="clip_image008" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image008_thumb1.png" width="40" height="40"></a>  <p><b></b>&nbsp;</p> <p><b>User Settings</b></p> <p>User needs to have a minimum set of privileges in order to qualify as eligible user for the CRM App for Outlook. The minimum level of permissions is described in the below:</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0101.png"><img title="clip_image010" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image010_thumb1.png" width="713" height="211"></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0121.png"><img title="clip_image012" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image012_thumb.png" width="712" height="125"></a><br></p> <p>&nbsp;</p> <p>If the above requirements are met, the user should be eligible to use the App.  <p>Users can add the App to their Outlook by accessing <b><i>Personal Options -&gt; Apps for Dynamics CRM</i></b><b><u></u></b>  <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="136"></td></tr> <tr> <td></td> <td></td></tr></tbody></table><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0172.jpg"><img title="clip_image017" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image017" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image017_thumb2.jpg" width="141" height="136"></a><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image0154.jpg"><img title="clip_image015" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image015" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image015_thumb4.jpg" width="547" height="87"></a>  <p>CRM Administrators have the possibility to push <b><i>automatically </i></b>or <b><i>manually</i></b> the App for <b><i>all </i></b>or <b><i>some</i></b> eligible users from <b><i>Settings -&gt; CRM App for Outlook</i></b>  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image019.png"><img title="clip_image019" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" hspace="12" alt="clip_image019" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image019_thumb.png" width="631" height="508"></a>  <p>&nbsp; <p><b><u></u></b> <p><b><u>NOTE:</u></b> If you have been using the preview version of the app, you will need to manually remove the app from Outlook and then follow the above listed instructions to get the fully supported app:  <p>For Outlook Desktop -&gt; File -&gt; Manage Add-ins&nbsp; <p>For Outlook Web Access -&gt; Settings -&gt; Manage Add-ins  <p><b><u><br></u></b> <p><b><u></u></b> <p><b><u>Known Issues:</u></b><b><u></u></b>  <p>Error "We’re unable to connect to your Microsoft Dynamics CRM server" when using CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3124910">https://support.microsoft.com/en-us/kb/3124910</a>  <p>“Your browser is currently unsupported” when accessing the Microsoft Dynamics CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3064199">https://support.microsoft.com/en-us/kb/3064199</a>  <p>“The language installed on your company’s system isn’t available on the app” when accessing the Microsoft Dynamics CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3064234">https://support.microsoft.com/en-us/kb/3064234</a>  <p>This operation failed because you're offline” when accessing the Microsoft Dynamics CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3064235">https://support.microsoft.com/en-us/kb/3064235</a>  <p>“You only have administrative access to Microsoft Dynamics CRM…” when accessing the Microsoft Dynamics CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3064256">https://support.microsoft.com/en-us/kb/3064256</a>  <p>“This app is not available for your version of Microsoft Dynamics CRM.” when accessing the Microsoft Dynamics CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3064263">https://support.microsoft.com/en-us/kb/3064263</a>  <p>·Error "Sorry, something went wrong..." when using CRM App for Outlook: <a href="https://support.microsoft.com/en-us/kb/3124915">https://support.microsoft.com/en-us/kb/3124915</a>  <p><b><u></u></b>&nbsp; <p><b><u>Public Resources:</u></b><b><u></u></b>  <p><a href="https://www.microsoft.com/en-us/dynamics/crm-customer-center/crm-app-for-outlook-user-s-guide-lightweight-app.aspx">CRM App for Outlook User's Guide</a>  <p><a href="https://technet.microsoft.com/en-us/library/dn946901.aspx">Deploy CRM App for Outlook</a>  <p>&nbsp;</p> <p>Best Regards</p> <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Introduction for Identity and Authentication in the cloud using Office 365 with Dynamics CRM</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/introduction-for-identity-and-authentication-in-the-cloud-using-office-365-with-dynamics-crm</link>
      <pubDate>Mon, 09 May 2016 10:44:31 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=2805</guid>
      <description><![CDATA[&nbsp; Today, when we are authenticating to Office 365, the authentication is "user centred", and...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>Today, when we are authenticating to Office 365, the authentication is "user centred", and not "computer centred" anymore. In this new reality, users who sign in the Office 365 will use different kinds of identities: Microsoft Account (Xbox, Skype, One Drive…) or Organizational account (for O365, Intune or CRM online).  <p>A Microsoft Account, formerly known as Windows Live ID, is the combination of an email address and a password used to sign in to services like Xbox, outlook.com, skype, OneDrive…  <p>&nbsp; <p>Regarding the Organizational account, Office 365 has two systems that can be used for user identities:  <p>• Work or school account (cloud identity)&nbsp;&nbsp; Users receive Azure Active Directory cloud credentials—separate from other desktop or corporate credentials—for signing into Office 365 and other Microsoft cloud services. This is the default identity, and is recommended in order to minimize deployment complexity. Passwords for work or school accounts use the Azure Active Directory password policy.  <p>• Federated account (federated identity)&nbsp;&nbsp; For all subscriptions in organizations with on-premises Active Directory that use single sign-on (SSO), users can sign into Office 365 services by using their Active Directory credentials. The corporate Active Directory stores and controls the password policy.  <p>For information about User Account Management, please check the following article:  <p><b>User Account Management</b>  <p><a href="https://technet.microsoft.com/en-us/library/office-365-user-account-management.aspx">https://technet.microsoft.com/en-us/library/office-365-user-account-management.aspx</a>  <p>Note: As this article has the purpose to introduce the Identity and Authentication in the cloud using Office 365, we will focus on the Organizational accounts from now.  <p>&nbsp; <p>Office 365 uses the cloud-based user authentication service <b>Azure Active Directory (AAD)</b> to manage users. You can choose from three main identity models in Office 365 when you set up and manage user accounts:  <p>a) <b>Cloud identity</b>.  <p>All is done in the cloud and you manage your user accounts in Office 365 only. No on-premises servers are required to manage users.  <p>b) <b>Synchronized identity</b>.  <p>Synchronize on-premises directory objects with Office 365 and manage your users on-premises. You can also synchronize passwords so that the users have the same password on-premises and in the cloud, but they will have to sign in again to use Office 365.  <p>c) <b>Federated identity</b>.  <p>Synchronize on-premises directory objects with Office 365 and manage your users on-premises. The users have the same password on-premises and in the cloud, and they do not have to sign in again to use Office 365. This is often referred to as single sign-on.  <p>For more information about this topic, please check the following article:  <p>Understanding Office 365 identity and Azure Active Directory  <p><a href="https://support.office.com/en-us/article/Understanding-Office-365-identity-and-Azure-Active-Directory-06a189e7-5ec6-4af2-94bf-a22ea225a7a9">https://support.office.com/en-us/article/Understanding-Office-365-identity-and-Azure-Active-Directory-06a189e7-5ec6-4af2-94bf-a22ea225a7a9</a>  <p>&nbsp; <p>When you are using CRM Online and Office 365, it is important understand which identity model is used to have a better understanding about how your users are accessing O365. On top of it , you can also consider several factors as time, complexity, and cost, which will vary from one organization to another.  <p>You can check the user identity used in O365 accessing "User and groups", selecting  <p>"Active Users", and checking the "Status" as described below:  <p><a href="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image00212.jpg"><img title="clip_image002" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/2016/05/clip_image002_thumb9.jpg" width="827" height="522"></a>  <p>More references:  <p>What is my user ID and why do I need it for Office 365 for business  <p><a href="https://support.office.com/en-us/article/What-is-my-user-ID-and-why-do-I-need-it-for-Office-365-for-business-37da662b-5da6-4b56-a091-2731b2ecc8b4">https://support.office.com/en-us/article/What-is-my-user-ID-and-why-do-I-need-it-for-Office-365-for-business-37da662b-5da6-4b56-a091-2731b2ecc8b4</a>  <p>Office 365 Core Identity Scenarios  <p><a href="https://blogs.technet.microsoft.com/uspartner_ts2team/2013/09/11/office-365-core-identity-scenarios/">https://blogs.technet.microsoft.com/uspartner_ts2team/2013/09/11/office-365-core-identity-scenarios/</a>  <p>Identity and Authentication in the cloud: Office 2013 and Office 365 (Poster)  <p><a href="https://www.microsoft.com/en-us/download/confirmation.aspx?id=38193">https://www.microsoft.com/en-us/download/confirmation.aspx?id=38193</a>  <p>&nbsp;</p> <p>&nbsp;</p> <p>Best Regards</p> <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
    <item>
      <title>Deleting Email Attachments in Dynamics CRM 2016</title>
      <link>https://docs.microsoft.com/archive/blogs/emeadcrmsupport/deleting-email-attachments-in-dynamics-crm-2016</link>
      <pubDate>Tue, 12 Apr 2016 10:37:38 GMT</pubDate>
      <dc:creator><![CDATA[EMEA CRM]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/emeadcrmsupport/?p=2781</guid>
      <description><![CDATA[&nbsp; This article could be of interest to you if you use email attachments on a large scale in CRM...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>This article could be of interest to you if you use email attachments on a large scale in CRM with images such as signatures in emails.  <p>If you look into your database storage report and see that Email attachments is a high usage in the db size, this may be of interest to you.  <p>&nbsp; <p>In CRM, email attachments can be removed only if email is in draft state. You can create a workflow to change the status of the emails&nbsp; and then delete the attachments manually; but it is not practical to manually delete the attachments from hundreds of emails.  <p>&nbsp; <p>There was a workflow solution on <a href="https://crmemailworkflowutilities.codeplex.com/" target="_blank">codeplex</a> which was used to bulk delete the attachments using a custom workflow.&nbsp; <p>This solution does not function in the latest version of CRM though.  <p>&nbsp; <p>Our engineer Subodh has created an updated version of that workflow so would work in CRM 2016.  <p>&nbsp; <p>This is the source code of the solution:  <p>&nbsp; <p><font color="#0000ff" size="2">using Microsoft.Crm.Sdk;</font>  <p><font color="#0000ff" size="2">using Microsoft.Xrm.Sdk;</font>  <p><font color="#0000ff" size="2">using Microsoft.Xrm.Sdk.Workflow;</font>  <p><font color="#0000ff" size="2">using System;</font>  <p><font color="#0000ff" size="2">using System.Activities;</font>  <p><font color="#0000ff" size="2">using System.Collections.Generic;</font>  <p><font color="#0000ff" size="2">using System.Linq;</font>  <p><font color="#0000ff" size="2">using Microsoft.Xrm.Sdk.Query;</font>  <p><font color="#0000ff" size="2">using System.Text;</font>  <p><font color="#0000ff" size="2">namespace GWF</font>  <p><font color="#0000ff" size="2">{</font>  <p><font color="#0000ff" size="2">public class WorkFlow : CodeActivity</font>  <p><font color="#0000ff" size="2">{</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; [RequiredArgument]</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; [Input("Email")]</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; [ReferenceTarget("email")]</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; public InArgument&lt;EntityReference&gt; rEmail { get; set;}</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; protected override void Execute(CodeActivityContext executionContext)</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ITracingService trace = executionContext.GetExtension&lt;ITracingService&gt;();</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IWorkflowContext context = executionContext.GetExtension&lt;IWorkflowContext&gt;();</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOrganizationServiceFactory IOSF = executionContext.GetExtension&lt;IOrganizationServiceFactory&gt;();</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOrganizationService IOS = IOSF.CreateOrganizationService(context.UserId);</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (IOS != null)</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; trace.Trace("Organization Service Created");</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EntityReference rem = rEmail.Get(executionContext);</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Entity REmail = IOS.Retrieve(rem.LogicalName, rem.Id, new ColumnSet("attachmentcount"));</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int atc = (int)REmail["attachmentcount"];</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (atc &gt; 0)</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QueryExpression queryAtt = new QueryExpression("activitymimeattachment");</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queryAtt.ColumnSet = new ColumnSet(new string[] { "activityid", "attachmentid" });</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queryAtt.Criteria = new FilterExpression();</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queryAtt.Criteria.FilterOperator = LogicalOperator.And;</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queryAtt.Criteria.AddCondition(new ConditionExpression("activityid", ConditionOperator.Equal, REmail.Id));</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EntityCollection eatt = IOS.RetrieveMultiple(queryAtt);</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; atc; i++)</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOS.Delete(eatt[i].LogicalName, eatt[i].Id);</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font>  <p><font color="#0000ff" size="2">}</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e) { throw new InvalidPluginExecutionException("Error occurred : ", e); }</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception ex)</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new InvalidPluginExecutionException(String.Format("An error occurred in {0} plugin " + ex, this.GetType().ToString()));</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font>  <p><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </font> <p><font color="#0000ff" size="2">}</font>  <p><font color="#0000ff" size="2">}</font>  <p><font color="#0000ff" size="2"></font>&nbsp; <p><font color="#0000ff" size="2"></font>&nbsp; <p>You can create the solution using this code and steps:  <p>Build the Code.  <p>Deploy it using PRT in any test CRM.  <p>Create the solution in test CRM and add the workflow created by the plugin into that solution.  <p>Export the solution as a managed solution.  <p>&nbsp; <p>Once the solution is imported into your CRM, these are the steps to bulk delete the attachments from emails:  <p>&nbsp; <p>Import the solution.  <p>Advance find the emails with largest attachments  <p>Select them and run the on-demand workflow which will be available after importing the solution.  <p>You do not need to change the status of the email.  <p>&nbsp; <p>You can download the DeleteAttachmentsFomEmails_8_0_0_managed from <a href="https://msdnshared.blob.core.windows.net/media/2016/04/DeleteAttachmentsFomEmails_8_0_0_managed.zip" target="_blank">here</a> if you would like to test it. <p>&nbsp; <p>Best Regards  <p>EMEA Dynamics CRM Support Team</p> <p>&nbsp;</p> <p><b>Share this Blog Article on Twitter</b></p> <p><a class="twitter-share-button" href="https://twitter.com/share">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p> <p><b>Follow Us on Twitter<b></b></b></p> <p><b><b><a class="twitter-follow-button" href="https://twitter.com/MSDynCRMSupport">Follow @MSDynCRMSupport</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></b></b></p>]]></content:encoded>
    </item>
  </channel>
</rss>