<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
	<title>Hands On Coding</title>
	<link>http://blog.frank-hermes.com</link>
	<description>Franks Blog on Microsoft CRM, Sharepoint and .NET</description>
	<pubDate>Fri, 09 Mar 2007 15:34:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1.2</generator>
	<language>en</language>

		<item>
		<title>How to Install Your CRM Customizations</title>
		<link>http://blog.frank-hermes.com/2007/03/08/how-to-install-your-crm-customizations/</link>
		<comments>http://blog.frank-hermes.com/2007/03/08/how-to-install-your-crm-customizations/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 21:51:03 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
		
	<category>Microsoft CRM</category>
		<guid>http://blog.frank-hermes.com/2007/03/08/how-to-install-your-crm-customizations/</guid>
		<description><![CDATA[I would like to put up for discussion how an ISV could organize an installer to setup and migrate your Microsoft CRM customizations to your clients' servers. First of all I make use of the Microsoft.Crm.Sdk.IsvReadiness Classes...]]></description>
			<content:encoded><![CDATA[	<p><img width="190px" style="float:left;margin-right:15px;" src="/isvreadiness.gif" alt="ISV Readiness" />I would like to put up for discussion how an ISV could organize an installer to setup and migrate your Microsoft CRM customizations to your clients&#8217; server. First of all I make use of the Microsoft.Crm.Sdk.IsvReadiness Classes that ships as part of the ISVReadiness sample code from the CRM SDK. After I did my work on the custom entities and relations I export only the new entities (usually all entities that start with &#8220;new_&#8221;, if you didn&#8217;t change it) and save them to your visual studio installer project. Write the methods to import this XML-file programmatically and publish them:<br />
<code><br />
private void importEntities()<br />
{<br />
&nbsp;&nbsp;//Import custom entities<br />
&nbsp;&nbsp;ImportAllXmlRequest import = new ImportAllXmlRequest();<br />
&nbsp;&nbsp;using (StreamReader sr = new StreamReader("customentities.xml"))<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string customizationXml = sr.ReadToEnd();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import.CustomizationXml = customizationXml;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;_crmservice.Execute(import);</p>
	<p>&nbsp;&nbsp;//Publish<br />
&nbsp;&nbsp;PublishAllXmlRequest publish = new PublishAllXmlRequest();<br />
&nbsp;&nbsp;_crmservice.Execute(publish);<br />
}<br />
</code></p>
	<p>Afterward change tht CRM system entities and set their relations to the custom entities (for example the lead entity):<br />
<code><br />
private void changeLeadEntity()<br />
{</p>
	<p>&nbsp;&nbsp;<strong>//Load the lead entity in an XmlDocument</strong><br />
&nbsp;&nbsp;ExportXmlRequest export = new ExportXmlRequest();<br />
&nbsp;&nbsp;export.ParameterXml = &#8220;<export><entities><entity>lead</entity></entities><nodes></nodes></export>&#8220;;<br />
&nbsp;&nbsp;ExportXmlResponse entities = (ExportXmlResponse)_crmservice.Execute(export);<br />
&nbsp;&nbsp;XmlDocument xml = new XmlDocument();<br />
&nbsp;&nbsp;xml.PreserveWhitespace = true;<br />
&nbsp;&nbsp;xml.LoadXml(entities.ExportXml);</p>
	<p>&nbsp;&nbsp;<strong>//Add an attriute map to tell crm what to do with an atrribute if the user converts a lead to an opportunity</strong><br />
&nbsp;&nbsp;XmlDocument map = new XmlDocument();<br />
&nbsp;&nbsp;map.LoadXml(&#8221;<attributemap><attributesource>new_customsourceid</attributesource><attributetarget>new_customtargetid</attributetarget></attributemap>&#8220;);</p>
	<p>&nbsp;&nbsp;XmlNode mapnode = map.DocumentElement;</p>
	<p>&nbsp;&nbsp;XmlElement attributemap = xml.CreateElement(&#8221;AttributeMap&#8221;);<br />
&nbsp;&nbsp;XmlElement attributesource = xml.CreateElement(&#8221;AttributeSource&#8221;);<br />
&nbsp;&nbsp;attributesource.InnerText = &#8220;new_customsourceid&#8221;;<br />
&nbsp;&nbsp;XmlElement attributetarget = xml.CreateElement(&#8221;AttributeTarget&#8221;);<br />
&nbsp;&nbsp;attributetarget.InnerText = &#8220;new_customtargetid&#8221;;</p>
	<p>&nbsp;&nbsp;attributemap.AppendChild(attributesource.Clone());<br />
&nbsp;&nbsp;attributemap.AppendChild(attributetarget.Clone());</p>
	<p>&nbsp;&nbsp;XmlNode newnode = xml.SelectSingleNode(&#8221;descendant::EntityTarget[@LocalizedName=&#8217;Opportunity&#8217;]&#8221;).ParentNode.SelectSingleNode(&#8221;AttributeMaps&#8221;).AppendChild(attributemap.Clone());</p>
	<p>&nbsp;&nbsp;<strong>//Add fields to the lead form</strong><br />
&nbsp;&nbsp;FormCustomizer leadFormEditor = new FormCustomizer(xml, &#8220;connectpartners&#8221;);</p>
	<p>&nbsp;&nbsp;XmlDocument helper = new XmlDocument();<br />
&nbsp;&nbsp;helper = leadFormEditor.Xml;</p>
	<p>&nbsp;&nbsp;helper.SelectSingleNode(&#8221;descendant::tab[@id=&#8217;&#8221; + xml.SelectSingleNode(&#8221;descendant::tab&#8221;).Attributes[&#8221;id&#8221;].Value + &#8220;&#8216;]/sections/section/labels/label[@description=&#8217;blabla&#8217;]&#8221;).ParentNode.ParentNode.ParentNode.RemoveChild(helper.SelectSingleNode(&#8221;descendant::tab[@id=&#8217;&#8221; + xml.SelectSingleNode(&#8221;descendant::tab&#8221;).Attributes[&#8221;id&#8221;].Value + &#8220;&#8216;]/sections/section/labels/label[@description=&#8217;blabla&#8217;]&#8221;).ParentNode.ParentNode);<br />
&nbsp;&nbsp;leadFormEditor.Xml = helper;</p>
	<p>&nbsp;&nbsp;Guid sectionid = Guid.NewGuid();<br />
&nbsp;&nbsp;Guid tabid = new Guid(xml.SelectSingleNode(&#8221;descendant::tab&#8221;).Attributes[&#8221;id&#8221;].Value);</p>
	<p>&nbsp;&nbsp;<strong>//Add a lookup field to a new section</strong><br />
&nbsp;&nbsp;leadFormEditor.AddSection(&#8221;lead&#8221;, tabid, sectionid, &#8220;testsection&#8221;, true, true, 0, &#8220;varwidth&#8221;, 11, 1031);<br />
&nbsp;&nbsp;leadFormEditor.AddCellToNewRow(&#8221;lead&#8221;, tabid, sectionid, &#8220;My Attribute&#8221;, &#8220;new_customattribute&#8221;, Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.FormCustomizer.FieldDataType.Lookup, &#8220;&#8221;new_customattributeid&#8221;, false, true, false, 2, 1, 1031);</p>
	<p>&nbsp;&nbsp;<strong>//Add Javascript to the onload event</strong><br />
&nbsp;&nbsp;if (!leadFormEditor.Xml.OuterXml.Contains(&#8221;newmethod&#8221;))<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;leadFormEditor.AddFormEventJScript(&#8221;lead&#8221;, &#8220;newmethod = function (){ doSomething(); windows.alert(&#8217;Done&#8217;);}&#8221;, Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.FormCustomizer.JScriptType.onload, Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.FormCustomizer.InsertionMode.InsertAfter, new string[] { });<br />
&nbsp;&nbsp;}</p>
	<p>&nbsp;&nbsp;<strong>//Import the modifications</strong><br />
&nbsp;&nbsp;ImportAllXmlRequest import = new ImportAllXmlRequest();<br />
&nbsp;&nbsp;import.CustomizationXml = leadFormEditor.Xml.OuterXml;<br />
&nbsp;&nbsp;_crmservice.Execute(import);</p>
	<p>&nbsp;&nbsp;<strong>//Publish</strong><br />
&nbsp;&nbsp;PublishAllXmlRequest publish = new PublishAllXmlRequest();<br />
&nbsp;&nbsp;_crmservice.Execute(publish);<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.frank-hermes.com/2007/03/08/how-to-install-your-crm-customizations/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Integrate Office 2007 and Microsoft CRM</title>
		<link>http://blog.frank-hermes.com/2007/03/08/integrate-office-2007-and-microsoft-crm/</link>
		<comments>http://blog.frank-hermes.com/2007/03/08/integrate-office-2007-and-microsoft-crm/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 20:33:27 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
		
	<category>Microsoft CRM</category>
		<guid>http://blog.frank-hermes.com/2007/03/08/integrate-office-2007-and-microsoft-crm/</guid>
		<description><![CDATA[	I found an interesting article on the Visual Studio Tools for Office SE and Microsoft CRM: Joris Kalz, Microsoft CRM specialist, shows a video on his blog that demonstrates the possibilites of an integration of Office 2007 and Microsoft CRM by utilizing the VSTO SE.
In this demo Microsoft Word 2007 has a Task Pane that [...]]]></description>
			<content:encoded><![CDATA[	<p><img width="180px" style="float:left;margin-right:15px;" src="/VSTO_SE.jpg" alt="Word 2007 with CRM Lookup" />I found an interesting <a href="http://blogs.msdn.com/joris_kalz/archive/2007/02/08/VSTO-SE-CRM-Visual-Studio-for-Office-2007-Tools-Second-Edition.aspx">article</a> on the Visual Studio Tools for Office SE and Microsoft CRM: <a href="http://blogs.msdn.com/joris_kalz/contact.aspx">Joris Kalz</a>, Microsoft CRM specialist, shows a <a href="http://microsoft-crm-vsto-se.kalz.de/SharedFiles/Microsoft-Dynamics-CRM/VSTO_SE/VSTO_SE_Microsoft_CRM.html">video</a> on his <a href="http://blogs.msdn.com/joris_kalz">blog</a> that demonstrates the possibilites of an integration of Office 2007 and Microsoft CRM by utilizing the VSTO SE.<br />
In this demo Microsoft Word 2007 has a Task Pane that enables the user to lookup data from the CRM (e.g. a proposals) , insert them into a word template and attach the generated file either as XPS or PDF file to a note of the regarding CRM entry. This looks very cool. The next consequent step towards integration of CRM and Office, would be to put the generated file in a sharepoint document library and link from the CRM entry to all regarding files.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.frank-hermes.com/2007/03/08/integrate-office-2007-and-microsoft-crm/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Working With Microsoft Dynamics CRM 3.0</title>
		<link>http://blog.frank-hermes.com/2007/03/07/working-with-microsoft-dynamics-crm-30/</link>
		<comments>http://blog.frank-hermes.com/2007/03/07/working-with-microsoft-dynamics-crm-30/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 18:47:39 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
		
	<category>Books</category>
		<guid>http://blog.frank-hermes.com/2007/03/07/working-with-microsoft-dynamics-crm-30/</guid>
		<description><![CDATA[Now and then I will recommend some books that deal with Microsoft CRM Plattform and my first pick is the definitive book for all those who start to work with MS CRM...]]></description>
			<content:encoded><![CDATA[	<p><a href="http://www.amazon.com/Working-Microsoft-Dynamics-CRM-3-0/dp/0735622590/ref=pd_bbs_sr_1/102-5983711-2869721?ie=UTF8&#038;s=books&#038;qid=1173253017&#038;sr=8-1"><img width="180px" style="float:left;margin-right:15px;" src="/workingwith.jpg" alt="Working With Microsoft Dynamics CRM 3.0"" /></a>Now and then I will recommend some books that deal with Microsoft CRM platform and my first pick is the definitive book for all those who start working with MS CRM, as it intruduces to the fundamentals of Microsoft CRM. It&#8217;s <a href="http://www.amazon.com/Working-Microsoft-Dynamics-CRM-3-0/dp/0735622590/ref=pd_bbs_sr_1/102-5983711-2869721?ie=UTF8&#038;s=books&#038;qid=1173253017&#038;sr=8-1">&#8220;Working With Microsoft Dynamics CRM 3.0&#8243;</a>, written by Mike Snyder and Jim Steger. As both of them are members of a leading deployment consulting team, this is the only book written for both developers and those who implement business solutions. Take this book as a guideline for adapting Microsoft CRM to meet your or your customers exacting business needs.  Mike and Jim deliver practical, hands-on information and provide case studies, integration and performance guidelines. Two thumbs up for the ultimate compendium for Microsoft CRM 3.0.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.frank-hermes.com/2007/03/07/working-with-microsoft-dynamics-crm-30/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Summer Titan (Features Part 1)</title>
		<link>http://blog.frank-hermes.com/2007/03/06/summer-titan/</link>
		<comments>http://blog.frank-hermes.com/2007/03/06/summer-titan/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 16:04:07 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
		
	<category>Microsoft CRM</category>
		<guid>http://blog.frank-hermes.com/2007/03/06/summer-titan/</guid>
		<description><![CDATA[The forthcoming release of Microsoft CRM 4.0 (codename <strong>Titan</strong>) is said to be shipped in summer 2007 ...]]></description>
			<content:encoded><![CDATA[	<p><img width="180px" style="float:left;margin-right:15px;" src="/titan.jpg" alt="Microsoft CRM 4.0 (codename Titan)" />The forthcoming release of Microsoft CRM 4.0 (codename <strong>Titan</strong>) is said to be shipped in summer 2007 (summer in which part of the world, hu?) and I hardly can await it. As my company <a href="http://www.it-a.de">ITA Systemhaus</a> participates in the <a href="http://www.microsoft.com/presspass/press/2007/jan07/01-10CRMTAPPR.mspx">Titan Ascend Program</a>, I already had a little insight into the new features and I can say: <strong>Titan </strong>will be a titan. Microsoft CRM makes a big step ahead on its own path towards an omnipotent ERP platform. Many people and even developers think of it simply as a CRM and, yes, certainly you can manage your customer relations, but you can do much more than this and this it where Titan puts the emphasis.<br />
The feature I yearned for years is the complete integration of the <a href="http://wf.netfx3.com/">Windows Workflow Foundation</a> into the CRM framework. So, you don&#8217;t have to click your proprietary workflows anymore, but design them in Visual Studio for example and you can reuse your workflow and activities in other project and other plattform (the workflow engine within Moss 2007 is the same!).<br />
For the last couple of years, Microsoft has been moving toward providing a common ERP platform as part of its &#8220;Project Green&#8221;, which is devided into two phases: the 2005 to 2007 Green Wave 1 and 2008 to 2009+ Green Wave 2. Thus CRM 4.0 will just make the world &#8216;greener&#8217; and at the end of the second wave, Microsoft will incoporate the best-of-breed features of the whole Dynamics family into one ERP product and believe me or not there will be a lot of Titan in it. I will introduce some more of these features in the next posts&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.frank-hermes.com/2007/03/06/summer-titan/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>A Long Way Down</title>
		<link>http://blog.frank-hermes.com/2007/02/12/a-long-way-down/</link>
		<comments>http://blog.frank-hermes.com/2007/02/12/a-long-way-down/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 12:41:16 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
		
	<category>Books</category>
		<guid>http://blog.frank-hermes.com/2007/02/12/a-long-way-down/</guid>
		<description><![CDATA[Tired of everything? Ever thought about jumping? If you want to find "birds of same feather" ...]]></description>
			<content:encoded><![CDATA[	<p><img style="float:left;margin-right:15px;" src="http://www.penguin.co.uk/static/cs/uk/0/minisites/nickhornby/books/gifs/alwd_lrg_jkt.jpg" alt="A Long Way Down" />Tired of everything? Ever thought about jumping? If you want to find &#8220;birds of same feather&#8221; climb the highest building in town on &#8220;New Years Eve&#8221;. Martin, Maureen, Jess and JJ had the same idea but different reasons in the new book of one of my favourite authors: <a href="http://www.penguin.co.uk/static/cs/uk/0/minisites/nickhornby/">Nick Hornsby</a>’s &#8220;<a href="http://www.penguin.co.uk/static/cs/uk/0/minisites/nickhornby/books/alwd_synopsis.html#alwd">A Long Way Down&#8221;</a>. Cool stuff. Perfect combination of entertainment and philosophic reasoning. If you liked &#8220;High Fidelity&#8221; you&#8217;ll love it.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.frank-hermes.com/2007/02/12/a-long-way-down/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Dead (Wo)Men Walking</title>
		<link>http://blog.frank-hermes.com/2007/01/16/dead-women-walking/</link>
		<comments>http://blog.frank-hermes.com/2007/01/16/dead-women-walking/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 10:29:42 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
		
	<category>Funstuff</category>
		<guid>http://blog.frank-hermes.com/2007/01/16/dead-women-walking/</guid>
		<description><![CDATA[Horden von Nordic Walkern laufen durch die Wälder. Ewiges Klackern der Ski-Stöcke auf Asphalt kündet die Gefahr schon von Weitem, aber ein Entrinnen gibt es trotzdem nicht...]]></description>
			<content:encoded><![CDATA[	<p><img width="180px" style="float:left;margin-right:15px;" src="/nordic.jpg" alt="Ahhhh!!!" />Horden von Nordic Walkern laufen durch die Wälder. Ewiges Klackern der Ski-Stöcke auf Asphalt kündet die Gefahr schon von Weitem, aber ein Entrinnen gibt es trotzdem nicht. Überall kreuzen sie die Wege, ohne dass Schilder vorher warnten. Und kein Jäger, der die Bestände dieser vierbeinigen Arschwackler unter Kontrolle hält. Mein Opa - mit seinen 72 Jahren und Spazierstock - abends von seinem täglichen Kneipenbesuch heimkehrend: sein Bewegungsablauf gleicht - in meiner Erinnerung - dem geschmeidigen Gang der Antilope. Warum erst, seit dem ich <em>sie</em> sehen muss? Wenn das Sport wäre, könnte man auf Erfüllung von Prophezeiungen wie &#8220;Sport ist Mord&#8221; hoffen, aber so: unvermeidbarer Übel wie Sozialabbau und postkoitales Kuscheln - nur unvergleichlich schlimmer.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.frank-hermes.com/2007/01/16/dead-women-walking/feed/</wfw:commentRSS>
	</item>
	</channel>
</rss>
