If you are building an editable custom Web Resource in CRM that will be embedded into a record form, typically you would want to make the Web Resource read-only when the record is deactivated. To do this, you would have your Web Resource check the form type and toggle between editable and read-only mode appropriately. In CRM 2011 this works great but in CRM 2013 you will notice that the form does not refresh after “Activate” or “Deactivate” in the Command Bar is used. Therefore your Web Resource doesn’t refresh and is still in the same mode that it was before.
A couple weeks ago I posted a video on the new Login Control that comes with the XRM Tooling library in the latest CRM 2013 SDK. Today I will show off another handy feature in the XRM Tooling library, the Web Resource Utility. The Web Resource Utility provides an easy way to retrieve an Image or XML web resource.
First you will need to download the latest SDK here. Then you can add the following namespaces:
using Microsoft.Xrm.Tooling.Connector; using Microsoft.Xrm.Tooling.WebResourceUtility;
Next you can either use the new Login control to get an instance of a CrmServiceClient or manually set it up yourself.
var crmSvc = new CrmServiceClient( CredentialCache.DefaultNetworkCredentials, AuthenticationType.AD, "server", "port", "org");
Then use the following code to retrieve an XML resource which will return a string of the XML content:
var xmlResources = new XmlResources(crmSvc); xmlResources.GetXmlFromCRMWebResource("myxmlresource.xml");
Or use the following code to retrieve an Image resource which will return a BitmapImage object:
var resources = new ImageResources(crmSvc); var bitmap = resources.GetImageFromCRMWebResource("myimageresource.png");
Now with the BitmapImage object, you could set an Image control directly within your WPF app and dynamically display images based off your web resources in CRM.
With the latest CRM 2013 SDK, Microsoft has provided a new XRM Tooling library to connect to CRM. Along with the new Tooling library comes a brand new Login control that is styled with the 2013 look and feel and can be used for custom WPF apps.
In our new video below, I demonstrate how to easily setup the new Login control so you can be on your way with your custom CRM WPF app.
- Visual Studio 2012 or 2013
- Latest CRM 2013 SDK - http://www.microsoft.com/en-us/download/details.aspx?id=40321
- NuGet Package Manager
CRM Online Service Update 3 is being rolled out this week. To find out if your organization has been updated, click the gear in the top right corner and click About to check the build number. The build number for this update is 184.108.40.2063.
This update resolves a handful of issues both performance and usability related. Here are some of the most notable fixes:
- Duplicate records created if Save and Save and Close is pressed multiple times
- Unhandled exceptions in asynchronous plugin instantiation causes Async service to crash
- Option set not selected on first click
- SQL deadlock and performance issues after Spring Release ‘14 update was applied
- Multiple navigation and command bars show up via associated grid navigation
It is nice to see a steady release of fixes from Microsoft. Especially with a focus of frustrating usability issues and performance optimization. For a full list of fixes, check the KB article which can be found here.
The Package Deployer is a new tool that was released with the CRM Spring ‘14 update and provides administrators with an easier way to deploy to CRM organizations. The Package Deployer can deploy one or more CRM solution files as well as import data and can even be extended to execute custom code to handle any edge cases while deploying to your CRM org.
Sounds great, so how do we get started? Well first, you will need to have Visual Studio (2012 or 2013) installed, which we be used to create a package. Next, download the latest SDK that was released with the Spring ‘14 update which can be found here. After the SDK is installed, browse to SDK\Templates folder and run the CRMSDKTemplates.vsix to install the necessary Visual Studio Templates.
Now that we have everything setup, we can start to build our deploy package.
- Open Visual Studio
- Go to File –> New –> Project
- Select CRM SDK Templates on the left
- Select CRM Package Deployment Template and click OK
This will create a structure in the Solution Explorer like shown below:
The PkgFolder is where you put any CRM Solution files that you would like to be deployed as well as any import data files.
In my example I have a solution “MySolution1” and “MySolution2” as well as a contacts.csv data import file.
Now you can open the ImportConfig.xml and update it with your package files. At the top of the config file you can also set if you want to install the out-of-the-box sample data as well as if you want to wait for the sample data to install before deploying your package. There are two agent desktop settings as well that can be used when deploying Unified Service Desk.
In my example I have the package deploying sample data as well as waiting for it to finish before deploying the package.
<configdatastorage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" installsampledata="true" waitforsampledatatoinstall="true" agentdesktopzipfile="" agentdesktopexename="" crmmigdataimportfile="">
In the solutions node you can define each of your solutions that should be deployed.
<solutions> <configsolutionfile solutionpackagefilename="MySolution1.zip" /> <configsolutionfile solutionpackagefilename="MySolution2.zip" /> </solutions>
Lastly, you can define any data import files to be imported with the deploy.
<filestoimport> <configimportfile filename="contacts.csv" filetype="CSV" associatedmap="" importtoentity="contact" datadelimiter="" fielddelimiter="comma" enableduplicatedetection="true" isfirstrowheader="true" isrecordownerateam="false" owneruser="" waitforimporttocomplete="true"/> </filestoimport>
That’s it for the ImportConfig.xml. Here is my full config for reference.
<?xml version="1.0" encoding="utf-16"?> <configdatastorage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" installsampledata="true" waitforsampledatatoinstall="true" agentdesktopzipfile="" agentdesktopexename="" crmmigdataimportfile=""> <solutions> <configsolutionfile solutionpackagefilename="MySolution1.zip" /> <configsolutionfile solutionpackagefilename="MySolution2.zip" /> </solutions> <filestoimport> <configimportfile filename="contacts.csv" filetype="CSV" associatedmap="" importtoentity="contact" datadelimiter="" fielddelimiter="comma" enableduplicatedetection="true" isfirstrowheader="true" isrecordownerateam="false" owneruser="" waitforimporttocomplete="true"/> </filestoimport> </configdatastorage>
One last thing to note is that the PkgFolder contains a Content folder with a WelcomeHtml and EndHtml folder. Within each of those folders are a Default.htm page. These pages can be customized to your needs to provide a unique welcome and end page during the deploy process.
Now you can build the solution in Visual Studio (Build –> Build Solution) which will create a dll that we will use for the Package Deployer Tool. Go to the bin\Debug folder, copy the PkgFolder as well as the dll named the same as your Visual Studio project and paste them into SDK\Tools\PackageDeployer.
Run the PackageDeployer.exe and a login screen will appear.
Select your organization and login. The next screen will display an iframe showing the content from the WelcomeHtml folder. As mentioned before, you can customize and brand the html page to suit your needs.
Click Next and you’ll see a screen that lists out the solutions and any files you have included to import.
Click Next again and the Package Deployer will attempt to import the included solutions and files. Once it is finished, it will give you a status on what succeeded or failed. You will also see another screen showing the content from the EndHtml folder which can be branded and customized as well just like the Welcome screen.
As you can see, the Package Deployer tool is a great asset for administrators and customizers. It is now easy to make your own branded installation wizard that covers most aspects of the deploy process so you can handle it in one fell swoop.
One of the biggest features removed when Microsoft Dynamics CRM 2013 was released was Duplicate Detection firing on creates/updates. While duplicate detection remained via scheduling system jobs, the popular feature of seeing the pop-up appear on creates/updates was removed.
Needless to say the CRM community was in uproar, prompting some users and partners to create their own solutions to backfill the gap that was left by removing this 2011 feature such as this utility by Jason Lattimer.
With the Spring 2014 release that’s started to trickle out to CRM Online orgs, Microsoft has taken this community feedback and put duplicate detection on creates/updates back in.
However, be aware that while Microsoft has pleased many by making this functionality available once again, they didn’t quite get it right. If you disable duplicate detection rules from running on creates/updates within the settings, the rules still fire and your users will still see the dialog when they create or update records that match a duplicate detection rule.
The only way to disable duplicate detection from firing on creates / updates is to uncheck the “Enable duplicate detection” checkbox which in turn disables it across the board (on data imports, from MS Outlook, and via scheduled system jobs). Even if you uncheck “Enable duplicate detection” and recheck it (while leaving the creates/updates unchecked), after republishing your rules, the dialog will still fire on create and update.
Note: If you uncheck “Enable duplicate detection” and recheck it, you’ll have to republish your rules as disabling it system wide unpublishes all rules.
Hopefully Microsoft will release a patch soon for this slight oversight so that users can take full advantage of the duplicate detection feature as they did pre-CRM 2013.
One of the great new features of CRM 2013 is Access Teams. Access Teams provides a great alternative over Sharing as Sharing should always be used as an exception and not the rule. Too much sharing will lead to a large PrincipalObjectAccess (POA), which can lead to poor CRM performance. This blog goes into details on recommendations to keep the POA table as small as possible.
For one of our customers we had a perfect scenario to use Access Team Templates. The scenario is users should only have access to read their own records. However, if they’re assigned a to-do that’s grouped together as part of a larger deliverable, they need to be able to see all details of that larger deliverable. Therefore, adding them to the Access Team of the parent record with Read access, and allowing native CRM customizations to cascade that access down to the child records, the user is now able to see all data in this one grouping of work that they normally wouldn’t with normal security roles.
Access Teams are driven by the Access Team Templates (shown above, and available in Settings –> Administration –> Access Team Templates).
However, there’s something you should be aware of. If the Access Team Template is ever deleted, all Access Teams that were created and use that template will be deleted from the system. Therefore you need to provide tight security over who can create / update / delete Access Team Templates.
This is where the tricky part came in. How do you drive permissions to Access Team Templates? In native security roles there’s no “Access Team Template” or anything similar to that available in the list of entities or miscellaneous privileges. So what drives this access?
Through painful trial and error, we identified the “not so obvious” Customizations entity (shown below) drives these permissions. Therefore it’s recommended you remove Delete privileges to Customizations to prevent Access Team Templates from being deleted (for other obvious reasons as well). Thankfully out of the box only the System Administrator and System Customizer roles have this privilege.
Yesterday Microsoft announced some big changes to the supported configurations for the next major release of CRM after the upcoming Service Pack 1 and Spring ‘14 release. This time around Microsoft is being more aggressive than they have in the past when removing supported software.
The biggest changes to support being the removal of the following CRM and SQL Server operating systems:
- Windows Server 2008
- Windows Server 2008 R2
- Windows Small Business Server (All versions)
- SQL Server 2008
- SQL Server 2008 R2
As well as the removal of the following browser versions:
- Internet Explorer 8
- Internet Explorer 9
Some other notable changes are the removal of read-optimized forms and the 2007 SDK SOAP Endpoint that has been deprecated for awhile now.
It’s good to see Microsoft being more aggressive with future releases as they can focus more on providing the best product for the latest technology. We also welcome the early communication as it gives customers a chance to prepare for the new changes.
If you have any questions or concerns about this announcement, head to our Contact Us page or post a comment below. We would love to hear your thoughts.
Microsoft is currently rolling out UR 2 for CRM 2013 Online. This update provides several fixes that are listed in the KB article here. To check if your Online org is on UR 2 yet, click the ‘gear’ icon in the top right corner and then click ‘About’. The version should start with 6.0.2 for UR 2.
One of the UR 2 enhancements that isn’t documented (that we know of) is the return of the Save & Close button. When auto-save is enabled, the Save & Close button will exist only on the Create form for a record. When auto-save is disabled, the Save & Close button will exist on both the Create and Update forms.
The Save & Close button was definitely missed but we’re glad to see it back! Be on the lookout for your UR 2 update (and the Save & Close button) over the next few days.
A lot of great news came out of Microsoft’s Convergence last week in Atlanta. If you weren’t able to attend, you can watch the sessions online using Microsoft’s Virtual Convergence. Attendees can log onto the Convergence Website and navigate to Attendee Tools to to get access to PowerPoint decks and additional recordings.
The investments Microsoft is making in Social, Service and Marketing is exciting to see with Microsoft Social Listening, Unified Service Desk / Parature / service web enhancements, and Microsoft Dynamics Marketing. We’ll be writing about these in the upcoming weeks.
However, Microsoft also recently announced their pricing and licensing for Dynamics CRM. One of the big bits of news from this announcement is that Microsoft is announcing a new Enterprise License that is available for $200 per user per month.
With this new license, customers will receive:
- Dynamics Marketing (previously Marketing Pilot)
- Unified Service Desk and additional Case Management Enhancements
- Limited Time Offer: US and Canada customers purchasing 10+ Enterprise seats of Dynamics CRM will receive an equal number of Parature seats.
This information is subject to change and Microsoft stated that as general availability of this functionality approached, they’ll have more details on these offers.