As Microsoft Dynamics CRM continues pushing towards the enterprise space, it becomes increasingly important to support the requirements of the enterprise—not only through the product but also in terms of functionality, scale, resilience, and security.
From an implementation perspective, enterprises expect to be able to have structured, repeatable processes that are predictable and well documented to manage their application lifecycle.
To date, a number of approaches have been articulated through various channels and from a variety of sources, but a definitive and full lifecycle approach has not been concisely communicated by Microsoft.
Many customers, partners, and consultants within MCS are reaching out for best practice advice and guidance, and it is Microsoft’s responsibility to deliver on this expectation. This document focuses on providing a coherent end-to-end approach to enterprise development for Dynamics CRM.
http://www.microsoft.com/en-us/download/details.aspx?id=39044
Microsoft Dynamics CRM 2011 Implementation Guide (IG) update 9 (5.9.0) is now live on TechNet and is also available on the Microsoft Download Center in Word, compiled Help file (CHM), and PDF (recommended for small screens and tablets) formats.
Below are a few of the additions and updates you’ll find in this update.
|
New and updated topics |
Description of changes |
|
New topic that explains how to enable tracing for the Microsoft Dynamics CRM E-mail Router. |
|
|
Added information for support with Microsoft Dynamics CRM Server 2011 running on Windows Server 2012. |
|
|
How to upgrade a Microsoft Dynamics CRM Server application to Windows Server 2012 |
Instructions to upgrade an existing computer that is running a Microsoft Dynamics CRM 2011 application to Windows Server 2012. |
|
Information about Microsoft Dynamics CRM 2011 maintenance jobs that are executed by the Microsoft Dynamics CRM Asynchronous Processing Service (maintenance) service. |
|
|
User credentials are required when you run the Configuration Wizard |
Added new subtopic that describes user credential requirements when you run the Configuration Wizard. |
|
New subtopic that explains the behavior when you run Microsoft Dynamics CRM 2011 for Outlook on a computer that has multiple versions of Microsoft Office installed. |
|
|
User credentials are required when you run the Configuration Wizard Sample Microsoft Dynamics CRM for Outlook XML configuration file for configuration |
New subtopic that explains how user credentials are required when you use the Configuration Wizard to configure Microsoft Dynamics CRM 2011 for Outlook for a silent deployment. Expanded the script sample to include cmdkey for adding user credentials to the Windows Vault. |
I ran into an issue in a plugin this week where I needed to decode the To and From fields of an Email. While this doesn't seem like a huge task, these fields are of the type PartyList, which can be somewhat difficult to work with, at times.
I found the following response by Thomas Dekiere on StackExchange that allowed me to extract the list of recipients (I have made some modifications to his code):
Entity entity = (Entity)context.InputParameters["Target"];
stringsubject = entity.GetAttributeValue<String>("subject");
EntityCollection toCollection = entity.GetAttributeValue<EntityCollection>("to");
for(int i = 0; i < toCollection.Entities.Count; i++)
{
ActivityParty ap = toCollection[i].ToEntity<ActivityParty>();
EntityReference party = ap.PartyId;
// do something with the Entity Reference
}
Here is how you create a PartyList field:
var entity = new Email {
From = new[]
{
new ActivityParty {
ParticipationTypeMask = new OptionSetValue(1), // Sender
PartyId = user
}
},
To = new[]
{
new ActivityParty
{
ParticipationTypeMask = new OptionSetValue(2), // ToRecipient
PartyId = contact
}
},
Subject = "test email: " + DateTime.Now.ToLongDateString(),
RegardingObjectId = contact
};
Hope that helps.
Version 1.7 of the Dynamics CRM documentation tool, SnapShot! has been released.
Visit the product information page for details and to download a sample report.
Change in this version include:
JScript Library Usage Report
This report shows what libraries are referenced by which forms:
JScript Function Reference Report
The Function Reference report has been modified to include additional information including:
- Entity Name
-
Form Name Field Name Event Name Enabled Library Name Function Name Pass Execution Context Parameters
Forms Report
Additional form details are now included:
- Entity
- Form Name
- Form Type
- Description
- Order
- Is Fallback Form
- Security Roles
Drop me an email if you have questions, comments, or suggestions for enhancements
mitch at crmaccelerators dot net
I ran into an unexpected situation during an upgrade that quite honestly, left me a bit baffled. It seems a breaking change was introduced during the CRM 2011 upgrade process.
Some Background
In CRM 4.0, you could open an Entity record with either one of the following URLs:
http://crm2011/Contoso/userdefined/edit.aspx?id=%7bE50B1A7B-1AA2-E211-953E-00155D200507%7d&etc=10010
The difference being using the parameter etn (entity type name) instead of etc (entity type code). Using etn is preferable because it causes fewer issues when migrating from one system to another (development, test, production).
This technique is used extensively in an xRM scenario where you may have additional web pages that use or reference CRM data. It is common to have a screen artifact, like a button, that will open a CRM record when pressed and the URLs listed above are what is used.
.
The Issue
It would seem that the etn parameter is no longer supported by the edit.aspx page in CRM 2011 for what appears to be custom entities only. It seems to work fine for out-of-the-box entities.
The Solution
The use of etn is ONLY supported on main.aspx, AND you need to specify the &pagetype=entityrecord parameter, like this:
Further Confusion
I am sure you have noticed, and maybe used, the Copy a Link/Email a Link functionality built into CRM:
This is a very handy feature and I use it all of the time.
Unfortunately, it will return a different URL depending on the entity being used. Standard entities will produce a URL with main.aspx while custom entities will produce edit.aspx.
And again, only main.aspx can use the etn parameter.
Additional Reading
I cover this topic a little more in this article:
Upgrade Your URL Parameter References
and I'll update that article to reflect this new information.
The Dynamics CRM 2011 December 2012 service update (otherwise code-named Polaris) gave us the new Flow-UI forms. These forms include an auto-save feature that can, and probably will, effect the way we CRM developers approach our work.
If you have not investigated the side-effects and other design-considerations for this new feature, please take a look at the following articles:
Auto Save for Updated User Experience Forms in December 2012 Service Update
Here is another cool Entity extension method that I keep forgetting to use: Entity.ToEntityReference.
Normally, when creating a reference to an Entity, we would use something like this:
RetrieveRequest request2 = new RetrieveRequest { Target = new EntityReference(Account.EntityLogicalName, account2.Id), ColumnSet = new ColumnSet(), RelatedEntitiesQuery = new RelationshipQueryCollection() };
However, if we have already gone to the trouble of creating or retrieving a record from CRM, we can just use .ToEntityReference, like this:
RetrieveRequest request = new RetrieveRequest { Target = account.ToEntityReference(), ColumnSet = new ColumnSet(), RelatedEntitiesQuery = new RelationshipQueryCollection() };
It's a small change, but one that does make your code a little more readable.
There has been a some coverage of the upcoming version of the next version of Dynamics CRM, currently code-named Orion, and the changes that will need to be made prior to the upgrade.
Here are a couple:
- Permalink to CRM 4 Support- End of the Line! Time to Upgrade Folks! or fall 2 versions behind!
- Ready Or Not, Orion Is Coming
One thing that I don't think a lot of people have considered is the end of support for the CRM 4.0 web service endpoint.
What is that exactly? Well, it's the web service that .Net and JavaScript developers use to interact with CRM's data services.
Microsoft typically supports only the current and previous endpoints and since the CRM 4.0 endpoint is –2, it will be dropped.
What does that mean for you?
Well, if you have any .Net code that uses the programming patterns for CRM 4.0, then you'll be rewriting all of your C# and VB.Net code to, at minimum, the CRM 2011 object model.
While this will be a painful process, it is actually a good thing. The CRM team made tremendous changes between CRM 4.0 and CRM 2011 and improved the lives of the .Net developer quite substantially.
They simplified the object model, introduced native .Net data types and over-all, brought the level of the CRM SDK up to today's programming standards.
So again, even though this will be a painful process, it will be good in the long run.
Stay tuned, I will have some guidance to assist with the conversion of your .Net code soon. I start the second of two back-to-back code upgrades next week and I am taking notes that I will share to hopefully help other developers save time and trouble.
I thought I'd share a few things of interest in the Dynamics CRM world that I've seen in the past few weeks:
- Christopher Cognetta has a great recap of Convergence 2013 here:
- Demian Rasko has written a tool to bulk create test data. I have not tried it, but it looks interesting.
- Bryan Page wrote an interesting article on:
- Andrii Butenko wrote a very interesting article on sending SMS messages from CRM:
- Former Microsofties Nikhil Hasija and Craig Unger have launched a new company, azuqua and a new product, Flõ, to help people move data between various online services, including Dynamics CRM. It's on my list of things to try.
When working with the Dynamics CRM SDK, I think we may all overlook a very handy property that can save us a lot of time:Tthe FormattedValues property.
It contains values formatted in the human-readable version of field types such as:
- Option Sets (including State and Status Reason fields)
- Dates
- Currency
- Two-options
Here is an example of the Formatted Values for a Contact (as seen from the Visual Studio Watch window):
Like any collection of values returned from CRM, you will need to verify that the field name exists in the collection using the .Contains operator, but once you have, you can extract the formatted value for use in your own code.
Note: Formatted values are always strings, which is how they are displayed in the CRM user interface.
Anyway, just a quick note to refresh your memory. Have fun coding.






