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

Tagged with:  

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

   

Enable tracing for Microsoft Dynamics CRM E-mail Router

New topic that explains how to enable tracing for the Microsoft Dynamics CRM E-mail Router.

Supported Windows Server 2012 editions

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.

Microsoft Dynamics CRM 2011 Maintenance Jobs

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.

Running Microsoft Dynamics CRM for Outlook on computers that have multiple versions of Outlook installed

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.

Tagged with:  

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.

Tagged with:  

SnapShot! 1.7 for Dynamics CRM Released

On May 9, 2013, in CRM 2011, Dynamics CRM, by Mitch Milam

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:

image

 

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

Tagged with:  

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&etn=new_entity

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:

http://crm2011/Contoso/main.aspx?etn=new_entity&id=%7bBB81247D-7494-E111-913F-00155D00650B%7d&pagetype=entityrecord

 

Further Confusion

I am sure you have noticed, and maybe used, the Copy a Link/Email a Link functionality built into CRM:

image

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.

Tagged with:  

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

Design Considerations for Different Form Presentations

Side effects of the Polaris UI

Tagged with:  

Worst-Ever Mobile Login Design Experience

On April 23, 2013, in Development, iPhone, by Mitch Milam

This has to be the worst design of any mobile application that I use:

photo

 

Do you see the big blue button?  Would it not seem that since it is the largest on the screen, it is the most important and/or most powerful?

Uh, no.  It is the most infuriating.

Pressing that button will erase your cached user name and cause you to start the login process from scratch.

I have no idea who thought that was a good idea, because it is mostly not.

In my opinion, the Clear remembered user and SIGN IN buttons should be reversed.

( and while you're at it, stop shouting at me to sign-in… )

Tagged with:  

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.

Tagged with:  

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:

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.

Tagged with:  

You may not realize it, but Visual Studio keeps the runs of your unit tests for a long time, if not forever. 

I was cleaning up my hard drive today when I noticed one of my development folders was huge.  I turns out I had 300MB and 2,300 files as a result of running my unit tests for my JavaScript converter.

This article describes how to remove those results and recover some disk space:

How to: Delete Test Results

Unfortunately, it only looks like it reads the last 25 runs ( on Visual Studio 2010 ). 

My solution was to simply open Windows Explorer, navigate to the TestResults folder, and delete all of the subfolders within.