Tuesday, September 07, 2010

IFD on Windows Server 2008 R2 problem with plugin registration

A customers system I was working on today has just been reconfigured to and IFD setup. The server is a Windows Server 2008 R2 and I had made sure that it worked on port 80 with NTLM/AD internally. However, when I tried to connect the plugin registration wizard in the normal manner, it just gave me an error:

"Request IP Address has different address family from network address."

I found and interesting thread on Egghead café where some guys had run in to the same problem.
http://www.eggheadcafe.com/software/aspnet/31655329/-crm-4-on-2008-server--ipv6-related-problem.aspx

So I did as they suggested, added the servername to the hosts-file to the IP 127.0.0.1. If you don't know what this means, it works as a local DNS. The IP 127.0.0.1 is assigned to always be the local computer and "localhost" is usually directed to this adress. You can try by browsing to it if you havn't tried.

The hosts file can be found in C:\Windows\System32\Drivers\etc\hosts. There are usually an entry or two in there so you can usually figure it out, the syntax is simple:

127.0.0.1 servername

If you tried pinging the servername before doing this, you would get the IP v6 address, after doing this, you will get an answer from 127.0.0.1 and after confirming this, you should have no problems getting it up and running.

Gustaf Westerlund
CEO, Chief Architect and co-Founder at CRM-konsulterna AB

www.crmkonsulterna.se

Wednesday, August 25, 2010

Focus to give value

I am currently in the middle of the blizzard of getting the company I am starting, up and running, taking care of all the customers we are moving from Hermelin IT-Partner, managing all the administration and so on. For us, you and me, who work with CRM, a customer centric approach should be obvious, so the customers are of course first why the webpage is still a bit slim.

One of my strong visions for the company is to be very focused. We will focus on the market leading CRM system, Microsoft Dynamics CRM and no other CRM systems or other systems at all. It is a very dynamics system and the possibilities are endless. On top of that there are huge numbers of third party products available and the only way of giving customers the best possible recommendations and services on how to adapt the CRM system and which 3:rd party product will give the customer the best bang for the buck is to focus. It is hard enough with just such a huge system as Microsoft Dynamics CRM, that working with more than it is just not possible.

Lauren Carlson at Software advice has assembled a list of their 15 favorite verticalizations for Microsoft Dynmaics CRM. It a good list to have in the back of you head when speaking to customers, why invent the the wheel twice? Have a look at it here: http://www.softwareadvice.com/articles/crm/microsoft-dynamics-crm-industry-solutions-our-20-favorites-1082010/ . These most certainly will give your customers a bigger bang for the buck.


Gustaf Westerlund
CEO, Chief Architect and co-Founder at CRM-konsulterna AB

http://www.crmkonsulterna.se/

Friday, August 20, 2010

Working with language translations and Dynamics CRM

I was recently preparing a demo for a potential customer here in Sweden, my last task at Logica, a company I am now leaving, which is a bit sad since I like the company and most especially my colleageus there.

When preparing this demo I was working with an english version of CRM but the demo was to be all in Swedish and the potential customer was a state-owned company which does all it's work in Swedish. Hence I needed to translate some of the customizations I had made and I had also used the eService accelerator and need to translate this aswell.

I hadn't actually done any translations previously, it had always been my colleagues doing this and it was a good lesson.

I exported the translations, opened the zip and started working with the translations in the xml. Wrong... despite the fact that it is xml it is actually an Excel document and I hadn't read that part and since my CRM server didn't have Excel installed, I didn't see the icon you can see when you do have Excel installed.

So, I was using Visual Studio to edit the translations and it was a bit of a hassle since it was quite a large document and visual studio didn't really like it.

Well, after some time I noticed that it had some tags saying it was an Excel document. So, I opened it in Excel and voilĂ  a lot easier to work with. So, just a suggestion, don't do the same misstake and sometimes, RTFM.

Another thing I found was that it was a bit hard finding the  right attributes in the rather large list and the solution was quite simple. When adding an attribute and entering the english display name, I added a string at the end, for instance "GWCRM". I could then use this as a search string in Excel when editing it, to find the correct displaynames to change. And when adding the swedish translation, I removed the "GWCRM" part at the end of the English.

This is the last day at Logica, all my best to my wonderful colleagues here and I wish you all the best of luck with your future business!

Gustaf Westerlund
CEO, Chief Architect and co-Founder at CRM-konsulterna AB

www.crmkonsulterna.se

Thursday, August 12, 2010

32 bit apps in 64 bit IIS 7

I havn't been working that much with IIS 7 and not on 64 bit environments yet. Always easier to work with what you know but sometimes you just have to get out of that comfort zone and grasp the new!

IIS 7 has a very different GUI from IIS 6 and there are many changes under the hull aswell.

I was trying to install the eService Accelerator on a 64 bit environment with IIS 7 on Windows Server 2008 R2 and the example portal (Fabrikam) gave me the following error:

Could not load file or assembly 'Microsoft.Crm.Sdk' or one of its dependencies. An attempt was made to load a program wih an incorrect format.

A little digging around and checking some blogs I found the error, the app pool was set up to not support 32 bit applications. The fix is to mark the app pool, click advanced settings, and under the general section, change the "Enable 32-Bit Applications" to true. Then you can just confirm this by updating the webpage.


Gustaf Westerlund
President, Chief Architect and co-Founder at CRM-konsulterna AB

www.crmkonsulterna.se

New times!

I am starting a new company together with Hermelin IT Partner (http://www.hermelin.com/). This new company will be named CRM-konsulterna, (CRM Consultants in Swedish) and will focus on Microsoft Dynamics CRM and related products only. We will drive to attract the foremost Microsoft Dynamics CRM consultants in Sweden and be the Dynamics CRM partner for customers in Sweden and also be the driver of Microsoft Dynamics CRM in Sweden in general. However, Rome wasn't built in a day and neither will this.

Are you interested in joining us or want to learn more of how we can help your company reach new heights, please send me an email at myfirstname.mylastname@crmkonsulterna.se and I think you can figure out what you need to change in that adress.

Gustaf Westerlund
President, Chief Architect and co-Founder at CRM-konsulterna AB

http://www.crmkonsulterna.se/

Thursday, June 17, 2010

Understanding the user

In all computer systems in general and in CRM systems specifically, it is essential to understand the world of the end user. The following movie gives some very interesting insigths into the current trends of how the users are changing. Are you changing with it or are you going to try to turn back time?



Gustaf Westerlund

Microsoft Dynamics CRM Chief Architect

Logica

www.logica.com

Monday, June 14, 2010

Webservice loading strange workflows

Had an interesting problem today. I want to trigger workflows from an aspx-page by finding the right one by name and for some reason, I got an exception that the workflow had to be flagged to allow manual activation or to be run as a subworkflow. This was very strange since I several times checked the workflow and it was not only published, but both the flags for manual activation and run as sub workflow were checked.

So, I applied my principle of first trying to find where the error was instead of finding what it was.

By tracing and checking some, I found that the webservice actually returned 4 workflows with the exact name I was looking for. I tried to load some of them in the GUI by changing the URL and they did load but they were strange some how since I could not change them. 2 were drafts, 2 were published, 2 were marked as runondemand and 2 were not. The last one proved to be the right one (both published and runondemand).

So, I had to change the code for fetching the GUID for a workflow with a specific name, so that it also checked that the workflow was both published and was allowed to be run on demand. So, if you run into similar problems, you know what to do.

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect
Logica
www.logica.com

Wednesday, June 09, 2010

How to remove a windows service

Today I needed to reinstall CRM on a VPC and for some reason the Async Service wasn't unregistered properly. When I tried uninstalling it using installutil with the following command:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\installutil" /u "C:\Program Files\Microsoft Dynamics CRM\Server\bin\CrmAsyncService.exe"


it couldn't find the file. Seemingly, the uninstaller had a job half way and removed the file but not unregistering it as a service. So, how to uninstall? Looking around a bit I found the following command did exactly this:

sc delete MSCRMAsyncService
Good to know, if needed.


Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect
Logica
www.logica.com

Wednesday, March 03, 2010

New version customization manager

My friend and colleague Daniel Halan has released a new version of his program CRM Customization Manager. It is a very very useful tool for handling customizationfiles for Microsoft Dynamics CRM. It can handle exporting from one system and importing to another from the same GUI. You can choose to export only javascripts, you can change the datatype of attributes and keep the data.

It is an essential tool for all Dynamics CRM professionals and Daniel is way to alturistik in my view to be giving it away for free.

You can read more about it and download it here http://blog.halan.se/.

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Monday, March 01, 2010

Reporting Services Windows Service wouldn't start

I created a new differencing disk of a CRM virtual machine today and I had some troubles getting Reporting services up and running. The service simply wouldn't start. I had previously used the same virtual harddisk base for other systems so I found it a bit strange, it should work.

When I looked in the event viewer it showed the error "Report Server (MSSQLSERVER) cannot connect to the report server database.".

I looked around a bit on the net and found a reference to the following which helped:

http://support.microsoft.com/kb/839803

I concernings increasing the timeouts of pipes in the system to 60 seconds instead of 30. This might be needed on VPC:s that are not so fast and might not get the service up and running fast enough.


Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Saturday, February 20, 2010

Marking an appointment as finnished from Outlook

One of the best features of Dynamics CRM is the integration to Microsoft Outlook. In comparisson to competing CRM systems, this is really one of the strongest unique selling points of Dynamics CRM.

However, even though it is really good, there are some parts of it that could use some touchups and until that happens, some workarounds would be good.

One of these issues, is that appointments can easily be created from Outlook and mapped to some object in CRM. This is easy and very few click. Nice. But, when this appointment is completed, it is a bit more complex and a lot more clicky. First you have to open the appointment in Outlook, then open the appointment in the CRM form. From there, you can press the "Save as completed" button, which is a bit tedious and many users find this a bit strange and I am having a hard time explaining why you have to do it this way, it isn't very obvious or logical. The best solution would be that the CRM addin had a button which could mark appointments and other activities as completed. But that just isn't there yet.

So, is there a workaround, yes, of course there is. It isn't perfect, but it will work.

Define some text, like for instance "Completed" and then tell the users to put Completed as the last text in the description field or in the subject field.

Then create a workflow in CRM that triggers for updates on the field where you expect the text. Then let the workflow check if the end of the content of that field is "Completed" and if so, set the appointment as completed.

The same functionality could of course be implemented in a plugin instead, but that requires a bit more programmatic skills.

The functionality of adding a button to Outlook can of course also be developed with Visual Studio Tools for Office (VSTO), and that could of course be used to automatically update the appointment as completed.

So, that might help you out a but I really hope that the CRM Client for version 5 will deliver this functionality since it isn't very hard to do when the rest is there.

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Friday, February 19, 2010

Hybris

A few weeks ago a new colleague started working here at the Dynamics CRM group at Logica Sweden. His name is Fredrik Strandin and he is a very skilled developer. He mentioned that part of the reason he contacted Logica for a position was that he was following this blog and liked it. A huge complement and I am very grateful for it. It is hard to know how many people actually are following this blog and what I write, so please leave a comment if you like. The best inspiration to writing more on the blog is praise from readers of the blog.

I would also like to point out that I really enjoy working for Logica. It is a very friendly company with a very good customer approach. Of course, no company is perfect and a company with 40 000 employees can sometimes be a bit bureaucratic but then again we have resources to approach the largest, coolest and most difficult of CRM projects. So, if you, like Fredrik would like an opportunity to come work with this most extraordinary team of Dynamics CRM professionals, please contact me, we are always looking for driven and skilled people. Just call the main Logica phone number and as for Gustaf Westerlund in Sweden. We have offices in about 40 countries around the world, so it doesn't really matter where you live :).

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Back to old times

Today I got involved in a project I havn't been working in for about 2 years, a CRM 3 project that now was upgraded and there were some issues with callouts not executing properly on the production system but there were no problems on the test system. So, there probably wasn't a code error.

After activating the crm tracing (alway a good thing to do when CRM is missbehavn') it was quite clear that it couldn't find the dll Microsoft.Crm.Platform.Callout.dll which of course is required by CRM 4 if you want to execute workflows since this assembly contains the classes that are inherited from in the callouts. It is a bit strange that this dll isn't included in CRM 4 since callout are supposed to be seemlessly upgradable to CRM 4 and this is the one little stich that is missing. So, just had to dig it up and deploy it to the GAC and the callouts started working as they should.

During this I also thought there might be errors in with the assembly being unsigned and after some looking around, I found that in Visual Studio 2003 it isn't found in the project settings so you have to fix it manually in the assemblyinfo.dll. However, this doesn't seem necessary event though it doesn't hurt.

So, what did I learn?
1. When in doubt, switch on CRM tracing.
2. Make sure you have a good store of all dll:s that CRM uses so that you quickly can find them. How many of you have the Microsoft.Crm.Platform.dll in the CRM 3 hosted version? It is quite rare and can be found on the installation disks but not anywhere on MSDN. If you need it, drop a comment. I approve all comments due to all the #¤#¤¤# comment spammers so you can enter your email and ask me not to publish the comment, and it wont be subject to email harvesters, if you want me to email you the file.
3. Don't take promises of seemless upgradablity too serious. MSFT have done a great job with CRM, you don't even have to recompile (and consider that CRM 3 uses .NET 1.1 and CRM 4 .NET 2.0 from an IIS perspective) so always do a test upgrade a couple of times before you do it live and make sure to write down all the steps you are taking. Let's hope the upgrade from CRM 4 to CRM 5 will be truly seemless!


Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Friday, January 08, 2010

IIS Diag

Christmas has passed and the new year is here, I wish you all a happy and prosperous new year with lots of nice Dynamics CRM business!

We have had some issues with an IIS (Internet Information Server) concerning authentication, application pools, certificates and similar. Since this is quite common and difficult to analyze there is a nice tool from Microsoft to help you with this, the IIS Diag. It can be downloaded here: http://www.microsoft.com/downloads/details.aspx?familyid=9bfa49bc-376b-4a54-95aa-73c9156706e7&displaylang=en.

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Friday, October 23, 2009

Could not find GUID for server...

Interesting error today.

All of a sudden our development server stopped working. We got the following error in CRM:
Microsoft CRM Error Report:



Error Details:


Could not find GUID for server: CRMSERVER$


Full Stack:


[ActiveDirectoryObjectNotFoundException: The local computer is not joined to a domain or the domain cannot be contacted.]


at System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain()


at Microsoft.Crm.BusinessEntities.SecurityUtils.GetGuidFromServerName(String serverName)...
 
It seems that it was caused by the fact the the domain servers DNS was down. I have read of other causes for the same error, but make sure that the DNS service of the domain server is up and running.
 
Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Tuesday, October 20, 2009

SharePoint 2010

The NDA of the new version of SharePoint 2010 has been lifted and hence a lot of new functionality is out!

You can read a lot about it on the SharePoint Team Blog here: http://blogs.msdn.com/sharepoint/archive/2009/10/19/sharepoint-2010.aspx

From a CRM perspective, this is very interesting. The new version of CRM is rumored to have a much tighter integration with SharePoint, so from that perspective it is almost essential to learn a bit more about SharePoint.

There are some areas of SharePoint that are of special interest from a CRM perspective:
  • Enhance BI functionality including performance Point server now included in the new SharePoint
  • Business Data Catalog enhanced - an excellent tool to work with in relations to CRM
  • Enhanced Document Management - one of the weaker parts of Dynamics CRM 4 is the built in document management so integration with SharePoint in regards to document management is often used.
  • Enhanced API and development capabilities. When integration with SharePoint development is often required to create the necessary functionality. The SharePoint API is currently ok but compared to the excellent API of Dynamics CRM, it can do with an upgrade. Hopefully to the mark set by Dynamics CRM.
So that is all good news.

However, there is still one major issue from a CRM - SharePoint integration perspective that Microsoft REALLY need to address and that is the licensing issues of SharePoint users working in a very slight way with CRM data by, for instance, looking at data from a data warehouse in SharePoint with drill-down functionality. Today, all users with access to this need to have a full read only CRM license. Similarly, if there is a webpart used in SharePoint to create leads in CRM, but with no other need for access, a full CRM CAL is required for all users of the Intranet since they are employees and hence cannot use the external connector license. This is preposterous! Please Microsoft, we really like CRM, and we want to pay our dues, just make it fair!


Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

 
Logica
www.logica.com

Sunday, October 18, 2009

Strange problem with Country and Country Code

A couple of days ago I had the wierdest error. We have added some fields on Acccount and a new entity called Billing Account so that there is Contry and Country Code in both. The wierd thing was that when I opened the tab with the field, after about 1 second, the country changed to "United States" and the country code to "1". This even happened to the custom entity.

I was confused. The country code was supposed to be according to the so and so ISO standard, where Sweden is SE. Hence 1 was very incorrect. I started looking if some tired programmer might have added some javascript or similar but found nothing out of the ordinary. Then I though I'd just like to see what happens when I run IE directly from the CRM server, and praise and behold, it didn't change the field! That narrowed it down. First I thought it was google Toolbar, so I uninstalled it, but the error was still there. Then I tried running IE in InPrivate surfing and then it didn't change it! So, there must be some plugin in IE that causes it. After some uninstalling and testing I found it, Swedbank has this "e-kort" or e-card program that let's you generate a one-time VISA number, this was the program that caused this error. It is probably some program this Swedish bank has bought from some american company and it has this weird feature.

Well, that just teaches you, don't install a lot of crap into IE. :)

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Create replacement entities

Sometimes, using a standard entity like product or invoice might not be the most optimal choice. Often due to the fact that there is quite a lot of business logic built into these entities. Therefore it is somtimes better to create you own entity instead. However, if you try to create a new entity with the name "Product" you will notice that it cannot be done since there already is an entity with that displayname.

The solution is quite simple, change the displayname of the built in product to "Old product" and remove all rights for all users to it and it will disapear for all normal users. You can then create your new entity with the displayname "Product".

Gustaf Westerlund
Microsoft Dynamics CRM Architect

Logica
www.logica.com

Friday, October 16, 2009

CRM Customization Manager

My colleague Daniel Halan, has developed a very useful tool for handling customization files. As you might know, the standard tool for this is a bit limited so there is a need for this kind of tool.

Daniel writes a bit more about it on his blog: http://blog.halan.se/post/CRM-Customization-Manager.aspx



Gustaf Westerlund
Microsoft Dynamics CRM Architect

Logica
www.logica.com

Friday, October 02, 2009

Off topic: P1i playlist creator

This is a bit off topic but I thought that some of you might be interested anyway. If you don't have a Sony Ericsson P1i or similar, you can stop reading now.

I like to listen to audio books on my Sony Ericsson P1i but it is a bit problematic since the phone doesn't support normal playlists with relative addresses and you cannot select a directory and play all files in the directory either. This is problematic when you have an audio book that you have ripped from your bought CD box since you don't want to play the tracks in any order.

The phone also requires the absolute path of the playlist to use the drive "D:" and nothing else. This is very strange and I think it is a big flaw with an otherwise good phone.

To ease my troubles I created a small program that can create the m3u files in the correct format to support the P1i and I don't see any reason why I shouldn't share it since it only took an hour or two to create.

Just copy the directory with the mp3:s to the memory stick and run the program and select the directory and enter a fitting name for the m3u file and click run. The m3u file is created. Enjoy.

http://www.westerlund.info/files/P1iM3UMaker.zip

Not much CRM or SharePoint but it's free! Right?

Gustaf Westerlund
Microsoft Dynamics CRM Architect

Logica
www.logica.com