"Always start with where the error is, then what the error is" I am MVP, founder and CTO at CRM-Konsulterna AB a company specializing in only Microsoft Dynamics CRM.
Wednesday, February 13, 2008
SQL error when importing customization.xml
Well, things only got worse when I tried to access CRM with the common url, I got a really nasty error saying that some custom attribute wasn't at all like some other custom attribute. No dah, my worst fears just got real and I could only face the fact that the CRM meta database had somehow become corrupt. Really bad, testing was supposed to begin today, so really bad timing (and timeplan).
So, what to do? Since I couldn't access CRM I couldn't get to the import cusomtizations page, so I had a look in the SDK for the direct URL to the import customizations page (it is under sitemap customizations). I tried to reimport the customizations file from my development server, only to find that CRM now found the xml "malformed" in this file. After some testing, I found that it acctually found all customizations files to be malformed, not only the first one. So, something really sinister is at hand. Time to log into the SQL-Server.
The first message that faced me was that one of the drives had to litte disk space... I had a look and found that the main data disk had only 2 MB free. So, this was probably it. First, there probably hadn't been space enough for commiting all the changes that were in the new customization file and then there hadn't been space enough to upload the new customizations file. The error message of mal-formed xml had just been an erroneous error message.
So, I freed some space on the disk and just to be sure, I re-installed CRM entirely (it was just a test environment after all) and imported the customization file, and all went well!
Well, there was acctually one thing, when I imported the customization file I got an error saying that at some row XXX in the file there was something wrong. At the specific row, was a tag for setting "displayInApplication" or something like that for the entity "Bulk Operation". I tried to remove the tag and import it, which worked. I later remembered that I hadn't installed Update Rollup 2, which I later confirmed was the cause of this error. I had exported from a CRM 3 UR2 system and imported into a standard CRM 3, hence the error. So, I would suggest not removing the tag but instead updateing your CRM :).
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Installation of Virtual Server 2005 R2
Not so easy. I connected with remote desktop and tried to install virtual server, but I just couldn't get it to work properly, so I went out on the net and looked for a solution.
The result was that I found that you cannot install or run the virtual server web interface using remote desktop if you do not connect as "console". Weird, but that's what I found.
So, how to connect with remote desktop as "console" (that is ID 0). If you like your command prompt, you'll know that Remote Desktop is called "mstsc" just, use that with the switch "/console" and you will connect as console.
Personally I like to make things simple, why I have made a small bat-file with the following content:
mstsc %1 /console
Then I just drag-n-drop my rdp-file ontop of the batfile. This will result in a console connection to the server set in the rdp-file.
I hope this helps!
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Friday, February 08, 2008
Jonas Deibes pictures and Q&A from the CRM 4.0 launch
http://blogs.msdn.com/jonasd/archive/2008/02/07/blog-corner-report-from-the-swedish-crm-4-0-release.aspx
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
CRM 4.0 launch and more...
At the launch there was a blog corner where both Jonas Deibe and Michael Höhne were answering questions and drinking som coke. I took the opportunity to have a look at Michael's (http://www.stunnware.com/crm2/) filtered Lookup a bit closer. I had read some about it on his page and it is really a great piece of software. In short it enables filtering of lookups and in CRM even the intellisense. It is not yet fully supported by Microsoft, but Michael mentioned that it soon will be.
I also got the opportunity to talk to Jonas Deibe a bit and we talked mainly on what the differences in developing extensions are between CRM 3 and 4.0. I will go deeper into some of this in later postings.
I also got meet some of my Microsoft Dynamics CRM friends from Cybernetics, Cinteros, SysTeam and of course, Microsoft Sweden. I hope we'll meet again soon.
As I have described earlier, we at WM-Data (Will formally be named Logica from feb 27:th) are so busy at the moment that we have to de prioritize some customers, which I find very sad, since I don't like to disappoint anyone in general and customers, in particular. So, if you are a good Microsoft CRM developer and interested in working with really big customers with very interesting projects, concerning complex integration and other interesting customizations in an international organization that is really employee-friendly, please contact me and we can have a chat! My office is in Stockholm, but Logica has offices all over Europe and even in India (Bangalore).
Thats that for this time, hope to be back soon!
Stay in touch!
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Friday, January 25, 2008
Adding SQL Reporting Services reports to CRM
The part that is the major deviation from normal SQL RS work, is how to deploy reports. Even though normal deployment might seem to work, the report won't be recognized by CRM properly.
So, what do you need to do?
1. Create a report that does NOT use a Shared Datasource. Instead create an embedded datasource called CRM that connects to the CRM database server. If you are going to use the Filtered Views, you have to use Windows Authentication. Save and build the new report (DO NOT deploy to the server).
2. Open CRM, Go to "Workplace" and select "Reports". Click "New" in the list. You will see a form where you can select the rdl-file and also select where in CRM the report will be available. Select the rdl-file that resides in the VS Project folder. Press Save.
If, at this point, you had used a Shared Data Source, you would be getting a very complicated error, as described by Menno here: http://blogs.msdn.com/mscrmfreak/archive/2006/04/27/584595.aspx
If all went well, the report will be uploaded correctly.
When uploading the report, CRM will replace the datasource in the rdl with the standard shared datasource. So, your report will still be movable.
Also, when uploading reports like this, CRM will hide all parameters starting with "CRM_". There are several parameters that CRM will fill with data for you if they exisit. For instance the parameter "CRM_URL" will be set to "http://
Please note that all deployment of reports to CRM should be done in this manner and never directly from Report Designer. This is a bit of a hazzle since it is a bit tedious compared to just deploying from the Report Designer.
In CRM 4 there is a very nice wizard in the application for generating reports, even though it is not nearly as advanced as the report designer.
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Thursday, January 24, 2008
Integration basics
As I have been writing, I am currently involved in a rather large integration project. For those of you who don't have experience of working with larger integration projects I would like to just share my view of how to set up the architecture connecting Microsoft Dynamcis CRM with the integration engine (BizTalk, WebSphere, Sonic and more). Bellow, I will refer to the Integration Engine, simply as "the Bus"First of all, communication with the bus can be divided into two different classes:
- CRM Initiated Communication
- Bus initiated communication
In the picture to the right, these two are represented with a connection each (connection 1 = CRM Initiated Communication, connection 2 = bus initiated communication)
CRM initiated communication might be considered the simplest, since it mainly controlled from CRM. It can be code that runs from aspx-pages, callouts/plug-ins or workflow addons. It simply consumes the webservice at the CRM adapter on the bus.
Bus initiated communication is set up by the bus consuming a customly created web service. This "proxy" webservice translates from integrationmessages and datastructures to CRM native communication.
Integration is then definied by defining messages that uses either connection 1 or 2. Each message has two parts, Request and Response, and the response is the syncronous answer to the request. Assyncronous messages should be set up as two individual messages one for each adapter.
So, why create a proxy web service? Why cannot the bus connect directly to the CRM web service? The reason for this is usually that the communication is defined using messages (as described above) and the person responsible for the CRM Adapter on the bus cannot be expected to have any CRM knowledge in general or specificly CRM Webservice knowledge, hence that is the CRM developers job.
These are some of my experiences and reflections on integration with a centralized integration architecture. If you have any comments or you have some other method that you use, please leave a comment, so that we can discuss it further.
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Wednesday, January 09, 2008
Busy, busy + SDK
Personally, I havn't had much time to dig into CRM 4.0 yet but I noticed that the SDK has been released. You can find it here: http://www.microsoft.com/downloads/details.aspx?FamilyId=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&displaylang=en
Happy coding!
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Thursday, December 20, 2007
CRM 4.0 Trial ready for download
I would also like to point out that there are (at least) three different media types in general released from Microsoft.
MSDN - Can use MSDN or Trial keys.
Normal - Can use Trial or "Normal" license keys.
Volume Licence - Can only use volume license keys. If you want a trial, use it for a maximum of 90 days and uninstall it.
This is important when installing a trial environment that might be upgraded to production environment in the future at a customer. Consideration has to be taken to their current license agreement with Microsoft, and you can never use the MSDN media to install a production server.
There might be exceptions to this rule, for instance, a MSDN media might accept a normal license key, but I would not expect it.
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Friday, December 07, 2007
Problems with ViewState in aspx page residing in Virtual Directory beneith MS CRM
Well, my code used ViewState to store some data between requests and this had worked fine on my local machine. But, when I moved it to the virtual directory bellow the CRM site, the ViewState handling stopped. I tried to override the LoadViewState-method but it was never fired. I tried to explicitly set the page to have the property EnableViewState = true, but that didn't help either.
Then I remembered some things about how settings are inherited from the master website to all virtual directories bellow (i.e. the web.config settings are inherited). This is the reason for why you have to add some <remove assembly="...">tags to the virtual directory's web.config when deploying bellow the CRM website.
I thought that there might be some swith in the CRM web.config that disabled the ViewState and there was; the tag I found was the following:
<pages buffer="true" enablesessionstate="false" enableviewstate="false" validaterequest="false">
So, I copied the entire tag to the web.config in the virtual directory, changed enableviewstate="true" and magic, it worked!
So, specific advice: This is why viewstate might not be working in a Virtual Directory bellow the CRM site.
General advice: All settings in a websites web.config are automatically inherited to all virtual directories bellow. If you want to change anything, set this explictly in a local copy of web.config.
Over and out.
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Friday, November 30, 2007
WebServiceStudio 2.0
A good thought but does, however, seem to have it's limitation. To be able to thoroughly understand the communication between the client and webservice a good program is needed that can help you study how the web service works and how the SOAP-messages are sent and received.
When working in a .NET environment, a .NET based client is very advantageous and a business partner of mine at the company Lemontree, Oskar Mattsson, suggested a very good application. I havn't had time to try it out fully yet, but it is also a GotDotNet-project so you can also read the code of how it is doing it's calls.
The name of the program is WebServiceStudio 2.0 and you can download it here:
here
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Thursday, November 29, 2007
Fake lookups = unsupported
When I was at convergence I asked this explicit question to, I think it was, Clint Warriner (CRM Escalation Engineer at Microsoft Support) and he gave me confirmation on what I had suspected, that these customizations are not supported. They fall under the last point concerning unsupported customizations described in the SDK:
"The use of custom HttpModules to inject HTML/DHTML into the Microsoft CRM Forms."
Since the HTML DOM is modified, this is not supported.
The reason for this is most probably that Microsoft might choose to change this in future releases of CRM (for instance CRM 4.0) and might also have internal scripting references to objects they expect to be there according to the standard HTML DOM.
I don't know if these fake lookups will upgrade from CRM 3.0 to 4.0 without problems. If you have any experience of it, please let me know.
If you have any comments on this subject, please feel free to comment bellow. I always publish comments that concern the subject and are not directly offensive. (I have activeted moderation on comments just to avoid comment spamming).
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Problems consuming webservices when developing locally
Presently I am working in an integration project with an integration engine and needed to consume one of it's webservices. I did so and I added some code to handle it (intellisense working fine) but when I tried to run it, it crashed on the constructor or the service class with the following error:
System.IO.FileNotFoundException: File or assembly name gvy6umsk.dll, or one
of its dependencies, was not found.
There was also a reference to the Windows\Temp-directory. The filename is obviously some temporary filename for the proxy-object.
After checking the web a bit, I found the error to be caused by the fact that the user running the software, did not have read/write access to the c:\windows\temp directory. I fixed it and the program ran like it should!
So, if you are in the same situation, just fix the right for the windows\temp directory and you should be fine.
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Friday, November 23, 2007
Great solution concerning javascript include files
http://www.stunnware.com/crm2/topic.aspx?id=JS18
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
CRM License specification
I have also been involved in some discussions concerning what the specifics of the external connection licese are. The following URL describes the details of this for CRM (and also other products). Please have a look:
http://www.microsoftvolumelicensing.com/userights/ProductPage.aspx?pid=161
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Monday, November 19, 2007
ASP page LifeCycle
In order to do this properly, it is vital to understand the execution model of aspx-pages and the lifecycle of the page. I found this page that describes this, in an easy and understandable fashion. Please review it, if you are in similar needs as I.
http://www.15seconds.com/issue/020102.htm
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Thursday, November 08, 2007
Nice video of Microsoft CRM use!
Check it out!
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
WM-Data/Logica CMG
www.logicacmg.com
Wednesday, November 07, 2007
Problems with Aug 07 VPC
Menno has written some about this on his blog, please read it. http://blogs.msdn.com/mscrmfreak/archive/2007/11/02/august-2007-vpc-fix.aspx
I personally liked "Method 1" described in the references KB-article. The details are described bellow. I have tested it for 5 minutes and it seems to be working. Here is a copy of the text:
Method 1: Disable the loopback check
Follow these steps:
1.
Click Start, click Run, type regedit, and then click OK.
2.
In Registry Editor, locate and then click the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
3.
Right-click Lsa, point to New, and then click DWORD Value.
4.
Type DisableLoopbackCheck, and then press ENTER.
5.
Right-click DisableLoopbackCheck, and then click Modify.
6.
In the Value data box, type 1, and then click OK.
7.
Quit Registry Editor, and then restart your computer.
Gustaf Westerlund
Microsoft Dynamics CRM Consultant
Logica CMG
www.logicacmg.com
Tuesday, November 06, 2007
Installed at Logica and a bit about CRM and Mobility
At Convergence, I had the opportunity to browse around and talk to some of the ISV (Independent Software Vendors) that supply 3:rd party addons for Microsoft CRM. One of the companies I found was CWR Mobility that have developed a very competent mobile client for Microsoft CRM 3 (and soon 4). It is a much more mature product (from what I could judge) than the normal Mobile Client, and it supports sometimes-connected scenarios and offline sync, as well as an offline SDK. So, if you are facing a customer with mobility demands, be sure to check out their products.
Gustaf Westerlund
CRM Consultant
Logica CMG
www.logicacmg.com
Wednesday, October 31, 2007
In general the same licensing limitations apply as I described in my previous post. The new "light"-userlicense I described bellow will be a read-only user license with a reduced price. The external connector will also be available at a substanially lower cost.
However, we found some technical workarounds that the Microsoft representative actually said were ok but I havn't asked a Microsoft sales rep and I don't know if I should...
If you want to create dynamic reports based on CRM data, what you must do is to replicate all the data that you want to base your reports on to your own database. Then create all the reports based on this database, which can be called datawarehouse or something similar.
The same "intermediary" database can also be used when you have, for instance, an internal support page where you can submit your support issue, which is then added to the CRM as a Service case. Let the application write to a database and then create an service that periodically (like every minute or so) reads the new data, and writes to the CRM webservice. There are other similar ways of doing this (like sending emails from the form to a support que) and I think you get the general idea.
The legal workaround using a subsidary company with an external connector license is also valid, but will require you to buy the external connector which has a non trivial price.
I feel this is very strange, that you using a technical solution can bypass some licensing rules that actually should be changed.
Gustaf Westerlund
CRM and SharePoint Consultant
Humandata AB
www.humandata.se
Tuesday, October 30, 2007
Licensing of CRM and external software
According to what I have heard, it boils down to the fact that a user license is required for all users who interact with the data in any way. This means that no user license is required for a static report displayed in, for instance, SharePoint, but, as soon as there is any interactivity with the data, as for instance, drill down, a separate user license is needed.
So, if you want to display data in SharePoint that comes in whole, or part, from the CRM-database, make sure it is a static report, so that no special user license is required. Creating a report (with for instance SQL Reporting Services) that has drill-down, will require each user to have a user license.
This rises the question of what kind of licensing is needed to access OLAP cubes that are assembled from a data warehouse based on data from many different system, among these, Microsoft CRM. As far as I have understood a full user license is required for all users who can access the OLAP-cubes.
This issue will probably change in CRM 4.0 when there will be a new "light-user-license". Exactly what this means is still unclear and I have heard no details from Microsoft.
When creating any outside interaction with CRM, like a web based tool for submitting service cases, the separate "External Connector" license is needed. This is independant of the magnitude of the application or number of external users (company employees cannot use the external connector). It is also independant of if each user actually uses a named user or some common system user. I am unsure of the exact price for the external connector, but I believe it is somewhere around $40 000.
So, what does this mean for CRM-developers? That we have to have some basic understanding of the licensing modell and what limitations there are to it, so that our customers don't have to pay unnecessary license fees just because we thought that drill-down was a nifty feature in our report that is published on a SharePoint portal.
As many of you, I think these limitations are non benificial for Microsoft since they greatly restrict the possibilities of creating nice Mash-up applications and portals, something Microsoft technology is very good at and something I would view as a great advantage in comparison to Microsofts competitors.
I would also like to point out that I might be wrong in understanding some of these details, and I would be greatful if you could leave a comment if you know or think that I might have understood something wrong.
Gustaf Westerlund
CRM and SharePoint Consultant
Humandata AB / Soon Logica CMG/WM-Data
www.humandata.se