Friday, April 26, 2013


As some of you might have noticed, that have been with this blog for a while, I am somewhat verbose, or in other words, I am not always very concise. This one of the reasons I have not joined Twitter as I have thought it a bit unfitting for my way of communication but I guess there comes a day when all sinners must confess to their sins and just adapt. So when my MVP colleague Jamie Miley sent me a Twitter invite, I finally subimitted to the inevitable fact that I just had to learn to Twitter, verbosity or not.

So, I have done this and you can now find me on @gustafcrm or if you would like to follow me. As usual, I will keep it strictly professional and CRMy so you won't have to read any tweets about my kids and their soccer matches.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Thursday, April 25, 2013

Privileges for price list

Privileges regarding the price list entity has some interesting quirks to it as I found out working with it recently.

Yesterday I was working together with Christian Högman at Midpoint trying to help out a common customer of ours who it turned out had an interesting issue. Their typical users had a role that did not allow them to set a price list on an opportunity. So, just add "Read" privilege to the Price list entity, you might think, well, not so easy, as this entity does not exist in the security role matrix.

Well, after some trial and error we found that what was actually required was "Read" and "Append To" privilege Product.

So if you facing the same or similar issues, with price lists, try working with privileges on the product entity as this seems to be the entity that also controls price list.

If you havn't read my colleague Rickards latest blog posting on some really interesting bugs we (mostly he) have found in how queues work and in some cases don't work, at least as expected.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Tuesday, April 09, 2013

Switching on and off appointment synchronization in CRM for Outlook

When using the mobile solutions, it is quite common to use a server-based CRM-Exchange synchronization software. There are several different products out there and the one I have the best experiences from is Riva Exchange integrator ( although a bit more expensive than other on the market, a very stable and high quality product.

If the Outlook addon for CRM is used at the same time, there is a substantial risk that appointments created in CRM are integrated twice to the Exchange server, once through the server based integration and once using the Outlook integration. As the server based integration is to be the main method of integration the Outlook integration needs to be modified to stop appointments from being integrated from CRM to Outlook.
Setting which entities are to be synchronized from CRM to Outlook

This is a bit problematic however, as there is no way of doing this for a group of users, but is done in the personal settings once the outlook addon has been installed. This means doing it manually is practically impossible.

The data is actually stored in CRM in the UserQuery entity. This is a rather special entity however, for instance, you need to impersonate each user to be able to edit each users UserQuery’s. This will take some extra consideration in coding. Thanks to David Jennaway for pointing out some of the details regarding this.

If you are running a CRM On-Premise, writing to the SQL database in not supported, but in certain cases, and I would generally advise against it as it can damage you CRM system, it might be ok. In this case, what is needed is to change the statecode and status code of some UserQuery:s. As this is unsupported I give no guarantees but I have used it myself, so I thought I’d share it with you if you’d like to use it.

The following SQL Update script, will deactivate all appointment synchronization in the CRM Outlook addon for all users. Run it in the context of the CRM database.
Again, USE AT OWN RISK, it is unsupported!

UPDATE [UserQueryBase]   SET [StatusCode] = 2      ,[StateCode] = 1 WHERE QueryType = 256 AND (ReturnedTypeCode = 4201 OR ReturnedTypeCode = 4214 OR ReturnedTypeCode = 4251)

The following script will reactivate them.

UPDATE [UserQueryBase]   SET [StatusCode] = null      ,[StateCode] = 0 WHERE QueryType = 256 AND (ReturnedTypeCode = 4201 OR ReturnedTypeCode = 4214 OR ReturnedTypeCode = 4251)
Another interesting fact that you might not be aware of is that if you switch off the synchronization of appointments between CRM and Outlook, the next time you run the synchronization, the CRM Outlook Addon will remove all the corresponding appointments from Outlook, and hence from Exchange (if Outlook is connected to Exchange).

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Monday, April 08, 2013

Errors in Swedish translation

As many of you have been aware, working with the Swedish translation of Dynamics CRM, there are some annoying bugs. One of these has been around for quite some time, I think at least since CRM 3.0 and maybe as long as 1.2, a cannot remember, even though I worked with that version.

The bug I am referring to is the translation of both Subject and Regarding to "Ämne" in Activities. This looks really strange in CRM as this is one of the most common entities. An annoyance for many partners has also been that both these fields are system fields which makes their labels quite hard to change. You cannot just go into the normal field settings and change the display name. There are some workarounds out there, of which I think the best one is to use the translation file to change the display name (which I think has worked for me a couple of times any how).

The other one faced in CRM 2011 and is the translation of the two buttons "Delete" and "Remove" in a solution. These have both been named "Ta bort". Again this is not very thoughtful and has obviously not been done by anyone who works with CRM.

In this case the effects can be rather drastic, as the difference is huge. If you plan to remove a custom entity from you solution containing 3 million rows of data, and press the wrong "Ta bort"-button, you will accidentally remove all 3 million rows of data. With CRM Online currently lacking any manual backup functionality, this means that you have lost these 3 million rows. Thankfully there is a confirm dialog, and the users working inside solutions are usually rather savvy so they know what they are doing.

Still, the fixes are simple, just fix the labels in the default translations. I hereby volunteer to Review the translation for the Swedish MUI if asked at no cost, just to make sure we can remove these kinds of errors.

I have submitted these as feedback to Microsoft Connect, if you agree with me that Microsoft should fix this, do sign up and vote for them.

This is the link for the Ämne-issue:

And this is the link for "Ta Bort":

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB