-
It’s just one of those days
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:
I think I’m going back to bed – not sure I am qualified to be awake at this point in the day…
Meanderings 312 views -
Custom Messages and Moving Customizations Between Organizations
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:
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:
- 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.
- 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:
- Delete the customized message string.
- 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 526 views -
CRM SDK 4.0.8 Released
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.
Added sample code in Visual Basic .NET.
RetrieveByTopIncidentProductKbArticle Message
RetrieveByTopIncidentSubjectKbArticle Message
Added sample code in Visual C# and Visual Basic .NET.
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.
Added information about how to use of the BulkDeleteRequest.QuerySet property.
Fixed bug. Calendar rule entity instances cannot be retrieved directly. They can only be accessed by retrieving the parent calendar.
Updated this topic with a column of additional information for each privilege.
Added information about when plug-ins and workflows are executed in the pipeline.
Updated sample code to use correct date manipulation methods.
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.
Added IsvReadiness helper classes, which give you a programmatic means to change parts of the Microsoft Dynamics CRM customization XML files.
Updated topic about updates to the e-mail tracking token prefix.
Added topics to address client-to-server and server-to-server authentication scenarios for Microsoft Dynamics CRM Online.
Clarified the information about child pipelines. Added a list of messages that a child pipeline can process.
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.
Added explicit statement of support for ASP.NET AJAX.
Updated support statement about modification of the database. Adding or updating indexes is supported.
Added table of state changes that are handled differently for plug-ins that were upgraded from Microsoft Dynamics CRM 3.0 callouts.
Added a topic that shows the differences between Microsoft Dynamics CRM 3.0 code and Microsoft Dynamics CRM 4.0 code.
Added sample code to show how to upload an attachment to an annotation (note).
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.
Added documentation for the helper code to support Windows Live authentication.
Fixed a bug in regarding the sequence that asynchronous operations are executed.
Added text on how to obtain the version number according to standard .NET practices.
Added a note to indicate that the onerror subscription attribute in the v3.0 callout configuration file is not supported under v4.0.
Added reference documentation.
Dynamics CRM 866 views -
Headed to the 2009 MVP Summit
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 496 views





