- Azure Integration: In simple terms, the CRM async service can send messages to a queue in Azure to process. That will make this 4.0 application better because I can now perform integration tasks from CRM changes rather than using a polling service.
- Multiple Forms for an Entity: You can define more than one main form for each entity. Use multiple forms to create forms that are customized to specific roles or tasks in the organization.
- REST Endpoint: In 4.0, writing client-side code in SOAP is not exactly fun or easy. In 2011, you can replace a lot of that code with REST-based calls using JQuery or other jscript libraries.
- Goals!: Goal Management enables you to set the sales, marketing or other business goals for your organization and measure the results against the targets.
- Silverlight Samples: It's great to see sample code in the SDK for interacting with Silverlight applications. Of course, David Yack was way ahead on this but this adds to the cool factor in the SDK.
- Data Auditing: Audigint is built in and can be enabled at the organization, entity, and attribute levels.
- Custom Activity Types: You can create your own activity types to track customer interactions that go beyond the built-in phone, letter, e-mail, task, etc. For example, if you business has a customer portal for service incidents, you might want to track interactions in the portal as a custom activity type.
- Web Resources: Web Resources are 'virtual files' that are stored in the CRM database and may be retrieved using a unique URL address. Web Resources can be used in Form customizations, Sitemap or the application ribbon.
- Sandbox for plug-ins: CRM Online will benefit from the ability to run plug-ins in an isolated environment. In this environment, also known as a sandbox, a plug-in can make use of the full power of the CRM SDK to access the Web services.
- Entity Connections: A person I worked with at a large Northwest company has a brother who I run into often while hiking in the Cascades. He works for a subsidiary of the larger company. Now, in CRM 2011, I can connect those contacts in ways that helps me and others at Altriva know how they're related (or conneted) to each other.
- PowerShell Cmdlets: The Beta SDK has placeholders in the documentation for instructions on how to use PowerShell to help with deployment-related tasks.
- Solutions: Solutions are how customizers and developers author, package and maintain a single unit of software that extends Microsoft Dynamics CRM.
- Recurring Appointments: Create recurring appointments with flexible intervals/patterns.
Tim Dutcher's blog covering the technical side of working with Microsoft Dynamics 365 (CRM), Power Platform and Microsoft Azure.
Friday, September 10, 2010
Dynamics CRM 2011 Beta SDK Greatest Hits
Monday, August 23, 2010
Azure / CRM app won't deploy - Initializing, Busy, Stopping
After deploying the updated Azure service, the deployment screen showed Initializing, then Busy, followed by Stopping... and then went back to Initializing, Busy, etc. It was stuck in a loop. I read something about this in the past and knew that it related to invalid DLL references, invalid configuration or a number of other things.
After convincing myself that my code change was working and had proper exception handling just in case, I put all the pieces of the application back in their previously known working locations. Voila! The application deployed to Azure fine.
What happened is that Visual Studio started referencing 32-bit versions of the CRM SDK assemblies (microsoft.crm.sdk.dll and microsoft.crm.sdktypeproxy.dll) when I moved the application to different folders -- it could no longer find the 64-bit files I referenced previously. So when I deployed the application the 32-bit CRM assemblies went along up to Azure... but Azure only runs with 64-bit assemblies!
I was punished once again by good intentions. But at least I can add this troubleshooting lesson to my list for future reference.
Wednesday, August 18, 2010
Notification of activity changes in Dynamics CRM 4.0
Today, I found another use for Check&Get. I work at Altriva Solutions and last year I helped create an "ISV" application for CRM 4.0 (on-premise and online) named "CRM Activity Summary". This application brings together all activities, notes, attachments, e-mails, etc. for any account, contact, opportunity, case, etc. and displays that content on one page. For example, if I'm looking at the account form for one of our clients I can see all activities, e-mails, notes, etc. for that account and all connected contacts, opportunities, and cases -- all on one page!
Since Check&Get can monitor any web page, and Altriva CRM Activity Summary can construct a web page of all rolled-up activities for an account record in CRM, my thought was that perhaps I could point Check&Get at the CRM Activity Summary page for the accounts I work with and let it tell me when anything has changed. It worked! I now have complete and timely visibility into several clients' activities and will know within minutes when anything has changed and can act (or not) as appropriate.
Let me know if you'd like more information about the Altriva CRM Activity Summary application or the Check&Get and Activity Summary "mash-up". It actually took me longer to write this blog post than it did to get that mash-up working... so if you need a quick and easy way to keep on top of CRM changes then this is one more way to do it.
Monday, January 25, 2010
Show field schema names in CRM 4.0 form editor
Besides the code complexity (e.g., triggering the field onchange events appropriately), the other challenge was to keep track of the attribute schema name for 50+ form fields. (Note: The CRM form editor shows the attribute display name in each field rather than showing the attribute schema name. You can double-click a field to see its schema name but that’s too many clicks when you’re dealing with so many fields.)
What I really needed was a print-out of all of the form's tabs with the attribute schema name appearing in each of the fields. This would allow me to write the form’s Jscript code faster since I wouldn’t have to match field display names to schema names using the /sdk/list.aspx tool or other method.
One solution I came up with to show the field schema names within the form editor was to use the Script Editor that’s available in the IE WebDeveloper UI to change form’s HTML DOM on-the-fly.
Here’s how to do this:
- Login as an administrator in the CRM web application.
- Open the form editor for an entity.
- Press Ctrl-N to open the form editor in a window that gives you access to the IE WebDeveloper tool.
- In IE WebDeveloper, go to the Script Console and click Run Script.
- Copy/paste the code I’ve provided below and run it.
- Take a screenshot of the form.
Run this Jscript code in the IE WebDeveloper tool’s Script Console window:
document.getElementsByClassName = function(cl) {Hopefully this will save you some time next time you’re working with a form and need quick access to the field schema names.
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
};
var crmFormFields = document.getElementsByClassName("field");
var crmReadOnlyFields = document.getElementsByClassName("rofield");
if (crmReadOnlyFields.length > 0) { crmFormFields = crmFormFields.concat(crmReadOnlyFields); }
var crmFieldId;
var crmFormField;
for (var i = 0; i < crmFormFields.length; i++) {
crmFormField = crmFormFields[i];
crmFieldId = crmFormField.parentNode.parentNode.parentNode.parentNode.id;
crmFormField.innerText = crmFieldId;
}
-Tim
Sunday, January 24, 2010
Microsoft's CRM forums... analyzed
I've been using a great full-text search application named dtSearch for several years but just recently discovered a feature that I'm finding more useful. The feature allows you to report on the count of words in an index. Combined with the ability to crawl entire websites, the two features can answer some interesting questions, such as the ones I came up with today: In Microsoft's CRM forums, what words are mentioned the most in the forum posts? In other words, what topics are people discussing the most in the CRM forums?
The answer to the question was easy to come by with dtSearch. First, I pointed the crawler at the three CRM forums and let it go until it downloaded all of the posts. I then exported a count of all of the words in the forums, removed the common "noise" words and came up with a pretty interesting list.
In the table below, I've listed the most occurring words in the CRM forums. I added some commentary to the first twenty words to give you an idea of what I've concluded from the word, but of course you can come to your own conclusions.
The Word | # Occurrences | Comments |
entity | 24938 | An entity is what it all comes down to. |
error | 16293 | Most of the use of "error" in forum posts relate to the generic "An error has occurred…". I'm guessing from this that a lot of forum posts originate from those who do not know how to turn on error-level tracing on the CRM Web server. Perhaps Microsoft could write full error details to a format that's easier to review, perhaps with a GUI they provide. Showing generic error messages and not providing customers with an easy way to get to the root of the problem leads to a lot of... forum Q&A's (and loss of productivity). |
rights | 15287 | With the flexible role-level security features in Dynamics CRM, there are understandably lots of questions and problems relating to access rights. |
workflow | 14382 | Plenty of questions about how to do something in workflow. A lot of the forum posts where "workflow" is mentioned also mentions "plugin", which tells me that people post questions about workflow and are told that they've hit a limitation and will need to write a plugin. Hopefully in 5.0 Microsoft will provide more workflow capabilities that don't require crossing over to code. |
field | 14083 | Along with "entity", not surprising to see people needing to know how to update fields, make them read-only, etc. |
custom | 13192 | It's not suprising to see this a top word considering that Dynamics CRM is highly customizable. This word is usually coupled with "entity", "attribute", or "field". But "custom application" is a popular subject as well. |
account | 13037 | The top-mentioned entity type. |
blogspot | 10848 | Looks like most people who mention their blog host their blog on blogspot. |
contact | 10518 | The second most mentioned entity type. |
donna | 10033 | This word occurs because Donna Edwards responds to a ton of questions. Thanks Donna! |
problem | 9944 | Why else do people visit software-oriented online forums... because they have a problem... or an error. (It would be interesting to know the percentage of forum posts are answered to the originators satisfaction. I'm sure Microsoft has that stat.) |
attribute | 8962 | The word shows up mostly in client-side SOAP XML that people paste into the forums. |
davidjennaway | 8393 | David is a Dynamics CRM MVP who also answers a ton of questions. Thanks David! |
outlook | 8393 | One of the significant benefits of Dynamics CRM is the ability to use CRM functionality seemlessly within Outlook. But the frequent occurrence of "outlook" in the forums means Microsoft needs to keep up the efforts to make the integration as reliable as possible. |
update | 8277 | There are lots of ways to update data in CRM but there are lots of questions about how to do it. |
check | 8234 | Most of the questions regarding the word "check" relate to the need to examine a field to then execute related functionality. |
string | 7950 | The word "string" mostly appears in CRM Exceptions that people paste from their CRM trace files to the forum. By the way, the most common exceptions asked about on the forums are these (in order of word occurrence): SoapException, CrmException, InvalidPluginException, HttpUnhandledException, SqlException, WebException, TargetInvocationException, NullReferenceException. |
find | 7637 | By far, the use of "find" in forum posts relate to "Advanced Find". It's a popular feature and people have lots of questions about its full capabilities. |
view | 7276 | |
lookup | 7193 | |
sql | 7190 | |
query | 7079 | |
crmform | 6896 | |
client | 6843 | |
event | 6767 | |
function | 6595 | |
plugin | 6369 | |
guid | 6138 | |
imran | 6116 | |
customereffective | 5967 | |
sdk | 5938 | |
activity | 5904 | |
application | 5855 | |
xml | 5806 | |
button | 5543 | |
javascript | 5531 | |
please | 5474 | |
context | 5341 | |
crmservice | 5334 | |
import | 5322 | |
request | 5280 | |
opportunity | 5228 | |
execute | 5064 | |
select | 5058 | |
hassan | 4983 | |
contacts | 4856 | |
lead | 4779 | |
possible | 4706 | |
database | 4626 | |
null | 4598 | |
owner | 4526 | |
click | 4480 | |
default | 4431 | |
soap | 4332 | |
services | 4275 | |
link | 4223 | |
views | 4201 | |
think | 4156 | |
attributes | 4091 | |
relationship | 4035 | |
datavalue | 3955 | |
reports | 3943 | |
exception | 3806 | |
properties | 3732 | |
adi | 3648 | |
works | 3648 | |
msdn | 3628 | |
example | 3605 | |
option | 3593 | |
tried | 3551 | |
support | 3476 | |
hope | 3422 | |
address | 3390 | |
product | 3384 | |
andriy | 3383 | |
picklist | 3352 | |
isv | 3338 | |
cannot | 3291 | |
customer | 3284 | |
settings | 3271 | |
tostring | 3263 | |
config | 3262 | |
entityname | 3241 | |
tool | 3231 | |
security | 3223 | |
iframe | 3211 | |
leon | 3199 | |
related | 3184 | |
status | 3170 | |
filter | 3161 | |
xmlns | 3158 | |
delete | 3120 |
And finally... my last name "Dutcher" appears 129 in the CRM forums. And I only found one swear word. The guy was having trouble with the flippin' Async service, but he didn't say flippin'.
-Tim
Tuesday, December 15, 2009
A short list of Dynamics CRM gurus
Microsoft Dynamics CRM blogs and sites:
http://ayazahmad.wordpress.com/
http://billoncrm.blogspot.com/
http://blog.customereffective.com/blog/
http://blog.powerobjects.com/
http://blog.sonomapartners.com/
http://blog.streamsol.com/
http://blog.xrm.com/
http://blogs.infinite-x.net/
http://blogs.javista.com/
http://blogs.msdn.com/crm/
http://blogs.msdn.com/jim_glass/default.aspx
http://blogs.msdn.com/jonasd/
http://blogs.msdn.com/joris_kalz/default.aspx
http://blogs.msdn.com/MidAtlanticCRM/
http://blogs.msdn.com/mscrmfreak/
http://blogs.msdn.com/ukcrm/default.aspx
http://channel9.msdn.com/Wiki/DynamicsCRM/HomePage/
http://code.msdn.microsoft.com/Project/ProjectDirectory.aspx?ProjectSearchText=CRM
http://crm.dynamics.com/
http://crm.davidyack.com/
http://crm.georged.id.au/
http://crm.ittoolbox.com/blogs/news-and-views/
http://crmblog.saratogaus.com/
http://crmdynamo.com/
http://crmmusings.blogspot.com/
http://crmrocks.net/
http://crmscape.blogspot.com/
http://demiliani.com/blog/Default.aspx
http://dmcrm.blogspot.com/
http://dynamicscrmblog.com/
http://en.wikipedia.org/wiki/Microsoft_Dynamics_CRM
http://guyriddle.spaces.live.com/
http://icu-mscrm.blogspot.com/
http://jianwang.blogspot.com/
http://marioraunig.blogspot.com/
http://microsoft-crm-au.spaces.live.com/blog/
http://microsoft-crm.spaces.live.com/?b502dc08
http://microsoft-dynamics-crm-4-live-titan.blogspot.com/
http://microsoftdynamicscrm.blogspot.com/
http://mscrm-developer.blogspot.com/
http://mscrm4ever.blogspot.com/
http://mscrmrocks.blogspot.com/
http://mscrmtools.blogspot.com/
http://mscrmuk.blogspot.com/
http://msdynamicscrm-e.blogspot.com/
http://navintmicrosoftcrm.blogspot.com/
http://rc.crm.dynamics.com/rc/regcont/en_us/opdefault.aspx
http://ronaldlemmen.blogspot.com/
http://social.microsoft.com/Forums/en-US/crm/threads
http://social.microsoft.com/Forums/en-US/crmdeployment/threads
http://social.microsoft.com/Forums/en-US/crmdevelopment/threads
http://support.microsoft.com/ph/12976
http://support.microsoft.com/search/default.aspx?mode=a&query=CRM+4.0&spid=global&catalog=LCID
http://thecrmarchitect.com/
http://umarkhan.wordpress.com/
http://www.altriva.com/AltrivaBlog/tabid/61/Default.aspx
http://www.arkesystems.com/blog/
http://consulting.ascentium.com/blog/crm/Default.aspx
http://www.askcrm.com/
http://www.changingera.com/category/crm/
http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=crm
http://www.cornerstonesls.com/Blogs/tabid/73/Default.aspx
http://www.crmlady.com/
http://www.crmwatcher.com/
http://www.dynamicscare.com/blog/
http://www.friendlycrmonster.com/
http://www.ibisinccrm.com/
http://www.microsoft.com/dynamics/crm/default.mspx
http://www.orbitone.com/en/blog/default.aspx
http://www.stunnware.com/crm2/
http://www.tekoppele.com/blog/default.aspx
http://www.unitek.com/training/microsoft/crm/blog/
https://community.dynamics.com/crm/home.aspx
Wednesday, November 18, 2009
Formatting output from CrmDiagTool4
To make the output of the utility more readable, I put together this short VBA script that you can run in Word 2003 or 2007.
First, run CrmDiagTool4.exe and export the system report. Then copy and paste the resulting report text into Word. You'll probably want to set the page orientation to Landscape, the margins to .25-inch, and the font for all text to Courier New 8pt.
Next, paste this script into the VBA editor and run it. It simply changes the formatting of the major report sections (lines beginning and ending with several dashes) to the Heading 1 format.
Sub FixDiagToolOutput()
Dim headingText As String
Dim range As range
For Each para In ActiveDocument.Paragraphs
If Mid(para.range.Text, 1, 10) = "----------" Then
headingText = Replace(para.range.Text, "-", "")
Set range = para.range
range.Text = headingText
range.Style = ActiveDocument.Styles("Heading 1")
End If
Next para
MsgBox "Done"
End Sub
Cheers,
-Tim