<rss version="2.0"><channel><title>Moustafa Refaat Technical Articles</title><item><title><![CDATA[SharePoint List Simplified Configuration Store]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=85ca6298-5aaf-4d85-ba83-90f7f0b4d899#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><font size="3"><font face="Calibri"><o:p></o:p></font></font></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><font size="3"><font face="Calibri">This is a sample configuration store that I wrote for a SharePoint implementation that I was working on. The configuration manager has a simple interface that takes two keys (siteID, and Key) <span style="mso-spacerun: yes"> </span>and returns the string associated with these keys here is the interface definition<o:p></o:p></font></font></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<div style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri">public interface IConfigurationManager<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>string GetConfiguration(string siteID, string key);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>}<o:p></o:p></font></font></p>
</div>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><font size="3"><font face="Calibri">The implementation for the IConfiguration manager expects to find the list URL and the site URL where the list exists(the list can exist in any site) in the application settings of the web.config. The implementation caches the retrieved values which has its own draw backs as changes to the list are not reflected till the cash expires but for this implementation the requirement did not expect lots of changes.<o:p></o:p></font></font></p>
<div style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 1pt; PADDING-RIGHT: 1pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri">/// <summary><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">   </span><span style="mso-spacerun: yes"> </span>///<span style="mso-spacerun: yes">  </span>Reads the configuration information from the Configuration list <o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>///<span style="mso-spacerun: yes">  </span>the URL for the list is stored in application settings in key<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>///<span style="mso-spacerun: yes">   </span><add key="ConfigListURL" value="/Configuration/Lists/ConfigurationStore" /><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>////<span style="mso-spacerun: yes">  </span><add key="configWebSiteURLKey"<span style="mso-spacerun: yes">  </span>value="http://localhost/Configuration"/><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>///<span style="mso-spacerun: yes">  </span><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>/// </summary><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>public class ConfigurationManager: IConfigurationManager<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>private const string configListNameKey = "ConfigListURL";<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>private const string configWebSiteURLKey = "configWebSiteURLKey";<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>public ConfigurationManager()<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>public string GetConfiguration(string siteID, string key)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string entry = null;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>bool dirty = false;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>Dictionary<string, Dictionary<string, string>> globalMap = GetMap();<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>Dictionary<string, string> siteMap = null;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>if(globalMap.ContainsKey(siteID))<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{ <o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>siteMap = globalMap[siteID];<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>if(siteMap.ContainsKey(key))<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>entry = siteMap[key];<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>if(null == entry)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>dirty = true;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>entry = GetConfigEnrtyFromSharePoint(siteID, key);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>if (entry != null)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>siteMap[key] = entry;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>else<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>dirty = true;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>entry = GetConfigEnrtyFromSharePoint(siteID, key);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>siteMap = new Dictionary<string, string>();<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>if (entry != null)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes">           </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>siteMap[key] = entry;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>globalMap[siteID] = siteMap;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>// update map if need be<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>if (dirty)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>HttpContext.Current.Cache[globalMapCacheKey] = globalMap;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>return entry;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>private string GetValue(SPListItem item)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string value = string.Empty;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>try<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>value = item["Value"].ToString();<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">             </span><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>catch<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>Debug.WriteLine("NoValue");<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>return value;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>const string queryformatstr = "<Where> <And><Eq><FieldRef Name='Title'/><Value Type='Text'>{0}</Value></Eq><Eq><FieldRef Name='SiteID'/><Value Type='Text'>{1}</Value></Eq> </And></Where>";<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>private string GetConfigEnrtyFromSharePoint(string siteID, string key)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string result = null;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string SiteUrl = WebConfigurationManager.AppSettings[configWebSiteURLKey];<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>SPSecurity.RunWithElevatedPrivileges(delegate()<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>using (SPSite siteCollection = new SPSite(SiteUrl))<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>using (SPWeb rootweb = siteCollection.OpenWeb())<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>string configlistUrl = WebConfigurationManager.AppSettings[configListNameKey];<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>SPList list = null;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                 </span><span style="mso-spacerun: yes">       </span>try<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>list = rootweb.GetList(configlistUrl);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>SPQuery oQuery = new SPQuery();<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>oQuery.Query = string.Format(queryformatstr, key, siteID);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes">                       </span>SPListItemCollection collListItems = list.GetItems(oQuery);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>if ((null != collListItems) && (collListItems.Count >= 1))<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                                </span>result = GetValue(collListItems[0]);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>catch (Exception ex)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                            </span>Debug.WriteLine(ex.ToString());<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                    </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>return result;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>const string globalMapCacheKey = "globalConfigurationMapCacheKey";<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>private Dictionary<string, Dictionary<string, string>> GetMap()<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>Dictionary<string, Dictionary<string, string>> map = HttpContext.Current.Cache[globalMapCacheKey] as Dictionary<string, Dictionary<string, string>>; <o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>if (null == map)<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>map = new Dictionary<string, Dictionary<string, string>>();<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">                </span>HttpContext.Current.Cache[globalMapCacheKey] = map;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>return map;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt" class="MsoNormal"><font size="3"><font face="Calibri">}<o:p></o:p></font></font></p>
</div>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><font size="3"><font face="Calibri">The Provider just loads the implementation based on the class name and assembly name of an entry in the application settings in web.config. <o:p></o:p></font></font></p>
<div style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri">// <summary><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>/// <span style="mso-spacerun: yes"> </span><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>/// Class, Assembly <o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>///<span style="mso-spacerun: yes">     </span><add key="configManagerProvider" value="ConfigurationManager, GlobalConfiguration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=22d2dcb173b01686"/><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>/// </summary><o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>public class ConfigurationManagerProvider<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>private const string configManagerProviderKey = "configManagerProvider";<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>static public<span style="mso-spacerun: yes">  </span>IConfigurationManager GetConfigurationManager()<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>{<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string str = WebConfigurationManager.AppSettings[configManagerProviderKey];<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>int isep = str.IndexOf(',');<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string assemblyName = str.Substring(isep+1);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>string typeName = str.Substring(0,isep);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>Assembly asm = Assembly.Load(assemblyName);<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>IConfigurationManager mngr = asm.CreateInstance(typeName) as IConfigurationManager;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">            </span>return mngr;<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">        </span>}<o:p></o:p></font></font></p>
<p style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 10pt; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class="MsoNormal"><font size="3"><font face="Calibri"><span style="mso-spacerun: yes">    </span>}<o:p></o:p></font></font></p>
</div>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><font size="3"><font face="Calibri">The consumer would write code similar to<o:p></o:p></font></font></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><span style="COLOR: #1f497d; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><font size="3"><font face="Calibri">      IConfigurationManager cm = ConfigurationManagerProvider.GetConfigurationManager();<o:p></o:p></font></font></span></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><span style="COLOR: #1f497d; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><font size="3"><font face="Calibri">      lblSiteTitle.Text = cm.GetConfiguration("Site1", "Key1");<o:p></o:p></font></font></span></p>
<p style="MARGIN: 0cm 0cm 10pt" class="MsoNormal"><o:p><font size="3" face="Calibri"> </font></o:p></p>]]></description></item><item><title><![CDATA[WCF and xsd:choice how to implement!]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=5e57f619-196c-41b2-b025-89caaa89cb91#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div style="MARGIN: 0cm 0cm 10pt">For some reason Microsoft decided that WCF serialization is not going to support the xsd:choice. The .Net XML serialization does support xsd:choice which is important. Now, if you had a schema that used xsd:Choice and used XSD tool to generate classes for it will generate code similar to:</div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: gray">///</span><span style="FONT-SIZE: 10pt; COLOR: gray"><remarks/></span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [System.Xml.Serialization.XmlElementAttribute(<span style="COLOR: #a31515">"Option1"</span>, <span style="COLOR: blue">typeof</span>(typeOption11), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [System.Xml.Serialization.XmlElementAttribute(<span style="COLOR: #a31515">"Option2"</span>, <span style="COLOR: blue">typeof</span>(typeOption2), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [System.Xml.Serialization.XmlElementAttribute(<span style="COLOR: #a31515">"Option3"</span>, <span style="COLOR: blue">typeof</span>(typeOption3), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: blue">object</span> Item {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        <span style="COLOR: blue">get</span> {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">            <span style="COLOR: blue">return</span> <span style="COLOR: blue">this</span>.itemField;</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        }</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        <span style="COLOR: blue">set</span> {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">            <span style="COLOR: blue">this</span>.itemField = <span style="COLOR: blue">value</span>;</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">        }</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">Well that is look neat does not it? Now if you exposed this same generated code through WCF, the WSDL would generate item as Object on the client side and the consumer would not get any information from the WSDL about typeOption1, typeOption2, nor typeOption3. That is a real pain for the developer on the consumer side!. So one workaround that I had to device for a solution I was developing is to create another class like the following</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">public</span><span style="FONT-SIZE: 10pt"> <span style="COLOR: blue">partial</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">Optionss</span> {</span></div>
<div style="LINE-HEIGHT: normal"> </div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [System.Xml.Serialization.<span style="COLOR: #2b91af">XmlElementAttribute</span>(<span style="COLOR: #a31515">"Option1"</span>, <span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">typeOption1</span>), Form=System.Xml.Schema.<span style="COLOR: #2b91af">XmlSchemaForm</span>.Unqualified,IsNullable = <span style="COLOR: blue">true</span>)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">typeOption1</span> Option1 = <span style="COLOR: blue">null</span>;</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [System.Xml.Serialization.<span style="COLOR: #2b91af">XmlElementAttribute</span>(<span style="COLOR: #a31515">"Optoin2"</span>, <span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">typeOption2</span>), Form=System.Xml.Schema.<span style="COLOR: #2b91af">XmlSchemaForm</span>.Unqualified,IsNullable = <span style="COLOR: blue">true</span>)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">typeOption2</span> Option2 = <span style="COLOR: blue">null</span>;</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [System.Xml.Serialization.<span style="COLOR: #2b91af">XmlElementAttribute</span>(<span style="COLOR: #a31515">"Option3"</span>, <span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">typeOption3</span>), Form=System.Xml.Schema.<span style="COLOR: #2b91af">XmlSchemaForm</span>.Unqualified,IsNullable = <span style="COLOR: blue">true</span>)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">typeOption3 </span>Option3 = <span style="COLOR: blue">null</span>;</span></div>
<div style="LINE-HEIGHT: normal"> </div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">}</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">And chenage the item above to be similar to</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">Optionss</span> Item {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        <span style="COLOR: blue">get</span> {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">            <span style="COLOR: blue">return</span> <span style="COLOR: blue">this</span>.itemField;</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        }</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        <span style="COLOR: blue">set</span> {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">            <span style="COLOR: blue">this</span>.itemField = <span style="COLOR: blue">value</span>;</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">        }</span></div>
<div style="MARGIN: 0cm 0cm 10pt"> </div>
<div style="MARGIN: 0cm 0cm 10pt">Now the options are going to appear to the consumer, however the data you receive is going to be for a different schema so I wrote code that would serialize the received request then “fix” the XML to be corresponding to the actual schema with xsd:choice.  Not quite neat  workaround but it works. </div>]]></description></item><item><title><![CDATA[WCF: Refactoring a Plain old XML web service to a WCF Service]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=c46b1e6d-db28-47fa-8c26-410475f9e33d#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">Recently</span> I was tasked to help devise a plan to refactor an application that was exposing non-compliant SOAP web services. I took a closer look at the application and decided that the best route would be to use the WCF to implement the refactored services. The old service had published XSDs for request and response of the web services. It was necessary to keep backward compatibility and keep these same XSDs valid for the new services.  With that in mind I devised the following plan</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>1.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Convert the schemas to CS classes using the XSD tool </div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>2.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Create a new WCF Service Application </div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>3.<span style="FONT: 7pt 'Times New Roman'">       </span></span>On project click add existing items and add the two generated classes</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>4.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Rename the IService1.cs file to I[yourserviceName]Service.cs</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>5.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Change the Interface as follows</div>
<div style="MARGIN: 0cm 0cm 0pt 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">a. </span><span style="FONT-SIZE: 10pt">[<span style="COLOR: #2b91af">ServiceContract</span>(Namespace=<span style="COLOR: #a31515">"your namespace"</span>)]</span></div>
<div style="MARGIN: 0cm 0cm 0pt 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">b. </span><span style="FONT-SIZE: 10pt">    [<span style="COLOR: #2b91af">XmlSerializerFormat</span>(Style=<span style="COLOR: #2b91af">OperationFormatStyle</span>.Document,Use=<span style="COLOR: #2b91af">OperationFormatUse</span>.Literal)]</span></div>
<div style="MARGIN: 0cm 0cm 0pt 72pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt"> </span></div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>6.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Include  a template for serializing and de-serializing classes (ObjectXMLSerializer.cs fond in downloads)  in your project</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">7. </span>Rename the interface and change the method inside to have the form <span style="FONT-SIZE: 10pt">   </span></div>
<div style="MARGIN: 0cm 0cm 0pt 72pt; TEXT-INDENT: -18pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">a. </span><span style="FONT-SIZE: 10pt">[<span style="COLOR: #2b91af">OperationContract</span>(Name = <span style="COLOR: #a31515">"Name"</span>, Action = <span style="COLOR: #a31515">"URL"</span>)]</span></div>
<div style="MARGIN: 0cm 0cm 0pt 72pt; TEXT-INDENT: -18pt"><span>b.<span style="FONT: 7pt 'Times New Roman'">      </span></span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">        <span style="COLOR: #2b91af">Response</span> Service(<span style="COLOR: #2b91af">Request</span> req);</span></div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>8.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Rename Service1.svc to Yourservicename.svc</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>9.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Open the code behind</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>10.<span style="FONT: 7pt 'Times New Roman'">   </span></span>Rename the class and the inheriting interface</div>
<div style="MARGIN: 0cm 0cm 10pt 36pt; TEXT-INDENT: -18pt"><span>11.<span style="FONT: 7pt 'Times New Roman'">   </span></span>Implement the method to be in form </div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [<span style="COLOR: #2b91af">ServiceBehavior</span>(Namespace=<span style="COLOR: #a31515">”Your Name space "</span>,IncludeExceptionDetailInFaults=<span style="COLOR: blue">true</span>)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    </span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: blue">class</span> <span style="COLOR: #2b91af">YourService</span> : <span style="COLOR: #2b91af">IYourService</span></span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    {</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">        <span style="COLOR: blue">public</span> YourService<span style="COLOR: #2b91af">Response</span> Service(YourService<span style="COLOR: #2b91af">Request</span> req)</span></div>
<div style="MARGIN: 0cm 0cm 0pt 36pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">        </span></div>
<div style="MARGIN: 0cm 0cm 10pt 36pt; TEXT-INDENT: -18pt"><span>12.<span style="FONT: 7pt 'Times New Roman'">   </span></span>Update the config.web file </div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">      <</span><span style="FONT-SIZE: 10pt; COLOR: #a31515">service</span><span style="FONT-SIZE: 10pt; COLOR: red">name</span><span style="FONT-SIZE: 10pt; COLOR: blue">=</span><span style="FONT-SIZE: 10pt">"<span style="COLOR: blue">YourServiceNameSpace.YourService</span>"<span style="COLOR: red">behaviorConfiguration</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">YourServiceNamespace.YOurService1Behavior</span>"<span style="COLOR: blue">></span></span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">                        <!--</span><span style="FONT-SIZE: 10pt; COLOR: green"> Service Endpoints </span><span style="FONT-SIZE: 10pt; COLOR: blue">--></span></div>
<div style="MARGIN: 0cm 0cm 10pt 18pt"><span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%">                     <</span><span style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%">endpoint</span><span style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%">address</span><span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%">=</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">""<span style="COLOR: red">binding</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">wsHttpBinding</span>"<span style="COLOR: red">contract</span><span style="COLOR: blue">=</span>"<span style="COLOR: blue">YourServiceNameSpace.IYourService</span>"<span style="COLOR: blue">></span></span></div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>13.<span style="FONT: 7pt 'Times New Roman'">   </span></span>Update the .svc file directive <span style="FONT-SIZE: 10pt; BACKGROUND: yellow; LINE-HEIGHT: 115%"><%</span><span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%">@</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"> <span style="COLOR: #a31515">ServiceHost</span> <span style="COLOR: red">Language</span><span style="COLOR: blue">="C#"</span> <span style="COLOR: red">Debug</span><span style="COLOR: blue">="true"</span> <span style="COLOR: red">Service</span><span style="COLOR: blue">="YoursServiceNameSpace.YourService"</span> <span style="COLOR: red">CodeBehind</span><span style="COLOR: blue">="YourServiceService.svc.cs"</span> <span style="BACKGROUND: yellow">%></span></span></div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>14.<span style="FONT: 7pt 'Times New Roman'">   </span></span>Set .svc as the starting page press and the project as the starting project </div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>15.<span style="FONT: 7pt 'Times New Roman'">   </span></span>Now is the tricky part we add a Message wrapper class on the generated schema to control the message serialization, so  Open the CS Request Schema </div>
<div style="MARGIN: 0cm 0cm 10pt 72pt; TEXT-INDENT: -18pt"><span>a.<span style="FONT: 7pt 'Times New Roman'">       </span></span>ADD code similar to the following</div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">using</span><span style="FONT-SIZE: 10pt"> System.ServiceModel;</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">[<span style="COLOR: #2b91af">MessageContract</span>(IsWrapped = <span style="COLOR: blue">false</span>)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">public</span><span style="FONT-SIZE: 10pt"> <span style="COLOR: blue">class</span> YourService<span style="COLOR: #2b91af">Request</span></span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">{</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [<span style="COLOR: #2b91af">MessageBodyMember</span>(Name = <span style="COLOR: #a31515">"REQUEST"</span>, Namespace = <span style="COLOR: #a31515">"YourNameSpace"</span>)]</span></div>
<div style="LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">      <span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">Request</span> request;</span></div>
<div style="MARGIN: 0cm 0cm 0pt 72pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">}</span></div>
<div style="MARGIN: 0cm 0cm 10pt 72pt; TEXT-INDENT: -18pt"><span>b.<span style="FONT: 7pt 'Times New Roman'">      </span></span>ADD code similar to the following</div>
<div style="MARGIN: 0cm 0cm 0pt 99pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">using</span><span style="FONT-SIZE: 10pt"> System.ServiceModel;</span></div>
<div style="MARGIN: 0cm 0cm 0pt 99pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">[<span style="COLOR: #2b91af">MessageContract</span>(IsWrapped = <span style="COLOR: blue">false</span>)]</span></div>
<div style="MARGIN: 0cm 0cm 0pt 99pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt; COLOR: blue">public</span><span style="FONT-SIZE: 10pt"> <span style="COLOR: blue">class</span> YourServices<span style="COLOR: #2b91af">Response</span></span></div>
<div style="MARGIN: 0cm 0cm 0pt 99pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">{</span></div>
<div style="MARGIN: 0cm 0cm 0pt 99pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    [<span style="COLOR: #2b91af">MessageBodyMember</span>(Name=<span style="COLOR: #a31515">"RESPONSE"</span>)]</span></div>
<div style="MARGIN: 0cm 0cm 0pt 99pt; LINE-HEIGHT: normal"><span style="FONT-SIZE: 10pt">    <span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">Response</span> response;</span></div>
<div style="MARGIN: 0cm 0cm 10pt 99pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%">}</span></div>
<div style="MARGIN: 0cm 0cm 10pt">Press f5 you should see the service description press on WSDL and you will see the WSDL </div>
<div style="MARGIN: 0cm 0cm 10pt">Hope this helps:)</div>]]></description></item><item><title><![CDATA[Setting the ESB Toolkit on the 64 Bit Machines]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=0e7579b5-8164-4a0a-8f2c-cb66a3067dd6#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>1.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Make sure you have a viable BizTalk Environment with BAM Tools</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>2.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Install UDDI form BizTalk DVD and make sure it is configured properly</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>3.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Install MS Enterprise Library 4.1</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>4.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Install Microsoft Chart Controls for .Net 3.5</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>5.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Install Visual Studio 2008 SDK</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>6.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Install the MS BizTalk ESB Toolkit 2.0 </div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>7.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Run the ESB configuration tool located “C:\Program Files (x86)\Microsoft BizTalk ESB Toolkit 2.0\Bin\ESBConfigurationTool.exe”</div>
<div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"><span>8.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Now start configuration of the ESB toolkit which is a little bit tricky, you have to set the properties for each section and apply it before you can proceed to the next section. Unlike configuring BizTalk were you can set all section and click apply once. </div>
<div style="MARGIN: 0cm 0cm 10pt 36pt; TEXT-INDENT: -18pt"><span>9.<span style="FONT: 7pt 'Times New Roman'">       </span></span>Start by configuring the Exception Management database make sure that there are no errors in red if there are then delete the database from the SQL server correct the errors and reapply. Not that the ESConfigurationTool is non transactional which means it would not create everything or nothing it can create the database but no table or stored procedures which would cause you a headache later on to figure out why the ESB toolkit is not working properly <a href="http://www.moustafarefaat.com/MoustafaPWS/esbsetup64.aspx">Read more..</a> </div>]]></description></item><item><title><![CDATA[The BizTalk ESB Toolkit 2.0 experience Series]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=f79d51a2-9c41-42fa-8bce-21bbb902a24e#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div style="MARGIN: 0in 0in 10pt">In this series of blogs I will explain and discuss my experience with the MS ESB Tool kit for BizTalk 2009.  <span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">The BizTalk ESB Toolkit 2.0 is a collection of tools and libraries that extend BizTalk Server capabilities of supporting a loosely coupled and dynamic messaging architecture.  The two most valuable features of the toolkit are:</span></div>
<div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in"><span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">·<span style="FONT: 7pt 'Times New Roman'">        </span></span><span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">The Itinerary capabilities which allows you to implement a simple chain of actions on a message path (these actions can be running BizTalk maps, BizTalk Orchestration, or custom .Net code).</span></div>
<div style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in"><span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">·<span style="FONT: 7pt 'Times New Roman'">        </span></span><span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">The Management portal sample  which allows you to view suspended messages and control other aspects of BizTalk and the ESB</span></div>
<div style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in"><span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">
<div style="MARGIN: 0in 0in 10pt"><span style="FONT-SIZE: 10pt; COLOR: #333333; LINE-HEIGHT: 115%">The following figure for Microsoft shows the components of the BizTalk ESB Toolkit 2.0</span></div>
<div style="MARGIN: 0in 0in 10pt"> <img height="485" alt="" width="855" src="/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg={0}&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/ESB.JPG" /></div>
<div style="MARGIN: 0in 0in 10pt"><a href="http://www.moustafarefaat.com/MoustafaPWS/biztalkesbtoolkit.aspx">Read more..</a></div>
</span></div>]]></description></item><item><title><![CDATA[Developing BizTalk Custom Adapters Presentation]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=c75a93a5-1819-4a62-be22-6bf2aaf151a0#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p><img style="WIDTH: 499px; HEIGHT: 453px" width="960" height="720" alt="" src="/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg={0}&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/Slide1.JPG" /> </p>
<p> </p>
<p> View it all at  <font face="Arial"><a href="http://www.moustafarefaat.com/MoustafaPWS/custome_adapters.aspx">www.moustafarefaat.com/MoustafaPWS/custome_adapters.aspx</a> Thanks</font></p>]]></description></item><item><title><![CDATA[Vaughan Online my Latest SharePoint Project]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=2b646d33-5355-4e8e-b5f7-f452cb73fedb#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p><img style="WIDTH: 658px; HEIGHT: 598px" alt="" width="792" height="672" src="/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg={0}&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/VhnPortal.JPG" /></p>
<font size="3" face="Times New Roman">
<div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"><span style="FONT-SIZE: 12pt">I was working on a project to migrate a SharePoint 2003 implementation to a new 2007 implementation. This new portal involved restructuring, reorganizing and actually a complete a new architecture and UI design. You can see the sample landing page above Very impressive do not you think so? I used Ajax, with SharePoint to develop many of the web parts, I will write later more updates about the lessons learned from this Project, specially the Migration process. </span></div>
</font>]]></description></item><item><title><![CDATA[Using the Anything Slider with SharePoint Content Query Web part]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=4e82ef11-33cf-4c7c-bc18-e68a705c7806#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div style="MARGIN: 0in 0in 0pt"></div>
<div style="MARGIN: 0in 0in 0pt">I was working on an integrating the anythingslider with the SharePoint Content Query Web Part, Dave Cavins gives and example on using it with the dataview web part which is not available anymore so I had to use the content query web part. After going through many trials , I had to change the “ContentQueryMain.xsl” style sheet and the ItemStyle.xsl. </div>
<div style="MARGIN: 0in 0in 0pt"></div>
<div style="MARGIN: 0in 0in 0pt"><img alt="" width="572" height="279" src="/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg={0}&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/anythingslider.JPG" /></div>
<div style="MARGIN: 0in 0in 0pt"></div>
<ol style="MARGIN-TOP: 0in" type="1">
    <li style="MARGIN: 0in 0in 0pt">On the  ItemStyle.xsl, I have added a new custom style for my anything slider </li>
</ol>
<div style="MARGIN: 0in 0in 0pt"><span>            <xsl:template name="AnyThingCustomStyle" match="Row[@Style='C4ICustomStyle']" mode="itemstyle"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                        <li></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                         <div class="textSlide"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                    <!-- display the item title and a link to the item --></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                    <h3><xsl:value-of select="@Title" /></h3></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                    <!-- display the body of the item --></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                    <div id="quoteSlide"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                        <blockquote></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                            <xsl:value-of select="@Body" disable-output-escaping="yes" /></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                </blockquote> </span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                    </div></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                         </div></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                        </li></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>            </xsl:template></span></div>
<div style="MARGIN: 0in 0in 0pt"> </div>
<ol style="MARGIN-TOP: 0in" type="1" start="2">
    <li style="MARGIN: 0in 0in 0pt">And I modified the  ContentQueryMain.xsl main loop to contain a choose and in case it is “AnyThingCustomStyle” it uses a different template than the one used with the default templates </li>
</ol>
<div style="MARGIN: 0in 0in 0pt"><span>    <xsl:choose></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>         <xsl:when test="$IsSlider=' AnyThingCustomStyle '"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>          </span></div>
<div style="MARGIN: 0in 0in 0pt"><span>           <div class="anythingSlider"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                <div class="wrapper"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                            <ul></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                                        <xsl:for-each select="$Rows"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                            <xsl:variable name="CurPosition" select="position()" /></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                                <xsl:call-template name="OuterTemplate.CallItemTemplate"></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                            <xsl:with-param name="CurPosition" select="$CurPosition" /></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                            </xsl:call-template></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                </xsl:for-each></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                                </ul></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                                    </div></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                         </div></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>                  </span></div>
<div style="MARGIN: 0in 0in 0pt"><span>        </xsl:when></span></div>
<div style="MARGIN: 0in 0in 0pt"><span>         <xsl:otherwise></span></div>
<div style="MARGIN: 0in 0in 0pt"> </div>
<div style="MARGIN: 0in 0in 0pt">I hope you will find this helpful, and if you have any questions about this blog shoot me an email to <a href="mailto:Moustafa@MoustafaRefaat.com">Moustafa@MoustafaRefaat.com</a></div>
<div style="MARGIN: 0in 0in 0pt"> </div>]]></description></item><item><title><![CDATA[BizTalk SMTP Adapter and Macfee causes error "0x800ccc15"]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=35c70d80-054f-4de6-b925-82b0e90adb03#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p class="post-title entry-title">I am using an SMTP port to send notifications and kept getting a logs in  the event viewer application logAs follows:<br />
<br />
The adapter failed on an attempt to transmit a message going to send port with the address <a href="mailto:xxx@ddd.ca">xxx@ddd.ca</a>. Details: "The message could not be sent to the SMTP server. The transport error code was 0x800ccc15. The server response was not available<br />
". For more information, see Help and Support Center at <a href="http://go.microsoft.com/fwlink/events.asp">http://go.microsoft.com/fwlink/events.asp</a> </p>
<p class="post-title entry-title">It turns out this is the reason is McAfee virus Scan blocks mass mailing worms. To correct this:</p>
<div>
<ol>
    <li>Go to the console (for me, right-click the systray icon and select console from the pop-up menu). </li>
    <li>Select "Access Protection" </li>
    <li>On the "Port Blocking" tab, de-select "Prevent mass mailing worms from sending email" on port 25. </li>
</ol>
</div>
<p> </p>]]></description></item><item><title><![CDATA[Implementing Singleton pattern with BizTalk Orchestrations]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=b564112a-ba49-4f31-9900-c4e17f858382#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p style="MARGIN: 0in 0in 0pt"> <span style="FONT-SIZE: 12pt">As you know, with BizTalk Orchestrations, a new instance of the orchestration is created every time a new message arrives at the Receive Port. In a Singleton pattern only one instance should exist to handle all the messages (or events) in the system.  You can implement the singleton pattern using a simple correlation on the Receive Port name ,</span><a href="http://www.moustafarefaat.com/MoustafaPWS/singletonorchestrations.aspx"><font size="3">Read more...</font></a></p>]]></description></item><item><title><![CDATA[Fraud Warning]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=b7774138-31a1-46ea-abf0-c02784fe77a2#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div><span style="FONT-WEIGHT: bold; FONT-SIZE: 13.5pt; COLOR: rgb(79,79,79)"><font size="3"><img height="151" width="158" alt="" src="/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg={0}&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/scamedev1.jpg" /> New storing device fits at the end of the keyboard cable connecting to the PC specialized to save all typed keys in it.</font></span></div>
<div><span style="FONT-WEIGHT: bold; FONT-SIZE: 13.5pt; COLOR: rgb(79,79,79)"><font size="3"></font></span></div>
<div><span style="FONT-WEIGHT: bold; FONT-SIZE: 13.5pt; COLOR: rgb(79,79,79)"><font size="3"><img height="350" width="399" alt="" src="/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg={0}&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/scamedev2.jpg" /> Mostly could be used in net cafes, exhibitions, hotels and airports. Therefore be careful especially the people who use the internet in these places to enter their bank accounts online or any other important sites. <br />
After you enter the bank account and leave the PC, it will be easy to open your account again as all what you have typed has been saved in the Black device.   <br />
<br />
Therefore, you should check the PC for any suspicious piece behind it before using the net in public places for important sites. </font></span></div>]]></description></item><item><title><![CDATA[BTS: Sending Email in HTML or Text Format form BizTalk 2004]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=bb67129f-e6a0-40af-91bc-d790668a30ab#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[  I needed to send an email directly from BTS 2004; this was part of an error handling mechanism. However going through a Schema was too much all I needed is to be able to assemble a string and send it through a SMTP port.  As you know E-mail messages always contain message text, generally in a text or html format, and may contain one or more attachments as well. I needed to send the Email in HTML format. After going through the SDK and the documentation, I could not find an easy well documented solution for this. So I had to assemble the solution attached with this submission.
<div>Sending a message of type System.String will not work, because the string gets formatted as an XML document in the message, which is not my desired solution. To send text in an e-mail message, you must use a special type of string, a string that has special serialization with the XML, in other words implements IFormatter interface. In the attached solution you will find  class “RawString” which implements IFormatter. You also need to implement a pipeline containing the MIME/SMIME Encoder pipeline component. Now we have to tell the MIME/SMIME pipeline component that it is dealing with a body with content type of text/html through </div>
<div>The Microsoft.XLANGs.BaseTypes.XLANGPart.SetPartProperty method.</div>
<div>So the solution consists of </div>
<ol style="MARGIN-TOP: 0cm" type="1">
    <li>A library class that contains the RawString class and Part class to make it easy to set the type of the message </li>
    <li>A BTS project that contain a pipeline to use for sending the email. </li>
    <li>A simple orchestration that accepts a simple file schema and just sends the email. The input file in this example is empty it is just used to fire the orchestration. </li>
</ol>
<div>Hope this would make your development project easier. Let me know what you think . You can <a href="http://www.moustafarefaat.com/MoustafaPWS/DownloadHandler.ashx?pg=a7edc74a-14e0-4633-bb03-d7997519c300&section=63fbbee3-6828-461a-8f97-e6f1cfe616ce&file=BtsSmtpUtils.zip">download the code</a> from the downloads and Samples</div>]]></description></item><item><title><![CDATA[BizTalk Unzip Adapter]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=960ed3b1-ff29-4517-91f1-e5bead96a709#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Times New Roman" size="3">I had a requirement to consume zip files and unzip them into the target folder using BizTalk. The most strait forward <span style="mso-spacerun: yes"> </span>way to accomplish this is to develop a custom send adapter that would unzip the files to the target directory. I used the ICSharpCode.SharpZip for unzipping the files. I will write more on how to develop custom adapters, but at the moment I am making this code available to you in the download samples section. If you need any help or have questions do not hesitate to contact me at </font><a href="mailto:Moustafa@MoustafaRefaat.com"><font face="Times New Roman" size="3">Moustafa@MoustafaRefaat.com</font></a> </p>
<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><a href="http://www.moustafarefaat.com/MoustafaPWS/btsunzipadapter.aspx">Read more..</a> </p>]]></description></item><item><title><![CDATA[Create a SQL Database Programmatically]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=de236674-fd0f-42ca-be42-f72d88c2bf14#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<font size="2">
<p>In this article I will explain how to use MS SQL Management Objects (SMO) to create a MS SQL database from C# code. In this sample will </p>
<ol>
    <li>Enumerate all the SQL servers in the network and fill a list box where the user can select one of the servers. </li>
    <li>The user will enter the Database Name to create. </li>
    <li>The user will enter an AD account to grant right to. </li>
    <li>When the user click "Create Database" the system will check for the existence of the database. </li>
</ol>
<p><a href="http://www.moustafarefaat.com/MoustafaPWS/crsqldbprg.aspx">Read More..</a></p>
<font size="2"></font></font>]]></description></item><item><title><![CDATA[Secure Messaging Solution]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=74927404-9bcf-45d0-bb0e-9a39bea438f3#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[ 
<div>We are sending end receiving sensitive information over the internet. We want to secure all the messages we are exchanging with our partners.  <a href="http://www.moustafarefaat.com/MoustafaPWS/securemessagingsolution.aspx">Read More..</a></div>]]></description></item><item><title><![CDATA[An Extensible Light Xml Rules Engine Component]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=a4c867ce-01d9-46be-84aa-71db66bdc860#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[ The Extensible light XML rules engine component allows the easy configuration of rules in XML, definition of the interpretations of rules and the actions to be taken by client code. Though the component idea is simple its extensibility and completeness makes it worth of reuse. The component is developed in C# and .Net framework.  <a href="http://www.moustafarefaat.com/MoustafaPWS/extxmlre.aspx">Read more..</a>]]></description></item><item><title><![CDATA[BizTalk Technical Interview Questions and Answers]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=df7df7c4-8f61-4b5c-b922-07cfd13606de#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div id="contentContainer"><a name="0f17cae4-ffd7-48ec-8194-539a40be0633"></a>
<h1 align="center"><font size="4">Mastering The BizTalk Technical Interview</font></h1>
<p class="style2" align="center"><img height="121" alt="" width="95" src="http://www.geneticthought.com/MoustafaPWS/ImageHandler.ashx?UploadedFile=true&pg=5d1f0f61-3d5a-429b-95d1-68c7240494ac&image=http://www.moustafarefaat.com:80/MoustafaPWS/App_Data/UserImages/Image/MTSBTSCover.JPG" /></p>
<p align="left"><font face="Verdana" size="2">Wisdom is learning all we can, but having the humility to realize that we do not know it all. Mastering the BizTalk Technical Interview 200 BizTalk Technical questions with clear and concise answers will help you gain more wisdom in BizTalk Interviews. The difference between a great BizTalk developer and someone who kind of knows some stuff is how you answer the BizTalk Interview questions in a way that will show how knowledgeable you are. The 200 questions I have assembled are for: job seekers (junior/senior developers, architects, team/technical leads), and interviewers. BizTalk Technical Interview Questions covers BizTalk versions 2002, 2004, 2006, 2006R and 2006 RFID. The questions cover the following areas:</font></p>
<ul>
    <li><font face="Verdana" size="2">Basic Questions. </font></li>
    <li><font face="Verdana" size="2">General Questions. </font></li>
    <li><font face="Verdana" size="2">Schema Design Questions. </font></li>
    <li><font face="Verdana" size="2">Pipelines and Pipeline components Questions. </font></li>
    <li><font face="Verdana" size="2">Maps Questions. </font></li>
    <li><font face="Verdana" size="2">Messaging Questions. </font></li>
    <li><font face="Verdana" size="2">Adapters and Accelerators Questions. </font></li>
    <li><font face="Verdana" size="2">Orchestrations Questions. </font></li>
    <li><font face="Verdana" size="2">Rules Engine Questions. </font></li>
    <li><font face="Verdana" size="2">BAM and BAS Questions. </font></li>
    <li><font face="Verdana" size="2">Deployment and Installation Questions. </font></li>
</ul>
<p class="style2" align="left"><font face="Verdana" size="2">Learn the fundamentals relating to BizTalk and Enterprise Application Integration in an easy to understand questions and answers approach. It covers 200 realistic interview Questions with answers that will impress your interviewer. A quick reference guide, a refresher and a roadmap covering a wide range of BizTalk and EAI related topics and interview tips.  <a href="http://www.moustafarefaat.com/MoustafaPWS/mbtsinterviewbook.aspx">Read More..</a><br />
</font><br />
</p>
<font face="Verdana"><font size="2"><font face="Garamond,Bold"><font face="Verdana">
<p><a href="http://www.lulu.com/commerce/index.php?fBuyContent=2265797"><strong><img alt="Support independent publishing: buy this book on Lulu." border="0" src="http://www.lulu.com/images/services/buy_now_buttons/en/book_blue2.gif" /></strong></a></p>
</font></font></font></font>
<p align="left"><strong><font face="Verdana" size="2"></font></strong></p>
</div>]]></description></item><item><title><![CDATA[Simplified BizTalk Content Based Routing for Pass_Throu data]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=1580b873-7063-488a-8cff-2d555d1dfcd4#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Times New Roman" size="3">I had simple task, I had image files that need to be routed (“copied”) to another location based on some field being set inside the image metadata. I devised a simple solution that consists of a simple pipeline component that promotes the filed into the Message Context, create a dummy schema with promoted field. Use the pipeline component in a custom pipeline. This solution would read the information and promote the field values if they exist without publishing the whole image into the message box database. Delivering performance similar to using the standard pass-throu pipeline.<span style="mso-spacerun: yes">  <a href="http://www.moustafarefaat.com/MoustafaPWS/btscbrpassthru.aspx">Read more.. </a></span></font></p>]]></description></item><item><title><![CDATA[Software Architecture Basics Review]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=29f67bb7-65a8-48ad-9d4e-8babada08525#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div align="left"><strong><font size="5"></font></strong></div>
<div align="justify">Software architecture involves the integration of software development methodologies and models, which distinguishes it from particular analysis and design methodologies. The structure of complex software solutions departs from the description of the problem, adding to the complexity of software development. Software architecture is a body of methods and techniques that helps us to manage the complexities of software development.</div>
<div align="justify">Software architecture presents a view of a software system as components and connectors. Components encapsulate some coherent set of functionality. Connectors realize the runtime interaction between components. The system design achieves certain qualities based on its composition from components and connectors. Software architecture design is not entirely different from existing software design methodologies. Rather it complements them with additional views of a system that have not been traditionally handled by methodologies like object-oriented design.  <a href="http://www.moustafarefaat.com/MoustafaPWS/softarcreview.aspx">read more ... <font face="Arial">http://www.moustafarefaat.com/MoustafaPWS/softarcreview.aspx</font></a></div>
<div align="justify"> </div>]]></description></item><item><title><![CDATA[Scheduling Orchestrations in BizTalk]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=a7b332a5-983e-45e7-9bcf-bc8ad228daa4#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Times New Roman" size="3">Sometimes you need to have your orchestration run at specific times. There is no incoming message that would activate the orchestration. BizTalk does not allow you to schedule orchestrations by default however there is a trick to accomplish what this. You basically have to create a fake incoming message that activates the orchestration. You can program a script or a scheduler to dump a message into a monitoring folder to do that but this is kind of a messy solution. Your best option is to create a dump SQL table with at least one record have SQL adapter keeps polling this table for the data. It will always return that record as you know SQL Adapter does not delete or mark records it reads. And in the BizTalk Administration you can schedule the SQL polling interval to every “N” seconds, minutes, or hours. This way you can schedule your orchestration to run at the specific times you want. </font></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Times New Roman" size="3"> </font></o:p></p>
<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Times New Roman" size="3">Hope this helps</font></p>]]></description></item><item><title><![CDATA[Design Patterns Review]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=2e583a83-e1ac-4ba4-9b80-df2059f647d5#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">I was surprised by the fact that many developers are still not familiar with Design Patterns though they have been here for more than 10 years. That is why I wrote this simple review. A design pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.</span> <a href="http://www.moustafarefaat.com/MoustafaPWS/designpatterns.aspx">Read more..</a>]]></description></item><item><title><![CDATA[Designing for Secure Deployment of Web Application]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=e40abd60-caef-4e51-859e-e05e954baed4#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div align="justify">I have seen so many cases where an application launch was delayed because there were problems with deploying into the production environment. They generally are all the same story in that it wouldn’t work because the network was set up with some security rules that the application didn’t support or wasn’t designed with that in mind. </div>
<p align="justify"> A very common network setup for security is creating a perimeter network or DMZ that “outsiders” can access, but the DMZ is separated by a firewall from the secure internal network. Additionally there might be another firewall inside the secure network separating the database servers.<br />
</p>
<p align="justify">Because the infrastructure is split into multiple zones, you have to have the same splits in your application architecture to make it possible to deploy on the infrastructure. This also has the related issues of communications across the zones, passing identities, etc. So in more details you have to:<br />
<br />
</p>
<ul>
    <li>
    <div align="justify">Design the architecture to include a cleanly separated business API to ensure there is a distinct business tier.</div>
    </li>
    <li>
    <div align="justify">Split the business tier into two parts, creating an “interface” tier and an “implementation” tier.</div>
    </li>
    <li>
    <div align="justify">The interface tier is responsible for handling boundary activities such as validation and authentication, while the implementation tier holds the main business logic. This boundary verification logic enhances the security before passing the request to the secure network, beyond what could be done using a firewall alone.</div>
    </li>
    <li>
    <div align="justify">The service interface tier gets deployed into the DMZ, and the implementation tier into the secure network.</div>
    </li>
    <li>
    <div align="justify">Just one last note, does not that look like the Façade Pattern? Well close, but not the same. Hope this helps you with your system challenges.</div>
    </li>
</ul>]]></description></item><item><title><![CDATA[Designing Exception Management]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=f3295bed-267d-455b-8553-7327575954a1#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div>All applications will have errors occur during their operation, both expected and unexpected types of errors. When errors occur, how should they get handled by the application?</div>
<div>What makes exception management challenging:</div>
<ul type="disc">
    <li>There are issues with determining who gets notified of errors, is it always the user? </li>
    <li>Security people are quick to point out that error messages can include information that could be used for compromising the system. The classic example being “connection string X failed” and the connection string contains the database username and password. </li>
    <li>System administrators need to know when problems are happening, but do they need to know about every error? Error reporting to the system administrator can actually be very complex because it could be a group of system administrators or even include the business owners of the application. So there might be a whole workflow to how errors get reported to the people who own and maintain the application. </li>
    <li>How should errors be propagated within the architecture? Are errors always handled at the closest point to where they occur, or use some kind of global exception handling? </li>
</ul>
<div>Best Practices in handling exception management:</div>
<ul type="disc">
    <li>Categorizing errors as “business” versus “technical” errors is necessary to support sophisticated exception management. </li>
    <li>Sometimes exceptions are not necessarily errors, but are expected and the business logic takes an alternate successful path, and so in those cases the exception can be handled locally in the code where they occur. Otherwise exceptions are propagated up until it reaches the system boundary where a global exception handler reacts to the exception. </li>
    <li>The propagation is done using normal .NET try/catch/throw exception handling. Developers sometimes think about using error codes because of older C style conventions or concern over performance of .NET exception handling, but performance for failed requests typically isn’t an issue. </li>
    <li>Business exceptions get raised by the business logic when errors such as a business rule violation or validation error occurs. Business exceptions are also always raised with a safe and user acceptable message. </li>
    <li>At the system boundary in the global exception handler, all technical exceptions should be logged for the system administrator and include a unique log id. The message returned to the user should be replaced with a generic error message so unsafe information does not get leaked out of the system. But the generic error message must include the unique log id entry, so if the user contacts the system administrator for help, then the administrator can determine the actual technical error message by looking up the log entry using the unique id. This saves time and prevents the system administrator from having to ask the user what time the error happened, can they reproduce the error again, etc.  </li>
</ul>]]></description></item><item><title><![CDATA[Design for Integration]]></title><link><![CDATA[http://www.moustafarefaat.com:80/MoustafaPWS/Default.aspx?pg=a7c6f024-82ee-46e6-aa8d-fc80383ec723&detail=ee6a9f72-0428-490c-91fb-c6ce3e13bb8f#b4c131f1-1fb4-4efd-8055-0cadff6d46b0]]></link><description><![CDATA[<div>I have designed many enterprise integration applications, Most of the challenges that I face stem from the fact that the application was designed without consideration for making the application capable of supporting integration. <br />
<br />
Integration has consistently ranked as a top concern of IT executives for the last several years. But integration is a multi-faceted problem, so this challenge is looking at integration specifically from the perspective of the application architecture.<br />
<br />
An organization can have the entire integration infrastructure in the world, including various networks, EAI middleware, integration server products, messaging systems, etc. However, the rubber meets the road when it comes time to connect that integration infrastructure to your application. If application architecture is closed and offers no way of interfacing with any of that integration infrastructure, then you have an application that you cannot integrate with.<br />
<br />
So the question is, how can you ensure your application architecture is integration capable so it is possible for it to be integrated with other systems?</div>
<div> </div>
<div>But why do designers design closed applications in the first place?</div>
<ul type="disc">
    <li>This problem often shows up simply because it isn’t a requirement when a new application is built. Naturally a new application might depend on other existing applications and so needs to call out into them, but typically a new application does not initially have some other application that is dependent on the new one and needs to call into it. So because it isn’t a requirement, the architecture design does not include support for it. </li>
    <li>However, in large organizations there really are only a small percentage of applications that go through their entire lifecycle without at some point needing to be integrated with other applications. So this requirement always seems to come up sometime after your new application is deployed. So you could at that point modify the architecture of your application to support being integrated with, but often that is unlikely to happen because the new requirement is coming from a need in another application, and there is no budget or permission at that time to significantly modify your application to support the needs of the other application. </li>
    <li> The classic solutions in these cases are to try integrating either through screen scraping or data integration, but both techniques are awkward, expensive, and difficult to maintain and so customers normally want to avoid those approaches if possible. </li>
</ul>
<div> </div>
<div>You can solve the Integration problem:</div>
<ul type="disc">
    <li>Ensure that there is an explicit business tier with a cleanly separated API. </li>
    <li>Ensuring the business tier is exposed by some technology that can be accessed by external systems is necessary. </li>
    <li>Include an interception mechanism that can raise business events after certain things occur. Sometimes external systems might need to know when things are occurring in your system, and providing business events makes it possible to support that without requiring that external systems to poll your system through the business API. </li>
    <li>Use a pub/sub mechanism with the business events. This way, systems can be added or removed which respond to the business events without your application needing to know. If they were calling into your business API, the performance impacts might be enough that you need to be aware of that usage, but a business event doesn’t affect your system based on how it is used. </li>
</ul>]]></description></item></channel></rss>