Download it here:

http://www.microsoft.com/en-us/download/details.aspx?id=24004

Active Directory and Claims-Based Authentication

Authenticate Office 365 Users with Microsoft Dynamics CRM Online Web Services

OrganizationServiceProxy

DiscoveryServiceProxy

Updated these topics to remove the restriction on using the service proxy classes when authenticating with the Microsoft online services identity provider of Microsoft Dynamics CRM Online. You can now use these proxy classes with all deployment types and identity providers.

BulkDeleteRequest

BulkDetectDuplicatesRequest

Added in Remarks that you can run the bulk delete job or bulk detect duplicates job daily or without recurrence.

Create, Export, or Import an Unmanaged Solution

Create, Install, and Update a Managed Solution

Added a note to these topics saying “Installing a solution can interfere with normal system operation. We recommend that you schedule solution imports when it’s least disruptive to users.”

Form XML Reference

The following FormXml elements have been updated to indicate that they are for internal use only: <ControlMode> (FormXml), <QuickFormRelationshipName> (FormXML), <QuickFormRelationshipRoleOrdinal> (FormXml), and <UniqueId> (FormXml). These elements are used only in a quick form, which is not customizable. These elements will be removed from the schema in the next major release.

Handle Exceptions in Plug-Ins

Clarified how plug-in exceptions are handled and where error message are written or displayed.

Introduction to Activity Feeds

Corrected the maximum number of characters in the posts created programmatically. The correct value is 2000 characters.

Introduction to Solutions

Added the Enterprise Solution Lifecycle Management section introducing the ALM for Microsoft Dynamics CRM 2011: CRM Solution Lifecycle Management white paper.

Open Forms, Views, Dialogs and Reports with a URL

Appended to an existing note to include:

Microsoft Dynamics CRM forms are not designed to be opened as dialogs using either showModalDialog or showModelessDialog.

Uninstall or Delete a Solution

Added an Access the Solutions List with a URL section.

What’s Changing in the Next Major Release

Added a new topic to provide information about what is changing in the next major release of Microsoft Dynamics CRM.

Write Custom Code for Microsoft Dynamics CRM for Outlook

GoOffline
GoOnline

Added a note that these methods cannot be used in a plug-in because they cause a UI interaction with the user.

Xrm.Page.data.entity Attribute Methods

Added a missing getFormat return value: textarea.

Xrm.Page.ui Control Methods

Added a remark to the addCustomView method to show that this method does not work with Owner lookups.

Xrm.Utility Reference

Corrected an error for the openEntityForm method. This method returns a Boolean value rather than a window object.

I ran into an interesting issue today upgrading a custom workflow activity.  I received this error:

<OrganizationServiceFault xmlns="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorCode>-2147200995</ErrorCode>
  <ErrorDetails xmlns:a="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>Duplicate workflow activity group name: ", activity name: 'Assign email regarding to case'.</Message>
  <Timestamp>2013-06-14T19:45:24.1533902Z</Timestamp>
  <InnerFault>
    <ErrorCode>-2147200995</ErrorCode>
    <ErrorDetails xmlns:a="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
    <Message>Duplicate workflow activity group name: ", activity name: 'Assign email regarding to case'.</Message>
    <Timestamp>2013-06-14T19:45:24.1533902Z</Timestamp>
    <InnerFault i:nil="true" />
    <TraceText i:nil="true" />
  </InnerFault>
  <TraceText i:nil="true" />
</OrganizationServiceFault>

It turns out that the Plugin Registration tool didn't like the fact that I did not have a WorkflowActivityGroupName specified, as you can see here:

image

I added one and the error went away.

JavaScript allows an administrator to enhance the functionality of Dynamics CRM 2011 in order to better fit your business processes. This session delivers an introduction to JavaScript development and will cover the following topics:

  • Setting up your development environment
  • Introduction to the form editor
  • Using web resources
  • CRM form events
  • JavaScript basics
  • CRM 2011 JavaScript object model
  • Common CRM JavaScript methods

 

Class Duration:

1 hour, 30 minutes

 

Cost Per Attendee:

$99USD

NOTE: Due to the interactive nature of this webinar, each session is limited to 20 attendees.

 

What to Expect:

At the end of this session, you should at least understand basics of how to write JavaScript and how to utilize the Dynamics CRM 2011 object model to perform the most operations commonly performed by a developer. Additionally, since this is not a full class, you'll receive homework to be completed on your own, at your own pace.

 

When:

Thursday, June 20th, 2013 from 2:00 PM to 3:30 PM (Central Time, United States)

 

Eventbrite - JavaScripting in Dynamics CRM 2011

I have been doing a lot of CRM upgrades lately and one of the side-effects of this process is a lot of documentation and tooling to help the .NET developer move their code to the CRM 2011 object model.

If you did not know, or have not heard, the next version of CRM, code-named Orion, will no longer support the CRM 4.0 (2007) SOAP endpoint.

This means all of your .NET code ( as well as JavaScript ) that uses the 2007 endpoint will need to be upgraded.

This is not an easy process. 

On a pain level from fuzzy bunnies to sticking icepicks in your ears, I rate it a level 7.

There is lots and lots and lots of manual labor involved so to help with the transition, I'm open-sourcing my upgrade tools and asking for assistance enhancing them.

The project is on CodePlex:

.NET Code Migrator for Dynamics CRM

The initial iteration is a series of search and replace macros to help move your code to the new object model, but we have plans to automate it even more.

So, if you have some time, just happened to be a wizard with Regular Expressions, and want to help out, please send me an email:  mitch at crmaccelerators dot net.

The recording today's webinar is now up:

http://www.xrmvirtual.com/events/javascript_upgrade_crm2011_Mitch_Milam

Here are the main talking points from today's meeting:

Strategies:

Here are the strategies I follow when performing an upgrade from CRM 4.0 to CRM 2011:

  • #1: Create a test environment
  • #2: Upgrade your object model
  • #3: Use Visual Studio (with add-ins)
  • #4: Reorganize your functions
  • #5: Web Resource Organization
  • #6: Code Removal
  • #7: Code Consolidation
  • #8: Eliminate Single-call Methods
  • #9: Replace SOAP Calls
  • #10: Convert Unsupported Code
  • #11: Configuration vs. Code
  • #12: Refactor, Refactor, Refactor
  • #13: Remove unused web resources
  • #14: Minification
  • #15: Consider disabling your plugins
  • #16: Testing, Testing, Testing

 

Upgrade Tips:

Here are a few general and developer tips to help with your migration:

http://www.crmaccelerators.net/dynamics-crm-4-0-2011-upgrade-tips/

 

Tools:

Here are some tools to help with the migration of your JavaScript:

JavaScript Converter

http://dynamicsxrmtools.codeplex.com

Transformer! for Dynamics CRM

http://www.crmaccelerators.net/products/transformer

CRM Code Validation Tool

http://blogs.msdn.com/b/crm/archive/2012/06/21/microsoft-dynamics-crm-2011-custom-code-validation-tool-released.aspx

Export JavaScript

http://blogs.infinite-x.net/free-utilities

Export Web Resources

http://blogs.infinite-x.net/free-utilities

Web Resource Manager

http://jswebresourcemanager.codeplex.com

XrmSvcToolkit

https://xrmsvctoolkit.codeplex.com

Resharper

http://www.jetbrains.com/resharper

CodeRush

http://www.devexpress.com/Products/CodeRush

CRM Rules!

http://www.crm-rules.com

So we're two and a half years into the realm of CRM 2011 with the next version, code-named Orion, just over the horizon somewhere. You've got to be thinking to yourself: "Well, I guess I can delete that CRM 4.0 SDK folder since it's taking up disk space and I'm down to only 489GB.

Not so fast.

There are still valuable things remaining in what you may consider just a waste of disk space.  Here are a few:

The SDK help file is always a good reference should you be migrating code, .NET or JavaScript from CRM 4.0 to 2011.

Helper code. Here is a little gem of a file that I ran across while converting a ton of .NET code to the new CRM 2011 object model:

SDK\server\helpers\cs\crmhelpers\enums.cs

This file contains some very useful enumerations for the various State, Status Reasons, and Picklists found in the base entity classes. In CRM 4.0.

The Sample code folder contains some interesting examples for how to do things that may not be found in the CRM 2011 samples. If you ever have trouble finding an example, do a search through the 4.0 SDK samples to see if you can find an exact match, or something close.

 

There are others, but those are the few that I can recall off the top of my head.  Feel free to comment with any others.

Hi Everyone,

I'm presenting today at the XrmVirtual user's group:

CRM JavaScript Upgrade Strategies.

We'll be discussing upgrading your CRM 4.0-level JavaScript to the CRM 2011 object model and outline some strategies to make you successful.

Join the meeting here.

Schedule:

  • 6/11/13 CRM JavaScript Upgrade Strategies, featuring Mitch Milam
    6/11/2013 9:00:00 AM (PST) – 6/11/2013 10:00:00 AM (PST)

(This session will be recorded for later viewing if you are unable to attend the Live Meeting. )

 

I hope to see you there.

Thanks, Mitch

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.

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

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… )