Knowledge found and lost while working with Microsoft Dynamics CRM
RSS icon Home icon
  • It’s just one of those days

    Posted on March 28th, 2009 Mitch Milam Print Print No comments

    I went to publish a blog article this morning and received an access denied messaged.  Hmm, that is strange, it worked the last time and I haven’t made any changes.

    After opening a support case, and conversing back and forth for a bit, I happened to look down at my tool tray.  Here is my response to the support folks regarding my issue:

    image

    I think I’m going back to bed – not sure I am qualified to be awake at this point in the day…

    Meanderings
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    312 views
  • Custom Messages and Moving Customizations Between Organizations

    Posted on March 28th, 2009 Mitch Milam Print Print No comments

    This week I was working with a customer who was using CRM 4.0 and had a fairly advanced set of customizations dating all the way back to CRM 3.0.

    I wanted to do some prototyping on an idea I had so I created a second Organization on the development server with the idea of exporting customizations from the main development organization into the new test organization.  That was the plan anyway, but it didn’t work out like that.

    Here is one of the errors I received when performing the import:

    Failure: opportunity: The custom message must contain the same number of substitution parameters as the system message. Enter a message with the correct number of substitution parameters.

    Wow, that’s nice.  Now since I am a developer, I’m pretty sure I know what it’s talking about, and sure enough, I think I found the culprit:

    image

    Notice that the Default Display String has ‘{0}’ in it?  That’s the “substitutable parameter.”  Notice that the Custom Display String doesn’t have it?

     

    What is a Substitutable Parameter?

    Within the .NET programming language C#, you have the ability to leave a “placeholder” or “substitutable parameter” inside of a string.  You later replace that parameter with a real value using the method String.Format.  The parameters start with zero (0) and increase in numeric value from there. 

    So, the command:

    String.Format(“this is a {0}.”, “test”);

    would produce the result:

    this is a test.

     

    So what went wrong?

    Well, there are actually two issues:

    1. The developer who created this customization didn’t make the Custom Display String function exactly the same the Default Display String.  This would have possibly caused an error at some point in the future.
    2. It appears that the upgrade process from CRM 3.0 to 4.0 did not perform any such checks while the import process does.  This is why the import of the Opportunity Entity failed.

     

    How do you fix it?

    There are two ways:

    1. Delete the customized message string.
    2. Correct the issue with the substitutable parameter not existing in the custom message string.

     

    Conclusion

    Unfortunately, it is quite common to see small issues like this when attempting to move an upgraded CRM system to a fresh install.  There are many issues corrected by hotfixes and added the the various hotfix rollups, but other issues will require you correct the problem manually.

    Customization, Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    526 views
  • CRM SDK 4.0.8 Released

    Posted on March 7th, 2009 Mitch Milam Print Print No comments

    New and updated topics

    Description of changes

    SDKSDKReadme.htm

    Updated the SDK readme with new information.

    SDKServerHelpersCSCrmOnlineAuth

    SDKServerHelpersVBCrmOnlineAuth

    Added helper code for use with Microsoft Dynamics CRM Online server-to-server authentication scenarios.

    SDKServerHelpersCSIdCrlWrapper

    SDKServerHelpersVBIdCrlWrapper

    Class now throws a custom exception that includes the error code. Also added a Visual Basic .NET version of the helper code.

    SDKServerHelpersVBCrmHelpers

    Added a Visual Basic .NET version of the helper code.

    SDKToolsPluginRegistration

    Updated the tool to version 2.2. Refer to the included Readme file for more information about software updates and new features.

    SDKServerReferenceCSImportExport

    SDKServerReferenceVBImportExport

    Removed the ImportExport sample from the SDK.

    SDKServerFullSampleDataBindingCSWebFormSample

    SDKServerFullSampleDataBindingVBWebFormSample

    Added a new project that demonstrates data binding an ASPX DataGrid control with Microsoft Dynamics CRM data.

    SDKbin64bitLive

    Added 64-bit assemblies for use with Microsoft Dynamics CRM Online.

    Promote an E-mail Message to Microsoft Dynamics CRM

    CrmService Messages

    MetadataService Messages

    Added sample code in Visual Basic .NET.

    DeliverPromoteEmail Message

    RetrieveByTopIncidentProductKbArticle Message

    RetrieveByTopIncidentSubjectKbArticle Message

    RetrieveMembersBulkOperation Message

    SearchByBodyKbArticle Message

    SetStateWorkflow Message

    UtcTimeFromLocalTime Message

    Added sample code in Visual C# and Visual Basic .NET.

    About the Assemblies

    Added information about the execution sequence of plug-ins and workflows in relation to one another and how a pre-event plug-in can prevent a workflow from executing.

    BulkDeleteRequest.QuerySet

    BulkDelete Message

    Added information about how to use of the BulkDeleteRequest.QuerySet property.

    Calendar Rule Entity Capabilities

    Fixed bug. Calendar rule entity instances cannot be retrieved directly. They can only be accessed by retrieving the parent calendar.

    Default Privileges Required

    Updated this topic with a column of additional information for each privilege.

    Event Execution Pipeline

    Added information about when plug-ins and workflows are executed in the pipeline.

    How To Convert a Fax to a Task

    Updated sample code to use correct date manipulation methods.

    ISV Extensibility Best Practices

    Updated information about where you should put custom code. This requires Microsoft Dynamics CRM 4.0 Update Rollup 2, which can be found at go.microsoft.com/fwlink/?LinkId=144295.

    Microsoft.Crm.Sdk.IsvReadiness Classes

    Added IsvReadiness helper classes, which give you a programmatic means to change parts of the Microsoft Dynamics CRM customization XML files.

    organization.trackingprefix

    Updated topic about updates to the e-mail tracking token prefix.

    Microsoft Dynamics CRM Online Authentication

    Added topics to address client-to-server and server-to-server authentication scenarios for Microsoft Dynamics CRM Online.

    Parent and Child Pipelines

    Clarified the information about child pipelines. Added a list of messages that a child pipeline can process.

    RetrieveLocLabels Message

    SetLocLabels Message

    Clarified use of the messages to retrieve and set localized labels. These messages are used for the localized display names for attributes, not the labels on a form.

    Support for the .NET Framework Versions

    Added explicit statement of support for ASP.NET AJAX.

    Unsupported Customizations

    Updated support statement about modification of the database. Adding or updating indexes is supported.

    Upgrade Issues for Workflow and Callouts

    Added table of state changes that are handled differently for plug-ins that were upgraded from Microsoft Dynamics CRM 3.0 callouts.

    Upgrading Your Existing Code

    Added a topic that shows the differences between Microsoft Dynamics CRM 3.0 code and Microsoft Dynamics CRM 4.0 code.

    Upload an Attachment

    Added sample code to show how to upload an attachment to an annotation (note).

    Using the Metadata Browser

    Added a note that indicates that the metadata browser works only for on-premise deployments.

    Walkthrough: Server-to-Server Authentication with CRM Online

    Added a new walkthrough.

    WindowsLiveIdTicketAcquirer

    Added documentation for the helper code to support Windows Live authentication.

    Dependency and Execution Order

    Fixed a bug in regarding the sequence that asynchronous operations are executed.

    pluginassembly.version Property

    Added text on how to obtain the version number according to standard .NET practices.

    Execution of Microsoft Dynamics CRM 3.0 Callouts

    Added a note to indicate that the onerror subscription attribute in the v3.0 callout configuration file is not supported under v4.0.

    Programming Reference: Microsoft.Crm.Sdk.dll

    Added reference documentation.

    Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
    Loading ... Loading ...
    866 views
  • Headed to the 2009 MVP Summit

    Posted on March 1st, 2009 Mitch Milam Print Print No comments

    One of the coolest benefits of being an MVP is the annual MVP Summit, which starts today in Seattle.

    Last year we had an absolute blast and while some of the CRM MVP's couldn't get the Summit into their schedules this year because Convergence starts on the 9th, there will be a bunch of new CRM MVP faces in the crowd so we should again have a great time, meet great people, and learn a whole bunch of new things.

    Our patron and guardian angel, Jim Glass, already has our quality time with the CRM Product Teams scheduled so we'll be well taken care of, as always.

    Anyway, even though it's now March, I consider the MVP Summit one of the highlights of the year and a great way to start off 2009.

    So, for those of you in Seattle at the Summit or on Campus, I hope to see you this week some time.  Otherwise, look for me at the Microsoft booth or community lounge at Convergence in New Orleans next week.

    Have a great week.

    Misc
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    496 views