<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
   <title>stunnware's CRM corner</title>
   <subtitle>Samples and tools for CRM developers</subtitle>
   <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom.aspx" />
   <link rel="alternate" href="http://www.stunnware.com/crm2/default.aspx" />
   <updated>2009-06-17T23:00:00+01:00</updated>
   <author>
      <name>Michael Höhne</name>
   </author>
   <id>urn:uuid:D7C4413D-BD66-4d2e-9E11-587870EFAFE8</id>
   <entry>
      <title>The CRM 4.0 Metadata Cache</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MetadataCache" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MetadataCache" />
      <id>tag:stunnware.com,2009-06-17:MetadataCache</id>
      <published>2009-06-17T23:00:00+01:00</published>
      <updated>2009-06-17T23:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I don't know about you but I'm using the CRM metadata in almost all of my 
applications. It may be as simple as the need for an object type code and can be 
as complex as implementing some intellisense features. Besides some really basic 
programs I always find myself using the metadata service.&lt;/p&gt;
&lt;p&gt;Of course I have created a bunch of wrapper classes for CRM and some of them 
implement a metadata cache. This, or probably the next article will include the 
entire project implementing the metadata cache. Before that I want to write 
about why a metadata cache is useful and what features it needs to be reusable.&lt;/p&gt;
&lt;p&gt;The most basic implementation of a metadata cache is this:&lt;/p&gt;
&lt;p class="codeNew" style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#2b91af"&gt;CrmMetadata&lt;/font&gt;[] RetrieveAllMetadata(&lt;font color="#2b91af"&gt;MetadataService&lt;/font&gt; service, &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt; itemsToRetrieve) {&lt;br&gt;
   &lt;font color="#2b91af"&gt;RetrieveAllEntitiesRequest&lt;/font&gt; request = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;RetrieveAllEntitiesRequest&lt;/font&gt;()&lt;br&gt;
   {&lt;br&gt;      MetadataItems = itemsToRetrieve,&lt;br&gt;      RetrieveAsIfPublished = &lt;font color="#0000ff"&gt;false&lt;br&gt;
&lt;/font&gt;   };&lt;br&gt;&lt;br&gt;   &lt;font color="#2b91af"&gt;RetrieveAllEntitiesResponse&lt;/font&gt; response = (&lt;font color="#2b91af"&gt;RetrieveAllEntitiesResponse&lt;/font&gt;) service.Execute(request);&lt;br&gt;
   &lt;font color="#0000ff"&gt;return&lt;/font&gt; response.CrmMetadata;&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;It just retrieves the entire metadata at once, which can then be used to 
build internal dictionaries for fast access. This is easy and if your 
application doesn't have to check for changes in the metadata you can use it 
without problems. Retrieving the entire metadata takes a long time though and 
can dramatically slow-down the startup sequence of your application. To know how 
long it takes, I created a simple test method calling the above code with 
different parameters:&lt;/p&gt;
&lt;p class="codeNew" style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
&lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;[] itemList = &lt;br&gt;{ &lt;br&gt;   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.All,&lt;br&gt;
   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.EntitiesOnly, &lt;br&gt;   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludeAttributes, &lt;br&gt;
   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludePrivileges, &lt;br&gt;   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludeRelationships, &lt;br&gt;
   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludeAttributes | &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludePrivileges,&lt;br&gt;
   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludeAttributes | &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludeRelationships,&lt;br&gt;
   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludePrivileges | &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.IncludeRelationships,&lt;br&gt;
   &lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt;.All &lt;br&gt;};&lt;br&gt;&lt;br&gt;
&lt;font color="#2b91af"&gt;XmlSerializer&lt;/font&gt; s = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;XmlSerializer&lt;/font&gt;(&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#2b91af"&gt;EntityMetadata&lt;/font&gt;[]));&lt;br&gt;
&lt;br&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#2b91af"&gt;MetadataItems&lt;/font&gt; itemsToRetrieve &lt;font color="#0000ff"&gt;in&lt;/font&gt; itemList) {&lt;br&gt;
&lt;br&gt;   &lt;font color="#2b91af"&gt;Console&lt;/font&gt;.Write(itemsToRetrieve + &lt;font color="#a31515"&gt;": "&lt;/font&gt;);&lt;br&gt;
   &lt;font color="#2b91af"&gt;DateTime&lt;/font&gt; startTime = &lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;.Now;&lt;br&gt;
   &lt;font color="#2b91af"&gt;CrmMetadata&lt;/font&gt;[] allEntities = RetrieveAllMetadata(service, itemsToRetrieve);&lt;br&gt;
   &lt;font color="#2b91af"&gt;TimeSpan&lt;/font&gt; time = &lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;.Now.Subtract(startTime);&lt;br&gt;
   &lt;font color="#0000ff"&gt;int&lt;/font&gt; bytes;&lt;br&gt;&lt;br&gt;   &lt;font color="#2b91af"&gt;EntityMetadata&lt;/font&gt;[] entities = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;EntityMetadata&lt;/font&gt;[allEntities.Length];&lt;br&gt;
   &lt;font color="#0000ff"&gt;for&lt;/font&gt; (&lt;font color="#0000ff"&gt;int&lt;/font&gt; i = 0; i &lt; allEntities.Length; i++) {&lt;br&gt;
      entities[i] = (&lt;font color="#2b91af"&gt;EntityMetadata&lt;/font&gt;) allEntities[i];&lt;br&gt;
   }&lt;br&gt;&lt;br&gt;   &lt;font color="#2b91af"&gt;StringBuilder&lt;/font&gt; sb = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;StringBuilder&lt;/font&gt;();&lt;br&gt;
&lt;br&gt;   &lt;font color="#0000ff"&gt;using&lt;/font&gt; (&lt;font color="#2b91af"&gt;StringWriter&lt;/font&gt; w = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;StringWriter&lt;/font&gt;(sb)) {&lt;br&gt;
      s.Serialize(w, entities);&lt;br&gt;      bytes = sb.Length;&lt;br&gt;   }&lt;br&gt;&lt;br&gt;   &lt;font color="#2b91af"&gt;Console&lt;/font&gt;.WriteLine(&lt;font color="#a31515"&gt;"{0}ms - {1}KB"&lt;/font&gt;, (&lt;font color="#0000ff"&gt;int&lt;/font&gt;) (time.Ticks / 10000), bytes &gt;&gt; 10);&lt;br&gt;
}&lt;br&gt;&lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>Filtered Views for Microsoft Dynamics CRM 4.0 - v4.1.8</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=FV4-2" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/FV4-2" />
      <id>tag:stunnware.com,2009-06-09:FV4-2</id>
      <published>2009-06-09T21:00:00+01:00</published>
      <updated>2009-06-09T21:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;Since creating the first sample on
   &lt;a href="/crm2/topic.aspx?id=AdvancedFind1"&gt;how to use advanced find queries 
   in CRM forms&lt;/a&gt; almost two years ago I worked on this topic from time to 
   time and finally created a ready-to-use product recently. Today I posted an 
   updated version and the product slowly moves into a direction that I like. 
   And of course I hope that you like it too. &lt;/p&gt;
   &lt;p&gt;I think that the most basic reason for trying it out in the beginning was 
   the limitation of having only one associated view. When looking at the 
   contact list in an account I do not want to include the customer attribute, 
   because that will always show the account I'm currently in. But when looking 
   at a marketing list displaying contacts, then it totally makes sense to show 
   the parent customer field. With multiple associated views this wouldn't be a 
   problem, but so far this feature doesn't exist. &lt;/p&gt;
   &lt;p&gt;After having worked with the Filtered Views add-on for several months now 
   myself, it felt it was time to enhance it. It already gave me multiple 
   associated views, but I needed some extra functionality. I do use CRM to 
   track the invoices and payments of Stunnware. CRM isn't an accounting system 
   at all, but it is one of the best ways for me test certain limits and create 
   more ideas. There is not too much to say about invoices and payments: each 
   invoice should have at least one payment. If it does not, then the invoice 
   isn't paid. Pretty simple. &lt;/p&gt;
   &lt;p&gt;An invoice can have multiple payments, though usually zero or one. It is a 
   typical 1:many relationship and therefore an associated view exists:&lt;/p&gt;
   &lt;p&gt;&lt;img height="458" src="/crm2/data/images/FV-2/View1.png" width="761"&gt;&lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>Stunnware Tools 4.4.23 released</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework12" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework12" />
      <id>tag:stunnware.com,2009-05-12:Framework12</id>
      <published>2009-05-12T21:00:00+01:00</published>
      <updated>2009-05-12T21:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I don't know if you are familiar with this feeling: the application runs fine 
in general and it does what it's supposed to do. But when using your own 
application on a daily base, you find a lot of things annoying and suddenly it 
doesn't look as good as some time ago. Long running tasks are blocking the UI, 
preventing you to do edit the sitemap just because the metadata cache is built. 
And at some time you wonder if the blue skinning was the best choice and look 
for alternatives. And then you go back to your implementation and feel that it 
has to be reworked in some areas...&lt;/p&gt;
&lt;p&gt;I worked a lot on the Stunnware Tools Framework in the last two months and 
even took the time to make new screenshots for the help file so that it now 
matches the look and feel of the application. I added an ISV.Config editor and a 
Sitemap editor (don't expect graphical stuff, but it allows you to easily load, 
edit, validate and save these customizations). I also changed major parts of the 
application to a multi-threaded model, so that time-consuming processes are now 
running in the background - mostly. There are still some places where the UI is 
blocked, but as that annoys me as well, I'm going to fix it. &lt;/p&gt;
&lt;p&gt;And of course here's the greatest feature of all: choose your own skin! Ok, 
that isn't a big feature and I always have to laugh when someone advertises such 
a great enhancement, but it was really easy to implement. That is a bad 
statement from a sales perspective, but I'm still a developer. It took me about 
30 minutes to implement, so I think that "easy" is a proper term. Here are some 
impressions:&lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>Filtered Views for Microsoft Dynamics CRM 4.0 - Beta</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=FV4-1" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/FV4-1" />
      <id>tag:stunnware.com,2009-03-23:FV4-1</id>
      <published>2009-03-23T13:00:00+01:00</published>
      <updated>2009-03-23T13:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I have been working on the Filtered Views add-on for quite a while and today it is available for public testing. The add-on is &lt;a href="/crm2/topic.aspx?id=AdvancedFind1"&gt;based on an article&lt;/a&gt; I wrote almost two years ago and you can use this article to create this solution on your own. Because of that, the price of the add-on is rather cheap.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What are Filtered Views?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Filtered Views are a concept to show data in a view that is filtered on some other data. For instance, let's look at the default history view of a contact:&lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>New aggregate in Fetch XML - CountColumn / Update for the Stunnware Tools for Microsoft Dynamics CRM 4.0</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework11" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework11" />
      <id>tag:stunnware.com,2009-03-11:Framework11</id>
      <published>2009-03-11T16:00:00+01:00</published>
      <updated>2009-03-11T16:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I read
&lt;a href="http://blogs.msdn.com/crm/archive/2009/03/10/support-for-count-distinct-in-fetch-xml-queries.aspx"&gt;
an article&lt;/a&gt; today describing a new aggregate in Fetch XML. It's named &lt;em&gt;
countcolumn&lt;/em&gt; and similar to the count aggregate. However, instead of simply 
doing a COUNT(*), countcolumn returns the number of records having a value and 
you can also specify the &lt;em&gt;distinct&lt;/em&gt; attribute.&lt;/p&gt;
&lt;p&gt;Here are the main differences:&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;b&gt;The count aggregate&lt;/b&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
&lt;font color="#0000ff"&gt;&lt;&lt;/font&gt;&lt;font color="#a31515"&gt;attribute&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;address1_city&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;aggregate&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;count&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;alias&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;citycount&lt;/font&gt;'&lt;font color="#0000ff"&gt; /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This is what we have used in the past and was the only aggregate available in 
Fetch XML. It executes the following SQL query: &lt;/p&gt;
&lt;p style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
SELECT COUNT(*) AS 'citycount' FROM Account&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;b&gt;The countcolumn aggregate&lt;/b&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
&lt;font color="#0000ff"&gt;&lt;&lt;/font&gt;&lt;font color="#a31515"&gt;attribute&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;address1_city&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;aggregate&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;countcolumn&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;alias&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;citycount&lt;/font&gt;'&lt;font color="#0000ff"&gt; /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This is the new aggregate with the same parameters as before. The resulting 
query is different though:&lt;/p&gt;
&lt;p style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
SELECT COUNT(address1_city) AS 'citycount' FROM Account&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;b&gt;The countcolumn aggregate with the distinct option&lt;/b&gt;&lt;/p&gt;
&lt;p style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
&lt;font color="#0000ff"&gt;&lt;&lt;/font&gt;&lt;font color="#a31515"&gt;attribute&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;address1_city&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;aggregate&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;countcolumn&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;alias&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;citycount&lt;/font&gt;'&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;distinct&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;'&lt;font color="#0000ff"&gt;true&lt;/font&gt;'&lt;font color="#0000ff"&gt; /&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;When used with the distinct attribute, the SQL query is changed accordingly:&lt;/p&gt;
&lt;p style="FONT-SIZE: 8pt; FONT-FAMILY: Consolas, Courier New"&gt;
SELECT COUNT(DISTINCT address1_city) AS 'citycount' FROM Account&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;b&gt;Stunnware Tools for Microsoft Dynamics CRM 4.0 updated&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I have long awaited a second aggregate and hope there are more to come. I 
have already updated the
&lt;a href="/default.aspx?area=products&amp;group=swtools4&amp;subarea=swtools4-download"&gt;
Stunnware Tools for Microsoft Dynamics CRM 4.0&lt;/a&gt; to support the new countcolum 
aggregate.&lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>I am joining the Libertas party</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MyView6" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MyView6" />
      <id>tag:stunnware.com,2009-03-10:MyView6</id>
      <published>2009-03-10T17:00:00+01:00</published>
      <updated>2009-03-10T17:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;When thinking that many things are wrong and you start to question a lot of 
things, what do you do? Hope that people in the government wake up and start 
thinking that they may be wrong? That equals to doing nothing. I wrote some 
articles in the past about what I think is wrong and I know that many of you 
share some of these concerns, though many don't. That seems natural and 
everyone's choice.&lt;/p&gt;
&lt;p&gt;I decided that I want to change things and will join the
&lt;a href="http://libertas.eu/"&gt;Libertas&lt;/a&gt; party. You may have read that I'm 
skeptical about the way the EU government works today. I'm not against Europe, 
but it's not right when unelected people decide about 500 million people. You 
probably won't see me as a candidate for the EU election in June, but I'm going 
to support the party where ever I can. It's the first European party and their 
goals are 100% mine, so it was an easy decision to join. The party needs 4000 
support signatures to get a permit for the election and it will be first goal to 
get as many signatures as possible from friends, colleagues and their friends 
and colleagues and so on. If you are German and are interested why I have chosen 
this party, I appreciate you read their
&lt;a href="http://libertas-deutschland.de/programm"&gt;program&lt;/a&gt;. If you agree on 
their (and my) points, please fill out the
&lt;a href="http://libertas-deutschland.de/content/mitmachen"&gt;support form&lt;/a&gt; and 
send it to them. &lt;/p&gt;
&lt;p&gt;I know, we usually don't care about politics. We debate over decisions and 
shake our heads. We get angry but in the end tend to say that we cannot make a 
difference. This is not true. Everyone can make a difference and if that means 
joining a party and maybe trying to run for certain positions, then I will. It's 
time for real change and that change has to come from us. I would like to see 
more people doing the same, but it hopefully is a matter of time only and not a 
general lethargy. Anyway, I made my decision and it will be interesting to see 
how this move affects my life. It doesn't mean anything related to Stunnware, so 
I'm neither quitting the company nor leaving the CRM playground at all. But 
there is more than just business and it seems more important than ever to get 
active.&lt;/p&gt;
&lt;p&gt;Thanks for reading and remember to follow the first link if you are from 
Europe and the two other links when from Germany. Feel free to
&lt;a href="/crm2/topic.aspx?id=AboutContact"&gt;contact me&lt;/a&gt; if you have questions 
or want to talk about it in general.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Michael&lt;/p&gt; 
    </content>
   </entry>
   <entry>
      <title>Problems when importing customizations on a CRM 4.0 system with Update Rollup 2</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=FLD4-7" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/FLD4-7" />
      <id>tag:stunnware.com,2009-02-20:FLD4-7</id>
      <published>2009-02-20T23:00:00+01:00</published>
      <updated>2009-03-20T23:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I got the second email today stating that relationship names change when 
importing customizations into a CRM 4.0 system with Update Rollup 2 applied and 
after trying myself and narrowing down the problem, I have to say that &lt;strong&gt;
the Filtered Lookup is not supported on a CRM 4.0 installation with Update 
Rollup 2&lt;/strong&gt; installed. Please read the entire article to see if it can 
affect you.&lt;/p&gt;
&lt;p&gt;When importing the Filtered Lookup customization file, either by using the 
Filtered Lookup Configuration Manager or by importing the customization file 
through the CRM web client, into an organization where the Filtered Lookup 
customizations have not been present before and the CRM Server you are using has 
the Update Rollup 2 installed, then relationship names are renamed during the 
import process.&lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>Why the Irish people should say NO to the Lisbon Treaty</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MyView5" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MyView5" />
      <id>tag:stunnware.com,2009-02-17:MyView5</id>
      <published>2009-02-17T22:00:00+01:00</published>
      <updated>2009-03-10T22:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I really would like to write more about CRM related stuff, but a lot of 
things have been said already and CRM 5 isn't here today. That's not the main 
reason though. &lt;/p&gt;
&lt;p&gt;While the several states of the United States of America say NO to a 
government that became corrupt, arrogant and violent, the EU is still trying to 
build the same kind of monster, that the several states are now trying to get 
rid of. I hope they are doing well and wish them all the best on their way. Let 
freedom and liberty reign again.&lt;/p&gt;
&lt;p&gt;The European government prepared the European Constitution in early 2000 and 
it was meant to be in effect in 2006. However, it had to be ratified in all 
member states, 25 at that time. 18 states voted yes and 2 voted no. Because of 
that, the 5 remaining states weren't asked anymore. Now let's tell it different: 
From the 20 states having voted, how much of them did a referendum? You might 
guess it: 2. And who said no? Yes, exactly these two states. To be more 
specific, it was the Netherlands and France. The people in these countries had a 
chance to express their opinion and said NO! People in all other 18 countries 
where not even asked, but that seems normal these days.&lt;/p&gt;
&lt;p&gt;Because of the failed approach with the European Constitution, the EU 
government or whoever makes these ideas decided to give it another try and 
therefore created the Lisbon Treaty, which is more or less the same as the 
European Constitution that already failed. Nevertheless, they tried it a second 
time in 2008 and meanwhile the EU had grown to 27 states. Because of the bad 
experiences with the failed approach before, the EU decided that asking people 
is a bad thing in general. &lt;/p&gt;
&lt;p class="style1"&gt;&lt;strong&gt;The people in 26 out of 27 states were not asked!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is not a joke. As most of you know, I live in Germany and there are 
about 82 million people living here. We were not asked. It was just decided by 
our politicians and I'm sure that most of them didn't even know what they voted 
for. The Lisbon Treaty more or less gives all power to the European Commission 
and its president. Neither the commission nor the president is elected by us, 
the people. We vote for the European parliament, but that parliament doesn't 
have any legislative power. They also do not choose the members of the 
commission. What they can do is more or less having ideas and making suggestions 
to the commission. SUGGESTIONS! &lt;/p&gt;    
    </content>
   </entry>
   <entry>
      <title>Lost Generation - What if?</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MyView4" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MyView4" />
      <id>tag:stunnware.com,2009-02-14:MyView4</id>
      <published>2009-02-14T14:00:00+01:00</published>
      <updated>2009-02-14T14:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;
&lt;a href="http://www.house.gov/apps/list/speech/tx14_paul/WhatIf.shtml"&gt;Statement of Congressman Ron Paul - United States House of Representatives - What If? - February 12, 2009&lt;/a&gt;
&lt;/p&gt;    
&lt;p&gt;What if we wake up one day and realize that the terrorist threat is a predictable consequence of our meddling in the affairs of others?&lt;/p&gt;
&lt;p&gt;What if propping up repressive regimes in the Middle East endangers both the United States and Israel?&lt;/p&gt;
&lt;p&gt;What if occupying countries like Iraq and Afghanistan - and bombing Pakistan - is directly related to the hatred directed toward us and has nothing to do with being free and prosperous?&lt;/p&gt;
&lt;p&gt;What if someday it dawns on us that losing over 5,000 American military personnel in the Middle East since 9/11 is not a fair trade-off for the loss of nearly 3,000 American citizens, no matter how many Iraqi, Pakistani, and Afghan people are killed or displaced?&lt;/p&gt;
&lt;p&gt;What if we finally decide that torture, even if called "enhanced interrogation techniques," is self-destructive and produces no useful information - and that contracting it out to a third world nation is just as evil?&lt;/p&gt;
&lt;p&gt;What if it is finally realized that war and military spending is always destructive to the economy?&lt;/p&gt;
&lt;p&gt;What if all wartime spending is paid for through the deceitful and evil process of inflating and borrowing?&lt;/p&gt;
&lt;p&gt;What if we finally see that wartime conditions always undermine personal liberty?&lt;/p&gt;
&lt;p&gt;What if conservatives, who preach small government, wake up and realize that our interventionist foreign policy provides the greatest incentive to expand the government?&lt;/p&gt;
&lt;p&gt;What if conservatives understood once again that their only logical position is to reject military intervention and managing an empire throughout the world?&lt;/p&gt;
&lt;p&gt;What if the American people woke up and understood that the official reasons for going to war are almost always based on lies and promoted by war propaganda in order to serve special interests?&lt;/p&gt;
&lt;p&gt;What if we as a nation came to realize that the quest for empire eventually destroys all great nations?&lt;/p&gt;
&lt;p&gt;What if Obama has no intention of leaving Iraq?&lt;/p&gt;
&lt;p&gt;What if a military draft is being planned for the wars that will spread if our foreign policy is not changed?&lt;/p&gt;
&lt;p&gt;What if the American people learn the truth: that our foreign policy has nothing to do with national security and that it never changes from one administration to the next?&lt;/p&gt;
&lt;p&gt;What if war and preparation for war is a racket serving the special interests?&lt;/p&gt;
&lt;p&gt;What if President Obama is completely wrong about Afghanistan and it turns out worse than Iraq and Vietnam put together?&lt;/p&gt;
&lt;p&gt;What if Christianity actually teaches peace and not preventive wars of aggression?&lt;/p&gt;
&lt;p&gt;What if diplomacy is found to be superior to bombs and bribes in protecting America?&lt;/p&gt;
&lt;p&gt;What happens if my concerns are completely unfounded - nothing!&lt;/p&gt;
&lt;p&gt;What happens if my concerns are justified and ignored - nothing good!&lt;/p&gt;</content>
   </entry>
   <entry>
      <title>Client Side Scripting - Customer fields again</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS34" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS34" />
      <id>tag:stunnware.com,2009-02-10:JS34</id>
      <published>2009-02-10T15:00:00+01:00</published>
      <updated>2009-02-10T15:00:00+01:00</updated>
      <content type="html">
   &lt;p class="normal"&gt;I received quite a few emails recently pointing out that 
   the &lt;a href="/crm2/topic.aspx?id=js21"&gt;customer field sample&lt;/a&gt; doesn't work 
   or doesn't always work, so I finally decided to try another approach and came 
   up with a new implementation, which is more elegant and smaller than the old 
   one and hopefully more reliable as well. As usual, this is an unsupported 
   customization.&lt;/p&gt;
   &lt;p class="normal"&gt;In the meantime I received a modified version of the 
   original sample, which I post in this article as well.
    </content>
   </entry>
   <entry>
      <title>Meanwhile in New Hampshire ... 33 U.S. States already are, are now claiming, or are planning for declaration of sovereignty</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MyView3" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MyView3" />
      <id>tag:stunnware.com,2009-02-03:MyView3</id>
      <published>2009-02-03T21:00:00+01:00</published>
      <updated>2009-03-22T21:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;If anyone is still believing that everything is fine or will be fine later 
this year or in 2010 without major changes, then I invite you to read the 
resolutions of the State of New Hampshire made in 2009:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;table id="Table2" align="center" border="0" cellPadding="6" cellSpacing="0" width="760"&gt;
	&lt;tr&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;&lt;strong&gt;HCR1&lt;/strong&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;LSR 
		Number: 278&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0001.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="80%"&gt;urging congress to 
		withdraw the United States from the Security and Prosperity Partnership 
		of North America. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td vAlign="top" width="20%"&gt;&lt;b&gt;HCR2&lt;/b&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="20%"&gt;LSR Number: 217&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0002.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="80%"&gt;endorsing the National Health Insurance 
		Act. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;&lt;strong&gt;HCR3&lt;/strong&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;LSR 
		Number: 406&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0003.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="80%"&gt;recommending a statement 
		of principles on international trade. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td vAlign="top" width="20%"&gt;&lt;strong&gt;HCR4&lt;/strong&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="20%"&gt;LSR Number: 827&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0004.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="80%"&gt;supporting the Basel Convention on the 
		international shipment of hazardous waste. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;&lt;strong&gt;HCR5&lt;/strong&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;LSR 
		Number: 634&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0005.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="80%"&gt;urging Congress to enact 
		a system of voluntary public funding for all federal elections. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td vAlign="top" width="20%"&gt;&lt;strong&gt;HCR6&lt;/strong&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="20%"&gt;LSR Number: 274&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0006.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="80%"&gt;&lt;strong&gt;affirming States' rights based on 
		Jeffersonian principles.&lt;/strong&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;&lt;strong&gt;HCR7&lt;/strong&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;LSR 
		Number: 615&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0007.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="80%"&gt;in support of teen dating 
		violence education. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td vAlign="top" width="20%"&gt;&lt;strong&gt;HCR8&lt;/strong&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="20%"&gt;LSR Number: 405&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0008.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="80%"&gt;urging the President and Secretary of 
		Defense to withdraw all New Hampshire national guard troops from Iraq in 
		the absence of a valid and subsisting Congressional mandate for such 
		service, and withholding the consent of the governor and New Hampshire 
		state legislature from any further deployment of the New Hampshire 
		national guard to Iraq in the absence of such mandate. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;&lt;strong&gt;HCR9&lt;/strong&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="20%"&gt;LSR 
		Number: 621&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0009.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td bgColor="#f2f2f2" vAlign="top" width="80%"&gt;urging the United States 
		Senate to ratify the Comprehensive Test Ban Treaty. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td vAlign="top" width="20%"&gt;&lt;strong&gt;HCR10&lt;/strong&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="20%"&gt;LSR Number: 481&lt;br&gt;
		&lt;a href="http://www.gencourt.state.nh.us/legislation/2009/HCR0010.html"&gt;
		View Bill Text &lt;/a&gt;&lt;/td&gt;
		&lt;td vAlign="top" width="80%"&gt;urging the federal government to withdraw 
		the United States from the North American Free Trade Agreement. &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;    
    </content>
   </entry>
   <entry>
      <title>My personal view of the world - Introduction</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MyView1" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MyView1" />
      <id>tag:stunnware.com,2009-01-26:MyView1</id>
      <published>2009-01-26T01:00:00+01:00</published>
      <updated>2009-02-09T01:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Difficult times are ahead and if you believe the mainstream media, 
politicians and so-called experts, then all events were unforeseeable and are 
unprecedented. If this is true, then be happy with all of these bailouts and 
continue to believe that your government does its best to solve the problems. 
I'm not questioning that most politicians do the best they can, but they don't 
understand the big picture and therefore act like marionettes.Indeed, most of them are marionettes, controlled by people that are not visible 
in the mainstream media. And there is a good reason for it: the same people 
controlling government are also controlling the mainstream media. &lt;/p&gt;
&lt;p&gt;For instance, it is widely known that there is the Bilderberg group. If you 
don't know what that is, then simply search for it and you will find plenty of 
information. If you already know about it and call it a conspiracy theory, then 
ask yourself why the annual meetings of this group are never mentioned on TV. If 
people were aware that kings, queens, chancellors and presidents meet with 
Rockefeller, Rothschild and very influential people from private businesses each 
year and that nothing of what they talk about is available to the public, then 
you should expect that journalists start their research and there should be 
enough TV stations showing it as a sensational story. However, there is no 
coverage at all.&lt;/p&gt;
&lt;p&gt;Mass media has been used for propaganda since being available and this focus 
hasn't changed since then. I'm really sorry to say it, but TV, radio and most 
newspapers and magazines do only report what they should report. And that is 
somewhere between lying and not telling the whole story. The Internet is full of 
resources giving a very different understanding of the current world and 
history, so I suggest anyone to read as much as possible while this information 
isn't filtered out.&lt;/p&gt;
&lt;p&gt;I'm going to create articles in the "My View" category regularly and I hope 
that at least some of you read them and follow the links I'm providing. There 
are many excellent resources out there, but though they give a much better 
explanation of our current situation, they most likely will not make it to the 
mainstream media. Instead, they are called conspiracy theories and this 
instantly classifies them as nonsense, bullshit and simply wrong. However, the 
term "conspiracy theory" means that there is a theory of a conspiracy. If you 
deny researching it, then each single plot will succeed, because no one is 
investigating it.&lt;/p&gt;
    
    </content>
   </entry>
   <entry>
      <title>Stunnware Tools for Microsoft Dynamics CRM 4.0 - New UI</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework10" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework10" />
      <id>tag:stunnware.com,2009-01-22:Framework10</id>
      <published>2009-01-22T14:00:00+01:00</published>
      <updated>2009-01-22T14:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I worked for quite a while on a new UI for the
&lt;a href="/default.aspx?area=products&amp;group=swtools4"&gt;Stunnware Tools&lt;/a&gt; and 
decided today to publish the new version as some kind of experimental build. The 
new UI looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="New UI" height="600" src="/crm2/data/images/Framework10/v4.3.png" width="804"&gt;&lt;/p&gt;
&lt;p&gt;I used the Developer Express Control Library for this new design and the 
Ribbon interface makes it much easier to use than before, where the main menu 
become somewhat bizarre in the end. I haven't changed the documentation yet, so 
the screenshots in the help file do not match the current UI. I hope though that 
it's easy enough to understand. The previous version, matching the 
documentation, is still available for download, just in case there are major 
issues in the new version.&lt;/p&gt;    
    </content>
   </entry>
   <entry>
      <title>Some statistics (2008)</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Stat3" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Stat3" />
      <id>tag:stunnware.com,2009-01-02:Stat3</id>
      <published>2009-01-02T23:00:00+01:00</published>
      <updated>2009-01-02T23:00:00+01:00</updated>
      <content type="html">
      For all of you who are interested in reading statistics, I'm providing the third detailed overview about the Stunnware site.
      &lt;br/&gt;&lt;br/&gt;
      &lt;b&gt;Users from 93 countries&lt;/b&gt;
      &lt;br/&gt; 
It's hard to figure out where a user is located, as a .com domain doesn't necessarily mean that a company resides in the US. Maybe the best example is my own web site, which is a .com domain but hosted in Germany. So I looked at the requests coming from the various Google searches. Many users in Germany use google.de instead of google.com, so it's a good clue that a referrer from google.de comes from a German.
      &lt;br/&gt;&lt;br/&gt;
According to that people from the following countries found my site through a Google search: Algeria, Argentina, Armenia, Australia, Austria, Bahrain, Bangladesh, Belarus, Belgium, Bosnia-Herzegovina, Brazil, Bulgaria, Canada, Chile, China, Colombia, Costa Rica, Croatia, Czech Republic, Denmark, Dominican Republic, Ecuador, Egypt, El Salvador, Estonia, Ethiopia, Finland, France, Georgia, Germany, Ghana, Greece, Guatemala, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kenya, Kuwait, Latvia, Lithuania, Luxembourg, Malaysia, Malta, Mauritius, Mexico, Micronesia, Moldavia, Nepal, Netherlands, New Zealand, Nicaragua, Nigeria, Norway, Oman, Pakistan, Peru, Philippines, Poland, Portugal, Puerto Rico, Qatar, Romania, Russia, Saudi Arabia, Singapore, Slovak Republic, Slovenia, South Africa, South Korea, Spain, Sri Lanka,  
Sweden, Switzerland, Taiwan, Thailand, Trinidad and Tobago, Turkey, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Venezuela, Vietnam.     
    </content>
   </entry>
   <entry>
      <title>Third MVP Award!</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=MVP3" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/MVP3" />
      <id>tag:stunnware.com,2009-01-02:MVP3</id>
      <published>2009-01-02T22:00:00+01:00</published>
      <updated>2009-01-02T22:00:00+01:00</updated>
      <content type="html">
&lt;p&gt;I'm very happy that I was given the Microsoft MVP award for a third time:&lt;/p&gt;
   &lt;p&gt;&lt;em&gt;Dear Michael Hoehne,&lt;br&gt;&lt;br&gt;Congratulations! We are pleased to present 
   you with the 2009 Microsoft® MVP Award! This award is given to exceptional 
   technical community leaders who actively share their high quality, real world 
   expertise with others.&lt;br&gt;The Microsoft MVP Award provides us the unique 
   opportunity to celebrate and honor your significant contributions and say 
   "Thank you for your technical leadership."&lt;/em&gt;&lt;/p&gt;
   &lt;p&gt;I received the &lt;a href="/crm2/topic.aspx?id=mvp"&gt;first MVP award&lt;/a&gt; in January 
	2007 and the &lt;a href="/crm2/topic.aspx?id=mvp2"&gt;second&lt;/a&gt; in January 2008. Being awarded 
   the third time in a row is a great honor and I try my best to continue my 
   community work, though Stunnware (the company) needs more and more time. Want 
   to know who the other CRM MVPs are? You can see them
   &lt;a href="https://mvp.support.microsoft.com/communities/mvp.aspx?product=1&amp;competency=Dynamics+CRM&amp;page=1"&gt;
   here&lt;/a&gt;. &lt;/p&gt;
    </content>
   </entry>
   <entry>
      <title>The CRM 4.0 Keep Alive Service</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=KeepAliveService" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/KeepAliveService" />
      <id>tag:stunnware.com,2008-12-12:KeepAliveService</id>
      <published>2008-12-12T15:00:00+01:00</published>
      <updated>2009-03-07T15:00:00+01:00</updated>
      <content type="html">
A while ago I posted a sample on how to develop a Windows Service targeting Microsoft Dynamics CRM. I used my own sample to create a service that is doing something meaningful. You probably know about Joris Kalz' Caching Tool for Microsoft Dynamics CRM 3.0 and I asked him if he's planning to upgrade it to a version targeting CRM 4.0. As there were no plans, I decided to create it myself and share it with you. It's really simple and comes with the entire code, so you can change it to your needs.
&lt;br/&gt;&lt;br/&gt;
If you don't know what I'm talking about, then here's the short explanation: an ASP.NET application isn't loaded before accessed for the first time. And an ASP.NET application is unloaded if the IIS application pool is recycled. As CRM is an ASP.NET application, you should have noticed that there is a delay when opening the CRM web client for the first time, because usually the application pool was recycled and CRM isn't initialized. The time needed for the first initialization is very different from system to system and ranges between a few seconds up to 30 seconds and sometimes even more. This problem isn't in any way specific to CRM. 
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;What has to be initialized?&lt;/b&gt;
&lt;br/&gt;
When making the first request to CRM (or any other ASP.NET page), then IIS loads the requested page and parses it. If ASP.NET code is associated with the page, then it is compiled and executed. If one or more assemblies are bound to the page, then they have to be loaded. Some assemblies have references to other assemblies and they are loaded as well. Web service bindings may be initialized and finally the code is executed, which often is an initial caching of metadata and/or reading of configuration values. This takes some seconds and it's extremely annoying for a user to wait until it's done. The goal of Joris' and my implementation simply is a background service polling CRM - or other web applications - continuously. If the IIS application pool is recycled or the ASP.NET application has to be initialized again, then the service will do it and the user doesn't have to wait when starting the application.
&lt;br/&gt;&lt;br/&gt;
CRM uses the SQL Server as its database backend and SQL Server uses caching as well. The more traffic you have on a SQL database, the more gets cached and the faster the system becomes. At least in theory. So accessing all kind of CRM entities builds up the SQL cache as well. All of it is done by the Keep Alive Service.
    </content>
   </entry>
   <entry>
      <title>Financial Crisis</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=crisis1" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/crisis1" />
      <id>tag:stunnware.com,2008-11-23:crisis1</id>
      <published>2008-11-23T23:00:00+01:00</published>
      <updated>2008-11-23T23:00:00+01:00</updated>
      <content type="html">
I had a hard time deciding whether or not to put this on my blog. It's not related to Stunnware and it's not related to CRM. It's all about our economy. I don't have to tell you that the future doesn't look bright and theories range from some years of recession up to a complete fault of the monetary system. I'm not an expert in this and I expect most of you aren't either. 
&lt;br/&gt;&lt;br/&gt;
I finally decided to write about my personal feelings, my fears, hopes and whatever else it might be. Before I do so, I really want you to look at the site of &lt;a href="http://www.chrismartenson.com"&gt;Chris Martenson&lt;/a&gt; and take the Crash Course. It takes some time to watch all of the videos and many of you may think that I have stolen your time after going through it. However, if there's only one getting a better understanding of the current financial situation on earth, then it was worth writing this, even if 90% of you call me an idiot afterwards. This is my personal risk and actually the reason why it was so difficult for me writing this. On the other hand, I don't want to say it anonymously on some blog or discussion forum, because anonymity and the fear of being dismissed is the main reason why it's not being discussed more widely.
&lt;br/&gt;&lt;br/&gt;
The Crash Course is a great way to learn about economics, energy and environment. If you look at each of these topics separately, then you probably come to the same conclusion that I had: you knew most of the facts before, though I guarantee that you will learn lots of new stuff. However, you may have a totally different view on these topics after you have seen how they play together and what the consequences are. Again, I'm not an expert and hope that all goes well in the future, but I have doubts. The videos of the Crash Course are more than 3 hours in total, so it's nothing that can be done while working or in a short break. But I really recommend doing it. Each of you will have a different opinion at the end and my excuses go to all that feel it was a waste of time.
    </content>
   </entry>
   <entry>
      <title>Meet me at Convergence EMEA 2008 in Copenhagen</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Convergence2008" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Convergence2008" />
      <id>tag:stunnware.com,2008-10-30:Convergence2008</id>
      <published>2008-10-30T11:00:00+01:00</published>
      <updated>2008-10-30T11:00:00+01:00</updated>
      <content type="html">
It's Convergence time again and I hope to see a lot of you in Copenhagen again - yes, it's the same location as last year. Besides the usual duty at the CRM Kiosk, I'm also doing a session with Marco Amoedo and Ronald Lemmen:
&lt;br/&gt;&lt;br/&gt;
As part of the Convergence Conference in Copenhagen (www.microsoft.com/convergence) next month we are going to set up a “Ask the CRM Experts” panel to field product-related questions (the session number is IDCRM05). We’ll have a panel of esteemed Microsoft Dynamics CRM MVPs available to answer questions live and in person. 
&lt;br/&gt;&lt;br/&gt;
&lt;i&gt;
Expect a lively audience and a jam-packed 60 minutes of useful information and fun. If you’ll be attending Convergence this year and have a product-related question, we encourage to add your questions (technical/functional or business-related) to this forum post in advance, attend this session, and we’ll do our best to answer your questions on-site at the event (or point you to the answer online if it has already been answered within another area of our forums).
&lt;br/&gt;&lt;br/&gt;
Don’t miss out on this opportunity. Post your questions and we’ll see you in Copenhagen!
&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;
Oops, what's that? Post your questions? Yep, there's a new thread in the CRM Forum where you can post questions that we try to answer at Convergence. It's a 1-hour session, so we cannot get into details or try finding a solution that's almost impossible to do, so here's my own expectation:
&lt;ul&gt;
&lt;li&gt;You are thinking about Microsoft Dynamics CRM but haven't deployed it yet. You may have a test installation but are unsure how to proceed. Come to our session and learn from others that already have deployed CRM. Ask your questions, share your concerns and get in touch with other people having or having had the same situation.&lt;/li&gt;
&lt;li&gt;You are partially using Microsoft Dynamics CRM and want to use more features of the product, but you are unsure if it's going to work. For instance, you may use the sales module and are now looking at the service module. Is that module capable to replace your existing bug tracking software? As always, the answer will be "it depends". But hey, what if there are two other people sitting in the room (not us :-) using it? Maybe they want to share some of their experiences and you have someone to talk to.&lt;/li&gt;
&lt;li&gt;You are an experienced Microsoft Dynamics CRM user and are willing to share some best practices. Note that this is an interactive session, meaning that you, the audience, not only listens to what we say. Instead you are also encouraged to talk about your experiences. Ideally we (the MVPs) are just sitting in the room and listen to what you say. That would be awesome and perfectly match the community idea of Convergence.&lt;/li&gt;
&lt;li&gt;You always wanted to know how these MVPs look like and meet us in person. That's fair and you're welcome to join as well.&lt;/li&gt;
&lt;li&gt;You have technical questions and never got an answer in the forums or newsgroup? To be honest, don't expect an answer in this session then, because if a question is difficult enough to not get answered in the community, then it probably won't get answered in a 1-hour session. We'll try our best to help though.&lt;/li&gt;
&lt;/ul&gt;
Here is my personal schedule for Convergence. Feel free to step in and say hello, ask questions or whatever else you want to do:
&lt;br/&gt;&lt;br/&gt;
Nov 18, 17:30 - 19:30, MS Dynamics Overview Kiosk&lt;br/&gt;
Nov 19, 11:00 - 14:00, MS Dynamics Overview Kiosk&lt;br/&gt;
Nov 19, 17:00 - 19:00, MS Dynamics Overview Kiosk&lt;br/&gt;
Nov 20, 12:00 - 13:00, IDCRM05, Microsoft Dynamics CRM: Ask the Community Experts&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt; 
See you at Convergence!
</content>
   </entry>
   <entry>
      <title>Accessing CRM Web Services from JavaScript: Retrieving exchange rates</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JSWEB1" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JSWEB1" />
      <id>tag:stunnware.com,2008-10-24:JSWEB1</id>
      <published>2008-10-24T11:00:00+01:00</published>
      <updated>2008-10-24T11:00:00+01:00</updated>
      <content type="html">
There are many samples on blogs or in newsgroups accessing the CRM web services from JavaScript that are based on the output of either the Stunnware Tools or the .NET to JavaScript conversion tool and I think it's time to start a new series collecting these samples. 
&lt;br/&gt;&lt;br/&gt;
The first is based on a newsgroup post and shows how to retrieve the exchange rate of a foreign currency. To make it easier to reuse, I put the main code into a function: 
    </content>
   </entry>
   <entry>
      <title>Comparing data against non-static values / Advanced Find beyond the basics</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=AdvancedFind2" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/AdvancedFind2" />
      <id>tag:stunnware.com,2008-10-23:AdvancedFind2</id>
      <published>2008-10-23T16:00:00+01:00</published>
      <updated>2008-10-23T16:00:00+01:00</updated>
      <content type="html">
Today there was an interesting question in the developer newsgroup:
&lt;br/&gt;&lt;br/&gt;
How do you create a view/advanced find that only shows contacts who are in &lt;br/&gt;
the same state (as in location) as the current logged on user?
&lt;br/&gt;&lt;br/&gt;
The user may not necessarily be the owner of these records.
&lt;br/&gt;&lt;br/&gt;
You usually would say that it doesn't work, but FetchXml can handle such queries:
    </content>
   </entry>
   <entry>
      <title>Filtered Lookup Support: New group on Google</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=FldSupportGroup" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/FldSupportGroup" />
      <id>tag:stunnware.com,2008-10-21:FldSupportGroup</id>
      <published>2008-10-21T12:00:00+01:00</published>
      <updated>2008-10-21T12:00:00+01:00</updated>
      <content type="html">
Some people asked whether there is an official support forum for the Stunnware Filtered Lookup application and so far the answer has been "no". However, it's making sense having a central place for questions and answers, just like the CRM newsgroups and web forums. Without spending too much time on researching, I created a new group in Google: 
&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://groups.google.com/group/stunnware-filtered-lookup-40"&gt;http://groups.google.com/group/stunnware-filtered-lookup-40&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
I'm not familiar with Google groups at all, so please excuse if there are problems in the beginning. I don't even know if you can post messages, but from what I have seen it should work after you have created an account. If you have questions regarding the Filtered Lookup product, please consider posting to this group, so we can build some kind of knowledge base. And don't hesitate to answer if you know the solution to a question.
I'm trying my best to read and answer questions myself just as I did before using email. I'm also creating a recurring task in Outlook reminding me to check for new messages.
&lt;br/&gt;&lt;br/&gt;
One important note: this group is intended to be used for Filtered Lookup related questions only. Please use the CRM newsgroups or web forums for general CRM questions    
    </content>
   </entry>
   <entry>
      <title>Email Problems</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=EmailProblems" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/EmailProblems" />
      <id>tag:stunnware.com,2008-10-08:EmailProblems</id>
      <published>2008-10-08T00:00:00+01:00</published>
      <updated>2008-10-08T00:00:00+01:00</updated>
      <content type="html">
We had major issues with email connectivity in the last days. In particular, you may have received an automated email containing the following information:
&lt;br/&gt;&lt;br/&gt;
Body of message generated response:&lt;br/&gt;
552 Your email has been blocked: Blocked by Heuristic Scanning.
&lt;br/&gt;&lt;br/&gt;
If you have sent an email to Stunnware and have not received an answer, then it is definitely related to this issue. Please resend your message and we will get back to you as soon as possible.
&lt;br/&gt;&lt;br/&gt;
We are sorry for this inconvenience, but sometimes technology doesn't do what it's supposed to do.
    </content>
   </entry>
   <entry>
      <title>Filtered Lookup 4.1.41 released</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=FLD4-6" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/FLD4-6" />
      <id>tag:stunnware.com,2008-09-28:FLD4-6</id>
      <published>2008-09-28T09:00:00+01:00</published>
      <updated>2008-09-28T09:00:00+01:00</updated>
      <content type="html">
An updated version of the Filtered Lookup for Microsoft Dynamics CRM 4.0 is now available. It fixes some issues that have been reported in the last weeks:
&lt;ul&gt;
&lt;li&gt;Some entities were missing in the entity selection dropdown of the Retrieve Query, Retrieve Multiple Query and Lookup View entities.&lt;/li&gt;
&lt;li&gt;When changing column sizes and clicking on a column header to sort the displayed values, the initial column size is used for the data rows, resulting in a slightly scrambled view.&lt;/li&gt;
&lt;li&gt;Internet Explorer crashes when trying to filter the quoteid field in a sales order. The reason is a piece of CRM code registering for the setadditionalparams event, which interferes with the Filtered Lookup code that registers for the same event.&lt;/li&gt;
&lt;li&gt;There is a documentation error in the Retrieve Multiple Query article. The code sample tells you to set the lookup class by using the lookupClass parameter. However, you should always use the setLookupClass function.&lt;/li&gt;
&lt;li&gt;When typing in a search a value in the filtered lookup dialog, the initial "Search for" text sometimes isn't hidden.&lt;/li&gt;
&lt;/ul&gt;
    </content>
   </entry>
   <entry>
      <title>Providing feedback on the SDK documentation</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=SDKFeedback" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/SDKFeedback" />
      <id>tag:stunnware.com,2008-09-26:SDKFeedback</id>
      <published>2008-09-26T22:00:00+01:00</published>
      <updated>2008-09-26T22:00:00+01:00</updated>
      <content type="html">
Today I found a minor documentation error in the CRM SDK help (crmsdk4.chm). The description of the organization.isvintegrationcode attribute is "Gets or sets whether to load Microsoft Dynamics CRM in a browser window that does not have address, tool and menu bars." but it should be something like "Gets or sets the clients that will display custom buttons and menu items configured in ISV.Config."
&lt;br/&gt;&lt;br/&gt;
I thought it to be a good idea letting the Microsoft CRM documentation team know about it and searched for a feedback link. It turned out that there wasn't a feedback link, at least not on this topic. That is astounding, because every single page in the CRM help of the web client does have such a link. I do know some people in the product team, so I sent an email to get it fixed in the next SDK release and in the following email conversation I learned two things:
&lt;ol&gt;
&lt;li&gt;There are feedback links in the crmsdk4.chm file, but you won't find them. Go to the search tab and enter "Feedback". Two topics are displayed.&lt;/li&gt;
&lt;li&gt;Feedback links are available for each topic in the online version of the CRM SDK docs.&lt;/li&gt;
&lt;/ol&gt;
    </content>
   </entry>
   <entry>
      <title>Enabling fields and events in bulk edit forms</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=BulkEdit" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/BulkEdit" />
      <id>tag:stunnware.com,2008-09-26:BulkEdit</id>
      <published>2008-09-26T21:00:00+01:00</published>
      <updated>2008-09-26T21:00:00+01:00</updated>
      <content type="html">
You may have noticed that in CRM 4.0 the JavaScript events do not fire in Bulk Edit forms. It doesn't seem a big issue, because until today I haven't heard any complaints about it - or I already forgot them. Anyway, there are two things about the Bulk Edit form that you should know:
&lt;ol&gt;
&lt;li&gt;Any event handling code (OnLoad, OnSave, OnChange) is disabled by default, but you can get them working again.&lt;/li&gt;
&lt;li&gt;Any field having an OnChange event handler applied is disabled on the form. You can fix that as well.&lt;/li&gt;
&lt;/ol&gt;
The second is a big issue. Say you select 10 contacts and want to assign a new parent account, open the Bulk Edit form and find the parent customer field disabled. That sucks. You could try enabling the field with JavaScript, but that doesn't work because of the first issue.
    </content>
   </entry>
   <entry>
      <title>CRM4 Outlook Client – Issues and Fixes</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=OutlookClient" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/OutlookClient" />
      <id>tag:stunnware.com,2008-09-25:OutlookClient</id>
      <published>2008-09-25T23:00:00+01:00</published>
      <updated>2008-09-25T23:00:00+01:00</updated>
      <content type="html">
The CRM Outlook Client can cause a lot of headaches and my personal feeling is that it's often related to Outlook rather than the CRM add-on. Whatever the reason may be, the CRM product team spends a lot of time in fixing bugs to enhance the user experience. If you face problems and haven't read the following article, then you definitely should, because it's a rollup package including fixes for known problems:
    </content>
   </entry>
   <entry>
      <title>Stunnware Tools for Microsoft Dynamics CRM 4.0 - Trace File Viewer (free extension)</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework9" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework9" />
      <id>tag:stunnware.com,2008-09-25:Framework9</id>
      <published>2008-09-25T23:00:00+01:00</published>
      <updated>2008-09-25T23:00:00+01:00</updated>
      <content type="html">
I had not expected to finish two extensions on the same day. Maybe it happened because I was sick the last two days and now feel much better. Anyway, besides the customization comparer that I published a few hours ago, the Stunnware Tools application now also contains the Trace File Viewer. It's a free extension and can be used in the Community Edition without any limitation.
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Purpose of this extension&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
Sometimes weird things happen in Microsoft CRM and the error messages provided are not always helpful. The good news is that CRM provides a powerful logging mechanism, called CRM tracing. To enable tracing, please refer to the appropriate Microsoft KB Article. 
&lt;br/&gt;&lt;br/&gt;
The bad thing about these trace files are that they are hard to read and analyze. If you don't know what exactly to look for, then it can be a very time-consuming process. The Trace File Viewer allows easy parsing of such files and offers a variety of filtering options.
    </content>
   </entry>
   <entry>
      <title>Stunnware Tools for Microsoft Dynamics CRM 4.0 - The Customization Comparer</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework8" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework8" />
      <id>tag:stunnware.com,2008-09-25:Framework8</id>
      <published>2008-09-25T13:00:00+01:00</published>
      <updated>2008-09-25T13:00:00+01:00</updated>
      <content type="html">
I added a new plug-in to the Stunnware Tools application: the Customization Comparer. 
&lt;br/&gt;&lt;br/&gt;
If you have to troubleshoot a CRM installation, it's very important to know if the system has changed and what changes have been made since the last time you deployed your solution. Many problems are based on customization changes, but finding the differences between the current and a previous system state is very difficult and time-consuming. 
&lt;br/&gt;&lt;br/&gt;
The Customization Comparer takes two CRM customization export files (customization.xml) and compares their contents. All modifications are shown in a result tree, giving a quick view of what has changed. All you have to do is exporting all customizations and save the file for later reference. You can then, at any time, do an export again and compare these files. You can also export a subset of customizations instead.
    </content>
   </entry>
   <entry>
      <title>Creating a Windows Service for Microsoft Dynamics CRM 4.0</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=CrmWindowsService1" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/CrmWindowsService1" />
      <id>tag:stunnware.com,2008-09-17:CrmWindowsService1</id>
      <published>2008-09-17T11:00:00+01:00</published>
      <updated>2008-09-17T11:00:00+01:00</updated>
      <content type="html">
I am really sorry for the silence on my blog. There is a lot of work going on at Stunnware and this article became longer and longer. In the end it's 24 printed pages, so I really should consider writing a book ;-) Anyway, I hope that you find it a worthwhile reading and that it helps in your daily work.
&lt;br/&gt;&lt;br/&gt;
When it comes to automating things in Microsoft Dynamics CRM, you usually create server-side logic in workflows or plug-ins. Workflows are great to perform simple tasks and can be greatly enhanced with custom workflow activities. However, they always need an entity context. Plug-Ins are great as well, but they are more complex. They also require an entity context. What if you want to automate a data import or export, or you want to schedule other tasks that are not triggered by an action in CRM?
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Windows Services&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
A good alternative to workflows and plug-ins is a Windows Service and as I haven't seen an example of it so far, I'm doing it now, because it's really easy. Since I have my new notebook, I only have Visual Studio 2008 installed. If you are running an older version, you should still be able to follow this article, because the Windows Service template was available at least since Visual Studio 2003. 
    </content>
   </entry>
   <entry>
      <title>Stunnware Tools for Microsoft Dynamics CRM 4.0 Released</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework7" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework7" />
      <id>tag:stunnware.com,2008-08-27:Framework7</id>
      <published>2008-08-27T15:00:00+01:00</published>
      <updated>2008-08-27T15:00:00+01:00</updated>
      <content type="html">
It's out. I published the final release of the Stunnware Tools for Microsoft Dynamics CRM 4.0 a few minutes ago and it's not available in our &lt;a href="/?area=products&amp;group=swtools4"&gt;product area&lt;/a&gt;. It is still a community tool and has all the features you know from previous versions. However, there also is the Professional Edition, which is a yearly subscription.
&lt;br/&gt;&lt;br/&gt;
Everything else is available on the product page. As for the Filtered Lookup application, I again spent a lot of time in writing the documentation, even for the modules contained in the Community Edition, so I appreciate you're reading it before asking questions.
&lt;br/&gt;&lt;br/&gt;
I hope you like the tool, whether you are going for the Community Edition or the Professional Edition.
    </content>
   </entry>
   <entry>
      <title>Got my new notebook!</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Notebook64_3" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Notebook64_3" />
      <id>tag:stunnware.com,2008-08-14:Notebook64_3</id>
      <published>2008-08-14T22:00:00+01:00</published>
      <updated>2008-08-14T22:00:00+01:00</updated>
      <content type="html">
I was very quiet in the last two weeks. One of the reasons was the 4.1 release of the Filtered Lookup and the other was my new notebook, which arrived last Friday. Since then I became a DJ - downloading software from MSDN, burning CDs and DVDs, installing, shifting data from my old system... all of these tasks you have to do when getting a new system.
&lt;br/&gt;&lt;br/&gt;
The new machine is a Lenovo ThinkPad T61p with the following upgrades:&lt;ul&gt;
&lt;li&gt;8GB RAM, DDR2 667MHz (2x4GB)&lt;/li&gt;
&lt;li&gt;320GB 7200 SATA Seagate, 16MB Cache, 3GB/s&lt;/li&gt;
&lt;li&gt;Silent Pack for ThinkPad T61, Fan-Control Tool&lt;/li&gt;
&lt;li&gt;Intel T9500 2,6GHz Core2Duo 6MB cache&lt;/li&gt;
&lt;li&gt;15,4" WSXGA+ 1680x1050, non-glare, 0 pixel errors warranty&lt;/li&gt;
&lt;li&gt;NVIDIA Quadro FX570M, 256MB&lt;/li&gt;
&lt;li&gt;IBM DVD+-RW dual layer drive&lt;/li&gt;
&lt;li&gt;IBM Lenovo ThinkPad Advanced Ultrabay Battery&lt;/li&gt;&lt;/ul&gt;
&lt;br/&gt;&lt;br/&gt;
I also bought a Samsung SyncMaster 245B. This is a 24" wide-screen monitor with 1920x1200 pixels and it's great to use Visual Studio and other applications in this resolution. And I have 3 batteries. I only ordered the Ultrabay battery but because it took longer than expected to assemble the machine, the distributor decided to give be an additional one for the standard battery slot. When using two of them (DVD Drive has to be removed), Windows shows something between 5 and 7 hours of remaining time to work. And then I still have the chance to replace one of the two to get an additional 2 or 3 hours, so in theory I can work offline between say 6 and 10 hours, which is good for my next flight to the US.
    </content>
   </entry>
   <entry>
      <title>Filtered Lookup for Microsoft Dynamics CRM 4.1 released</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=FLD4-5" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/FLD4-5" />
      <id>tag:stunnware.com,2008-08-03:FLD4-5</id>
      <published>2008-08-03T10:00:00+01:00</published>
      <updated>2008-08-03T10:00:00+01:00</updated>
      <content type="html">
&lt;b&gt;Filtered Lookup Version 4.1 available for download&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
It took a while to complete, but you can now download the 4.1 release of the Filtered Lookup for Microsoft Dynamics CRM 4.0. Probably most of interest is the added support for Internet Facing Deployments, allowing the use of this add-on in hosted environments or when accessing your own on-premise installation over the Internet.
&lt;br/&gt;&lt;br/&gt;
The release also includes a brand new Configuration Manager, that can work on multiple organizations in parallel. While mainly developed for service providers, you will benefit from it as well.
&lt;br/&gt;&lt;br/&gt;
Another neat addition is an option to display view definitions, either single- or multi-view, in an IFRAME and let them behave like a standard CRM view. It worked before, but the view mode option removes the buttons and header and a double-click on an item opens the selected record rather than trying to close the window.
&lt;br/&gt;&lt;br/&gt;
Version 4.0.20 is still available for download, because a lot of you have built applications based on it and may not want to upgrade now.
&lt;br/&gt;&lt;br/&gt;
More information is available on the product page and in the updated documentation.
    </content>
   </entry>
   <entry>
      <title>The Stunnware Tools Framework for Microsoft Dynamics CRM 4.0 - Code Generator</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework6" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework6" />
      <id>tag:stunnware.com,2008-07-31:Framework6</id>
      <published>2008-07-31T15:00:00+01:00</published>
      <updated>2008-07-31T15:00:00+01:00</updated>
      <content type="html">
I'm currently in the final stage of releasing version 4.1 of the Filtered Lookup and it will be the best filtered lookup ever. I had to postpone most other activities because of this, but I have created a second video showing another highlight of the upcoming Professional Edition of the Stunnware Tools application.
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;The Code Generator&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
A big disadvantage when working with the Microsoft CRM SDK assemblies, is that you have to use dynamic entities most of the time. While the DynamicEntity class was enhanced to make it easier to use, you're losing a lot of benefits you had when using the web services: 
&lt;ul&gt;
&lt;li&gt;You don't know at compile time if your code is correct, because you are not using strongly typed classes and you don't access named properties.&lt;/li&gt;
&lt;li&gt;Intellisense: because of the above, you also don't get any context-sensitive help while developing in Visual Studio&lt;/li&gt;
&lt;li&gt;You have to use the more complex RetrieveRequest and RetrieveMultipleRequest messages with the Execute method instead of the Retrieve and RetrieveMultiple methods.&lt;/li&gt;
&lt;/ul&gt;
All in all your code becomes more complex and it takes more time to develop and test.
&lt;br/&gt;&lt;br/&gt;
The professional edition introduces a code generator that gives you back everything you lost plus some additional benefits:
&lt;ul&gt;
&lt;li&gt;Works with the CrmService class and the ICrmService interface from the Microsoft CRM SDK assemblies&lt;/li&gt;
&lt;li&gt;Creates C# and VB.NET code&lt;/li&gt;
&lt;li&gt;Creates classes for all or selected entities, providing nullable properties for easy access&lt;/li&gt;
&lt;li&gt;All attribute names in each class are defined as constant strings, so you never have to look at CRM again to remember the correct spelling&lt;/li&gt;
&lt;li&gt;Creates enumerations for all picklists, state and status attributes&lt;/li&gt;
&lt;li&gt;Adds methods for easy use of the CRUD operations (Create, Retrieve, RetrieveMultiple, Update, Delete)&lt;/li&gt;
&lt;li&gt;Adds methods to change an entity's state&lt;/li&gt;
&lt;li&gt;Provides easy management of all reference types (Lookup, Owner, Customer), e.g. you write account.Primarycontactid = myContact.ToReference()&lt;/li&gt;
&lt;li&gt;Allows you to create your own code generation templates. If you want some special methods in every class, then simply add it to the template files.&lt;/li&gt;
&lt;/ul&gt;
    </content>
   </entry>
   <entry>
      <title>Client Side Scripting - Changing the default view of related entities, CRM 4.0 version</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS33" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS33" />
      <id>tag:stunnware.com,2008-07-22:JS33</id>
      <published>2008-07-22T21:00:00+01:00</published>
      <updated>2008-07-22T21:00:00+01:00</updated>
      <content type="html">
More than a year ago I posted an article about how to change the default view in an associated view. The most common requirement was changing the history view to display all records instead of the last 30 days, which still is the default in CRM 4.0. I haven't had time to update the code yet and the good thing is that I don't even have to. Jonathan Briggs from SoftArtisans sent me the complete solution for CRM 4.0 and it's an even better solution than the old 3.0 implementation, because it only loads the view when selecting the history view, instead of doing it while loading the form.
&lt;br/&gt;&lt;br/&gt;
The basic setup hasn't changed that much, so you can still use the previous article for a detailed explanation of the code and instead of repeating everything, I simply post Jonathan's code:
    </content>
   </entry>
   <entry>
      <title>Right-aligning numerical fields in CRM views - reworked</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS32" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS32" />
      <id>tag:stunnware.com,2008-07-17:JS32</id>
      <published>2008-07-17T09:00:00+01:00</published>
      <updated>2008-07-22T09:00:00+01:00</updated>
      <content type="html">
Chris List send me an email about the implementation used in Right-aligning numerical fields in CRM views. Instead of using a script to dynamically change the styles at runtime, he suggested modifying the styles in the header instead. I also worked on this topic, but haven't had updated the article yet. The following combines Chris' approach and what I have done since posting the initial article.
    </content>
   </entry>
   <entry>
      <title>The Stunnware Tools Framework for Microsoft Dynamics CRM 4.0 - Professional Edition</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=Framework5" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/Framework5" />
      <id>tag:stunnware.com,2008-07-10:Framework5</id>
      <published>2008-07-10T23:00:00+01:00</published>
      <updated>2008-07-10T23:00:00+01:00</updated>
      <content type="html">
As previously announced there will be a professional edition of the Stunnware Tools for Microsoft Dynamics CRM 4.0. It's almost complete, besides the documentation, but I wanted to show you some of the features you can expect when going for the professional edition. 
&lt;br/&gt;&lt;br/&gt;
I'm starting with the query builder, formerly known as the FetchXml wizard. What you have so far is the following:   
    </content>
   </entry>
   <entry>
      <title>Client Side Scripting - Retrieving the current user information (CRM 4.0 version)</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS31" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS31" />
      <id>tag:stunnware.com,2008-07-10:JS31</id>
      <published>2008-07-10T21:00:00+01:00</published>
      <updated>2008-07-10T21:00:00+01:00</updated>
      <content type="html">
A while back I posted a solution about the various techniques to retrieve information about the current user in CRM 3.0. I received an email lately asking for help about how it is done in CRM 4.0, an it seemed time to update the article. 
&lt;br/&gt;&lt;br/&gt;
The new solution uses the Microsoft CRM web services to retrieve the user id, business unit id, organization id and the first, last and full name of the currently logged on user. I have attached a simple test form with the following OnLoad event:
    </content>
   </entry>
   <entry>
      <title>Developing ASP.NET applications for Microsoft Dynamics CRM 4.0</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=ASPNET1" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/ASPNET1" />
      <id>tag:stunnware.com,2008-07-06:ASPNET1</id>
      <published>2008-07-06T22:00:00+01:00</published>
      <updated>2008-07-06T22:00:00+01:00</updated>
      <content type="html">
I'm modifying the ISV configuration file quite often and at some point I got really tired about exporting the isv.config, extracting the customization file from the downloaded zip file, opening Visual Studio, loading the file, making changes, saving and re-importing in CRM. Export and import should only be necessary when deploying customizations, but not to add a button. I thought of creating a simple Windows Forms tool in the beginning and it wouldn't take more than 15 minutes. However, I realized that this would be a perfect sample to show how to develop a custom ASP.NET solution targeting Microsoft Dynmaics CRM 4.0.
&lt;br/&gt;&lt;br/&gt;
I haven't started the implementation yet. Instead I decided to start writing the article first and develop the application while writing. This will make it much easier to create screenshots and it also is a good way to not forget anything important. I'm going to use Visual Studio 2008 and the final solution will be available as a download in this article. And as always I'm using C# and not VB.NET. 
    </content>
   </entry>
   <entry>
      <title>Client Side Scripting - Showing and hiding tabs at runtime</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS30" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS30" />
      <id>tag:stunnware.com,2008-07-03:JS30</id>
      <published>2008-07-03T23:00:00+01:00</published>
      <updated>2008-07-03T23:00:00+01:00</updated>
      <content type="html">
I received an email today from a student asking for some help about hiding and showing tabs in a CRM form. I was student a long time ago and at that time there was no Internet and no email (OK, there was email, but it wasn't a part of your daily life), so I had to look for answers in different sources. Anyway, I saw the question in the newsgroup before and had answered there as well, but I thought it to be a good idea to help a student and have most of the job done for a new article on my blog.
&lt;br/&gt;&lt;br/&gt;
This one is about hiding and and showing tabs in forms at runtime. It has been answered a couple of times and it's also included in the JavaScript Snippets Directory for a long time. However, the question pops up every now and then, so I decided to create a custom entity showing it:
    </content>
   </entry>
   <entry>
      <title>Right-aligning numerical fields in CRM views</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS22" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS22" />
      <id>tag:stunnware.com,2008-03-14:JS22</id>
      <published>2008-03-14T22:00:00+01:00</published>
      <updated>2008-07-17T22:00:00+01:00</updated>
      <content type="html">
One of the nasty things in Microsoft Dynamics CRM is the fact that numerical fields in views are left-aligned, just like any other column. A typical view looks like this:
    </content>
   </entry>
   <entry>
      <title>Client Side Scripting - Changing the default view of related entities</title>
      <link rel="alternate" type="text/html" href="http://www.stunnware.com/crm2/topic.aspx?id=JS11" />
      <link rel="self" type="application/atom+xml" href="http://www.stunnware.com/crm2/atom/JS11" />
      <id>tag:stunnware.com,2007-04-16:JS11</id>
      <published>2007-04-16T23:00:00+01:00</published>
      <updated>2008-07-22T23:00:00+01:00</updated>
      <content type="html">
One of the questions asked over and over again is if it is possible to change the default view of a related entity. Let's take the history view in an account form, which defaults to the "Last 30 days".
&lt;br/&gt;&lt;br/&gt;
Many people think it's better to see all items instead and as there is no option to specify the default view, they have to open the view list and select the "All" view. When working with the history view a lot, this is a time-consuming and bothering job.     
    </content>
   </entry>
</feed>