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)
CRM Mobile Express (for Microsoft Dynamics CRM 4.0) Released

Indeed, this baby is now officially released.

http://blogs.msdn.com/crm/archive/2009/07/09/product-release-mobile-express-for-microsoft-dynamics-crm-4-0.aspx  

And how much extra you will have to pay for it?  Nothing! Nada! Nichts! Zéro! Because it is free for CRM 4.0 customers; well anyone can download it but it will probably be of no use if you don’t have CRM in the first place right? J

I remember back when the feature team in charge of Mobile Express started adapting it for CRM 4.0 one of their goals was to make sure it run in virtually any mobile device. I was really skeptic and I’m so glad they proved me wrong.   Someone may say “what is the big deal, you just made a standard html app and it will run everywhere”, that someone is probably not aware of all the subtle differences between browsers and devices; there was a bunch of work to fix bugs for particular devices, the team didn’t just waive their magic wand and things worked automatically.

Kudos to the CRM Mobile Express team!

 

Cool Web Sites

I always like to keep up to date and observe “trends” that emerge in the webosphere. Yesterday I spent some time looking for “cool” websites (I was mostly looking for new UI paradigms/controls). It was so funny to find a 2005 Time magazine list of the coolest web sites back then…some of them look so 90s now. Anyhow I found a couple of sites that besides looking great they accomplish their task pretty well instead of just being eye candy; check them out.

Netflix is another site that I really like and the fact that they have optimized versions of their app for different platforms is fantastic.

How will the Web look like in a couple of years? When will Neo come to wake us all from this dream :)?

Improved Suggestions Program

You gave us feedback and we listenedJ.  A few months back we rolled out a “suggestions” program to provide a tool for customers to give suggestions for the product. We’ve received a lot of fantastic suggestions and all of them are being looked at by the product team. I’ve personally looked and responded to hundreds of suggestions and trust me, many of them will make it in the next major release of CRM.

While customers in general appreciated the fact that we provided an “official” forum for them to post their suggestions a constant piece of feedback that we received is that the old connection had only one program with all the dynamics products included which made very difficult to search for feedback. In fact many of our customers told us that they would like to focus on CRM specific feedback and not have to wade through other products feedback.  

So, how did we improve our suggestion program? We created a brand new connection with separate programs one for each major Dynamics Product (thanks a lot to our friends in the Dynamics AX team for making this happen). Now you can opt-in or out individually of each program and use product tailored feedback forms that will make the search and submission process easier.

New Connection: https://connect.microsoft.com/dynamicssuggestions

And what happened with existing feedback?  Did we toss it away?  Of course not! J  The old connection is in read only mode now but we are still tracking your suggestions and will take them into account for product development.

To close out I want to point you to this post with some tips that will help you and us make your feedback more effective; the most efficient technique is to “vote” on existing suggestions and provide additional comments rather than creating new feedback; that really helps us figure out the importance/impact of any given suggestion.  

Thank you for being such a great community and remember that we always appreciate hearing from you.

And the XRM train starts rolling...

http://blogs.zdnet.com/microsoft/?p=3053 

This year is going to be a fun one :)

Bing, Natal, Windows 7, Wave, CRM5….fiuff!

I must confess I feel a bit overwhelmed with the sea of information of upcoming products and technologies (not only from Microsoft).  Good thing I’ve had a bit of time to catch up a bit with the never ending stream of goodies that the IT industry produces J

Bing it!

Lots and lots of conversations both internally with Microsoft colleagues and externally with friends; my verdict?  Bing is definitively a step in the right direction; instead of trying to tackle google head to head with yet another plain vanilla page with blue links Bing is different, more user friendly, more like a guide that takes user by the hand and helps them discover more information.  Remember the AI movie’s  Dr. Know? Well… decision engines aren’t far from it… as for interactivity, well look at Natal.

 

Natal

I was soooo happy and excited to see Natal surfacing to the public. A bit of an insider story, I actually had the chance to see Natal a couple of years (yes years) back while it was still a prototype. I helped my manager at the time to prepare a CRM4 demonstration for BillG for one of his famous “review weeks”.  A bunch of other Microsoft products were being reviewed by Bill and Ray Ozzie; among those products was Natal (didn’t know the codename at the time). I had a quick glimpse of the device watching Bill and Ray have a box fight on the Xbox with nothing more than their hands… I knew something big was cooking and I was right.

While I absolutely believe that Natal will help bring interactivity (not just for gaming) to a whole new level I don’t think it will be suited for every application. Take for example the car racing game? Isn’t part of the trill to feel the wheel in your hands (e.g. force feedback) ? Isn’t that why so many Wii accessories out there wrap the wiimote into something more “real”?  Good thing that the strategy seems to be to complement the controller (and other peripherals) rather than replacing it… I don’t think controllers will go away anytime soon.

 (btw, I have my Wii along with my thousand controllers and wheels sitting on the back of a closet disconnected for months now… so much for Mario and Co J ).  

Windows 7 (and Office++)

So I’ve been running Win 7 RC and the CTP release of Office 2010…. I’m impressed. I won’t elaborate on Windows & because there are enough raving reviews out there… I’ll just say, “kudos to the Win 7 team”.  As for Office 2010…you know I used to be one of those guys that believed that Office was “good enough” but time and again I’ve been proven wrong; can’t share any details but you won’t have to wait too long… the public preview will be available soon.

 

Wave

Some analysts have called Wave a “tsunami” for the internet; it might be.  When a colleague of mine told me about this new thing called Wave I thought for a minute of something along the lines of google apps/mail/talk which haven’t been tremendously successful (yet).  Then I watched the public video of the keynote where they presented Wave… I was impressed quite honestly.  To an extent is a very simple idea at its core… a service that hosts rich conversations (waves) that people and services can plug into.  Yet all the surrounding parts, ability to playback waves, ability to plug wave clients into blogs, social sites,  multiple devices, multiple interaction mechanism (synch and asynch),  can have a tremendous viral effect.  

As far as waves being a replacement for email….mmmm I don’t think so just because of the simple fact that not all emails are conversations; some are just discrete events that don’t require the capabilities/overhead that a wave would impose.  Now, promoting selected emails into waves (or even better, inferring which should become waves) that would be VERY interesting.

And there is also all matters related with privacy, security, reliability, accountability that email products have faced and solved in one way or another that would also need to be addressed by Wave. 

Anyhow, something to definitively keep an eye on.

 

CRM5

Aha… you must be thinking “come on, tell me more about CRM5” (because I know all my readers are raving fans of CRM). But I’m afraid I’ll have to disappoint you… all I can say is that you should stay tuned for this year’s PDC J.

 

The rule of rules

Recently I’ve been doing some research about “rules” in the world of user interfaces (personal curiosity mostly). When you think about it many of the chores that UI developers have to do are simply “rules” on a particular piece of UI: validations, hide/show fields, change the value/data set of another field based on some condition(s).  While many technologies and editors (e.g. ASP.net) have components that allow you to configure some of the above behaviors (e.g. Validators) the fact remains that you have to manually connect the dots and almost everybody ends up doing their own “rules/script” engine.

An interesting point that I keep coming back and forth is… what should the rule be attached to?  An object (e.g. contact)?  A particular field (e.g. name)?  A particular form (e.g. a combination of fields and layout)?  And there is really no good answer; there are pros and cons in all the alternatives. As usual, the lower you attach the rule the more reusable it becomes but also less flexible and useful; for example, you can attach a validation rule (e.g. isValidEmail) directly to a particular field but you require a form to apply a rule that involves the visual, not committed state of another field (ifAnotherFieldIsSelected then).

Anyhow, wouldn’t it be wonderful not to have to code chores like that ever?

Why the SDK doesn't contain .exe tools?

You know, I'm thinking of renaming my blog to something like "CRM insider” or similar. I often find myself giving some insight on how things work or why a decision was made on the product team. To be fair and absolutely transparent I do take a lot of information from internal distribution lists/mails but only post things that a) I know what I’m talking about (so I only used the dlist information to corroborate my knowledge) and b)I’m confident it won’t cause any trouble releasing it to the public.  

Today’s mystery is… why aren’t executables shipped with our SDK? If you notice we always ship tools in the form of source code. The reason is two fold

a)     It allows us to have a faster release cadence. Releasing executables requires a more time consuming process that could potentially slow us down. The SDK team prefers, and I side with them,  to be more responsive and release updates faster.

b)    More importantly, you learn a lot more by looking into the source code. The code that is shipped on the SDK are mostly a wrappers around our existing APIs, there is nothing better to learn how to use an API than to actually seeing the code in action.  In fact we have plenty of partners that use the knowledge acquired by examining out tools to develop their own.

Believe me, I often times wish that I wouldn’t have to compile some tools but I have gained tremendous insight on how things work by doing so. And there is always codegallery  or codeplex where some individual post compiled versions of CRM tools if I don’t want to spend too much time on a certain task.

CRM Dev community site

Check it out, Jim and Co. refreshed the community section of the CRM Development Center.

 http://msdn.microsoft.com/en-us/dynamics/crm/bb501031.aspx

 

No plug-ins for N:N relationships (associate/disassociate)

And I’m back, yeeeee!!!

It is really nice to see the sunlight again… oh wait, there is not much sun around Seattle J. Well anyhow, specifications for the features that I’m driving in our next milestone are done and I’ll finally had the chance to reconnect with the outside world he he, time for devs to go dark ;)

And to celebrate my return let me post something that I’m sure many CRM developers have wondered about. Why are plug-ins for the associate/disassociate  (N:N relationships) not supported?  The reason is pretty straight forward; we didn’t design/plan to support them for the V4 release.  Some of you may scream “what???!!!! How come you didn’t do that?” and I absolutely sympathize with you but there is just so much that a release can deliver.

You will find some hacks to enable some of the above, just do a search for “n:N relationship plug-ins” and you will likely find them.  Be extra careful because they are truly hacks that could render you CRM installation completely useless or even worse you can lose valuable customer data as they hack the CRM DB so don’t expect Microsoft to back them up or receive any kind of support to deal with any issues that may arise when using them.

The next question that someone would probably ask is: will you incorporate the proper/supported functionality in v.Next (major release)?  I’m told (I don’t really drive that particular area) that it is definitively on the radar so I would expect that yes; it should be there for the next major release.

THIS POST IS PROVIDED AS IS WITH NO WARRANTIES IMPLIED J

  

Almost there...

Ok, I admit, I'll have to post yet another “I’m too busy” post :( …  I’m absolutely heads down on CRM5 feature designs.  The great news is that all we are doing will one day help unleash (even more) the power of CRM as a platform… I’m exhausted but happy at the same time. 

The next couple of weeks will be particularly tough… some hard decisions will need to be made and features that I’ve been working for months (or portions of them) may not make it to the finish line and may not get implemented (this is one of multiple milestones in CRM5 development but still); but that is how things work in this business.  After that I really hope to have a bit more time to blog about more useful things J

I’m sure you are wondering, well, and how do you decide what to keep and what to “cut”.  You will be surprised but there are MYRIAD factors that we have to take into account; it is truly a balancing act that is really hard to master. How can you influence the outcome?  Let us know your thinking!!.   A couple of days back I posted this in the team blog and trust me, we absolutely look at your suggestions; in fact I spent a fair amount of my time preparing training materials for a bunch of people (core engineering members) that will be looking at your suggestions.

Well, back to work… have a ton of work to plow trough  :/

 

Why so quiet?

[For a moment I thought of the "Why so serious" scene of  "The dark knight"... didn't you? ] 

Wondering why some CRM engineering members (PMs in particular) have been silent in the last couple of weeks?  Well, because we are all heads down driving the next milestone of CRM5 and other interesting projects :).  I’m really excited about all the things that we are doing and wish I could share them but alas I can’t, at least not now.

In the meantime and to gratify you for reading today’s post here is a quick tip that I got from a colleague PM (I still have to try it out myself but just looking at the code it make sense so I’ll just post it here anyway). Use LINQ to manipulate CRM queries. This is not a LINQ provider but a quick way to manipulate CRM data after you have retrieved them from the server (using fetchXml for example). If you are looking for a LINQ provider just search for “LINQ CRM” and you will find several libraries that you can reuse.

string xmlData = [FetchXMLResult]// this is coming back from a Fetch Request

System.IO.StringReader xmlSR = new System.IO.StringReader(xmlData);

Dataset ds = new Dataset();

ds.ReadXml(xmlSR, XmlReadMode.IgnoreSchema);

 

DataTable contacts = ds.Tables["Contact"];

DataTable orders = ds.Tables["SalesOrderHeader"];

 

var query =

    from contact in contacts.AsEnumerable()

    from order in orders.AsEnumerable()

    where contact.Field<int>("ContactID") == order.Field<int>("ContactID")

        && order.Field<decimal>("TotalDue") < 500.00M

    select new

    {

        ContactID = contact.Field<int>("ContactID"),

        LastName = contact.Field<string>("LastName"),

        FirstName = contact.Field<string>("FirstName"),

        OrderID = order.Field<int>("SalesOrderID"),

        Total = order.Field<decimal>("TotalDue")

    };

 

   //do something with data

 

The way of the whiteboard

I just attended to an excellent, excellent Mix 09 session titled “The way of the whiteboard”; its fundamental premise is that a picture is worth a thousand words. People may say well, what is the news on that? it is common knowledge, right?  Well, turns out people more often than not overlooks simple “obvious” facts in live… and since I do not want to do that mistake in this post let me summarize what I’ve learned with a sketch:

Lighten up the Web... Mix 09 big annoucements

Yesterday and today have been phenomenal days for Microsoft that truly make me feel proud of being part of this company. The release of Silverlight 3 beta and IE8 RTM are amazing steps that will contribute to take the Web to its next generation of user experiences.

I love Mix 09!

P.S. Now the question for CRM fans… what will CRM will do about the above?  J   Can’t share details yet but great things are on the flux that will allow you to take advantage of a bunch of Web related MS technologies.

More useful customization tools

Check them out: http://mscrmtools.blogspot.com/search/label/tool.   People implementing MS CRM will surely find them extremely valuable.

Maybe next time...

Last week I had a couple of meetings with developers (they are from another Microsoft group) that will be working along with us in the new CRM version; turns out everyone these days wants to work with us :) 

Long story short the majority of features that they are interested in are UX features that I have planned for and/or make “concepts” of... that feels really good because it means that I still have common sense he he and people generally likes what I design. The problem?  Well, I just don’t have enough time to manage all which means that I’ll be inheriting my babies to someone else….  Yeah, I’m a selfish Program Manager that likes to drive things from inception to release and this in this particular case I really really regret that I won’t have the chance to work on those features (well, I will but I likely won’t drive the implementation).  I shouldn’t complain though, the rest of the features that I’ll be driving have a deep impact in the future of CRM as a platform…. is just that… well, I always end up driving ultra geeky features he he… each time I try to move towards the UX side of the house something ends up pulling me back. Who knows, I might get my way in the next milestone J

 

More Posts Next page »
Page view tracker