Welcome to MSDN Blogs Sign in | Join | Help

Tech Tips, Comments and Curious Stuff

Information surrounding technologies that I work with at Microsoft (Dynamics CRM)
Silverlight Samples
Anybody out there has any cool sample of SilverLight Apps talking to CRM?  If you dazzle me I'll probably showcase your App with some folks around here :)
TechEd Orlando
I'll be speakig at TechEd on June 6th...  I wonder how crazy is Orlando this time of the year... its been decades since I visited Disney World he he.
CRM++ Customizations

Let me throw a question...If your were to have one feature (in the customizations space) that you really really really like to see on the next version of MS CRM... what would it be?

CRM online... online :)

It is now official, CRM online is in "open access" mode.  It feels great to share the pride of bringing to the world one of the finest  S+S offerings from Microsoft. 

And as the marketing campaign goes... the choice begins TODAY :)

http://www.informationweek.com/news/services/saas/showArticle.jhtml;jsessionid=EEI14CKAZOIU4QSNDLPCKH0CJUNN2JVN?articleID=207401185&_requestid=15267

http://crm.dynamics.com/

CRM MVPs rock!

At Microsoft, professionals (non-Microsoft employees) that make a significant impact within a given product community are awarded with the Most Valuable Professional title (as well as other goodies).

CRM has one of the best, if not the best, MVP communities of all Microsoft.  Just a couple of days back, the product team (of which I'm part of) had the pleasure to host ~20 MVPs right on the product team building (Redmond) as part of the MVP summit. It was a great experience; having such great people on the very same office space that the people building the software created an ideal collaboration atmosphere.

Personally it was great to assist  to a couple of the sessions, spontaneously meet MVPs on the corridors, having them hear our ideas, watch our storyboards for our next CRM version, and more importantly, get their feedback… these guys are absolutely awesome.

My only regret? Not having enough time to spend with those folks; one day off at home thanks to immunizations (immigration stuff) and another full of critical design meetings. Still, I had the chance to spend some great quality time.  Also, thanks to Philip Richardson, we collected a vast amount of suggestions that we will definitively take into account for our next release.

This post would make an unpardonable omission if I don’t mention the person that made such a great experience possible, our community manager, Jim Glass. Thank you Jim for nurturing our MVP community, you rock!

 

Import Export or the Metadata API?

With CRM4, you have two ways of getting customizations into your system: Import/Export of customizations and the Metadata API.  Which one should you use?   A: Depends.

If your intention is to create exact replicas of the information, Import/Export is the way to go. If you use the metadata API to create entities, even if you assign the same schema names, the resulting objects will be two different objects. Now, the metadata APIs has the advantage of letting you automate the creation of certain objects (e.g. attributes); you can potentially do things like having a plain text file with all the attributes that you want to create and have a simple loop that uses the CreateAttributeRequest of the metadata API to do the actual creation.

If you are building an installer (to deploy a complex Application built on top of CRM), you can potentially use both of them; for example, use a “skeleton” entity that you create using import export (that way you ensure that the entity is a replica and not a brand new object) and then fill-in the attributes using the Metadata API, this approach ensures that whenever you need to import/export back and forth (from source to target system or vice versa) the entities that you are dealing with are actually the same.

Seattle's Weather

Today I asked my wife, what do you think a nice topic would be for a blog post?  Her answer: The weather, is so nice around here (ironically of course)!!  :)  So yes, today my post is about how bad the weather is in Seattle.... cloudy skies all the time!!! Gee!

It is so bad that the forecast reports "delta" versions of the wheater... a bit cloudy, mostly cloudy, cloudy,  fog, rain showers,  few showers, am showers, pm showers, showers early, rain, rain +winds, snow showers (yes, in spring).

But well, summer is coming (mmmm July maybe) so we will have 2 glorious months of sunny (sorry, partially sunny) skies :)

Plug-in or Workflow?

With the CRM 4.0 enhancements to the plug-in and workflow engine as well as the introduction of the web based workflow designer I've seen many CRM developers asking the same question: When should I use workflow vs. plug-ins?   The answer is “depends”; the right approach is determined by the characteristics of the task that you are trying to accomplish.  The following matrix gives you my take on this:

Requirement

Plug-in

Workflow

Needs a synchronous action to happen before or after an event occurs

x

 

The same piece of logic will be executed for different events and possibly on different entities

x

x

The logic needs to be executed while offline

x

 

Needs elevation of privileges (impersonation)

x

 

Needs to execute on events other than assign, create, update, setstate

x

 

The process/logic may take a long time to complete or will be a persistent process (multiple long running steps)

 

x

Needs an asynchronous action

x

x

End users will need to modify the process logic

 

x

Child sub processes will be triggered

 

x

It may also be the case that a combination of both approaches is required; a plug-in can trigger a workflow and a vice versa.  From the above matrix the most decisive factor is whether you need a synchronous action or not; if you do, plug-ins are the way to go, if you don’t then other factors need to be pondered.

Versioning Customizations in CRM 4.0

Philip just released his updated tool to keep track of customization versions in CRM 4.0 http://code.msdn.microsoft.com/crmversion.  The concept is pretty straight forward, a plug-in that is triggered whenever you publish or publish all your customizations.  Because the plug-in runs in synchronous mode I would recommend you to tailor it to only run on publish "All" or even better, write a workflow that triggers the "snapshot" generation based on time comparisons; why?

Because if you are like me and code/configure, publish and test very, very often; (I publish almost every change I do immediately) you may prefer to manually trigger the “snapshot” (which is possible using Philip’s add-in) or have an automated job that creates the snapshots, lets say.. every day at night; that way you don’t end up with a dozen+ versions of your work and you don’t slow down the publish process unnecessarily (exporting customizations and saving them as attachment can take precious seconds, perhaps minutes, of your development time once you have 100+ entities)

 What do you do to keep CRM customization versions?  TFS?  How often do you take "snapshots"?

 

Increasing the length of CRM attributes

Q: Can the max length of CRM attributes be increased (e.g. increase the capacity of a text field from 50 to 100 chars) ?

 A: Of course! CRM 4 absolutely supports that. One caveat though, there are logical fields, like address related fields, that require a two step process: you have to increase the length in both the referencing entity (e.g. the Account entity) AND the address entity.  As a general recommendation you should increase the length of the fields on the address entity to the max that you are expecting for any entity that uses address data. This way you will only have to tailor specific entities attribute size (since the address field will already be large enough to support your requirements).

 

Where did the "share views" functionality go?

I've seen plenty of question regarding the "sharing" of OOB views functionality that is no longer available in 4.0.  Basically 3.0 allowed you to "share" OOB views with people/teams...this functionality was used by many as a workaround to remove the canned views that we ship OOB, you basically created a dummy team, shared the view with that team and voilà.. the view was invisible for the rest of the world.   Why then did we remove this functionality ("sharing")?  Mostly, because its implementation conflicted with changes that we performed in our security model.

Does that mean that you will never be able to get rid of the canned views?  Nope; there are ways you can "hide" those from your users and Clint has an elegant workaround for it here using plug-ins.

Wired articles...free and signals

As I’m sure most of you do, I have a subscription to Wired magazine and every time I receive it I ask myself the same question… why am I reading this junk?  Full of advertisements and non sense articles (that purposely are hard to distinguish from advertisements themselves)…. My answer comes when a smart/insightful article or idea gets sprinkled once in a while and for less than 10 dollars a year, well, I think is bearable.   

Why am I bringing this up now?  Well, because there are two articles worth reading in the last issue of the magazine... "Free" by Chris Anderson which talks about the strategy that many companies have been following for years (give products away for "free" and up-sell, cross-sell or subsidize on the side) and an article about 37Signals and the way they develop software; interesting stuff.   Both articles have spurred lots of comments everywhere (here and here are some samples that a colleague at Microsoft brought to my attention).    My takeaways:

-          About “Free”:  Eventually every product (software specially) on the planet will have a “free” SKU. Yesterday while playing Guitar Hero 3, for the first time, I noticed a Comcast advertisement on the background of the game!!!   I felt like asking for the money I paid for the game back… it should have been free!!  Those guys are/will make a lot more money from advertisements on their games that from the fee they charge for the media.

-          About the 37signals article and their responses on the net… there are plenty of opinions out there and I’m not going to get into controversy. However, there are a couple of key phrases in the 37signals blog that I personally feel sympathetic with and believe all software companies should pay attention to…

o   We listen to customers but we also listen to our own guts and hearts. We believe great companies don’t blindly follow customers; they blaze a path for them …That’s why it’s our job to be editors. To be software feature curators. To pick out the ideas that will benefit the most people and disappoint the least people. And sometimes that means doing nothing at all

CRM 4.0: Platform Validations

Did you notice that CRM 4.0 now validates data at the platform level?  Well, it does :).   Here are a couple of facts around platform validations 

·         They only apply to the 2007 endpoint. The 2006 endpoint remains the same (no validations to preserve back compat).

·         They are implemented as a plug-in that runs at the very first stages of the eventing pipeline (before any custom plug-in)

·         All validations will be enforced at the platform level (e.g. maxs, mins, lengths, picklist valid values, etc) except "business required". Why? Because business required is a UI construct and, more importantly, because preventing records from saving if an attribute value is missing would break many ISV solutions (e.g. an attribute may be filled with a plug-in or a workflow down the line on the pipeline)

 

 

 

Metadata Reporting

It’s been a while now that I've been having conversations with a couple of team members about a side topic…the need for easier metadata reporting (e.g. get list of all the attributes and their display names for X entity to include that in documentation or in a report). Some argue that we should provide a SQL filtered view in future versions, others, including myself think that we should focus on enriching our Metadata APIs and making them easier to use... or, even better provide that functionality from the Web App itself (e.g. a simple export to excel on the entity editor).

Those that argue in favor of a SQL filtered view say that most CRM admins lack .net skills and find the use of web services cumbersome and, most of the time prohibitive.  I disagree and believe that using web services is becoming increasingly easier and there are plenty of tools out there (that don’t have to be .net) to consume them.  Besides, as an ex-admin I would be quite reluctant to give anybody SQL access when there are APIs that they could use.

As mentioned before, if I were to push for an easier to use solution here I think webapp support would be the way to go.. that would work for on-premise and live.

But… what do you think?

 

Playing with IFD

Well, it’s been a while since I wrote my last post... I've been laser focused on CRM5 planning.... yes.. CRM5 :).   Nope, I cannot share any details yet but I'm sure info will start to permeate little by little.

 Anyway, I took a little break from designing and decided to play with IFD (Internet Facing Deployment) given that just a few days ago the so long expected IFD tool was released (more info here).  Basically, the tool lets you configure a bunch of settings that allow CRM to use forms authentication instead of integrated windows authentication… the benefits?   No VPN needed for the outlook client and deployments that can be accessed directly through the internet.   If you want the full story I recommend you reading the implementation guide as well as the guide for hosters.

So, I downloaded the tool, tried to enable my CRM to work with IFD (my objective was to enable IFD to work for any address)…and it didn’t work; windows auth was still taking place (CRM can work with windows auth and form auth at the same time). It took me several minutes to remember how the internal network address stuff worked. I finally remembered that I basically had to put an address/mask that would make any request being seen as an external request… in other words a subnet mask that defined a subnet different from the subnet of the clients (the key is the subnet you see).

Anyway, the above plus some hacks to my host file (I didn’t want to get into the trouble of adding true DNS entries) allowed me to access my CRM server using IFD… pretty cool.  

 

More Posts Next page »
Page view tracker