<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Oh my god ... not another MS CRM blog</title>
        <link>http://geekswithblogs.net/guentersblog/Default.aspx</link>
        <description>Guenter vs. MSCRM</description>
        <language>en-US</language>
        <copyright>Guenter Wallnoefer</copyright>
        <managingEditor>guenter@wallnoefer.at</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Oh my god ... not another MS CRM blog</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/guentersblog/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Goodbye CRM</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2007/12/22/117939.aspx</link>
            <description>It's been a while since my last post ... in fact more than a year. &lt;br /&gt;
&lt;br /&gt;
A lot changed for me since then. One of the main changes is that my struggle with CRM has ended and I've switched to developing with sharepoint. The main reason for that is that I changed my employer. I will now work exclusively  with Sharepoint, MOSS and its WCM features. This is something very new and exciting for me. I really enjoy it since I got a little bored with MS CRM (and with my former company but that is a different story). &lt;br /&gt;
&lt;br /&gt;
I will not delete this blog, but use it to let you know if I have anything interesting to write about my work with Sharepoint. But I guess since I'm a newbie with sharepoint there will be not much to say for the time being.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117939"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117939" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/117939.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2007/12/22/117939.aspx</guid>
            <pubDate>Sun, 23 Dec 2007 10:46:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/117939.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2007/12/22/117939.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/117939.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/117939.aspx</trackback:ping>
        </item>
        <item>
            <title>Change in MBS Master Requirements</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/08/01/86767.aspx</link>
            <description>&lt;P&gt;Since July 1st Microsoft Dynamics aka MBS changed the requirements for CRM Master Certifications. Have a look here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/learning/mcp/mct/guide/MBS_qualifiers.mspx"&gt;http://www.microsoft.com/learning/mcp/mct/guide/MBS_qualifiers.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you have partner access you can also have a look here:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://mbs.microsoft.com/partnersource/communities/training/Certifications/master.htm"&gt;https://mbs.microsoft.com/partnersource/communities/training/Certifications/master.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Maybe you are a MBS CRM Master and don't know it yet. :-)&lt;/P&gt;
&lt;P&gt;Now you don't need to have the Exchange Certification anymore to get the MBS Master for CRM Installation and Configuration. For me this means that I received my third MBS Master CRM Certification, which was confirmed by MBS a few days ago.&amp;nbsp;Since I already have the MBS Master for CRM Application and Development, this means I have 'em all. :-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=86767"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=86767" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/86767.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/08/01/86767.aspx</guid>
            <pubDate>Tue, 01 Aug 2006 16:44:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/86767.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/08/01/86767.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/86767.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/86767.aspx</trackback:ping>
        </item>
        <item>
            <title>Asynchronous Ajax calls using with MS CRM 3.0 OnSave event</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/07/05/84130.aspx</link>
            <description>&lt;P&gt;Think of the following problem: You need to check some data on the server using javascript on the OnSave event of MS CRM. You would instantiate a ActiveX XMLHttp object. Next you would initialize all parameters including the onreadystatechangefunction and then send the request. The data would be returned in your onreadystatechangefunction where you could analyze it. Based on this analysis you would decide whether you would allow saving the CRM form or not. But wait a minute. You are now in your handler function and already left the scope of the OnSave handler. So there is no possibility for influencing the save behavior anymore. The problem is the asynchronous behavior of the ajax call.&lt;/P&gt;
&lt;P&gt;I tried several possible solutions, e.g. playing around with window.setTimeout to build some wait function. But nothing accomplished the behavior I wanted: &lt;/P&gt;
&lt;P&gt;1. Send the request &lt;/P&gt;
&lt;P&gt;2. Get the data &lt;/P&gt;
&lt;P&gt;3. Analyze it &lt;/P&gt;
&lt;P&gt;4. Decide whether to allow saving or not.&lt;/P&gt;
&lt;P&gt;I spend several hours thinking of a solution, but could not find any. But sometimes you have to break your own stupid way of thinking as a programmer and asking what you would call a non-programming person. I described my problem, he thought for a moment and instantly came up with the solution:&lt;/P&gt;
&lt;P&gt;1. In the OnSave event send the request and then stop saving the form by setting event.returnValue = false.&lt;BR&gt;2. In your onreadystatechangefunction receive the data, analyze it and then save the form using Save() or SaveAndClose() in your code or don't save it based on this analysis.&lt;BR&gt;3. The only thing you have to consider is that saving the form in this way will again fire the event. To avoid an infinte loop you have to set some kind of flag and analyze it before firing the request.&lt;/P&gt;
&lt;P&gt;I don't know if you will find this posting worth the reading, because you would have solved the problem this way from the beginning. But maybe there is someone out there that got stuck in his or her thinking the same way and does not have a colleague like my colleague Mario. :-)&lt;/P&gt;
&lt;P&gt;Here is some basic sketch of the code you would insert in the OnSave event:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// write the original event mode into a global variable&lt;BR&gt;eventMode=event.Mode;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// first check the flag&lt;BR&gt;if(typeof notsave!='undefined')&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;event.returnValue=true;&lt;BR&gt;&amp;nbsp;return true; &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;window.HttpReq=new ActiveXObject('Microsoft.XMLHTTP');&lt;BR&gt;if (window.HttpReq.overrideMimeType){window.HttpReq.overrideMimeType('text/xml')};&lt;BR&gt;window.HttpReq.onreadystatechange=function(){saveMyEntity();}&lt;BR&gt;window.HttpReq.open('POST', '/myurlthatdoessomething.aspx', true);&amp;nbsp;&lt;BR&gt;window.HttpReq.send();&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// the following two code lines are the important part&lt;BR&gt;event.returnValue = false;&lt;BR&gt;return false; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;function saveMyEntity()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (window.HttpReq.readyState==4)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (window.HttpReq.status==200)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;// here is the analysis of the server responce&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;res=window.HttpReq.responseXML.selectSingleNode('//check').text;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;if(res=='ok')&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;// this is the flag. it is a global variable. as an alternative bind it to the window object&lt;BR&gt;&amp;nbsp;&amp;nbsp;notsave=1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(eventMode==1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;crmForm.Save();&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;crmForm.SaveAndClose();&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert('Some freaky error message that confuses the user and leaves him completely puzzeled');&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Hf :-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=84130"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=84130" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/84130.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/07/05/84130.aspx</guid>
            <pubDate>Thu, 06 Jul 2006 01:02:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/84130.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/07/05/84130.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/84130.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/84130.aspx</trackback:ping>
        </item>
        <item>
            <title>MS CRM 3.0: Add menu items to detail forms of entities that are not supported in ISV.config</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/06/06/80932.aspx</link>
            <description>&lt;P&gt;For one of my projects I had to extend the menu of the detail form of email entitiy in MS CRM 3.0 Unfortunately I could not do this using ISV.config because it only supports a handful of entities. Email is not one of them.&lt;BR&gt;Fortunately MS CRM 3.0 supports java scripting on the onload event of the page. So I injected some new elements into the DOM to add another menu item to the actions menu. Of course this kind of HTML code injection into CRM pages is not something new, but the keypoint here is to use the "action" attribute of the table row element. I tried several possible solutions but it seems that this is the only possible solution to trigger the click event on the menu item.&lt;/P&gt;
&lt;P&gt;Figure out the details with the following code snippet:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;if(IsOnline()) // is only needed if the action has to be made online&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (crmForm.FormType==2) // i only wanted the new menu item to appear on update forms&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // first get the current emailid if needed&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str=location.href;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; erg=str.search(/id=[\{\}\dA-Fa-f\-]/);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add='';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(erg!=1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add='?' + str.substring(erg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // don't blame me vor chosing variable names - i was in a hurry :-)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trSpacer=document.createElement('tr');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trSpacer.setAttribute('class', 'mnuSpacer');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tdSpacer1=document.createElement('td');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tdSpacer2=document.createElement('td');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tdSpacer2.setAttribute('class', 'mnuSpacer');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tdSpacer2.colspan='2';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; brSpacer=document.createElement('br');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tdSpacer1.appendChild(brSpacer);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hrSpacer=document.createElement('hr');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hrSpacer.setAttribute('class', 'mnuSpacer');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tdSpacer2.appendChild(hrSpacer);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trSpacer.appendChild(tdSpacer1);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trSpacer.appendChild(tdSpacer2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tr=document.createElement('tr');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the next line is the essential part&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // you can replace it with any javascript code you want&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // i did some redirection to my custom page&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // which messes a little bit around on the server&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // and then redirects back to the page&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // of course an ajax based solution could be an alternative&lt;BR&gt;&amp;nbsp;// separate several js statements with semcolons ;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tr.action='location.replace(\'my.aspx' + add + '\');';&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td1=document.createElement('td');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td1.style.border='1px solid #dcdfe5';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td1.innerHTML='&amp;nbsp;'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td2=document.createElement('td');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td2.style.border='1px solid #ffffff';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td2.colspan='2';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; td2.innerHTML='Menu item name';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tr.appendChild(td1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tr.appendChild(td2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.getElementById('mnuaction').childNodes[1].appendChild(trSpacer);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.getElementById('mnuaction').childNodes[1].appendChild(tr);&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Maybe this is useful for someone out there. &lt;/P&gt;
&lt;P&gt;Hf :-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=80932"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=80932" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/80932.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/06/06/80932.aspx</guid>
            <pubDate>Wed, 07 Jun 2006 01:31:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/80932.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/06/06/80932.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/80932.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/80932.aspx</trackback:ping>
        </item>
        <item>
            <title>When you create a MS CRM 3.0 queue and it does not work, don't forget to ...</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/05/31/80210.aspx</link>
            <description>Ok, today I got something to laugh about for you guys out there. I don't know why it hasn't happened before, but this week was the first time I had to create a CRM queue on a new 3.0 system. So what I did was to grab my copy of CRM Installation and configuration course documents and proceed the mentioned step by step instructions. I created the user, set the correct privileges and attributes, disabled the user account and added the queue in MS CRM application. Finally I sent an email to the queue ... but nothing happened. So I checked the event logs on both Exchange and CRM servers. But there were no entries in there. After some NG and google research I played around with user privileges and registry keys, but still nothing happened. Because I had restarted IIS, Exchange Router service and Exchange itself several times, the system administrator got mad at me because MOM (MS Operations Manager) was driving him crazy with alert messages. :-)&lt;BR&gt;Of course I checked the procedure to add a queue several times, and I did it exactly as stated. In a sudden inspiration I checked the official Implementation guide and found the solution: as a last step you have to add mailbox rules to your queue user using the rule deployment wizard. It's that simple.&lt;BR&gt;There are 2 reasons why I post this here: 1. maybe there is someone out there who is also relying on the offical course documents and encountering the same situation. Hopefully he reads this and saves some time. 2. it's another lesson for me: never trust information - even if its printed and packed in a fancy white ring binder with happy looking people on the cover. :-)&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=80210"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=80210" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/80210.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/05/31/80210.aspx</guid>
            <pubDate>Wed, 31 May 2006 21:23:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/80210.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/05/31/80210.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/80210.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/80210.aspx</trackback:ping>
        </item>
        <item>
            <title>MS CRM 3.0 ExchangeSinkServiceException</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/05/23/79326.aspx</link>
            <description>&lt;P&gt;Since I encountered this exception now at 2 customer installations, I have decided to say some things about it here: I don't know why - but in both cases MS CRM Exchange Router stopped working after 2 weeks (this is no joke). Of cource users were complaining that emails didn't show up in CRM anymore. When I checked the event log, I found many error messages of the same type. They were all some kind of &lt;BR&gt;Microsoft.Crm.Tools.ExchangeConnectorService.ExchangeSinkServiceException because of unauthorized access (401). After some google and NG search I tried several workarounds like changing the service credentials, checking security groups (PrivUserGroup), giving mailbox rights, or playing around with delegation. But the only effect was that I got another ExchangeSinkServiceException. This exception stated that the email message that should be attached to CRM could not be checked. &lt;BR&gt;The next thing I did was to find out how Exchange Router and CRM process emails. It turned out the router calls a webservice on CRM server (CheckIncoming ) with the Message ID. Since the second exception was some kind of server error (500) I figured out that CRM could have problems connecting to Exchange Router email box. So I decided to run the Exchange Router Service with the credentials of the user who owns the MS CRM Exchange Router mail box (because this user should not have any problems connecting to his own mail box). I don't know if this is correct, but CRM seems to connect back to Exchange and does some checking involving the CRM tracking token (or something completely different ;-). In addition I added the user to the PrivUserGroup so that the user account has sufficient privileges to create emails in CRM. Doing that the first webservice call did work correctly. Using a second webservice (DeliverIncoming) Exchange Router then created the email in CRM.&lt;BR&gt;So if you encounter this exception and don't find a solution, try the following:&lt;/P&gt;
&lt;P&gt;1. Add the user account owning the CRM Exchange Router mail box to PrivUserGroup.&lt;BR&gt;2. Change the credentials of CRM Exchange Email Router Service to this user account.&lt;/P&gt;
&lt;P&gt;Hf ;-)&lt;/P&gt;
&lt;P&gt;P.S. I really don't know if the above explanation has something to do with reality. Probably it is complete nonsense. :-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=79326"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=79326" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/79326.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/05/23/79326.aspx</guid>
            <pubDate>Tue, 23 May 2006 23:56:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/79326.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/05/23/79326.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/79326.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/79326.aspx</trackback:ping>
        </item>
        <item>
            <title>Red Gate SQL Prompt for Free - SQL IntelliSense for your favorite SQL Editor</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/05/23/79325.aspx</link>
            <description>&lt;P&gt;Ok, it has nothing to do with MS CRM ... but it seems that everyone is blogging about this great tool today : SQL Prompt. And there is a reason for it. It is sooooooo cool. Everyone in my company is excited about this tool. And the best thing about it: it's for free ... at least until Sept. 1, 2006. If you are a database developer, I think this is a must-have:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.red-gate.com/products/SQL_Prompt/index.htm"&gt;http://www.red-gate.com/products/SQL_Prompt/index.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Hf ;-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=79325"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=79325" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/79325.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/05/23/79325.aspx</guid>
            <pubDate>Tue, 23 May 2006 23:54:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/79325.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/05/23/79325.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/79325.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/79325.aspx</trackback:ping>
        </item>
        <item>
            <title>How to programmatically access MS CRM Reports</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/05/22/79193.aspx</link>
            <description>&lt;FONT size=2&gt;
&lt;P&gt;MS CRM Reports can be accessed programmatically. But since MS CRM uses SQL Reporting Services, accessing reports is no CRM feature. Fortunately SRS exposes a webservice interface that you can use to do that. Further information can be found here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rsprog/htm/rsp_prog_intro_1pia.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rsprog/htm/rsp_prog_intro_1pia.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There are several possible use cases. E.g. if you want to trigger report creation and delivery by MS CRM workflow. For this you have to create a .NET assembly that will be used in your workflow. Next you have to add a reference to ReportServer/ReportService.asmx. You can figure out the rest looking at the following code snippet:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;reportingserver.ReportingService rs=new reportingserver.ReportingService();&lt;BR&gt;rs.Url="&lt;/FONT&gt;&lt;A href="http://yourhoust/ReportServer/ReportService.asmx"&gt;&lt;FONT face="Courier New"&gt;http://yourhoust/ReportServer/ReportService.asmx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;";&lt;BR&gt;rs.Credentials=System.Net.CredentialCache.DefaultCredentials;&lt;BR&gt;&amp;nbsp;// or: new NetworkCredential("user", "pwd", "domainname");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;byte[] result=null;&lt;BR&gt;string reportPath="/yourorganizationname/reportname"; // adapt&lt;BR&gt;string format="PDF"; // or XML, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, EXCEL, and HTMLOWC&lt;BR&gt;string historyID=null;&lt;BR&gt;string &lt;/FONT&gt;&lt;A href='mailto:devInfo=@"&lt;DeviceInfo&gt;&lt;Toolbar&gt;False&lt;/Toolbar&gt;&lt;/DeviceInfo'&gt;&lt;FONT face="Courier New"&gt;devInfo=@"&lt;DEVICEINFO&gt;&lt;TOOLBAR&gt;&lt;DEVICEINFO&gt;&lt;TOOLBAR&gt;&lt;DEVICEINFO&gt;&lt;TOOLBAR&gt;&lt;DEVICEINFO&gt;&lt;TOOLBAR&gt;&lt;FONT color=#aa0000&gt;&amp;lt;DeviceInfo&amp;gt;&amp;lt;Toolbar&amp;gt;False&amp;lt;/Toolbar&amp;gt;&amp;lt;/DeviceInfo&amp;gt;";&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ParameterValue[] parameters=null;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;DataSourceCredentials[] credentials=null;&lt;BR&gt;string showHideToggle=null;&lt;BR&gt;string encoding;&lt;BR&gt;string mimeType;&lt;BR&gt;Warning[] warnings=null;&lt;BR&gt;ParameterValue[] reportHistoryParameters=null;&lt;BR&gt;string[] streamIDs=null;&lt;BR&gt;SessionHeader sh=new SessionHeader();&lt;BR&gt;rs.SessionHeaderValue=sh;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;try&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;result=rs.Render(reportPath, format, historyID, devInfo, parameters, credentials, &lt;BR&gt;&amp;nbsp;&amp;nbsp;showHideToggle, out encoding, out mimeType, out reportHistoryParameters, out warnings,&lt;BR&gt;&amp;nbsp;&amp;nbsp;out streamIDs);&lt;BR&gt;}&lt;BR&gt;catch(SoapException e)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// ...&amp;nbsp;&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// Write the contents of the report to a PDF file and mail it&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;try&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;string filename=Path.Combine(Path.GetTempPath(), "report.pdf");&lt;BR&gt;&amp;nbsp;FileStream stream=File.Create(filename, result.Length);&lt;BR&gt;&amp;nbsp;stream.Write(result, 0, result.Length);&lt;BR&gt;&amp;nbsp;stream.Close();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;MailMessage mm=new MailMessage();&lt;BR&gt;&amp;nbsp;mm.To="&lt;/FONT&gt;&lt;A href="mailto:whoever@wants.it"&gt;&lt;FONT face="Courier New"&gt;whoever@wants.it&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;";&amp;nbsp;&lt;BR&gt;&amp;nbsp;mm.From="&lt;/FONT&gt;&lt;A href="mailto:reports@crm.com"&gt;&lt;FONT face="Courier New"&gt;reports@crm.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;";&lt;BR&gt;&amp;nbsp;mm.Subject="Report";&lt;BR&gt;&amp;nbsp;mm.Body="... bla ... ";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;MailAttachment att=new MailAttachment(filename);&lt;BR&gt;&amp;nbsp;mm.Attachments.Add(att);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;SmtpMail.Send(mm);&lt;BR&gt;}&lt;BR&gt;catch ( Exception e )&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// ...&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman"&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Hf :-)&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=79193"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=79193" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/79193.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/05/22/79193.aspx</guid>
            <pubDate>Tue, 23 May 2006 00:43:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/79193.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/05/22/79193.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/79193.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/79193.aspx</trackback:ping>
        </item>
        <item>
            <title>MS CRM workflow: use unsigned assemblies</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/04/26/76425.aspx</link>
            <description>&lt;P&gt;There is no need to use strong named assemblies in your MS CRM workflow processes. If you want to use unsigned assemblies, you just have to add&amp;nbsp;&lt;STRONG&gt;allowunsignedassemblies&lt;/STRONG&gt; to the root element of workflow.config: &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;workflow.config xmlns="http://microsoft.com/mscrm/workflow/" allowunsignedassemblies="true"&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;WORKFLOW.CONFIG allowunsignedassemblies="true" xmlns="http://microsoft.com/mscrm/workflow/"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;WORKFLOW.CONFIG allowunsignedassemblies="true" xmlns="http://microsoft.com/mscrm/workflow/"&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;WORKFLOW.CONFIG allowunsignedassemblies="true" xmlns="http://microsoft.com/mscrm/workflow/"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Of course&amp;nbsp;this is mentioned in the SDK. But since people keep asking&amp;nbsp;this in newsgroups, I thought I could point it out here for those who don't know.&lt;/P&gt;
&lt;P&gt;Hf ;-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=76425"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=76425" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/76425.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/04/26/76425.aspx</guid>
            <pubDate>Thu, 27 Apr 2006 00:28:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/76425.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/04/26/76425.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/76425.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/76425.aspx</trackback:ping>
        </item>
        <item>
            <title>MSCRM 3.0 + Reporting Services + Cannot create a connection to data source + rsProcessingAborted + rsErrorOpeningConnection</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/04/21/75772.aspx</link>
            <description>&lt;P&gt;When you open Reports from within MS CRM 3.0 after installation, it is possible to receive an error stating something like "An error has occurred during report processing. (rsProcessingAborted) Cannot create a connection to data source 'xxx'. (rsErrorOpeningConnection)". The solution to this error is not easy because there are many possible reasons. Since I encountered this error several times now,&amp;nbsp; I developed a solution strategy that works for me. Since there are also other peoples encountering these problems, I decided to post this solution here. But use this at your own risk!&lt;/P&gt;
&lt;P&gt;Step 1:&lt;/P&gt;
&lt;P&gt;If CRM Server and SQL Server are running on two different servers, you should check if both servers are in "Pre-Windows 2000 Compatible Access" group. If not, add them.&lt;/P&gt;
&lt;P&gt;Step 2:&lt;/P&gt;
&lt;P&gt;Open AD Users and Computers MMC Snap-In (dsa.msc) and search for CRM server. Select properties and then click on Delegation tab. Make sure the option "Trust this computer for delegation to specified services only" is selected. If it doesn't exist, add SQL Service from your SQL Server below (Mssqlsvc usually on port 1433). If the service is not listed you must add a SPN. If you don't know how to do that, you may take a look here (or go to Step 6):&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad_security_2gmm.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad_security_2gmm.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Step 3:&lt;/P&gt;
&lt;P&gt;If there are multiple DCs, force replication.&lt;/P&gt;
&lt;P&gt;Step 4:&lt;/P&gt;
&lt;P&gt;Wait a little bit, drink some coffee, take a nap. :-)&lt;/P&gt;
&lt;P&gt;Step 5:&lt;/P&gt;
&lt;P&gt;Check if reports work. If yes, stop here. If not, proceed to Step 6.&lt;/P&gt;
&lt;P&gt;Step 6:&lt;/P&gt;
&lt;P&gt;Open up SRS Report Manager. Usually it is installed on CRM Server in the virtual directory "Reports", so open IE and type "&lt;A href="http://&lt;CRM"&gt;http://&amp;lt;CRM&lt;/A&gt; server URL and port&amp;gt;/Reports". Then choose your organization and click on "Show details". In the list search for the data source. It should be named "MSCRM_Datasource" or something like that. Click it and look at the connectionstring. Make sure it points to the correct CRM databases containing your organization name. In addition make sure "Connect using Windows NT Integrated Security" is checked. If you changed something go to Step 5. If you didn't change anything proceed to Step 7.&lt;/P&gt;
&lt;P&gt;Step 7:&lt;/P&gt;
&lt;P&gt;If your SQL Server runs with Windows Authentication only (which it should): Create a user account in AD with a password that does not change. Then you have several possibilities: you may add this user to AD "SQLAccessGroup" or you may add a specific login to SQL Server for this user and add this login to CRM databases. Choose db_owner for database roles (these are the roles for the MS CRM standard logins, so don't blame me). Then go back to SRS Report Manager and manipulate the data source. Choose "Connect using Credentials stored securely in the report server", enter the credentials and check "Use as windows credentials when connecting to the database".&lt;BR&gt;If your SQL Server is running in mixed mode (which it should not), you do not have to create a user account in AD. You are able to create a SQL login and use this. Add this login to the correct databases and roles (see above). Using SQL login you must NOT check "Use as windows credentials when connecting to the database".&lt;BR&gt;In both cases also check "Impersonate the authenticated user after a connection has been made to the database". This is very important for CRM security mechanisms! &lt;/P&gt;
&lt;P&gt;Step 8:&lt;/P&gt;
&lt;P&gt;Reports should work now. I didn't encounter a situation where this did not function. Please be aware that Step 7 is not a real solution, but it works.&lt;/P&gt;
&lt;P&gt;Have fun ;-)&lt;/P&gt;
&lt;P&gt;P.S. If you have problems understanding how to perform any of those steps, ask your system administrator or database administrator for assistance. Right know I don't have the time to explain it in more detail or add some screenshots (weekend is near). &lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=75772"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=75772" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/75772.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/04/21/75772.aspx</guid>
            <pubDate>Fri, 21 Apr 2006 21:46:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/75772.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/04/21/75772.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/75772.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/75772.aspx</trackback:ping>
        </item>
        <item>
            <title>How to manipulate Lookup fields in CRM URL addressable forms from another window</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/04/18/75452.aspx</link>
            <description>&lt;P&gt;CRM has a quite cool feature that can save you a lot of programming: URL addressable forms. If you want to let users create or update records, you can use the CRM standard forms. The only thing you have to do: open an new window with the specific URL. If you want to edit a record, you only have to append the id of the specific record. In edition you are able to manipulate every form field in the new window and pre-fill them. (I do not mention x-domain-scripting here).&lt;/P&gt;
&lt;P&gt;If you want to manipulate lookup fields, you have to do this in a special way to make it work. I did not find it anywhere, so I will post here how to do it. Just look at the following JS snippet to figure out how. In the following example the source campaign of a new lead record is pre-filled:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;var newwin;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// first you have to open an new window. call the following function from anywhere on your web page&lt;BR&gt;function OpenNewLead()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;newwin=window.open('/sfa/leads/edit.aspx', 'newlead', &lt;BR&gt;&amp;nbsp;&amp;nbsp;'width=830,height=600,directories=no,menubar=no,resizable=yes,titlebar=no,toolbar=no');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;window.setTimeout("PreFillSourceCampaign()", 1000);&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;function PreFillSourceCampaign()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;if(!newwin.document.crmForm.all.campaignid.DataValue)&lt;BR&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;var ar=new Array(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;ar[0]=new Object;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;ar[0].id='{00000000-0000-0000-0000-000000000000}'; // fill in here the correct GUID of your object&lt;BR&gt;&amp;nbsp;&amp;nbsp;ar[0].type='4400'; // adapt the typecode for your entity type&lt;BR&gt;&amp;nbsp;&amp;nbsp;ar[0].name='My Campaign Name';&amp;nbsp;&amp;nbsp; // adapt the correct object name&lt;BR&gt;&amp;nbsp;&amp;nbsp;newwin.document.crmForm.all.campaignid.DataValue=ar;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;window.setTimeout("PreFillSourceCampaign()", 1000);&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;P.S. I use window.setTimeout here to make sure the DOM of the new child window is loaded before I manipulate the field.&lt;/P&gt;
&lt;P&gt;Have fun! :-)&lt;BR&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=75452"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=75452" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/75452.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/04/18/75452.aspx</guid>
            <pubDate>Tue, 18 Apr 2006 22:05:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/75452.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/04/18/75452.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/75452.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/75452.aspx</trackback:ping>
        </item>
        <item>
            <title>Programmatically change SiteMap XML or any other entity or ISV.config using MS CRM 3.0 web services (supported version)</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/03/31/73935.aspx</link>
            <description>&lt;P&gt;Since Jeffry van de Vuurst pointed out that there is a supported way to achieve manipulating SiteMap XML, ISV.config, Entity manipulation, etc. (thanks for mentioning it) and I have some time, I will update the little code snippet I posted in a previous post. Please use this version. Additional information can be found in the new SDK 3.0.4 (ISV Programming Guide).&lt;/P&gt;
&lt;P&gt;To run this code you have to reference all the helper classes found in the new SDK 3.0.4 in the sdk samples\isvreadiness sub folder.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;CrmService service=new CrmService();&lt;BR&gt;service.Url="&lt;/FONT&gt;&lt;A href="http://localhost/mscrmservices/2006/crmservice.asmx"&gt;&lt;FONT face="Courier New"&gt;http://localhost/mscrmservices/2006/crmservice.asmx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;";&lt;BR&gt;service.Credentials=System.Net.CredentialCache.DefaultCredentials; &lt;BR&gt;ExportXmlRequest export=new ExportXmlRequest();&lt;BR&gt;export.ParameterXml="&amp;lt;export&amp;gt;&amp;lt;entities&amp;gt;&amp;lt;/entities&amp;gt;&amp;lt;nodes&amp;gt;&amp;lt;node&amp;gt;sitemap&amp;lt;/node&amp;gt;&amp;lt;/nodes&amp;gt;&amp;lt;/export&amp;gt;";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ExportXmlResponse entities = (ExportXmlResponse)service.Execute(export);&lt;BR&gt;XmlDocument siteMapXml=new XmlDocument();&lt;BR&gt;siteMapXml.PreserveWhitespace=true;&lt;BR&gt;siteMapXml.LoadXml(entities.ExportXml);&lt;BR&gt;Microsoft.Crm.Sdk.IsvReadiness.SiteMapCustomizer siteMapEditor=&lt;BR&gt;&amp;nbsp;new Microsoft.Crm.Sdk.IsvReadiness.SiteMapCustomizer(siteMapXml);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.SiteMap.SubArea subArea=&lt;BR&gt;&amp;nbsp;new Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.SiteMap.SubArea();&lt;BR&gt;subArea.Id="nav_sometest";&lt;BR&gt;subArea.Title="Click me for happiness";&lt;BR&gt;subArea.Icon="some.gif";&lt;BR&gt;subArea.Url="/someurl.aspx";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;siteMapEditor.AddSubArea("Settings", "Settings", subArea);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ImportXmlRequest import=new ImportXmlRequest();&lt;BR&gt;import.ParameterXml="&amp;lt;import&amp;gt;&amp;lt;entities&amp;gt;&amp;lt;/entities&amp;gt;&amp;lt;nodes&amp;gt;&amp;lt;node&amp;gt;sitemap&amp;lt;/node&amp;gt;&amp;lt;/nodes&amp;gt;&amp;lt;/import&amp;gt;";&lt;BR&gt;import.CustomizationXml=siteMapXml.OuterXml;&lt;BR&gt;service.Execute(import);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Please make sure you also add the correct using statements for the web service.&lt;/P&gt;
&lt;P&gt;Hf :-)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=73935"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=73935" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/73935.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/03/31/73935.aspx</guid>
            <pubDate>Fri, 31 Mar 2006 22:08:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/73935.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/03/31/73935.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/73935.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/73935.aspx</trackback:ping>
        </item>
        <item>
            <title>Programmatically change SiteMap XML or any other entity or ISV.config using MS CRM 3.0 web services</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/03/14/72249.aspx</link>
            <description>&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;IMPORTANT: You should look at the comment posted by &lt;/FONT&gt;&lt;/STRONG&gt;&lt;A id=Comments.ascx_CommentList__ctl0_NameLink href="http://www.cwrmobility.com/weblog" target=_blank&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Jeffry van de Vuurst&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt; first. In the meantime there&amp;nbsp;was a supported way added to SDK 3.0.4&amp;nbsp;which describes to change entities, ISV.config, ...&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SiteMap XML is a really cool new feature in MS CRM 3.0. The most exciting thing for me is the ability to restrict access to Areas of the SiteMap by specific privileges in MS CRM. In most cases you would modify the SiteMap XML using the supported way by manually exporting, modifying and then importing the XML using the MS CRM UI. But there may be cases when you need to do this programmatically (e.g. using an installer). And there is a way ... but it's not documented in the SDK (at least I didn't find it). So this is totally unsupported and you must use it on your own risk blabla. &lt;BR&gt;There are two web services used for this located in MSCRMServices: ExportXmlWebService and ImportXmlWebService. Just look at the code sample to figure out how to do it:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ExportXmlWebService exportService=new ExportXmlWebService();&lt;BR&gt;exportService.Credentials=System.Net.CredentialCache.DefaultCredentials;&amp;nbsp;&amp;nbsp; &lt;BR&gt;exportService.Url="&lt;/FONT&gt;&lt;A href="http://localhost/mscrmservices/exportxml.asmx"&gt;&lt;FONT face="Courier New"&gt;http://localhost/mscrmservices/exportxml.asmx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// get the sitemap xml&lt;BR&gt;XmlDocument sitemapDoc=new XmlDocument();&lt;BR&gt;sitemapDoc.LoadXml(&lt;BR&gt;&amp;nbsp;exportService.Export("&amp;lt;export&amp;gt;&amp;lt;entities&amp;gt;&amp;lt;/entities&amp;gt;&amp;lt;nodes&amp;gt;&amp;lt;node&amp;gt;sitemap&amp;lt;/node&amp;gt;&amp;lt;/nodes&amp;gt;&amp;lt;/export&amp;gt;")&lt;BR&gt;);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;// add new sub area&lt;BR&gt;XmlElement subArea=sitemapDoc.CreateElement("SubArea");&lt;BR&gt;XmlAttribute attrId=sitemapDoc.CreateAttribute("Id");&lt;BR&gt;attrId.Value="nav_sometest";&lt;BR&gt;XmlAttribute attrTitle=sitemapDoc.CreateAttribute("Title");&lt;BR&gt;attrTitle.Value="Click me for happiness";&lt;BR&gt;XmlAttribute attrIcon=sitemapDoc.CreateAttribute("Icon");&lt;BR&gt;attrIcon.Value="some.gif";&lt;BR&gt;XmlAttribute attrUrl=sitemapDoc.CreateAttribute("Url");&lt;BR&gt;attrUrl.Value="/someurl.aspx";&lt;BR&gt;XmlAttribute attrClient=sitemapDoc.CreateAttribute("Client");&lt;BR&gt;attrClient.Value="Web";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;subArea.Attributes.Append(attrId);&lt;BR&gt;subArea.Attributes.Append(attrTitle);&lt;BR&gt;subArea.Attributes.Append(attrIcon);&lt;BR&gt;subArea.Attributes.Append(attrUrl);&lt;BR&gt;subArea.Attributes.Append(attrClient);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;sitemapDoc.SelectSingleNode(&lt;BR&gt;&amp;nbsp;"/ImportExportXml/SiteMap/SiteMap/Area[./@Id = 'Settings']/Group[./@Id = 'Settings']"&lt;BR&gt;).AppendChild(subArea);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;ImportXmlWebService importService=new ImportXmlWebService();&lt;BR&gt;importService.Credentials=System.Net.CredentialCache.DefaultCredentials;&lt;BR&gt;importService.Url="&lt;/FONT&gt;&lt;A href="http://localhost/mscrmservices/importxml.asmx"&gt;&lt;FONT face="Courier New"&gt;http://localhost/mscrmservices/importxml.asmx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;";&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;// reimport the sitemap xml&lt;BR&gt;importService.Import("&amp;lt;import&amp;gt;&amp;lt;entities&amp;gt;&amp;lt;/entities&amp;gt;&amp;lt;nodes&amp;gt;&amp;lt;node&amp;gt;sitemap&amp;lt;/node&amp;gt;&amp;lt;/nodes&amp;gt;&amp;lt;/import&amp;gt;", &lt;BR&gt;&amp;nbsp;sitemapDoc.OuterXml);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;For isv.config use: &lt;FONT face="Courier New"&gt;&amp;lt;export&amp;gt;&amp;lt;entities&amp;gt;&amp;lt;/entities&amp;gt;&amp;lt;nodes&amp;gt;&amp;lt;node&amp;gt;isvconfig&amp;lt;/node&amp;gt;&amp;lt;/nodes&amp;gt;&amp;lt;/export&amp;gt;&lt;BR&gt;&lt;/FONT&gt;For any entity use: &lt;FONT face="Courier New"&gt;&amp;lt;export&amp;gt;&amp;lt;entities&amp;gt;&amp;lt;entity&amp;gt;account&amp;lt;/entity&amp;gt;&amp;lt;/entities&amp;gt;&amp;lt;nodes&amp;gt;&amp;lt;/nodes&amp;gt;&amp;lt;/export&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Of course you are able to combine any nodes and entities.&lt;/P&gt;
&lt;P&gt;P.S. If you copy and paste this code sample, don't forget to add the two web references and the correct using statements in VS.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=72249"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=72249" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/72249.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/03/14/72249.aspx</guid>
            <pubDate>Tue, 14 Mar 2006 19:54:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/72249.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/03/14/72249.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/72249.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/72249.aspx</trackback:ping>
        </item>
        <item>
            <title>MS CRM 3.0 + HttpModule + AspNetHostingPermission in Reporting Services</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/03/23/73120.aspx</link>
            <description>&lt;P&gt;Yesterday I encountered an interesting problem on a MS CRM 3.0 installation running as default website in IIS. This was due to an upgrade from CRM 1.2 to 3.0. The installation included customizations one of them in form of a HttpModule. Everything worked fine, but viewing reports threw a SecurityException stating that "Request for the permission of type System.Web.AspNetHostingPermission ... failed".&lt;/P&gt;
&lt;P&gt;I didn't know the reason for this exception, so I did a bit of research. I found out that Reporting Services uses its own security policy files. There is a good article about this on MSDN:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/RSPROG/htm/rsp_prog_extend_install_25ia.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/RSPROG/htm/rsp_prog_extend_install_25ia.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;After experimenting a bit, I found the following solution to my problem (this is for use with private assemblies, for global assemblies in GAC see below): &lt;/P&gt;
&lt;P&gt;1. First I made a backup of the following two files (do not skip this step !!!):&lt;/P&gt;
&lt;P&gt;C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportManager\rsmgrpolicy.config&lt;BR&gt;C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\rssrvpolicy.config&lt;/P&gt;
&lt;P&gt;2. I inserted a new code group into both files after "Microsoft_Strong_Name" code group:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;CodeGroup class="UnionCodeGroup"&lt;BR&gt;&amp;nbsp;&amp;nbsp; version="1"&lt;BR&gt;&amp;nbsp;&amp;nbsp; PermissionSetName="FullTrust"&lt;BR&gt;&amp;nbsp;&amp;nbsp; Name="CRMHttpModuleCodeGroup"&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; Description="Code group for CRM HTTP module"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IMembershipCondition class="UrlMembershipCondition"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version="1"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Url="C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin\[yourassembly].dll" /&amp;gt;&lt;BR&gt;&amp;lt;/CodeGroup&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Do not forget to match 'Url' attribute with the path to ReportManager directory for rsmgrpolicy.config.&lt;/P&gt;
&lt;P&gt;If you have multiple HttpModules, you can do this for every assembly.&lt;/P&gt;
&lt;P&gt;This procedure works for HttpModule assemblies that do not reside in GAC. But you have to make sure that your private HttpModule assembly resides in all necessary bin directories. This includes:&lt;/P&gt;
&lt;P&gt;- bin directory of CRM web aplication.&lt;BR&gt;- mscrmservices\bin directory of CRM web aplication&lt;BR&gt;- C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportManager\bin&lt;BR&gt;- C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin&lt;/P&gt;
&lt;P&gt;Placing your HttpModule in GAC is much more convenient, because you don't have to copy it to four different locations. First you have to "strong name" your assembly and place it into GAC (if you don't know how to do it, ask my friend google). Then you have to add a different code group into Reporting Services security policy files:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;CodeGroup class="UnionCodeGroup"&lt;BR&gt;&amp;nbsp;&amp;nbsp; version="1"&lt;BR&gt;&amp;nbsp;&amp;nbsp; PermissionSetName="FullTrust"&lt;BR&gt;&amp;nbsp;&amp;nbsp; Name="CRMHttpModuleCodeGroup"&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; Description="Code group for CRM HTTP module"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IMembershipCondition class="StrongNameMembershipCondition"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version="1" PublicKeyBlob="..." /&amp;gt;&lt;BR&gt;&amp;lt;/CodeGroup&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;(if you don't know how to get your PublicKeyBlob: use sn.exe with -e and -tp options with the strong name key file you used when creating your assembly)&lt;/P&gt;
&lt;P&gt;If your HttpModule is then in GAC, you may still receive a Configuration Error stating "Parser Error Message: Assembly someassembly.dll security permission grant set is incompatible between appdomains." I don't know why this exception is thrown because it does not seem to make any sense. The actual reason for this exception is that the HttpModule assembly is not found. Make sure you use the fully qualified name when you add your assembly to web.config:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;httpModules&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;add type=".NET Class, Assembly [,Version=version number] [,Culture=culture] [,PublicKeyToken=token]" name="CRMHttpModule" /&amp;gt; &lt;BR&gt;&amp;lt;/httpModules&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;If you still get an exception, there may be missing dependencies to your HttpModule assembly in GAC. To get rid of these use FUSLOGVW.exe.&lt;/P&gt;
&lt;P&gt;Hope this helps someone out there.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=73120"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=73120" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/73120.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/03/23/73120.aspx</guid>
            <pubDate>Thu, 23 Mar 2006 20:51:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/73120.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/03/23/73120.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/73120.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/73120.aspx</trackback:ping>
        </item>
        <item>
            <title>Never trust MS CRM error messages</title>
            <link>http://geekswithblogs.net/guentersblog/archive/2006/03/08/71685.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Yesterday we experienced a quite interesting phenomenon. A colleague of mine tried to create products with the API but received an error from time to time. The error stated that the product number already existed in CRM. But in fact, the product number was unique&amp;nbsp;and did not yet exist in CRM. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;So we started SQL profiler to dig a little deeper. We found out that the problem occurred from passing a string to a custom attribute which exceeded its maximum length. The SQL server error message stated that the data would be truncated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;What do we learn from that? CRM error messages might mislead you in your error resolving strategy. If an error cannot be resolved with the information you get from CRM, try to get information from other sources (e.g. SQL profiler). &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=71685"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=71685" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/guentersblog/aggbug/71685.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Guenter Wallnoefer</dc:creator>
            <guid>http://geekswithblogs.net/guentersblog/archive/2006/03/08/71685.aspx</guid>
            <pubDate>Wed, 08 Mar 2006 19:18:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/guentersblog/comments/71685.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/guentersblog/archive/2006/03/08/71685.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/guentersblog/comments/commentRss/71685.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/guentersblog/services/trackbacks/71685.aspx</trackback:ping>
        </item>
    </channel>
</rss>