<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6102547566906293159</id><updated>2012-01-06T22:42:17.726+01:00</updated><category term='Indexing'/><category term='ASP.NET 2.0'/><category term='Evaluation'/><category term='InfoCard systems'/><category term='Microsoft research OpenID'/><category term='documentation'/><category term='collaboration'/><category term='desktop apps'/><category term='ROSS'/><category term='Digital Me'/><category term='RSA'/><category term='Web service performance'/><category term='Mashup Applications OpenID Security SSO Single-sign-on'/><category term='divs instead of tables'/><category term='BEA'/><category term='Identity'/><category term='SharePoint group target audience hotfix'/><category term='restore'/><category term='Websphere'/><category term='Visual Studio 2008'/><category term='accessibility'/><category term='LiveID'/><category term='SIEM'/><category term='web service'/><category term='LDAPv3-based directories'/><category term='MOSS'/><category term='MOSS Audience targeting Sharepoint'/><category term='backup'/><category term='Sharepoint 2007'/><category term='deprecated'/><category term='Inkblot Service'/><category term='Portal'/><category term='JSR168'/><category term='Audience targeting'/><category term='loosing sessions'/><category term='Visio'/><category term='Content aquisition'/><category term='WSRP Producer'/><category term='composite applications'/><category term='Audience Rules'/><category term='Master'/><category term='SSO'/><category term='WSRP'/><category term='sp2'/><category term='CardSpace'/><category term='SAML'/><category term='Mashup Applications'/><category term='OpenID'/><category term='Portal servers'/><category term='Enterprise Search'/><category term='claims'/><category term='Enterprise'/><category term='AM'/><category term='CMS'/><category term='Clearcase'/><category term='User profiles'/><category term='Office SharePoint Server 2007 Capacity Model'/><category term='Alpha'/><category term='Search Lucene'/><category term='Access management'/><category term='identity models'/><category term='.NET'/><category term='Sharepoint; Dispose'/><category term='SOA governance'/><category term='Index database'/><category term='consumer'/><category term='Design patterns'/><category term='proxy'/><category term='Microsoft'/><category term='MOSS 2007'/><category term='Architecture'/><category term='Single-sign-on'/><category term='ESB'/><category term='UCM'/><category term='web service versioning'/><category term='Security'/><category term='Integration'/><category term='Oracle'/><category term='SOA'/><category term='hot deploy'/><category term='Federated Portals'/><category term='mashups'/><category term='WSRP 2.0'/><category term='WGAC'/><category term='Portals'/><category term='Web part'/><category term='Audiences'/><category term='Framework'/><category term='Blocks'/><category term='checked exceptions'/><category term='Stellent'/><category term='AD groups'/><category term='Pluggable Single Sign-On'/><category term='Web Parts'/><category term='e-legitimation'/><category term='Sharepoint 2010 Performance Counters'/><category term='Skype Sharepoint'/><category term='Identity management'/><category term='Query processing'/><category term='Yahoo'/><category term='Scalability'/><category term='IM Live Messenger Control'/><category term='HP'/><category term='WebCenter'/><category term='Heimore'/><category term='IdM'/><category term='Azure Tools'/><category term='WCAG'/><category term='Popfly'/><category term='Commerce Server 2009'/><category term='User profile'/><category term='ExpressPortal'/><category term='interoperability'/><category term='Web services'/><category term='Spiders'/><category term='GO'/><category term='Sharepont'/><category term='FAST'/><category term='Java'/><category term='Search'/><category term='Web 2.0'/><category term='supplementary'/><category term='Google'/><category term='versioning'/><category term='Active Directory'/><category term='Database'/><category term='Erl'/><category term='multivalue'/><category term='Sharepoint'/><category term='Weblogic'/><category term='EPiServer'/><category term='Commerce Server'/><category term='WSS 3.0 Visual Studio 2005 Extensions for Windows SharePoint Services 3.0'/><category term='Portlets'/><category term='Silverlight'/><title type='text'>tomas elfving : IT architect</title><subtitle type='html'>Innovations, development technologies and architecture.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6315220936749884017</id><published>2012-01-01T22:17:00.000+01:00</published><updated>2012-01-01T23:31:02.665+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint 2010 Performance Counters'/><title type='text'>Performance counters for Sharepoint 2010 WFEs</title><content type='html'>Hi, this is a set of performance counters covering both general performance and counters for how Output &amp;amp; ASP.NET cacheing works (providing you have them enabled) including problem description an possible resolution options.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 498px;"&gt;&lt;colgroup&gt;&lt;col style="width: 125pt;" width="166"&gt;&lt;/col&gt;  &lt;col style="width: 125pt;" width="166"&gt;&lt;/col&gt;  &lt;col style="width: 125pt;" width="166"&gt;&lt;/col&gt;  &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl65" height="21" style="height: 15.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl66" style="width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td style="width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl67" height="21" style="height: 15.75pt; width: 125pt;" width="166"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Objects   and Counters&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;   &lt;td class="xl67" style="width: 125pt;" width="166"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Problem&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;   &lt;td class="xl68" style="width: 125pt;" width="166"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Resolution Options&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Processor&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15.0pt;"&gt;   &lt;td class="xl80" height="20" style="border-top: none; height: 15.0pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;% Processor Time (_Total)&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl86" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Over 75-85%&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl83" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Upgrade processor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Increase number of processors&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Add additional server(s)&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="28" style="height: 21.0pt;"&gt;   &lt;td class="xl81" height="28" style="height: 21.0pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;%   Processor Time - Process (w3wp)&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl81" height="29" style="height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;%   Processor Time - Process (OWSTIMER)&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Disk&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="28" style="height: 21.0pt;"&gt;   &lt;td class="xl80" height="85" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 63.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Avg. Disk Queue Length&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl86" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Gradually increasing, system not in a steady   state and queue is backing up&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Increase   number or speed of disks&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="28" style="height: 21.0pt;"&gt;   &lt;td class="xl72" height="28" style="border-left: none; height: 21.0pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Change array configuration to stripe&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl73" height="29" style="border-left: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Move some data to an alternative server&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="20" style="height: 15.0pt;"&gt;   &lt;td class="xl80" height="49" rowspan="2" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 36.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;% Idle Time&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl86" rowspan="2" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Greater than 90%&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Increase   number of disks&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl73" height="29" style="border-left: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Move data to an alternative disk or server&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl80" height="50" rowspan="2" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 37.5pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;% Free Space&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Less   than 30%&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Increase number   of disks&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl66" height="29" style="border-left: none; border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl73" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Move data to an alternative disk   or server&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Memory&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl80" height="107" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 80.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Available Mbytes&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Less   than 2GB on a Web server.&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Add memory.&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl66" height="21" style="border-left: none; border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td align="left" style="width: 125pt;" valign="top" width="166"&gt;&lt;span style="height: 10px; margin-left: 0px; margin-top: 0px; position: absolute; width: 10px; z-index: 1;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;img alt="note" height="10" src="file:///C:/Users/Tomas/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png" v:shapes="Picture_x0020_3" width="10" /&gt;&lt;/span&gt;&lt;/span&gt;   &lt;br /&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;td class="xl74" height="21" style="height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;Note:&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="57" style="height: 42.75pt;"&gt;   &lt;td class="xl66" height="57" style="border-left: none; border-top: none; height: 42.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl75" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;SQL server available memory will   be low, by design, and does not always indicate a problem.&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl80" height="79" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 59.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Cache Faults/sec&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Greater   than 1&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Add memory&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl66" height="29" style="border-left: none; border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl72" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Increase cache speed or size if   possible&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl66" height="29" style="border-left: none; border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl73" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Move data to an alternative disk   or server&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl76" height="21" style="border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Pages/sec&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Greater than 10&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl77" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Add memory&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Paging File&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="183" style="height: 137.25pt;"&gt;   &lt;td class="xl76" height="183" style="border-top: none; height: 137.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;% Used and % Used Peak&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The server   paging file, sometimes called the swap file, holds "virtual" memory   addresses on disk. Page faults occur when a process has to stop and wait   while required "virtual" resources are retrieved from disk into   memory. These will be more frequent if the physical memory is inadequate.&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl77" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Add memory&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;NIC&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="71" style="height: 53.25pt;"&gt;   &lt;td class="xl80" height="129" rowspan="3" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 96.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Total Bytes/sec&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Over   40-50% of network capacity. This is the rate at which data is sent and   received via the network interface card.&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Investigate   further by monitoring Bytes received/sec and Bytes Sent/sec.&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl66" height="29" style="border-left: none; border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl72" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Reassess network interface card   speed&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl66" height="29" style="border-left: none; border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl73" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Check number, size, and usage of   memory buffers&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Process&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl76" height="29" style="border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Working Set&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Greater than 80%   of total memory&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl77" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Add memory&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl80" height="58" rowspan="2" style="border-bottom: 1.0pt solid #CCCCCC; border-top: none; height: 43.5pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;% Processor Time&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Over   75-85%.&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Increase number   of processors&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl66" height="29" style="border-left: none; border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl73" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Redistribute workload to   additional servers&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td class="xl69" height="21" style="border-top: none; height: 15.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;ASP.NET&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="85" style="height: 63.75pt;"&gt;   &lt;td class="xl76" height="85" style="border-top: none; height: 63.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Errors/sec&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The number of   errors per second that occur during the execution of HTTP requests, including   any parser, compilation, or run-time errors&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl70" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="85" style="height: 63.75pt;"&gt;   &lt;td class="xl76" height="85" style="border-top: none; height: 63.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Application Pool Recycles&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Should be as low   as possible, 0 or close to.Several per day, causing intermittent   slowness.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl77" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Make sure that   you have not implemented settings that automatically recycle the application   pool unnecessarily throughout the day.&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="155" style="height: 116.25pt;"&gt;   &lt;td class="xl78" height="155" style="border-top: none; height: 116.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Worker Process Restarts&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The number of   times a worker process has been restarted on the server computer. A worker   process can be restarted if it fails unexpectedly or when it is intentionally   recycled. If this counter increases unexpectedly, you should investigate as   soon as possible.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl80" height="86" rowspan="2" style="border-bottom: 1.0pt solid #CCCCCC; height: 64.5pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Requests Queued&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-left: none; border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Hundreds   or thousands of requests queued.&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl71" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Implement additional Web servers&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="57" style="height: 42.75pt;"&gt;   &lt;td class="xl66" height="57" style="border-left: none; border-top: none; height: 42.75pt; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td class="xl73" style="width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The default maximum for this   counter is 5,000, and you can change this setting in the Machine.config file&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="71" style="height: 53.25pt;"&gt;   &lt;td class="xl76" height="71" style="border-top: none; height: 53.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Request Wait Time&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;As the number of   wait events increases, users will experience degraded page rendering   performance.&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl77" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Implement   additional Web servers&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl78" height="29" style="border-top: none; height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Requests Rejected&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Greater than 0&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl79" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Implement   additional Web servers&lt;/span&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="71" style="height: 53.25pt;"&gt;   &lt;td class="xl78" height="71" style="height: 53.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Application   Restarts&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Should be as low   as possible, 0 or close to.Several per day, causing intermittent   slowness.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl78" height="29" style="height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Cache   Total Entries&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The total number   of entries in the cache.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl78" height="29" style="height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Cache   Total Hits&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The total number   of hits from the cache.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl78" height="29" style="height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Cache   Total Misses&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The number of   failed cache requests per application.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl78" height="29" style="height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Cache   Total Hit Ratio&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The ratio of   hits to misses for the cache.&amp;nbsp;&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="127" style="height: 95.25pt;"&gt;   &lt;td class="xl78" height="127" style="height: 95.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Cache   Total Turnover Rate&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The number of   additions and removals to the cache per second, which is useful in helping to   determine how effectively the cache is being used. If the turnover rate is   high, the cache is not being used efficiently&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="29" style="height: 21.75pt;"&gt;   &lt;td class="xl78" height="29" style="height: 21.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Output   Cache Entries&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The total number   of entries in the output cache.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="43" style="height: 32.25pt;"&gt;   &lt;td class="xl78" height="43" style="height: 32.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Output   Cache Hits&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The total number   of requests serviced from the output cache.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="43" style="height: 32.25pt;"&gt;   &lt;td class="xl78" height="43" style="height: 32.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Output   Cache Misses&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The number of   failed output-cache requests per application.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="43" style="height: 32.25pt;"&gt;   &lt;td class="xl78" height="43" style="height: 32.25pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Output   Cache Hit Ratio&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The percentage   of total requests serviced from the output cache.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="85" style="height: 63.75pt;"&gt;   &lt;td class="xl78" height="85" style="height: 63.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Output   Cache Turnover Rate&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The number of   additions and removals to the output cache per second. If the turnover rate   is high, the cache is not being used effectively.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="85" style="height: 63.75pt;"&gt;   &lt;td class="xl82" height="85" style="height: 63.75pt; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;Session   SQL Server Connections Total&lt;/span&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;span style="font-size: x-small;"&gt;The total number   of session-state connections made to the Microsoft SQL Server database in   which session-state data is stored.&lt;/span&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td height="21" style="height: 15.75pt;"&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td height="21" style="height: 15.75pt;"&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td height="21" style="height: 15.75pt;"&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr height="21" style="height: 15.75pt;"&gt;   &lt;td height="21" style="height: 15.75pt;"&gt;&lt;/td&gt;   &lt;td class="xl66" style="border-top: none; width: 125pt;" width="166"&gt;&lt;/td&gt;   &lt;td&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;© Copyright 2012, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6315220936749884017?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6315220936749884017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6315220936749884017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6315220936749884017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6315220936749884017'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2012/01/performance-counters-for-sharepoint.html' title='Performance counters for Sharepoint 2010 WFEs'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2164330226421183686</id><published>2011-09-21T23:15:00.000+02:00</published><updated>2011-09-21T23:15:14.461+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scalability'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Database scalability tips</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Avoid Object Relational Mappers. &lt;/strong&gt;They create complex queries that hard  to optimize.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Analyze locks. &lt;/strong&gt;Row level locking  is better than table level locking. Use async replication&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Single database choke point?&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;Create parallel databases and let a driver select  between them.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Use metrics. &lt;/strong&gt;Visualize what's happening to your  system using one of the many monitoring packages.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lack of Feature Flags. &lt;/strong&gt;Turn off features via a  flag so when a spike hits less important features can be turned off to reduce load.&lt;/li&gt;&lt;/ol&gt;© Copyright 2011, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2164330226421183686?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2164330226421183686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2164330226421183686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2164330226421183686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2164330226421183686'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2011/09/database-scalability-tips.html' title='Database scalability tips'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2173232161973719395</id><published>2011-09-16T22:37:00.000+02:00</published><updated>2011-09-16T22:37:28.468+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web service performance'/><title type='text'>WS consumer performance tips</title><content type='html'>&lt;h1 style="line-height: 115%; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; margin-top: 24.0pt; mso-list: l1 level1 lfo1; mso-pagination: widow-orphan lines-together; tab-stops: 65.2pt; text-indent: -18.0pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal; line-height: normal;"&gt;WS call are always expensive with the overhead each call require. Caching is a way to avoid unneccesary WS calls and improve performance:&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 0cm; margin-left: 18pt; margin-right: 0cm; margin-top: 24pt; text-indent: -18pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;The general rules for cacheing are:&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 0cm; margin-left: 18pt; margin-right: 0cm; margin-top: 24pt; text-indent: -18pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Always cache WS data which is not very dynamic in nature, bu at the same time make sure you don't get functional error by caching data that needs to be fetched fresh.&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 0cm; margin-left: 18pt; margin-right: 0cm; margin-top: 24pt; text-indent: -18pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Use the ASP.NET cache with a timeout instead of some custom cache like hash table&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 0cm; margin-left: 18pt; margin-right: 0cm; margin-top: 24pt; text-indent: -18pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Invalidate cache based on business rules or time-out&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="margin-bottom: 0cm; margin-left: 18pt; margin-right: 0cm; margin-top: 24pt; text-indent: -18pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;•&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Consumers of Web services have the option of calling web services asynchronously or synchronously. Your code should call a Web service asynchronously only when you want to avoid blocking the client while a web service call is in progress. If you are not careful, you can use a greater number of worker and I/O threads cause by asynchronous WS calls, which negatively affects performance. It is also slower to call a service asynchronously; therefore, you should avoid doing so unless your client application needs to do something else while the service is invoked.&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="line-height: 115%; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; margin-top: 24.0pt; mso-list: l1 level1 lfo1; mso-pagination: widow-orphan lines-together; tab-stops: 65.2pt; text-indent: -18.0pt;"&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal; line-height: normal;"&gt;© Copyright 2011, Tomas Elfving&lt;/span&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2173232161973719395?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2173232161973719395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2173232161973719395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2173232161973719395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2173232161973719395'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2011/09/ws-consumer-performance-tips.html' title='WS consumer performance tips'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-4052965031598523221</id><published>2011-08-16T00:07:00.001+02:00</published><updated>2011-08-18T22:31:43.940+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web service performance'/><title type='text'>WS design for improved performance</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', sans-serif; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;In my experience, these three are the most commonly seen performance-related design mistakes in web service development:&lt;br /&gt;&lt;b&gt;1. Chatty calls.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Network round trips to and from a Web service can be expensive. This issue is magnified if clients need to issue multiple requests to a Web service to complete a single logical operation. The web services should be designed to maximize the amount of work performed with each request. Make sure that the functionality you are offering is worth the time and effort the client had to go to in order to get the request to you in the first place. For better performance, consider combining smaller requests into a larger single request.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Serialization of large amounts of data.&lt;/b&gt;&lt;br /&gt;Serializing large amounts of data and passing it to and from Web services can cause performance-related issues, including network congestion and excessive memory and processor overhead. Consider redesign.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Inefficient state management.&lt;/b&gt;&lt;br /&gt;Inefficient state management design in Web services can lead to scalability bottlenecks because the server becomes overloaded with state information that it must maintain on a per-user basis. Common pitfalls for Web services state management include using stateful Web methods, using cookie container–based state management, and choosing an inappropriate state store. The most scalable Web services maintain no state.&lt;br /&gt;&lt;br /&gt;© Copyright 2011, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-4052965031598523221?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/4052965031598523221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=4052965031598523221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4052965031598523221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4052965031598523221'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2011/08/ws-design-for-improved-performance.html' title='WS design for improved performance'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7105383599882078730</id><published>2011-08-03T23:02:00.000+02:00</published><updated>2011-08-03T23:02:23.923+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure Tools'/><title type='text'>Windows Azure Tools extend Visual Studio 2010 out now</title><content type='html'>Windows Azure Tools for Microsoft Visual Studio extend Visual Studio 2010 to enable the creation, configuration, building, debugging, running, packaging and deployment of scalable web applications and services on Windows Azure.&lt;br /&gt;Find it on&amp;nbsp;&lt;span class="Apple-style-span" style="color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px;"&gt;&lt;a class="twitter-timeline-link" data-expanded-url="http://www.microsoft.com/download/en/details.aspx/?id=26940" href="http://goo.gl/fb/kHYZ0" rel="nofollow" style="color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;" target="_blank" title="http://www.microsoft.com/download/en/details.aspx/?id=26940"&gt;http://goo.gl/fb/kHYZ0&lt;/a&gt;, i&lt;/span&gt;nstall using the Web Platform Installer.&lt;br /&gt;&lt;br /&gt;© Copyright 2011, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7105383599882078730?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7105383599882078730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7105383599882078730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7105383599882078730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7105383599882078730'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2011/08/windows-azure-tools-extend-visual.html' title='Windows Azure Tools extend Visual Studio 2010 out now'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6295104206927601198</id><published>2010-04-04T22:29:00.000+02:00</published><updated>2010-04-04T22:29:32.346+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Commerce Server 2009'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><title type='text'>Commerce Server 2009 and Sharepoint 2007 Evaluation VPC</title><content type='html'>On Microsoft Connect, there is a&amp;nbsp;Commerce Server 2009 Evaluation VPC (February 2010 version) available for download&amp;nbsp;to partners and customers. This VPC has Commerce Server 2009 and Microsoft Office SharePoint® Server 2007 (MOSS) fully installed and configured (Core Systems, Multi-Channel Commerce Foundation, SharePoint Commerce Services), including the new Default site with the Template Pack running in SharePoint using the 30 new Web Parts.&lt;br /&gt;&lt;br /&gt;Register to download the latest VPC update, complete with a demonstration script, sales collateral, samples, and videos at &lt;a href="http://go.microsoft.com/fwlink/?LinkId=164446"&gt;http://go.microsoft.com/fwlink/?LinkId=164446&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2010, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6295104206927601198?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6295104206927601198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6295104206927601198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6295104206927601198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6295104206927601198'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2010/04/commerce-server-2009-and-sharepoint.html' title='Commerce Server 2009 and Sharepoint 2007 Evaluation VPC'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2389371441407603942</id><published>2010-04-03T00:42:00.001+02:00</published><updated>2010-04-03T09:14:08.008+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Commerce Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Commerce Server vs MOSS 2007</title><content type='html'>First of all, Mei Ling has written a &lt;a href="http://meiyinglim.blogspot.com/2006/10/integrating-microsoft-commerce-server.html"&gt;great blog&lt;/a&gt; about getting Commerce Server 2007 working with MOSS, definately recommended reading.&lt;br /&gt;&lt;br /&gt;There does seem to be some disconnect between the MOSS team and the CS team. This blog post looks into the areas of overlap of functionality.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Catalog Management&lt;/b&gt;&lt;br /&gt;Commerce Server gives you rich catalog management functionality. Here, you could go down different paths. If all you needed was a catalog management function, you could easily define a few custom Content Types and some lists and you'd have the same functionality. However, you wouldn't have the integration with the basket and order management functions, so it’s probably best to leave it in the CS database. So here you have a choice, either:&lt;br /&gt;a) Use the BDC to consume your CS catalog&lt;br /&gt;b) Write your own CS web parts to use directly within MOSS&lt;br /&gt;A combination of these last two methods are probably a good way to go.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Checkout Processing and Order management&lt;/b&gt;&lt;br /&gt;I wonder why the CS team didn’t decide to rip out the (difficult to debug) pipeline framework and replace it with Windows Workflow. An alternative to the checkout processing and order management is to use InfoPath forms and workflow to put stuff in the correct databases, and send messages through BizTalk (or other service bus technology) &amp;nbsp;to actually take the money and send orders to the fulfillment houses.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;eMarketing&lt;/b&gt;&lt;br /&gt;One of CS's other big functional areas is in eMarketing, and again we see more than one way of doing stuff. Do you use the CS targeting system or MOSS audiences? I’m not sure, but it’s at risk confusing my users with two different systems to target their users. I think audience targetting through MOSS is better, simply because we will want to target both products and content to the same audience groups.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Discounting System.&lt;/b&gt;&lt;br /&gt;This is one of the stronger points of CS, and I can't see anything obvious in MOSS to replicate this functionality.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reporting and Analytics&lt;/b&gt;&lt;br /&gt;CS uses SQL 2005 Reporting and Analytics, so these reports can be consumed into a Report Center within an MOSS Intranet.&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Membership and Role providers&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The out of the box providers are hooked up to CS as well as in MOSS so this is no area of concern. Using Forms Authentication, you could reuse the same in a MOSS environment.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;So in conclusion, use the catalogue management, the shopping basket and the discount system from CS whereas all the other CS functionalities could easily be handled by reasonable amounts of custom development work in&amp;nbsp;MOSS.&lt;br /&gt;&lt;br /&gt;© Copyright 2010, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2389371441407603942?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2389371441407603942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2389371441407603942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2389371441407603942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2389371441407603942'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2010/04/commerce-server-vs-moss-2007.html' title='Commerce Server vs MOSS 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7590517799657476734</id><published>2009-11-23T17:49:00.000+01:00</published><updated>2009-11-23T17:49:49.297+01:00</updated><title type='text'>Heimore Identity 2.0</title><content type='html'>&lt;span class="Apple-style-span" style="color: #464646; line-height: 14px;"&gt;&lt;span style="font-family: Times, 'Times New Roman', serif;"&gt;Preparing a Portal/IAM-presentation for the Heimore Identity 2.0-day on Wednesday,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.heimore.com/Nyheter/Arets-event-Identitet-20--Identity-Management-i-verksamheten-nu-och-i-framtiden/"&gt;&lt;span style="font-family: Times, 'Times New Roman', serif;"&gt;http://www.heimore.com/Nyheter/Arets-event-Identitet-20--Identity-Management-i-verksamheten-nu-och-i-framtiden/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.heimore.com/Nyheter/Arets-event-Identitet-20--Identity-Management-i-verksamheten-nu-och-i-framtiden/"&gt;&lt;/a&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7590517799657476734?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7590517799657476734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7590517799657476734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7590517799657476734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7590517799657476734'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/11/heimore-identity-20.html' title='Heimore Identity 2.0'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-728729155154483075</id><published>2009-11-19T00:24:00.000+01:00</published><updated>2009-11-19T00:24:36.173+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GO'/><title type='text'>Google has launched Go</title><content type='html'>Google has launched &lt;a href="http://golang.org/"&gt;Go&lt;/a&gt;, a new programming language focusing on concurrency, simplicity, and performance.&lt;br /&gt;&lt;br /&gt;Go is open source. It uses an expressive C/C++-similar language with pointer but no pointer arithmetic. It is type safe and memory safe. However, one of its main goals is to offer the speed and safety of a static language but with the advantages offered by modern dynamic languages. Go also offers methods for any type, closures and run-time reflection. The syntax is pretty clean and it is garbage collected. It is intended to compete with C and C++ as a systems programming language.&lt;br /&gt;&lt;br /&gt;It features mulitcore programming by providing lightweight concurrency allowing developers to create sets of lightweight communicating processes, called "goroutines". You can run many concurrent goroutines and you don't need to worry about stack overflows. Goroutines aren't threads, they are functions running in parallel with other goroutines in the same address space. It is very easy to launch parallel functions using the goroutines. This is one of the most interesting features offered by the language. It really simplifies concurrency for systems programming.&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-728729155154483075?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/728729155154483075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=728729155154483075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/728729155154483075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/728729155154483075'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/11/google-has-launched-go.html' title='Google has launched Go'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-8283070519604863201</id><published>2009-11-18T22:30:00.001+01:00</published><updated>2009-11-18T22:30:03.077+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web service versioning'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='deprecated'/><title type='text'>A Web service layer versioning strategy using deprecated methods</title><content type='html'>&lt;b&gt;Question&lt;/b&gt;: How to manage development, bugfixing and all type of both backward- and nonbackward compatible changes to a web service layer without suffering from escalating maintenance costs of having to manage lots of old versions?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Suggested solution&lt;/b&gt;: Do not allow different version of the WS interface. Never change namespace. Handle change by introducing replacement methods and mark the "old" method as deprecated. Leave the deprecated method in production for a grace period, giving all consumers sufficient time to move over to the new version. When all consumers have moved over, remove the deprecaded method altogether.&lt;br /&gt;&lt;br /&gt;This strategy works for both WS and EJB interfaces.&lt;br /&gt;&lt;br /&gt;See also &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/deprecation/deprecation.html"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/deprecation/deprecation.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-8283070519604863201?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/8283070519604863201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=8283070519604863201' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8283070519604863201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8283070519604863201'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/11/web-service-layer-versioning-strategy.html' title='A Web service layer versioning strategy using deprecated methods'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2483654401206760804</id><published>2009-09-21T07:37:00.003+02:00</published><updated>2009-09-21T07:41:31.262+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Erl'/><category scheme='http://www.blogger.com/atom/ns#' term='Visio'/><title type='text'>Visio stencil with SOA-symbols</title><content type='html'>As a compliment to his excellent book "SOA Design Pattrens", Thomas Erl also offers a Visio stencil with SOA symbols. Very useful! &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download from &lt;a href="http://www.soapatterns.com/soa_08_12_beta.zip"&gt;http://www.soapatterns.com/soa_08_12_beta.zip&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt; © Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2483654401206760804?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2483654401206760804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2483654401206760804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2483654401206760804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2483654401206760804'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/09/visio-stencil-with-soa-symbols.html' title='Visio stencil with SOA-symbols'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1919288521303485220</id><published>2009-09-20T09:27:00.007+02:00</published><updated>2009-09-20T09:46:53.315+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Audiences'/><category scheme='http://www.blogger.com/atom/ns#' term='Audience Rules'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Audience targeting'/><title type='text'>MOSS Audience Targeting &amp; Audience Rules</title><content type='html'>To scope content in MOSS 2007 using audience targeting, You have three options:&lt;div&gt;&lt;b&gt;1. Sharepoint Groups&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;SharePoint Groups are maybe the most obvious Target Audience mechanism. This is useful in situations where the site administrators may not have access to Active Directory, which generelly is the case in large organizations.  SharePoint Groups have the nice feature of allowing self-enrollment. Self-enrollment is useful if the site administrator wants to setup a site that have different levels of information and allow the users themselves to subscribe to what components they'd like.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. AD/Domain Groups&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Active Directory domain groups are a valid Target Audience and it works also if you are using a Custom Authentication provider, You just use Custom Role provider as an audience. The advantage is that existing AD groups (e.g for internal use) can be reused in external sites. The SharePoint site administrator has less or no control over the membership in the group, but in large organizations, this is generally the way the security department wants it anyway :-)!. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3: Audience Rules&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Audience Rules are very powerful and maybe the least understood.  They can be setup to achieve a number of useful things. For instance , they can be setup with multiple rules to require a match to all rules or any rule.  The rules can be as simple checking if the user belongs to a organization, is in a distribution list, in a security group or match a specific user profile property. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1919288521303485220?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1919288521303485220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1919288521303485220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1919288521303485220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1919288521303485220'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/09/moss-audience-targeting-audience-rules.html' title='MOSS Audience Targeting &amp; Audience Rules'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1898829393379764702</id><published>2009-07-06T21:01:00.003+02:00</published><updated>2009-07-06T21:16:55.255+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clearcase'/><title type='text'>Consumer power on the Internet</title><content type='html'>After filing support issues to IBM for ten months to not much avail, it took IBM only a few weeks after I blogged about it to get a version out addressing the problems with the Clearcase for Visual Studio 2008 plugin that we have reported (&lt;a href="http://blog.tomaselfving.com/2009/05/clearcase-for-visual-studio-problems.html"&gt;http://blog.tomaselfving.com/2009/05/clearcase-for-visual-studio-problems.html&lt;/a&gt;, comments). Coincidence? Great news anyhow, only that we have already moved to VisualSVN and are happy now, maybe we look at the new Clearcase version at some later point in time.&lt;div&gt;&lt;br /&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1898829393379764702?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1898829393379764702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1898829393379764702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1898829393379764702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1898829393379764702'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/07/consumer-power-on-internet.html' title='Consumer power on the Internet'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-4177188730801249281</id><published>2009-06-14T09:12:00.005+02:00</published><updated>2009-06-14T09:28:12.567+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ROSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepont'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>ROSS for multi-stage deployment and multi-farm replication for SharePoint</title><content type='html'>When searching for an enterprise deployment solution for a large external MOSS platform, I've come across ROSS. RepliWeb Operational Synchronization for SharePoint (ROSS) claims to provide one thing that is missing in the MOSS box, namely support for multi-stage deployment and multi-farm replication. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SharePoint used as a mission-critical web platform is requiers IT to maintain rapidly growing infrastructures, content and application structures. RepliWeb’s ROSS addresses the challenges when managing content deployment and replication processes across multi-staged topologies and multiple farms. Agnostic to environment variations, ROSS is a scalable solution built for critical enterprise deployment processes including comprehensive scheduling, recovery and transactional deployment capabilities, efficient transfer engines, and much more. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The feature I am specifically interested in is the support for transactions, so that a deployment may be rolled back entiryly without messing up the environment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll comment on ROSS again later when I have made a thorough evaluation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-4177188730801249281?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/4177188730801249281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=4177188730801249281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4177188730801249281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4177188730801249281'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/06/ross-for-multi-stage-deployment-and.html' title='ROSS for multi-stage deployment and multi-farm replication for SharePoint'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1560246013479011910</id><published>2009-05-02T08:27:00.004+02:00</published><updated>2009-05-02T08:50:48.643+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clearcase'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><title type='text'>Clearcase for Visual Studio problems</title><content type='html'>I'm working with a large corp customer that have standardized on IBM Clearcase. It works great with all the Java development tools, but when starting up large scale Visual Studio development we have experienced lots of problems, especially with the Clearcase plugin for Visual Studio 2008. For instance:&lt;div&gt;- Clearcase looses files, especially when adding files to VS project locally&lt;/div&gt;&lt;div&gt;- Merge performs  poorly in general. In particular, merge of the VS project file is a source of major headache. Merge of CSS files reports successful, but when we're analyzing it there was lots of errors in the merged file.&lt;/div&gt;&lt;div&gt;- The Update view command is unreliable. Developers doing the Update view command doesn't always get all the latest files, and worse is that they get no message. They work on old files without knowing it, the developers worst nightmare!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have any experiences or tips, feel free to contact me or comment!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1560246013479011910?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1560246013479011910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1560246013479011910' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1560246013479011910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1560246013479011910'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/05/clearcase-for-visual-studio-problems.html' title='Clearcase for Visual Studio problems'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3601057449399880768</id><published>2009-05-02T08:10:00.004+02:00</published><updated>2009-05-02T08:27:18.315+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='sp2'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><title type='text'>MOSS sp 2 now available</title><content type='html'>The MOSS sp 2 is now available for download at  &lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/04/28/announcing-service-pack-2-for-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2009/04/28/announcing-service-pack-2-for-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0.aspx.&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Major improvements in the areas of:&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. Performance, availability and stablilty - lots of small fixes and improvements across nearly all the components. New/improved functions like a timer job that automatically rebuilds content database index to improve database performance. Another difference is when a content database is marked as read-only, the user interface will be modified so users cannot perform tasks that require writing to the database.&lt;/div&gt;&lt;div&gt;2. Broader browser support. Internet Explorer 8 is added into Level 1 browser support. FireFox 3.0 is added into Level 2 browser support. (Firefox 2.0 is no longer supported by Mozilla)&lt;/div&gt;&lt;div&gt;3. Improved Forms based authentification. Now the client application can store user credentials instead of asking for them every time.&lt;/div&gt;&lt;div&gt;4. Long-awaited improvements in product dokumentation&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;All the details of SP2 can be downloaded here: &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=148551"&gt;http://go.microsoft.com/fwlink/?LinkId=148551&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3601057449399880768?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3601057449399880768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3601057449399880768' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3601057449399880768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3601057449399880768'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/05/moss-sp-2-now-available.html' title='MOSS sp 2 now available'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1223179641949401999</id><published>2009-04-03T22:46:00.003+02:00</published><updated>2009-04-03T22:54:38.053+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SIEM'/><category scheme='http://www.blogger.com/atom/ns#' term='Heimore'/><title type='text'>SIEM and logging/tracking event by Heimore</title><content type='html'>Focusing on SIEM (Security Information and Event Management), traceability, log management and regulatory requirements Heimore Group is on the 13th of May arranging a full day of presentations, case studies, and meetings round these topics. The leading software vendors are coming as well as a number of leading experts in these fields.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sign up at &lt;a href="http://www.heimore.se/Nyheter/SIEM-och-Sparbarhetsdagen/"&gt;http://www.heimore.se/Nyheter/SIEM-och-Sparbarhetsdagen/!&lt;/a&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1223179641949401999?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1223179641949401999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1223179641949401999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1223179641949401999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1223179641949401999'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/04/siem-and-loggingtracking-event-by.html' title='SIEM and logging/tracking event by Heimore'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2660223678045748983</id><published>2009-03-23T23:18:00.003+01:00</published><updated>2009-03-23T23:21:49.498+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Sharepoint proprietary specs out</title><content type='html'>&lt;div&gt;Microsoft have released some interesting reading in the SharePoint Products and Technologies protocol documentation. It provides detailed technical specifications for Microsoft proprietary protocols (including extensions to industry-standard or other published protocols) that are implemented and used in SharePoint Products and Technologies to interoperate or communicate with Microsoft products. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The documentation includes a set of companion overview and reference documents that supplement the technical specifications with conceptual background, overviews of inter-protocol relationships and interactions, and technical reference information.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy by downloading it at &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=5e94ad07-902c-422f-aadd-ff2bba9e540a#tm"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=5e94ad07-902c-422f-aadd-ff2bba9e540a#tm!&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2660223678045748983?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2660223678045748983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2660223678045748983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2660223678045748983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2660223678045748983'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/sharepoint-proprietary-specs-out.html' title='Sharepoint proprietary specs out'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1979196344823940644</id><published>2009-03-19T22:08:00.003+01:00</published><updated>2009-03-19T22:18:17.826+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Skype Sharepoint'/><title type='text'>Skype staus field in Sharepoint</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial; font-size: 13px; line-height: 15px;"&gt;&lt;div&gt;A company named ObjectConnect have developed a Skype integration into SharePoint.Its first version available on Codeplex now (&lt;a href="http://skypestatusfield.codeplex.com/"&gt;http://skypestatusfield.codeplex.com/&lt;/a&gt;) featuring the Skype status field. It allows you to store the account name in the field, and it's rendered as the nice status (green / grey) picture in the list and item view. &lt;/div&gt;&lt;div&gt;Also, clicking on the icon will bring you the chat window to that person if you have Skype installed locally. Nice! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; © Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1979196344823940644?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1979196344823940644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1979196344823940644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1979196344823940644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1979196344823940644'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/skype-staus-field-in-sharepoint.html' title='Skype staus field in Sharepoint'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6661793593879605539</id><published>2009-03-10T00:14:00.003+01:00</published><updated>2009-03-10T00:23:53.170+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Web services'/><title type='text'>An architecture of base-system-independent web services</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fdhqBg1iHWo/SbWkHLA8vbI/AAAAAAAAAFI/SqhzxZFZOAk/s1600-h/SOA+-+WS+Architecture+vision.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 370px;" src="http://4.bp.blogspot.com/_fdhqBg1iHWo/SbWkHLA8vbI/AAAAAAAAAFI/SqhzxZFZOAk/s400/SOA+-+WS+Architecture+vision.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5311331778676178354" /&gt;&lt;/a&gt;&lt;br /&gt;One of the most common mistakes of SOA implementation is to leave out the common data model. Without that, the web service layer is no more than a function-mapping layer between clients and base systems. By letting the ESB manage a common data model, the web services published to clients are independent of various base system definitions of common objects, and also independent of change in theses base system definitions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6661793593879605539?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6661793593879605539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6661793593879605539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6661793593879605539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6661793593879605539'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/architecture-of-base-system-independent.html' title='An architecture of base-system-independent web services'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_fdhqBg1iHWo/SbWkHLA8vbI/AAAAAAAAAFI/SqhzxZFZOAk/s72-c/SOA+-+WS+Architecture+vision.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6822148829936970989</id><published>2009-03-07T00:03:00.004+01:00</published><updated>2009-03-07T00:17:33.302+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='restore'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><title type='text'>SharePoint 2007 Backup/Restore options and things to consider</title><content type='html'>Going through the native Sharepoint backup, I've found some limitations I'd like to shed some light on. The backup:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;does not Provide Scheduling Functionality. You must use the command line with Windows Task Scheduler for scheduled backups&lt;br /&gt;&lt;/li&gt;&lt;li&gt;does not Backup any Configurations/Customizations to any files in the “12 Hive” or Web.config files. You must manually back up front end files.&lt;/li&gt;&lt;li&gt;does not Backup IIS Settings/Configurations&lt;br /&gt;&lt;/li&gt;&lt;li&gt;does not Backup Alternate Access Mappings (AAM)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;dannot Backup Directly to Tape (only to UNC)&lt;/li&gt;&lt;li&gt;high restore time means low availability&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If using the SQL Only Backup/restore strategy, you'll have the following issues to consider:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;it does not backup any WFE configurations or solutions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;it requires Admin to manually reattach content databases to the web applications after a recovery&lt;br /&gt;&lt;/li&gt;&lt;li&gt;you'll need to manually backup/restore all customizations on WFE Servers (.Net Assemblies, Features, IIS Metabase, etc. – batch file can help automate this process)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;no need to backup Search database (as it can’t be synchronized with Search Index)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;backup/restore of SSP separately via SharePoint native backup/restore&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;© Copyright 2009, Tomas Elfving&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6822148829936970989?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6822148829936970989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6822148829936970989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6822148829936970989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6822148829936970989'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/sharepoint-2007-backuprestore-options.html' title='SharePoint 2007 Backup/Restore options and things to consider'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5299056028569098232</id><published>2009-03-06T22:47:00.003+01:00</published><updated>2009-03-06T22:51:01.392+01:00</updated><title type='text'>First (?) Computer "Bug", 1945</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fdhqBg1iHWo/SbGaohUn9RI/AAAAAAAAAFA/Pm4TbNIFSBA/s1600-h/computer-bug.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_fdhqBg1iHWo/SbGaohUn9RI/AAAAAAAAAFA/Pm4TbNIFSBA/s400/computer-bug.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5310195456576845074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5299056028569098232?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5299056028569098232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5299056028569098232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5299056028569098232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5299056028569098232'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/first-computer-bug-1945.html' title='First (?) Computer &quot;Bug&quot;, 1945'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fdhqBg1iHWo/SbGaohUn9RI/AAAAAAAAAFA/Pm4TbNIFSBA/s72-c/computer-bug.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-4391233102304660258</id><published>2009-03-01T22:35:00.005+01:00</published><updated>2009-03-01T22:45:59.274+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><category scheme='http://www.blogger.com/atom/ns#' term='versioning'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Version management of web services</title><content type='html'>You basically have 2 choices: Either use separate URI's or use the "target namespace# for version numbering. Target namespace can also be used for multilanguage support.&lt;br /&gt;Using the tagret namespace way together with a proxy or ESB, you can reduce client dependence on URI's. Say you have:&lt;br /&gt;&lt;br /&gt;/Customer&lt;br /&gt;/Customer/v1&lt;br /&gt;/Customer/v2&lt;br /&gt;/Customer/vX&lt;br /&gt;&lt;br /&gt;/Customer always gives the client the latest version. The ESB acts here to sort out what WS is the latest version and supplies that WS to the client. Clients call /Customer for services they know is backwardcompatible.&lt;br /&gt;&lt;br /&gt;/Customer/vX is for non-backwardcompatible services where the client needs to be sure exactly what version of the service he gets.&lt;br /&gt;&lt;br /&gt;The "target namespace" solution follows the Amazon’s recommendation form publication of services (&lt;a href="http://docs.amazonwebservices.com/AWSEcommerceService/2005-03-23/ApiReference/ServiceVersioningArticle.html"&gt;http://docs.amazonwebservices.com/AWSEcommerceService/2005-03-23/ApiReference/ServiceVersioningArticle.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-4391233102304660258?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/4391233102304660258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=4391233102304660258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4391233102304660258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4391233102304660258'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/version-management-of-web-services.html' title='Version management of web services'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7665768484100545869</id><published>2009-03-01T22:11:00.011+01:00</published><updated>2009-03-01T22:31:02.769+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>What capabilities can a proxy in a SOA service layer handle?</title><content type='html'>When implementing a SOA web service layer, a number of issues keeps reappearing in service after service. They should, in other words, be taken care of in a separate service proxy layer on top of the services. The proxy layer could be implemented as a custom developed layer or with an ESB (Enterprise Service Bus).&lt;br /&gt;&lt;br /&gt;Contrary to the more classical enterprise application integration (EAI) approach of a monolithic stack in a hub and spoke architecture, the foundation of an enterprise service bus is built of base functions broken up into their constituent parts, with distributed deployment where needed, working in harmony as necessary. An ESB does not implement a service-oriented architecture (SOA) but provides the features with which one may be implemented. The ESB tries to remove the coupling between the service called and the transport medium.&lt;br /&gt;&lt;br /&gt;The following capabilities a proxy/ESB can handle:&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Invocation &lt;/span&gt;- Support for synchronous and asynchronous transport protocols, service mapping (locating and binding)&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Ruoting &lt;/span&gt;- Addressability, static/deterministic routing, content-based routing, rules-based routing, policy-based routing&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Mediation and integration&lt;/span&gt; - Adapters, protocol transformation, service mapping&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Messaging &lt;/span&gt;- Message processing, message transformation and message enhancement&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Process Choreography&lt;/span&gt; - Implementation of complex business processes(think twice before getting into that as it ties you heavily to the ESB product)&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Service Orchestration&lt;/span&gt; - Coordination of multiple implementation services exposed as a single, aggregate service&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Quality of Service&lt;/span&gt; - Security (encryption and signing), reliable delivery, transaction management, SLA controls&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Management&lt;/span&gt; - Monitoring, audit, logging, metering, admin console, BAM&lt;br /&gt;- &lt;span style="font-weight:bold;"&gt;Thread management&lt;/span&gt; - i.e limit number of concurrent calls to a base system&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7665768484100545869?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7665768484100545869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7665768484100545869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7665768484100545869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7665768484100545869'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/03/what-capabilities-can-proxy-in-soa.html' title='What capabilities can a proxy in a SOA service layer handle?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5180862045651306460</id><published>2009-02-27T21:39:00.004+01:00</published><updated>2009-02-27T21:41:48.012+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint; Dispose'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Sharepoint memory leaks, anyone?</title><content type='html'>The SPDisposeCheck tool will help improve the quality of your SharePoint assemblies.  It will inspect your SharePoint assemblies and check that you are correctly disposing of certain SharePoint objects (IDisposable objects which includes SPSite and SPWeb).  The tool is based upon the guidance published in this MSDN article, &lt;a href="http://msdn.microsoft.com/en-us/library/aa973248.aspx"&gt;Best Practices: Using Disposable Windows SharePoint Services Objects&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This tool is not supported by Microsoft and is recommended to be used on Developer workstations and not on production SharePoint Server installations.  &lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5180862045651306460?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5180862045651306460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5180862045651306460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5180862045651306460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5180862045651306460'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/02/sharepoint-memory-leaks-anyone.html' title='Sharepoint memory leaks, anyone?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-8111009713049038857</id><published>2009-02-27T21:29:00.006+01:00</published><updated>2009-02-27T21:37:55.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FAST'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Search'/><title type='text'>FAST Search for SharePoint available in beta 2nd half of 2009</title><content type='html'>Microsoft have released a roadmap for the FAST search engine aquired by the norwegian search specialists some time ago. The new search server that will add the high-end search capabilities of FAST ESP into Microsoft Office SharePoint Portal Server, will be available as a part of the next release of MOSS. &lt;br /&gt;For customers who are interested in the product, Microsoft also announced ESP for SharePoint, a special offering that allows customers to purchase high-end search capabilities today, with a defined licensing path to FAST Search for SharePoint when it becomes available.&lt;br /&gt;The full name is "FAST Search for Internet Business". It will extend FAST ESP and provide a flexible platform for building engaging, search-driven Web site experiences. The product will be available in beta in the second half of this year and will feature new capabilities for content integration and interaction management, helping enable more complete and interactive search experiences.&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-8111009713049038857?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/8111009713049038857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=8111009713049038857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8111009713049038857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8111009713049038857'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/02/fast-search-for-sharepoint-available-in.html' title='FAST Search for SharePoint available in beta 2nd half of 2009'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-4587297415565405095</id><published>2009-01-31T22:16:00.006+01:00</published><updated>2009-02-05T00:51:57.171+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='claims'/><title type='text'>What is a Claim?</title><content type='html'>See also previous post on &lt;a href="http://blog.tomaselfving.com/2009/01/claims-based-authentification-in-next.html"&gt;Claims-based authentification in next SharePoint&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, what is this claim and claims-based model that generates so much fuzz? &lt;br /&gt;&lt;br /&gt;The claims-based model has three components: &lt;br /&gt;1. the relying party, which needs the claim in order to decide what it is going to do&lt;br /&gt;2. the identity provider, which provides the claim&lt;br /&gt;3. the user, who decides what if any information he wants to provide.&lt;br /&gt;&lt;br /&gt;Claims can contain static information such as birth date or credit card info, relationship-based information such as group membership or derived claims that make general assertions such as the user is over 21 years of age. There are also metaclaims about how information was verified, such as in-person registration, or how it was issued.&lt;br /&gt;&lt;br /&gt;Claims can be used in three ways: &lt;br /&gt;1. to securely transmit the requesting user’s identity across machines&lt;br /&gt;2. provide application-specific concepts, such as roles, so applications can augment claims about the user and allow applications to reason about those claims in the context of authorization decisions&lt;br /&gt;3. interoperate with multiple authentication providers in a consistent manner.&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-4587297415565405095?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/4587297415565405095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=4587297415565405095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4587297415565405095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4587297415565405095'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/01/what-is-claim.html' title='What is a Claim?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5408248017066253416</id><published>2009-01-31T22:15:00.008+01:00</published><updated>2009-02-05T00:49:54.513+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='claims'/><title type='text'>Claims-based authentification in next SharePoint</title><content type='html'>Microsoft is replacing the authentication system for SharePoint Server and will instead rely on a new claims-based identity model.&lt;br /&gt;&lt;br /&gt;The goal is to have SharePoint incorporate an authentication model that works with any corporate identity system, including Active Directory, LDAPv3-based directories, application-specific databases and new user-centric identity models(LiveID, OpenID) and InfoCard systems(Microsoft’s CardSpace and Novell’s Digital Me).&lt;br /&gt;&lt;br /&gt;SharePoint will lose the current authentication system, criticised for its rigidity, in favor of using claims about a user, such as age or group membership, that are passed to obtain access to the SharePoint environment and systems accessed from Sharepoint applications.&lt;br /&gt;&lt;br /&gt;The claims architecture, part of Microsoft’s Metasystem model for a distributed identity architecture, is based on such protocols as WS-Federation, WS-Trust and the Security Assertion Markup Language (SAML). The Metasystem includes an emerging technology Microsoft developed called Security Token Service (STS), which handles the exchange of claims.&lt;br /&gt;&lt;br /&gt;Claims could be built dynamically, picking up information about users and validating existing claims via a trusted source. The advantage of a claims-based system is that it is flexible and designed for heterogeneous identity environments. &lt;br /&gt;&lt;br /&gt;From a stratigic point of view, the interesting thing is that Microsoft hopes that the claims architecture, which can be built on technologies available today, will replace identity systems that are based on a single-point-of-truth, typically a directory of user information. Most of today's identity management system are based on the single-point-of-truth policy.&lt;br /&gt;&lt;br /&gt;© Copyright 2009, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5408248017066253416?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5408248017066253416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5408248017066253416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5408248017066253416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5408248017066253416'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2009/01/claims-based-authentification-in-next.html' title='Claims-based authentification in next SharePoint'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5294285213245185334</id><published>2008-12-26T09:06:00.007+01:00</published><updated>2008-12-26T09:13:04.985+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSRP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSRP Producer'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><title type='text'>MOSS, now as WSRP Producer</title><content type='html'>Until now, the WSRP support in MOSS 2007 have been limited to acting as WSRP 1.1 client by using the built in web parts. With the recently released &lt;a href="http://blogs.msdn.com/sharepoint/archive/2008/12/15/announcing-the-wsrp-toolkit-for-sharepoint.aspx"&gt;WSRP Toolkit for SharePoint&lt;/a&gt; you can produce WSRP conformant data producers from SharePoint lists and libraries.  External portal platforms (e.g. BEA AquaLogic Portal, IBM WebSphere Portal, SAP NetWeaver Enterprise Portal etc.) can then render SharePoint data natively through their WSRP consumer portlets. The Toolkit is available now for &lt;a href="http://code.msdn.microsoft.com/WSRPToolkit"&gt;download from the MSDN Code Gallery&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5294285213245185334?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5294285213245185334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5294285213245185334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5294285213245185334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5294285213245185334'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/12/moss-now-as-wsrp-producer.html' title='MOSS, now as WSRP Producer'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5231197919420946605</id><published>2008-12-10T01:02:00.012+01:00</published><updated>2008-12-11T09:36:28.961+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='hot deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='loosing sessions'/><title type='text'>Hot deploy in a MOSS web farm means loosing session state</title><content type='html'>&lt;span style="font-weight:bold;"&gt;The problem&lt;br /&gt;&lt;/span&gt;Manys blogs describe how to deploy new code to a MOSS farm, but I have so far not found any solution how to do this without affecting end-users' session state. The scenario is as follows:&lt;br /&gt;&lt;br /&gt;Let's say you have 2 WFE's and a load balancer in front, the classic minimal MOSS-redundant arcitecture. You set the load balancer to direct all hits to WFE2 while deploying on WFE1. The user sessions on WFE1 that you are updating are thrown out. The sessions cannot be transfered to WFE2 as it is not running the same code. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Desired solution&lt;br /&gt;&lt;/span&gt;What you really would like for your users is to continue running their sessions based on the "old" code on WFE1 until they are done. That could take hours until all remaining users are done. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Weblogic solution&lt;/span&gt;&lt;br /&gt;WebLogic has a feature for this called parallell deployment to eliminate downtime during EAR version upgrade. You can deploy the new version without stopping the existing application and once the new version deployed successfully you can switch over transparently from the old one to new one. MOSS have currently nothing similar to offer. &lt;br /&gt;More info: &lt;a href="http://edocs.bea.com/wls/docs100/deployment/redeploy.html#wp1022490"&gt;http://edocs.bea.com/wls/docs100/deployment/redeploy.html#wp1022490&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The severity of this problem obviously depends on the functionality of your site. For an e-commerce site the loss of user shopping baskets could mean significant business impact.  &lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5231197919420946605?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5231197919420946605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5231197919420946605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5231197919420946605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5231197919420946605'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/12/hot-deploy-in-moss-web-farm-means.html' title='Hot deploy in a MOSS web farm means loosing session state'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2156996840601369025</id><published>2008-11-01T01:03:00.004+01:00</published><updated>2008-11-01T01:26:53.025+01:00</updated><title type='text'>Using external IAM or the portal platforms OOTB security functions?</title><content type='html'>I've done a few posts on the IAM/portal subject &lt;a href="%28http://blog.tomaselfving.com/2008/10/security-architectures-for-portal.html"&gt;(http://blog.tomaselfving.com/2008/10/security-architectures-for-portal.html&lt;/a&gt;, for instance) and there is surely a lot to gain from separating the access management and the identity management functionality from the portal platform and its web applications. On the other hand, an IAM platform is a huge investment both to buy and to implement as it requires expert product competence.&lt;br /&gt;&lt;br /&gt;So, what are the arguments for choosing an external IAM platform?&lt;br /&gt;&lt;br /&gt;In my opinion, if You have requirements for...&lt;br /&gt;&lt;br /&gt;1. Several login methods, especially login methods not found in portal platform products.&lt;br /&gt;&lt;br /&gt;2. Protecting more than one appllication, especially applications on different platforms (i e web applications and SAP)&lt;br /&gt;&lt;br /&gt;3. SSO between applications on different platforms, both web and other apps.&lt;br /&gt;&lt;br /&gt;4. High security requirements can in itself motivate an IAM-platform, as you may move the portal platform inside the DMZ and only have the reverse proxy on the DMZ.&lt;br /&gt;&lt;br /&gt;5. Protecting a SOA environment of web services as well as web applications may be an interesting scenario for an IAM solution&lt;br /&gt;&lt;br /&gt;...then, You may go ahead and evaluate IAM products to compliment your portal platform.&lt;br /&gt;&lt;br /&gt;And finally, look carefully at the quality of the adapters between the IdM products and your portal product. It will be in the interface between the IdM and the portal that You will find the toughest challenges of the integration work. If this interface is poorly constructed, the IAM implementation may end up limiting the functionality of the portal platform!&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2156996840601369025?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2156996840601369025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2156996840601369025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2156996840601369025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2156996840601369025'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/11/using-external-iam-or-portal-platforms.html' title='Using external IAM or the portal platforms OOTB security functions?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5037798191665616079</id><published>2008-10-18T02:53:00.006+02:00</published><updated>2008-10-18T03:20:47.244+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Active Directory'/><title type='text'>Implementing Sharepoint security</title><content type='html'>There are two major approaches to implementing Sharepoint security:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. AD groups&lt;/span&gt;&lt;br /&gt;Create Active Directory groups for each site collection and optionally each subsite and object that will require unique permissions. Create a new SharePoint OU (Organizational Unit) within Active Directory. Put these new groups in this OU. Then add these groups to their corresponding SharePoint groups in SharePoint (Owner, Member and Visitor). Adding users to the AD groups may also be done through an externa identity management application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advantages: Control&lt;/span&gt;, as all changes to security happen in Active Directory. It is easy to add/update/delete people from groups. No individual user accounts are stored in SharePoint with regards to security.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disadvantages: Extra setup work&lt;/span&gt;. Each site you create a new site collection or a subsite/object that requires unique permissions. You have to set up Active Directory first and then add the groups to SharePoint. If your SharePoint administrations and your Active Directory administrators are different people, they have to cooperate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Sharepoint groups&lt;/span&gt;&lt;br /&gt;Ignore Active Directory groups and let the SharePoint administrators and site collection administrators add people directly to the groups provided by SharePoint.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advantages: Easier admin&lt;/span&gt; as it lets the SharePoint administrators quickly change security without needing to involve the Active Directory administrators. It's also easier to see the names of everyone that has the permissions for a SharePoint group right from the interface instead of having to go to the Active Directory administrators and having them look it up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disadvantages: Maintainability suffers. &lt;/span&gt;You can have individual user accounts all over your SharePoint farm and not know who has permission to what. Out of the box, SharePoint does not provide a tool that shows you all the permissions a specific user account has (although there are 3rd party tools that provide this). When someone leaves or you need to move their account between departments, for example, it can be time-consuming to update the permissions in SharePoint.&lt;br /&gt;&lt;br /&gt;The first approach is clearly the better practice in my opinion.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;External Access/Identity management&lt;/span&gt;&lt;br /&gt;With companies setting up external Access management/Identity management platforms, you also need to look into how the Sharepoint security architecture maps into the corporate access/identity management architecture. Typically, You want to use the IdM application to tie users to groups (either AD or Sharepoint groups, both are possible). This way, both internal and delegated administration can be provided. Delegated administration can be offered for extranet partners to manage their own users for instance.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5037798191665616079?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5037798191665616079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5037798191665616079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5037798191665616079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5037798191665616079'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/10/implementing-sharepoint-security.html' title='Implementing Sharepoint security'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1404477466261508508</id><published>2008-10-16T23:19:00.005+02:00</published><updated>2008-10-16T23:39:02.042+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSA'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS Audience targeting Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity management'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='AM'/><category scheme='http://www.blogger.com/atom/ns#' term='IdM'/><category scheme='http://www.blogger.com/atom/ns#' term='Access management'/><title type='text'>Security architectures for portal platforms revisited</title><content type='html'>Do you want to secure more than one application? Manage identities efficiently? This post describes on a high level access and identity management solutions managing the security functions for a portal platform.&lt;br /&gt;&lt;br /&gt;This pics shows an RSA implementation, but similar solutions can be set up using any of the leading AM/IdM products:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fdhqBg1iHWo/SPewnwPGQkI/AAAAAAAAADI/dfkHvItHDlc/s1600-h/AM+platform.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_fdhqBg1iHWo/SPewnwPGQkI/AAAAAAAAADI/dfkHvItHDlc/s400/AM+platform.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5257865286987956802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Identity management&lt;/span&gt;&lt;br /&gt;The idea is to centralize the authentification, authorization, administration and delegation of user identities (to create, update, delete and block user accounts) and access control of to user data to a company-wide common platform of reuseable components, instead of doing that in each and every application. For instance, a user’s address may be changed and the identity management solution immediately propagates that into every application and system integrated by the identity management solution. In extranet solutions you may even delegate the user management of a partner company’s users to a superuser in the partner company’s organization by making the identity management solution accessible on the internet (this scenario requires the identity management solution to be used in conjunction with an access management solution).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Separating login methods&lt;/span&gt;&lt;br /&gt;Login methods (such as userid/pwd, digital certificates, smartcards etc) may be added to a separate login service. The access management platform ties different login methods to different applications. By choosing this way, you don’t use the built-in security functions of the portal product at all. You trust the access management platform to secure all portal applications. The access management platform may also be used to secure a web services environment in a SOA architecture implementation. Yet another scenario is to secure both an existing web site and a new site during migration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Web portal application integration&lt;/span&gt;&lt;br /&gt;One problem is that editors and developers of web portal applications needs to work in their portal platform (MOSS 2007, for instance) when creating groups and giving access to various resourses of their web application. It might also be complex with rolebased access rights and other fine grained access solutions. You need some interface definition and integration solution between the Identity management solution and the portal platform. &lt;br /&gt;&lt;br /&gt;I suggest having the portal platform responsible for creating groups and access rules for resources. The IdM then extracts the groups. In the IdM You add people to the groups which will give them correct access to resources when logging into the web portal application via the Access Management component (which integrates to the IdM as well).&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1404477466261508508?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1404477466261508508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1404477466261508508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1404477466261508508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1404477466261508508'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/10/security-architectures-for-portal.html' title='Security architectures for portal platforms revisited'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_fdhqBg1iHWo/SPewnwPGQkI/AAAAAAAAADI/dfkHvItHDlc/s72-c/AM+platform.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6584337192946282225</id><published>2008-09-24T23:58:00.002+02:00</published><updated>2008-09-25T00:04:48.527+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA governance'/><title type='text'>Thoughts on SOA Governance</title><content type='html'>Some advice when it comes to the creation process of (web) services for a SOA platform:&lt;br /&gt;&lt;br /&gt;1. Only create services from core business logic/funktioality. Where is an overhead in terms of work requiered creating and mainatining web services so focus on the ones most important for your business&lt;br /&gt;&lt;br /&gt;2. Bigger is better. Only the really big services qualify as SOA services for reuse througout a company.&lt;br /&gt;&lt;br /&gt;3. Don't make a services per function. Again, bigger services with mony functions is easier to reuse and maintain.&lt;br /&gt;&lt;br /&gt;4. Document each service separately from other development documentation. That makes the documentation of the service more accessible to its users and to people whating to make changes later on.&lt;br /&gt;&lt;br /&gt;5. Create unique SLA's for each web service. The reason is that each web service may be used in different applications with different requirements. &lt;br /&gt;&lt;br /&gt;When it comes to management of SOA I believe it's a good idea to separate creation from maintenance of services. I suggest you separate SOA governance in two parts: &lt;br /&gt;&lt;br /&gt;1. Create services - The initial decision when you choose what will be a SOA web service and what doesn't is taken by the company's IT architecture board. &lt;br /&gt;&lt;br /&gt;2. Change management of services - When a service is changed it may affect others, therefore a Change Control Board for SOA is necessary. That board controls any changes in webservices and they prioritize the development work.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6584337192946282225?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6584337192946282225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6584337192946282225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6584337192946282225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6584337192946282225'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/09/thoughts-on-soa-governance.html' title='Thoughts on SOA Governance'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3343673653311927807</id><published>2008-09-01T23:52:00.007+02:00</published><updated>2008-09-02T00:08:37.328+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Single-sign-on'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic'/><title type='text'>SSO between a MOSS and a Weblogic web site</title><content type='html'>&lt;span style="font-weight: bold;"&gt;The problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I need to set up single-sign-on between two web sites. The new site is in MOSS 2007. I am migrating to the MOSS-based site from the existing old site that is built in BEA Weblogic with a SUN One web server in front. The MOSS site requires login. The existing site contains applications requiering login (using the Weblogic realm). It is too expensive to migrate the entire site to MOSS at once, so we need to do a migration in several steps having both the old and the new site in production during the overlapping time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Proposed solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am considering IFrameing the existing applications into the new MOSS-based site while migrating them one by one. The problem is that I cannot expect the user first to log on på the MOSS-site and then to logon to the IFramed applications residing on the existing Weblogic site, so we want SSO between them. I am considering using ISA Server (or maybe another Access management product) to achieve this. With ISA Server the both servers need to be in the same domain and use the same Web listener. I think the solution looks good on paper, but the devil is, as always, in the details. I'll write more on this when I have tried this out in reality. If You have any experience on something similar, i'd appreciate any comments on this!&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3343673653311927807?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3343673653311927807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3343673653311927807' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3343673653311927807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3343673653311927807'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/09/sso-between-moss-and-weblogic-web-site.html' title='SSO between a MOSS and a Weblogic web site'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7338619840581485223</id><published>2008-07-18T01:43:00.006+02:00</published><updated>2008-07-24T01:13:44.146+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='Pluggable Single Sign-On'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS 2007'/><title type='text'>Implementing Pluggable Single Sign-On in MOSS 2007</title><content type='html'>The Microsoft Single Sign On Service is one of the most misunderstood and overlooked features of SharePoint. Many people think of it as a federated SSO mechanism by which one would gain a "one sign on for several applications" environment whereby all third party apps could be assimilated into the SharePoint environment using an arbitrary sign on mechanism. It's purpose is rather to integrate and connect to third party base systems, such as SAP, Siebel, or other LOB systems.&lt;br /&gt;&lt;br /&gt;The power that it provides, when combined with the Business Data Catalog (BDC), is to eliminate the need to build complex identity impersonation in order to retrieve business data out of those third party systems. Using its structure of Enterprise Application Definitions (EAD) one can build several pass through authentication channels by which business data can easily be assimilated and brought to a web front end application through the use of various webparts, whether it is OOB, or a custom developed solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;The Default Single Sign On Service&lt;/span&gt;&lt;br /&gt;Single sign on in SharePoint needs to be called up by using services.msc. Once you get started, the best next step is to start to plan out how you are going to configure the accounts for SSO, which are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Configuration account&lt;/li&gt;&lt;li&gt;Single sign-on administrator&lt;/li&gt;&lt;li&gt;Single sign-on service&lt;/li&gt;&lt;li&gt;Enterprise application manager &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You can set the exact criteria of what needs to be satisfied for each account. After the accounts are created you will create the encrypted SSO database where we are going to map and store our third party credentials. Once your database is created, and the encryption key is created, you can create your EAD which is going to define the structure. It says exactly how the retrieval of the credentials are going to be handled.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Pluggable SSO Architecture&lt;br /&gt;&lt;/span&gt;The Microsoft SSO Service API is independent of the specific authentication mechanisms. The unique feature of the new MOSS SSO is that the Microsoft Single Sign On service is now a pluggable feature, by which you can leverage whichever SSO provider that you would like. It may be a custom one that you have developed or one provided by a third party. When deploying your own or a third party provider, the default SSO provider, SpsSsoProvider, will no longer be used. Because only one SSO service can be used, it is a one or other choice. A MOSS administrator/architect has to decide whether they want to bind the default SSO provider or use one of their own choosing, each which carries its own implications.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7338619840581485223?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7338619840581485223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7338619840581485223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7338619840581485223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7338619840581485223'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/07/implementing-pluggable-single-sign-on.html' title='Implementing Pluggable Single Sign-On in MOSS 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2134209833245663026</id><published>2008-07-08T00:07:00.004+02:00</published><updated>2008-07-08T00:21:13.657+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Federated Portals'/><category scheme='http://www.blogger.com/atom/ns#' term='WSRP'/><category scheme='http://www.blogger.com/atom/ns#' term='SAML'/><title type='text'>Next Generation Portal – Federated Portals</title><content type='html'>In order to provide the user a single business platform for all enterprise resources, the user should be able access content across all portals in the enterprise. To achieve this, portals have to be integrated in such a way that content is location-transparent to users without users having to remember numerous URLS and identities for access. This is the next generation evolution for portal computing. Gartner refers to such portals as federated portal. Such federated portals need to provide federated content and identity (single-sign-on).&lt;br /&gt;&lt;br /&gt;This posting discusses industy efforts and standardizations that drives this development.&lt;span id="o.n:1"  style="font-size:100%;"&gt;&lt;b id="o.n:2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Content (Application) Federation&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b id="o.n:3"&gt;&lt;br /&gt;&lt;br /&gt;JSR 168&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;JSR 168 is outcome of Java community process, an open forum for the development of Java standards, reference implementations and TCKs (Test Compatibility Kit). JSR 168 is very similar to Servlet specifications, the request-response presentation framework part of J2EE, the java enterprise edition middleware standard. JSR community made a decision to create a new specification for portlets. JSR 168 defines a standard for creating application markups (aggregate-able application interfaces) called portlets. It also defines a run-time environment service for portlets called portlet container and a protocol API (application programming interface) for portlet and portlet container handshake protocol.&lt;br /&gt;&lt;br /&gt;Portal container provides lifecycle management for portlets, processes the user requests and generates dynamic content to form the user desktop. The portlet container to portlets is analogous to servlet container to servlets. Portal container leverages servlet technology and can be built on top of the servlet container. Portlet container differs from servlet container by adding presentation constructs with portlets. Presentation constructs enable the container to produce an aggregated user desktop and allows the container to send information to portlets on user actions. Presentation constructs include predefined portlet modes and window states. Since the portlets need to be personalized, container services include a declarative way of providing user information or attributes to the portlets.&lt;br /&gt;&lt;br /&gt;JSR 168 provides declarative security model for the portlets but does not favor any single sign-on standards. This specification follows J2EE role based declarative security model for portlets. It also includes standard deployment constructs and conformance toolkit for portlet container services.&lt;br /&gt;&lt;br /&gt;This standard achieves several milestones in portal computing. It provides:&lt;br /&gt;&lt;br /&gt;a) A standard API for creating portlets or dynamic application content markup for portals&lt;br /&gt;b) A standard container service model – Container services can be provided my as off-the-shelf system vendors (portal servers), allowing developers to work business applications&lt;br /&gt;c) No vendor lock-in – portlets could be run in any containers that conforms to this standard&lt;br /&gt;d) Hot deployment of new portlets and hence no down-time for new application launch&lt;br /&gt;e) Support for localization and internationalization and&lt;br /&gt;f) Support for multiple types of client&lt;b id="o.n:4"&gt;&lt;br /&gt;&lt;br /&gt;WSRP – Web Services for Remote Portlets&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;WSRP is the outcome of joint efforts of two Oasis (www.oasis-open.org, a non-profit ebusiness standards organization) technical committees, WSIA – Webservices for Interactive Applications and WSRP itself. WSRP 2.0 has been approved as standard in April 2008.&lt;br /&gt;&lt;br /&gt;WSRP addresses the issue of location transparency for portlets. WSRP leverages webservices infrastructure for accessing the portlets hosted in remote containers. Location transparency is not new to the computing world. Several technologies were invented to do this, starting with RPC remote procedure calls. During component Object oriented paradigm revolution, DCOM, RMI, CORBA and EJB were invented to address this. Webservices is becoming the latest in this line with its advantages to work over the Internet.&lt;br /&gt;&lt;br /&gt;WSRP defines a producer-consumer-client architecture for getting applications to user desktop. Client refers to the browser that acts as a user desktop. Consumer refers a portal server or aggregation engine that aggregates from several producers to form the user desktop. Producer can be application interfaces (other portals serving portlets or stand-alone applications) that produce markups. WSRP defines producer constructs for service producers; consumption constructs for consumers and a protocol for consumer-producer communication.&lt;b id="sos8"&gt;&lt;br /&gt;&lt;br /&gt;How WSRP works&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Portlet state in the consumer is part of transport and hence consumer doesn’t have to maintain this state but producers can be mandated to consumer to handle session persistence. Consumer communicates to producer via SOAP (Simple object access protocol). Producer publishes the interfaces services or applications via WSDL (Webservices definition language). Consumer can lookup, register with the producers and invoke their services. Consumer maintains session with client.&lt;br /&gt;&lt;br /&gt;WSRP defines a Portlet management interface allowing the consumers to customize the portlets and refers them as consumer configured portlets. This allows producers to cater different set of consumers by allowing themselves to be customized by the consumer consuming it. WSRP also address URL rewriting since consumer aggregates content from producers (portlets) that can be remote behind a firewall. An example of this could be third party services provider acting as WSRP producer. In this case, remote portlets may have produced URLs that point back to itself and since they are remote, the consumer (portal) would need to rewrite the client URLS. WSRP delegates the security implementation between the consumer and producer to webservices security standards&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="oc1w"  style="font-size:130%;"&gt;&lt;b id="btyl"&gt;Identity (Single Sign-On) Federation&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JSR168 provides standardized local portlet integration to portal desktops. WSRP allows them to be location transparent enabling applications to be shared across portals. Next issue to address is federation of declarative security systems built for portals called as Web-SSO (Web Single Sign-On).&lt;br /&gt;&lt;br /&gt;Web-SSO model has to evolve into Federated SSO model solutions allowing user to navigate between different portal domains without having to re-authenticate. SAML exactly addresses this topic of access security inter-operability between different security systems, essentially portals.&lt;b id="oc1w1"&gt;&lt;br /&gt;&lt;br /&gt;SAML – Security Assertion Markup Language&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SAML, currently in its version 2.0, specification from Oasis technical committee is an XML framework for exchanging assertions between security systems. Assertions are verification of certain facts about subjects; subject being a user or a system.&lt;br /&gt;&lt;br /&gt;The specification has four major components:&lt;br /&gt;a) assertion and request-response protocol data formats called SAML Core&lt;br /&gt;b) bindings and profiles called SAML Bind&lt;br /&gt;c) conformance program for SAML called SAMLConform&lt;br /&gt;d) security and privacy considerations called SAMLSecure&lt;br /&gt;&lt;br /&gt;SAML Core covers three types of assertions:&lt;br /&gt;a) Authentication – Was the subject authenticated by a particular means at a particular time?&lt;br /&gt;b) Attributes – Is the subject associated with supplied attributes?&lt;br /&gt;c) Authorization – Can the subject access a specific resource?&lt;br /&gt;&lt;br /&gt;SAML Core defines a request-response protocol called SAML protocol between assertion artifact (token) issuing party and the relying party. Relying party asserts with Issuing party about user log-ins, attributes and authorization credentials. Specification is designed in such a way that this request-response protocol can be used in several scenarios and leverage transport protocols for communication. In SAML terms, scenarios are referred to as SAML Profiles and transport protocols for communication are referred to as SAML Bindings.&lt;b id="fsv.2"&gt;&lt;br /&gt;&lt;br /&gt;Perspectives&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;JSR 168 will allow application developers to write portlets allowing integration with any Java-based portal server providing container services. It will also create a market for portlets. Microsoft Web parts is a competing, proprietary but successful, technology on the .NET platform.&lt;br /&gt;&lt;br /&gt;WSRP adoption is emerging and has the potential to be the standard that bridges the Java-.NET gap.&lt;b id="svzw0"&gt;&lt;br /&gt;&lt;br /&gt;WSRP and JSR 168 is set to enable Content federation.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Adoption of SAML by identity market is evident as vendors have rush to implement this. IBM Tivoli, Oblix, Sun, SiteMinder, Securant, Evidian, Entrust, Netegrity, RSA Security, Baltimore technologies, Sigaba, Verisign are some to name a few. SAML browser profile compliant Access Security System is set to address Security Federation&lt;br /&gt;Examining the relations between these standards, JSR 168 does not mandate WSRP but refers it to remote portlets. WSRP does not mandate JSR 168 portlets but JSR 168 fit right as portlet standard in the java world. Since WSRP does not mandate JSR 168, application (markups/portlets) can be aggregated between both .NET and Java. WSRP not directly need or mandate SAML, but the need for SAML arises in the case of federated single sign-on. SAML does mandate SOAP over HTTP in its implementation.&lt;b id="r7o20"&gt;&lt;br /&gt;&lt;br /&gt;The missing link - Federated SSO for webservices&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Taking a closer look, missing standard is federated SSO for webservices. WSRP rely on webservices standards and hence federated SSO would be necessary to consume a WSRP producer produced portlet, protected by a different Web-SSO system. Example of this could be someWSRPConsumer.com portal accessing a portlet on someWSRPproducer.com and both the portals have their own Web-SSO systems.&lt;br /&gt;&lt;br /&gt;SAML was designed smart to allow applications with different scenarios. Webservices security model standards could use SAML for achieving this federation. WS-Security, security language of webservices created by IBM and Microsoft defines a SAML profile for SOAP messages. WS-Security is not discussed in detail in this posting. WS-Security is yet to become an open standard but under consideration. WS-Security SAML profile can provide federated-SSO for webservices.&lt;b id="r7o22"&gt;&lt;br /&gt;&lt;br /&gt;Conclusion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Portal has evolved as a user-centric application integration platform. It has become a strategy rather than solution implementation.&lt;br /&gt;&lt;br /&gt;Federated Portals is poised to become the next generation concept for portal computing. Content and Identity federation will become the key technology enablers for federated portals. Without the standards, this will become a pipe dream. JSR 168/Web parts, WSRP and SAML are set to achieve these goals. Co-existence with federated content and identity standards will become one of the key selection criteria for all off-the-shelf web solutions.&lt;br /&gt;&lt;br /&gt;In order to reach to the next generation, businesses would have to conduct assessments to identify federate-able portals. The value of consolidating infrastructures for application and content delivery has proven in case of portals. Federation follows its footsteps at the enterprise level avoiding multiple user identities even between portals, eliminating the need for same application launches on different portals. In some cases, such federation model can even become business opportunities. An example of this could be an enterprise participating in the federated ebusiness eco-system acting as a service provider.&lt;br /&gt;&lt;br /&gt;Planning, Choosing, Aligning and Governing were the key elements of a successful portal implementation. In case of federated portals, challenges are no longer at the departmental levels, but at the higher level, enterprise-wide.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2134209833245663026?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2134209833245663026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2134209833245663026' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2134209833245663026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2134209833245663026'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/07/next-generation-portal-federated.html' title='Next Generation Portal – Federated Portals'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3172012370806498612</id><published>2008-06-25T22:54:00.004+02:00</published><updated>2008-06-25T23:12:30.885+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint group target audience hotfix'/><title type='text'>Hotfix for SharePoint group target audience issue available</title><content type='html'>As one reader pointed out (thanks!), there is a Microsoft Office SharePoint Server 2007 post-Service Pack 1 hotfix out now adressing an issue that I wrote about in &lt;a href="http://blog.tomaselfving.com/2007/12/moss-audiences-with-sharepoint-groups.html"&gt;a post&lt;/a&gt; last year. The symptom appears when You add Active Directory user accounts and Active Directory group accounts to a group in MOSS 2007. When you designate the SharePoint group as the target audience for a specific Web Part, some user accounts in the SharePoint group cannot access the Web Part.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;948681"&gt;the hotfix&lt;/a&gt;!&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;948681"&gt;&lt;br /&gt;&lt;/a&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3172012370806498612?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3172012370806498612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3172012370806498612' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3172012370806498612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3172012370806498612'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/06/hotfix-for-sharepoint-group-target.html' title='Hotfix for SharePoint group target audience issue available'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-8273191411011280643</id><published>2008-06-25T22:52:00.002+02:00</published><updated>2008-06-26T10:36:14.068+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebCenter'/><category scheme='http://www.blogger.com/atom/ns#' term='Portlets'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='UCM'/><category scheme='http://www.blogger.com/atom/ns#' term='Stellent'/><title type='text'>Poor integration between Oracle Webcenters portal and content management tools</title><content type='html'>The built-in CMS in Oracle Webcenter (UCM), formerly Stellent, is very powerful for building and maintaining ”information-heavy" sites with its great document management and workflow features. The problem is that the UCM has no portal and portlet integration functionality.&lt;br /&gt;&lt;br /&gt;To edit the site structure of a web portal application (change meny items or order, add/remove portal web pages and change portlets on web pages) You have to use the development environment (typically JDeveloper). Then You have to rebuild and redeploy the web application onto the target production environment. This means that web site editors are restricted to edit content in an existing site structure, otherwise they have to engage developers to build and deploy. A very time- and resourceconsuming process. These type of changes simply shouldn't require a re-deploy in my opinion. Competing portal products have better solutions. Also, it is obviously a disadvantage to have to work in two separate tools with content updates.&lt;br /&gt;&lt;br /&gt;I have heard mixed messages from Oracle regarding this, I have both got information saying that they will fix this, but I have also heard argumentation from Oracle experts that this "flexibility" is an advantage!&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-8273191411011280643?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/8273191411011280643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=8273191411011280643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8273191411011280643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8273191411011280643'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/06/poor-integration-between-oracle.html' title='Poor integration between Oracle Webcenters portal and content management tools'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3015506388047531766</id><published>2008-05-29T06:02:00.005+02:00</published><updated>2008-05-29T06:12:23.101+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSRP 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS Audience targeting Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WebCenter'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>WSRP 2.0 support in MOSS and Oracle WebCenter</title><content type='html'>The long-awaited (5-6 years since WSRP 1.1...) &lt;a href="http://blogs.sun.com/portal/entry/wsrp_2_0_specification_approved"&gt;approval of the WSRP 2.0&lt;/a&gt; specs have arrived. Microsoft have promised support for it in MOSS 2007, probably by adding an OOTB Web part working as WSRP 2.0 Consumer (the product has a WSRP 1.1 consumer today). No time plan for that work have been communicated though. I have also evaluated Oracle's Webcenter recently and it turns out WebCenter uses WSRP 2.0 for all portlet-to-portal container communication, even in cases where the portlets resides on the same server as the portal container!&lt;br /&gt;&lt;br /&gt;.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3015506388047531766?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3015506388047531766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3015506388047531766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3015506388047531766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3015506388047531766'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/05/wsrp-20-support-in-moss-and-oracle.html' title='WSRP 2.0 support in MOSS and Oracle WebCenter'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2646643750811571972</id><published>2008-05-29T05:43:00.006+02:00</published><updated>2008-05-29T06:01:26.872+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSRP'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Web part'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><title type='text'>Using the WSRP 1.1 Consumer Web part in MOSS 2007</title><content type='html'>Having Java/JSP apps too expensive/timecomsuming to migrate to MOSS 2007? Maybe the apps works just fine as is, and the migration adds no business value. Besides IFraming them, the way to go is WSRP. Check out this architecture picture:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_fdhqBg1iHWo/SD4p9ciJvAI/AAAAAAAAADA/wBaDoln-O00/s1600-h/WSRP.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_fdhqBg1iHWo/SD4p9ciJvAI/AAAAAAAAADA/wBaDoln-O00/s400/WSRP.jpg" alt="" id="BLOGGER_PHOTO_ID_5205644354895068162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Package your existing apps as WSRP producers and use the MOSS OOTB Web part acting act a WSRP 1.1 consumer. Some advice on the way:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Keep portlets simple&lt;/span&gt; - In general for MOSS and WSRP, if you keep the portlets fairly straightforward, you should not run into problems.  If you start to use a lot of script, DOM modification, AJAX calls, etc. then you may run into issues.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;Start small &lt;/span&gt;- I would try a “real” part of the application that includes navigation, form submission, script, user identity, session state and persistent state.&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Namespacing&lt;/span&gt; - Microsoft WSRP implementation is not great.  MOSS uses an IFrame to implement it’s WSRP browser side container so you typically do not have to be concerned with namespacing.  In fact, you may run into problems if you try and use “wsrp_rewrite”  prefix (consumer namespace re-writing).  There is a bug in their namespacing.  You may need to rely on producer namespacing instead (if you plan on consuming those portlets elsewhere or back in your Java Portal server).&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;Test&lt;/span&gt; - Thoroughly test WSRP functionality in MOSS first to uncover issues first. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2646643750811571972?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2646643750811571972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2646643750811571972' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2646643750811571972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2646643750811571972'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/05/using-wsrp-11-consumer-web-part-in-moss.html' title='Using the WSRP 1.1 Consumer Web part in MOSS 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_fdhqBg1iHWo/SD4p9ciJvAI/AAAAAAAAADA/wBaDoln-O00/s72-c/WSRP.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3907330190263041778</id><published>2008-05-07T23:32:00.004+02:00</published><updated>2008-05-07T23:46:33.753+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interoperability'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><category scheme='http://www.blogger.com/atom/ns#' term='checked exceptions'/><title type='text'>Java/.NET web service interoperability issue regarding checked exceptions</title><content type='html'>Using web services as integration technology is an obvious choice when service-orienting your companys IT architecture, especially when having a mixed Java and .NET environment. One strategy many companies choose is to package business logic in Java-based web services while developing web user interfaces on the .NET platform.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The problem&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;There is one interoperability issue that I'll like to shed some light on, and that is "checked exceptions".  Checked exceptions is userdefined exceptions. Java supports this construct whereas C# doesn't. The C# development team have chosen to exclude checked exceptions by design (why? -&gt; pls read the interview with the lead C# architect Anders Hejlsberg at &lt;a href="http://www.artima.com/intv/handcuffs.html"&gt;http://www.artima.com/intv/handcuffs.html&lt;/a&gt;). This imposes a risk of having unhandled exceptions.  A java-based web service may throw checked exceptions that the .NET-based client is unaware of. The .NET client developer needs to manually analysis the WSDL file to see what type of exceptions the web service method may throw. This is a tedious and error-prone way to work compared to the Java/Axis that autogenerates a complete interface including exceptions in object-form on the client side.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The solution&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;C# doesn't support checked exceptions by design, but Windows Communication Foundation supports automatic analysis of the WSDL-file when creating the proxy on the client (you must use svcutil.exe, not wsdl.exe. Svcutil.exe is default in Visual Studio 2008, but not in 2005. Or run on the command line).  Exceptions are serialized in objects that can be analyzed and handled on the client without needing to parse XML-strings for error codes and messages. The exceptions are catched in regular try-catch blocks just as any other .NET Exception. This way, you get type safe userdefined exceptions. You'll also get the "intellisense" in Visual Studio on exception objects.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3907330190263041778?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3907330190263041778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3907330190263041778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3907330190263041778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3907330190263041778'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/05/javanet-web-service-interoperability.html' title='Java/.NET web service interoperability issue regarding checked exceptions'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-695454897453200373</id><published>2008-04-30T22:58:00.004+02:00</published><updated>2008-10-16T23:50:16.884+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity management'/><category scheme='http://www.blogger.com/atom/ns#' term='Access management'/><title type='text'>Security architectures for portal platforms</title><content type='html'>&lt;div&gt;[16 oct 2008 - There is a new better version of this post at &lt;a href="http://blog.tomaselfving.com/2008/10/security-architectures-for-portal.html"&gt;http://blog.tomaselfving.com/2008/10/security-architectures-for-portal.html. &lt;/a&gt;&lt;/div&gt;&lt;div&gt;Regards, Tomas]&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Do you want to secure more than one application? Manage identities efficiently? This is a first post in a upcoming series around the subject of security in terms of access and identity management solutions managing the security functions for a portal platform.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;br /&gt;The idea is to centralize the authentification, authorization, administration and delegation of user identities (to create, update, delete and block user accounts) and access control of to user data to a company-wide common platform of reuseable components, instead of doing that in each and every application. For instance, a user’s address may be changed and the identity management solution immediately propagates that into every application and system integrated by the identity management solution. In extranet solutions you may even delegate the user management of a partner company’s users to a superuser in the partner company’s organization by making the identity management solution accessible on the internet (this scenario requires the identity management solution to be used in conjunction with an access management solution). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Login methods (such as userid/pwd, digital certificates, smartcards etc) may be added to a separate login service. The access management platform ties different login methods to different applications. By choosing this way, you don’t use the built-in security functions of the portal product at all. You trust the access management platform to secure all portal applications. The access management platform may also be used to secure a web services environment in a SOA architecture implementation. Yet another scenario is to secure both an existing web site and a new site during migration. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  © Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-695454897453200373?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/695454897453200373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=695454897453200373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/695454897453200373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/695454897453200373'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/04/security-architectures-for-portal.html' title='Security architectures for portal platforms'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-188659244132196018</id><published>2008-04-07T23:10:00.006+02:00</published><updated>2008-04-07T23:22:20.441+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MOSS Audience targeting Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='User profile'/><category scheme='http://www.blogger.com/atom/ns#' term='multivalue'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Setting multivalue properties in User profile</title><content type='html'>More on User profiles; MOSS 2007 supports multivalue properties in the User profiles, but how do you set these fields?  The this[] operator on the UserProfile object returns an ArrayList called UserProfileValueCollection. This code example shows you how to add multiple values to a multivalue property:&lt;br /&gt;&lt;br /&gt;Add references to Microsoft.Office.Server,  Microsoft.SharePoint and System.Web in your Microsoft Visual Studio project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;using System;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;using System.Collections.Generic;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;using System.Text;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;using Microsoft.Office.Server;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;using Microsoft.Office.Server.Administration;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;using Microsoft.Office.Server.UserProfiles;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;using Microsoft.SharePoint;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;using System.Web;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;br /&gt;namespace UserProfilesDemoApp&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;    class UserProfileProgram&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;    {&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;        static void Main(string[] args)&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;        {&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;            using (SPSite site = new SPSite("http://servername"))&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;            {&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                ServerContext serverContext = ServerContext.GetContext(site);&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                UserProfileManager userProfileManager = new UserProfileManager(context);&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                UserProfile userProfile = userProfileManager.GetUserProfile("domainname\\username");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                // Insert your database access code here to get the values to set!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                userProfile["MyInterests"].Add((Object)"Soccer");&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                userProfile["MyInterests"].Add((Object)"Icehockey");&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;                userProfile.Commit();              }&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;            }&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;        }&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-188659244132196018?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/188659244132196018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=188659244132196018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/188659244132196018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/188659244132196018'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/04/setting-multivalue-properties-in-user.html' title='Setting multivalue properties in User profile'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6977522346780700973</id><published>2008-03-18T23:47:00.007+01:00</published><updated>2008-10-12T09:33:49.256+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supplementary'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS Audience targeting Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='User profiles'/><category scheme='http://www.blogger.com/atom/ns#' term='Master'/><title type='text'>Master and supplementary data sources in Sharepoint 2007</title><content type='html'>The user profiles are a neverending source of issues, it seems! Get e-mails with all sort of questions regarding populating and using the user profile. Today, I’ll address the concept of master/supplementary data sources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The basics&lt;/span&gt;&lt;br /&gt;The User profile store contains the user account property information. This information is obtained by importing it from a directory or a data source that contains user accounts. MOSS 2007 can import a list of domain users from the Active Directory directory service, LDAP server, or the Business Data Catalog. In addition, you can write code against the object model to import information from other directory services or applications. You can schedule regular imports to the user profile store, and these can be incremental or full.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Master and supplementary data sources&lt;/span&gt;&lt;br /&gt;But what if you need more data fields in your user profiles than your Active directory contains? What if you for instance have additional data in database or retrieved by a web service that you want to use for personalization or audience targeting? Office SharePoint Server 2007 treats Active Directory and LDAP directories as master connections for importing user information; that is, it can use them as a source to create user profiles. This master connection is responsible for adding and removing users from the user profiles database.&lt;br /&gt;To add supplementary user profile info you use one or several supplementary data sources. They cannot add or remove users (like the master connection), but they can provide additional user information not available in the master connection. A Business Data Catalog data source is a typical supplementary data source.&lt;br /&gt;&lt;br /&gt;There is a "preliminary" sample under way at &lt;a href="http://msdn2.microsoft.com/en-us/library/ms585895.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms585895.aspx&lt;/a&gt;. Also check out  &lt;a href="http://blah.winsmarts.com/2007-4-SharePoint_2007__BDC_-_User_Profiles.aspx"&gt;http://blah.winsmarts.com/2007-4-SharePoint_2007__BDC_-_User_Profiles.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6977522346780700973?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6977522346780700973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6977522346780700973' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6977522346780700973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6977522346780700973'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/03/master-and-supplementary-data-sources.html' title='Master and supplementary data sources in Sharepoint 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7104973738888758099</id><published>2008-03-06T00:52:00.005+01:00</published><updated>2008-03-09T01:21:15.295+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Heimore'/><category scheme='http://www.blogger.com/atom/ns#' term='e-legitimation'/><category scheme='http://www.blogger.com/atom/ns#' term='ExpressPortal'/><title type='text'>Portal platform with integrated ”e-legitimation” login for processoriented organizations and businesses</title><content type='html'>To celebrate the re-launch of Heimore Groups site at &lt;a href="http://www.blogger.com/www.heimore.com"&gt;www.heimore.com&lt;/a&gt;, I’d like to take the opportunity to give You a brief about one of our “software-as-a-services” - ExpressPortal.&lt;br /&gt;&lt;br /&gt;Note: &lt;a href="http://www.e-legitimation.se/"&gt;e-legitimation&lt;/a&gt; is the Swedish digital ID solution, commonly accepted by governmental organizations, banks etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ExpressPortal - A Portal platform with integrated ”e-legitimation” login for processoriented organizations and businesses&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ExpressPortal is a ready-to-run portal framework solution for both intranet and external users. The solution features all the out-of-the-box functionality that you’d expect in a modern portal platform (enterprise search, content management, personalization, role- and target group based interaction for instance). The Heimore Group ExpressPortal solution is tested and ready-to-run with built in components for digital signatures, e-legimitation access control, authorization and SSO (other access control systems can also be plugged-in).&lt;br /&gt;&lt;br /&gt;ExpressPortal builds upon an open, scalable and extensible architecture based on market-leading portal products dedicated to openness and portal standards such as Web parts, JSR 168/268 and WSRP, which makes the portal platform easy to integrate to and from. It has an open architecture making it ready to use to implement portals and applications building on services in a SOA-based environment to support processoriented businesses and organizations.&lt;br /&gt;The solution contains a framework to efficiently assemble portals and applications. It features out-of-the-box templates for common eServices and applications, preinstalled integrations with digital signatures and e-legitimation, content management and typical business processes.&lt;br /&gt;&lt;br /&gt;Curious? E-mail me for more info, or check out the (only swedish at the moment, sorry for that, translation is in the making)  &lt;a href="http://www.heimore.com/Erbjudande/ExpressInfrastructure/ExpressPortal/"&gt;ExpressPortal whitepaper&lt;/a&gt;,  and our other packaged services named &lt;a href="http://www.heimore.com/Erbjudande/ExpressInfrastructure/"&gt;ExpressInfrastructure&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.heimore.com/Erbjudande/ExpressInfrastructure/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_fdhqBg1iHWo/R9MtGqtNG3I/AAAAAAAAACw/Pn443wvEViU/s400/ExpressInfrastructurecontrast1.jpg" alt="" id="BLOGGER_PHOTO_ID_5175529989345188722" border="0" /&gt;&lt;/a&gt;Figure 1: The ExpressInfrastructure Architecture&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7104973738888758099?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7104973738888758099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7104973738888758099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7104973738888758099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7104973738888758099'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/03/portal-platform-with-integrated-e.html' title='Portal platform with integrated ”e-legitimation” login for processoriented organizations and businesses'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fdhqBg1iHWo/R9MtGqtNG3I/AAAAAAAAACw/Pn443wvEViU/s72-c/ExpressInfrastructurecontrast1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2636427088204876140</id><published>2008-02-26T23:03:00.005+01:00</published><updated>2008-02-26T23:12:17.678+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IM Live Messenger Control'/><title type='text'>Hosting the Windows Live Messenger IM Control</title><content type='html'>It is very easy to integrate the Microsoft Live Messenger Control like I have done on this blog. Just follow the steps described in the MSDN article at  &lt;a href="http://msdn2.microsoft.com/en-us/library/bb936683.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb936683.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2636427088204876140?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2636427088204876140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2636427088204876140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2636427088204876140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2636427088204876140'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/02/hosting-windows-live-messenger-im.html' title='Hosting the Windows Live Messenger IM Control'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1342829080039752773</id><published>2008-02-16T06:55:00.017+01:00</published><updated>2008-02-16T23:51:39.837+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office SharePoint Server 2007 Capacity Model'/><title type='text'>Office SharePoint Server 2007 Capacity Model now shipping</title><content type='html'>&lt;a href="http://technet.microsoft.com/en-us/sccp/bb969059.aspx"&gt;System Center Capacity Planner 2007&lt;/a&gt; has shipped, now with two New SharePoint deployment models!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DBEE0227-D4F7-48F8-85F0-E71493B2FD87&amp;amp;displaylang=en"&gt;Office SharePoint Server 2007 Capacity Model&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Windows SharePoint Services 3.0 Capacity Model&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;By supplying information such as...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;number o users&lt;/li&gt;&lt;li&gt;internet vs. intranet, &lt;/li&gt;&lt;li&gt;distribution between anonymous vs. authenticated users&lt;/li&gt;&lt;li&gt;usage profiles (Light &lt;-&gt; Heavy publishing, Light &lt;-&gt; Heavy collaboration)&lt;/li&gt;&lt;/ul&gt;...you get planning help and high level guidance regarding topology and hardware requirements. You can analyze how your deployment may be impacted by a merger or other scenarios and variabels.&lt;br /&gt;&lt;br /&gt;This tool simplifies the hardware acquisition and address some of the early number of server licensing type questions. Note artificial limits have been placed in the tool to limit it at 100,000 users and 3 TB. Above these limits, Microsoft recommend MCS or experienced Architects be consulted. Even up to these limits it's recommended to consult with experienced architects and consultants to validate the recommendations from the tool. Also, check out the &lt;a href="http://h71019.www7.hp.com/activeanswers/Secure/548230-0-0-0-121.html"&gt;HP capacity planning tool&lt;/a&gt; to validate these results.&lt;br /&gt;&lt;br /&gt;I took the tool for a spin. For a single-site minimum topology for a light publishing/light collaboration internet site with 50% anonymous and 50% authenticated users, the following spec is recommended:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Topology&lt;br /&gt;Sites with servers: 1&lt;br /&gt;Sites with clients only: 0&lt;br /&gt;Total number of clients: 1&lt;br /&gt;&lt;br /&gt;Site: Mini&lt;br /&gt;Number of users: 1&lt;br /&gt;Number of servers: 4&lt;br /&gt;Number of SAN connections: 0&lt;br /&gt;&lt;br /&gt;Server: Index Server&lt;br /&gt;Processor: 2-processor, 2,40 GHz, Opteron (2-chip x 1-core)&lt;br /&gt;Minimum memory: 8,0 GB&lt;br /&gt;Disk: DiskArray 1\Volume 1 (File System), 144 GB RAID 5 (3 x 72,00 GB SCSI 10 000 RPM)&lt;br /&gt;NIC: 1 x 1 000 Mb/s&lt;br /&gt;Roles: Index&lt;br /&gt;&lt;br /&gt;Server: SQL Server&lt;br /&gt;Processor: 2-processor, 2,40 GHz, Opteron (2-chip x 1-core)&lt;br /&gt;Minimum memory: 16,0 GB&lt;br /&gt;Disk: DiskArray 1\Volume 1 (Log Files), 146 GB RAID 1 (2 x 146,00 GB SCSI 15 000 RPM)&lt;br /&gt;DiskArray 1\Volume 2 (Data Files), 584 GB RAID 10 (8 x 146,00 GB SCSI 15 000 RPM)&lt;br /&gt;NIC: 1 x 1 000 Mb/s&lt;br /&gt;Roles: SQL Server&lt;br /&gt;&lt;br /&gt;Server: Web Front End 1&lt;br /&gt;Processor: 2-processor, 2,40 GHz, Opteron (2-chip x 1-core)&lt;br /&gt;Minimum memory: 8,0 GB&lt;br /&gt;Disk: DiskArray 1\Volume 1 (File System), 146 GB RAID 1 (2 x 146,00 GB SCSI 10 000 RPM)&lt;br /&gt;DiskArray 1\Volume 2 (File System), 144 GB RAID 5 (3 x 72,00 GB SCSI 10 000 RPM)&lt;br /&gt;NIC: 1 x 1 000 Mb/s&lt;br /&gt;Roles: Web Front End; Query Server&lt;br /&gt;&lt;br /&gt;Server: Web Front End 2&lt;br /&gt;Processor: 2-processor, 2,40 GHz, Opteron (2-chip x 1-core)&lt;br /&gt;Minimum memory: 8,0 GB&lt;br /&gt;Disk: DiskArray 1\Volume 1 (File System), 146 GB RAID 1 (2 x 146,00 GB SCSI 10 000 RPM)&lt;br /&gt;DiskArray 1\Volume 2 (File System), 144 GB RAID 5 (3 x 72,00 GB SCSI 10 000 RPM)&lt;br /&gt;NIC: 1 x 1 000 Mb/s&lt;br /&gt;Roles: Web Front End; Query Server&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;p align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_fdhqBg1iHWo/R7dcdqplHvI/AAAAAAAAACg/E3yT2tVdc5g/s1600-h/mini.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5167700762165583602" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; CURSOR: pointer" alt="" src="http://bp0.blogger.com/_fdhqBg1iHWo/R7dcdqplHvI/AAAAAAAAACg/E3yT2tVdc5g/s400/mini.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Personally, I think this seems a bit much... I mean isn't 4 double-processor servers as a minimum startup configuration a bit steep? It obviously depends on your availability requirements, but if You can skip the redundancy, You should be fine with 2 servers (one web and one database).&lt;br /&gt;&lt;br /&gt;© Copyright 2008, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1342829080039752773?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1342829080039752773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1342829080039752773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1342829080039752773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1342829080039752773'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/02/office-sharepoint-server-2007-capacity.html' title='Office SharePoint Server 2007 Capacity Model now shipping'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fdhqBg1iHWo/R7dcdqplHvI/AAAAAAAAACg/E3yT2tVdc5g/s72-c/mini.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3332510827189016900</id><published>2008-02-09T07:44:00.000+01:00</published><updated>2008-02-09T08:08:56.368+01:00</updated><title type='text'>Massive support for OpenID</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_fdhqBg1iHWo/R61PI6plHuI/AAAAAAAAACY/4qmu1OPe6Do/s1600-h/openidnetlogo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_fdhqBg1iHWo/R61PI6plHuI/AAAAAAAAACY/4qmu1OPe6Do/s400/openidnetlogo.jpg" alt="" id="BLOGGER_PHOTO_ID_5164871362265030370" border="0" /&gt;&lt;/a&gt;I've over the last months done a number of posts on the emerging de-facto standard for internet authentification OpenID. Now the OpenID Foundation is announcing that Google, IBM, Microsoft, VeriSign and Yahoo! have taken seats as the organization's first corporate board members.&lt;br /&gt;&lt;p class="article"&gt;OpenID is appealing as it allows users to authenticate their identity through a single chosen provider instead of creating unique accounts at every website you use. Today, more than 10 000 web sites and 350 million users use OpenID.&lt;br /&gt;&lt;br /&gt;For users, OpenID means much easier account creation, better personalization, privacy and security when trying out new web sites. It makes for a greatly improved user experience. For websites and other companies, OpenID means more and happier users and potentially greater access to information about those users.&lt;br /&gt;&lt;br /&gt;There's a whole lot of momentum right now for OpenID. As I've previously told, in January Yahoo! increased the number of OpenID enabled user accounts by orders of magnitude, the long-awaited OpenID 2.0 spec was just recently finalized and the entire Data Portability paradigm is moving into the public consciousness quickly.&lt;br /&gt;&lt;br /&gt;All of that said, big vendors have a lot of short term interest in controlling identity silos. It won't be easy to get their long term interests in openness to prevail. Fortunately, they are participating but are in the minority on the OpenID Foundation board.&lt;br /&gt;&lt;br /&gt;There are many, many places you can get an OpenID and there are significant differences in advanced feature sets. To get a good look at the range of options and details beyond mere simple one-way authentication, check out the vendor comparison at &lt;a href="http://spreadopenid.org/"&gt;SpreadOpenID.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3332510827189016900?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3332510827189016900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3332510827189016900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3332510827189016900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3332510827189016900'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/02/ive-over-last-months-done-number-of.html' title='Massive support for OpenID'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_fdhqBg1iHWo/R61PI6plHuI/AAAAAAAAACY/4qmu1OPe6Do/s72-c/openidnetlogo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2621066596356729339</id><published>2008-01-30T05:26:00.001+01:00</published><updated>2008-01-30T06:35:39.899+01:00</updated><title type='text'>Security features in MOSS 2007</title><content type='html'>MOSS will often be implemented in an environment with an existing corporate-wide access management solution handling identity management, authentification and authorization. They typically work on a URL level for web applications. MOSS web applications will need to make good use and cooperate well with IAM/IDM solutions. This article looks at security features available in MOSS 2007 explaining the tools available on the portal level to leverage these technologies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Pluggable Authentication Provider&lt;/span&gt;&lt;br /&gt;An authentication provider is a component that lets you verify user credentials. The authentication provider is an important security component when setting up Internet-style SharePoint® authentication. MOSS supports the Windows®-based authentication methods available in previous SharePoint versions such as Integrated and Basic authentication, forms-based authentification as well as plain-text userid/pwd. You can add multiple authentication providers so that, for example, internal users log in via Windows authentication while external users do so with a separate, pluggable provider.&lt;br /&gt;MOSS is built upon ASP.NET 2.0, which enables the use of pluggable authentication providers. This lets you use configurable directories for storing user information as long as there's an ASP.NET 2.0 membership provider (and optional role provider) that corresponds to the member data store. Pluggable provider credentials can be hashed, encrypted, or stored in plain-text depending on the node values stored in the machine.config file that correspond to the membership provider. Several membership providers are available for use with MOSS, some of which include an LDAP V3 membership provider, plus a SQL Server™ membership provider and Active Directory® membership provider (available with ASP.NET 2.0). Using the ASP.NET 2.0 membership architecture, it is feasible to create custom providers that use membership stores like Oracle databases, XML files, or even flat text files. A custom authentication provider inherits from the ASP.NET MembershipProvider interface, which in turn inherits from the ProviderBase class (see Figure 1).&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/Users/TOMASE%7E1/AppData/Local/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_fdhqBg1iHWo/R5_9RlU2msI/AAAAAAAAACI/8F2CaES5TZQ/s1600-h/NET+Membership+Class+Hierarchy.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_fdhqBg1iHWo/R5_9RlU2msI/AAAAAAAAACI/8F2CaES5TZQ/s400/NET+Membership+Class+Hierarchy.gif" alt="" id="BLOGGER_PHOTO_ID_5161122176509057730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1: .NET Membership Class hierachy&lt;br /&gt;&lt;br /&gt;Note that those services related to crawling and indexing content, must use a Windows account even when using a pluggable provider.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Forms-Based Authentication and Web Single Sign-On&lt;/span&gt;&lt;br /&gt;Forms-based MOSS authentication is based on ASP.NET 2.0. It utilizes pluggable authentication and role providers to enable Internet-style security mechanisms that don't restrict customers to an old-fashioned NT login prompt. Instead, you can build a customized login process geared toward your users' needs. To protect the authentication process further, forms authentication cookies and authentication tickets are encrypted and tamper-proof.&lt;br /&gt;&lt;br /&gt;The form identity provider does not have to reside locally and can, in fact, plug into an external identity management system, which in turn would provide the validation of the user credentials. This functionality is known as Web single sign-on, and it employs an HTTP module for external authentication. In such a scenario, you can federate identities between your organization and business partners whereby they are able to use their own organizational logins to authenticate to your MOSS implementation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Encrypting MOSS Application Connection Strings  &lt;/span&gt;&lt;br /&gt;It's not good a security practice to place valuable connection string information in plain text in a web.config file. The exposed information could enable a user to create an object instance to the SQL database server and manipulate valuable data. However, using inherent ASP.NET 2.0 functionality you can encrypt the data using either of two available technologies: Windows Data Protection API (DPAPI) or RSA encryption. DPAPI capitalizes on the built-in cryptographic functionality of Windows to encrypt and decrypt using the MOSS server machine key. RSA encryption lets you use public key algorithms, but carries the added overhead of needing appropriate containers for the encryption keys.&lt;connectionstrings&gt;&lt;connectionstrings&gt;&lt;connectionstrings confiprotectionprovider="EncryptionProvider"&gt;&lt;encrypteddata&gt;&lt;br /&gt;&lt;br /&gt;Using encryption does have some consequences. Because you are using the local machine key for encryption, you can only use this configuration node on the MOSS server it was created on-otherwise the cipher process will fail. If an intruder gained access to the server, they could retrieve the machine key and decrypt the connection string. The decryption process will also cause a minor application performance hit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Alternate Access Mapping and Zones &lt;/span&gt;&lt;br /&gt;Alternate Access Mapping   (AAM) is useful when setting up more than one entry location for your MOSS environment. AAM simply enables you to specify different URLs through which users can access a single physical site (see the diagram in Figure 2). AAM can direct users to the same physical path for your MOSS site, but with different authentication providers and Web application security policies. AAM also compensates for using different domains, reverse proxies, and other URL redirection mechanisms. The URL that MOSS will use is already mapped for you by default, but this can be extended to additional URLs that a SharePoint architect explicitly creates to handle different methods of entry. AAM is required to ensure that proper internal and public URL mapping works correctly.&lt;br /&gt;&lt;br /&gt;&lt;/encrypteddata&gt;&lt;/connectionstrings&gt;&lt;/connectionstrings&gt;&lt;/connectionstrings&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_fdhqBg1iHWo/R6AIHVU2mtI/AAAAAAAAACQ/r_C3iyTrzvE/s1600-h/fig02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_fdhqBg1iHWo/R6AIHVU2mtI/AAAAAAAAACQ/r_C3iyTrzvE/s400/fig02.gif" alt="" id="BLOGGER_PHOTO_ID_5161134095043304146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;connectionstrings&gt;&lt;connectionstrings&gt;&lt;connectionstrings confiprotectionprovider="EncryptionProvider"&gt;&lt;encrypteddata&gt;Figure 2 URL Mapping and Zones&lt;br /&gt;&lt;br /&gt;In MOSS, zones are a new feature that allow greater control over the site mapping provided by AAM. Zones let you map different authentication providers to the same physical path and MOSS content depending on the AAM URL mappings through which users are connecting to the content. When specifying AAM URL mappings, although it is not necessary that the zone is bound to an authentication mechanism, it is recommended. An AAM URL mapping to a zone that is not defined in the authentication providers page will use the security setting for the Default zone.&lt;br /&gt;&lt;br /&gt;Zones do require some planning since they will heavily impact how people are authenticated and routed through your portal from multiple URL entry points. When extending a new Web application, you can specify the zone you want to use under the Load Balancing URL section of the settings (see Figure 3). It is recommended that you place your most publicly accessible URL (for example, the URL you plan to expose to the Internet) in the Default zone, as this is the URL SharePoint will use if it cannot fully determine which zone you are in.&lt;br /&gt;&lt;br /&gt;Within each zone you can bind a global Web application security policy that defines permissions settings for users in the zone. This lets you centrally manage large-scale permissions modifications. Web applications commonly include several sites in various site collections, and permissions management of these sites can become problematic when applications become large and complex. MOSS 2007 allows global security policies that bind policy settings such as full access, full read access, deny-write access, or deny-all access to a specific user or group within the application. These policies can override the granular permission settings provided by MOSS and managed from the SharePoint Central Administration interface, so you'll want to plan your configuration carefully.&lt;br /&gt;&lt;br /&gt;Bringing this all together, your externally facing site might have two URLs as defined in your AAM settings: one for your corporate users to enter, and a second for external users. Each has a unique URL-perhaps contoso for internal users, and extranet.contoso.com for trusted external partners. While both of these URLs will map to the same content, each can access the site through its own zone, with its own authentication provider and its own application security policy. Configuring the intranet zone on the internal URL lets internal users resolve to their domain-authenticated Windows identities while external partners log in via Web single sign-on authentication through the extranet zone, which allows them to use their own organization's user credentials. By leveraging the power of binding Web application security policies to zones, it becomes possible to give all trusted external users full-read access, as opposed to manually setting it on an object-by-object basis.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Targeted Content&lt;/span&gt;  Locking down your SharePoint site collections means users will only handle information you authorize them to access. New flexible permission mechanisms allow you greater control over the various types of business information stored in your MOSS environment.&lt;br /&gt;&lt;br /&gt;MOSS 2007 gives you the option to bind an identity to a specific object, whether a site collection, an individual site, a document library, a subfolder, a list, or an individual document or list item. This enforces granular access controls and explicit membership to that item, both denying access and adjusting the user interface so that users are unaware of items they don't have access to. This functionality in MOSS is known as Item Level Security (ILS) or Secured Objects (SO).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Integrating Pluggable Single Sign-On  &lt;/span&gt; The MOSS SSO service provides an encrypted back-end cache of users' credentials for mapping to connected line-of-business systems. This can aid in the retrieval of business-critical information to display through MOSS mechanisms such as the Business Data Catalog (BDC) or SharePoint DataView Web Parts (DVWP).&lt;br /&gt;&lt;br /&gt;The MOSS SSO provider, like several of the other application architectural features discussed, is pluggable; you can specify a unique SSO provider outside of the one shipped with MOSS (SpsSsoProvider), though only one SSO provider per line-of-business system can be registered at a time within the environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;/encrypteddata&gt;&lt;/connectionstrings&gt;&lt;/connectionstrings&gt;&lt;/connectionstrings&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2621066596356729339?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2621066596356729339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2621066596356729339' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2621066596356729339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2621066596356729339'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/01/security-features-in-moss-2007.html' title='Security features in MOSS 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_fdhqBg1iHWo/R5_9RlU2msI/AAAAAAAAACI/8F2CaES5TZQ/s72-c/NET+Membership+Class+Hierarchy.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7678658499756359339</id><published>2008-01-21T08:00:00.000+01:00</published><updated>2008-01-21T08:22:40.817+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Single-sign-on'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='Mashup Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><title type='text'>Yahoo joins OpenID initiative</title><content type='html'>OpenID is an open SSO-architecture for external sites that makes it unnecessary for site owners to implement their own Identity Management solution. It works pretty much like Microsoft Live (formerly Passport), but with the significant difference that with OpenID there are many "publishers" of login accounts. Any site can start issueing OpenID accounts. For instance, &lt;a href="http://news.yahoo.com/s/nf/20080119/tc_nf/57907"&gt;Yahoo announced &lt;/a&gt;recently that they are joining the party adding their 248 millions of users to the crowd enabling them to instantly log into all other sites using OpenID. Microsoft and Google has announced that they are backing OpenID, and it appears OpenID has the potantial of becoming the de facto standard for internet SSO during 2008.&lt;br /&gt;&lt;br /&gt;Wanna try it out? There is an excellent step-by-step guide at:&lt;br /&gt;&lt;a href="http://www.plaxo.com/api/openid_recipe"&gt;http://www.plaxo.com/api/openid_recipe&lt;/a&gt;. At &lt;a href="http://blog.tomaselfving.com/2007/12/openid-20-released.html"&gt;http://blog.tomaselfving.com/2007/12/openid-20-released.html&lt;/a&gt; there is an list of libraries with APIs encapsulating the OpenID APIs making the implementation even easier.&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7678658499756359339?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7678658499756359339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7678658499756359339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7678658499756359339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7678658499756359339'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2008/01/yahoo-joins-openid-initiative.html' title='Yahoo joins OpenID initiative'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-915666543190828433</id><published>2007-12-16T07:12:00.000+01:00</published><updated>2007-12-21T07:20:09.562+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MOSS Audience targeting Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='AD groups'/><title type='text'>MOSS Audiences with SharePoint Groups and AD Groups</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;I’ve done a number of posts on Audience targeting, and many people have commented or e-mailed me with issues regarding using SharePoint Group based on AD groups. They typically &lt;/span&gt;&lt;span lang="EN-GB"&gt;want to &lt;/span&gt;&lt;span lang="EN-GB"&gt;use target audience at a web part level using SharePoint Group based on AD groups, without import anything in MOSS repository. This works for AD users, but not for AD Groups. Similar problems are also described in posts like &lt;/span&gt;&lt;a href="http://www.eggheadcafe.com/software/aspnet/30055451/sharepoint-2007--audienc.aspx" target="_blank"&gt;&lt;span lang="EN-GB"&gt;http://www.eggheadcafe.com&lt;wbr&gt;/software/aspnet/30055451&lt;wbr&gt;/sharepoint-2007--audienc.aspx&lt;/span&gt;&lt;/a&gt;&lt;span lang="EN-GB"&gt; ,&lt;br /&gt;and in &lt;/span&gt;&lt;a href="http://objectmix.com/sharepoint/297158-sharepoint-2007-audience-targeting-domain-groups.html" target="_blank"&gt;&lt;span lang="EN-GB"&gt;http://objectmix.com/sharepoin&lt;wbr&gt;t/297158-sharepoint-2007&lt;wbr&gt;-audience-targeting-domain&lt;wbr&gt;-groups.html&lt;/span&gt;&lt;/a&gt;&lt;span lang="EN-GB"&gt;.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;It is obviously some kind of issue here, &lt;a href="http://chrissyblanco.blogspot.com/2007/07/determining-whether-user-is-member-of.html"&gt;Christopher White&lt;/a&gt; seems to be onto something, he says: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="FONT-STYLE: italic"&gt;&lt;span lang="EN-GB"&gt;“By using the SPUser.Groups property you can easily enumerate the groups that a user has been assigned to. However one problem with this approach is that if the user is a member of a domain group that has been allocated to a SharePoint group, then this group does not appear in SPUser.Groups.”&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;So, if the SP Groups audience targeting mechanism were based on the ".Groups" property then this could be the problem. But only MS can know this... &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;One reader have opened an incident to Microsoft on this. I will keep you informed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-915666543190828433?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/915666543190828433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=915666543190828433' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/915666543190828433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/915666543190828433'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/12/moss-audiences-with-sharepoint-groups.html' title='MOSS Audiences with SharePoint Groups and AD Groups'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7113767643096822019</id><published>2007-12-10T09:54:00.001+01:00</published><updated>2007-12-10T09:55:29.590+01:00</updated><title type='text'>Inkblot service, OpenID and SSO</title><content type='html'>Didn't really explain the link between the inkblot service and the OpenID SSO solution in my previous post. The real benefit is linking it with Web-based single sign-on (SSO). You create one really strong password using the inkblots and use it to log into an OpenID provider. The OpenID provider then validates your authentication to any OpenID-compliant site on the Web where you have a password-protected account. That means you don' t have to create a password for each Web site you visit because the Web site trusts the OpenID provider to do that authentication. So the benefit is you don't have all those passwords for different sites. You don't have to do the "remember password" thing and then have the password in clear text stored in your in-box folder. Of course, the one password system requires the user have a strong password and this is where the inkblot method comes in handy. It is a single point of failure. If someone cracks that password they can get into all your accounts. For this combination of technologies to fly , OpenID has to become more widely accepted. It is picking up steam, Microsoft supports it in CardSpace, and version 2.0 of Open ID was just released and together with a productified inkblot service, it has the potential to be a both secure and userfriendly service.&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7113767643096822019?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7113767643096822019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7113767643096822019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7113767643096822019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7113767643096822019'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/12/inkblot-service-openid-and-sso.html' title='Inkblot service, OpenID and SSO'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7243271495363846553</id><published>2007-12-08T08:55:00.000+01:00</published><updated>2007-12-08T09:04:13.997+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inkblot Service'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft research OpenID'/><title type='text'>Microsoft Research releases the Inkblot service</title><content type='html'>Microsoft Research has as a part of its backing of the &lt;a href="http://openid.net"&gt;OpenID &lt;/a&gt;standard released an experimental provider. It's basic idea is as follows:&lt;br /&gt;&lt;br /&gt;You will be presented with a series of inkblot pics. Think of a description for each inkblot, then type the first and   last letters of that description. For example, if the inkblot makes   you think of "cloud" then enter "cd". Use a singular term, since it's hard to   remember whether you were thinking of "car" or "cars".    &lt;p&gt;   Every time you type two characters,   you'll advance to the next inkblot, until you have produced a   quite difficult-to-guess password.   Enter the two-letter descriptions again in the second box. Here,   the inkblots appear in a different order, to encourage you to   use the inkblots to build associations.   &lt;/p&gt; &lt;p&gt;   Whenever you are asked to log in, you will be presented with the   inkblots to remind you of your associations. After a few logins,   you'll no longer even need to look at them: you'll have memorized   a strong, difficult to guess password.      &lt;/p&gt; Try it out on &lt;a href="http://www.inkblotpassword.com"&gt;http://www.inkblotpassword.com&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7243271495363846553?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7243271495363846553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7243271495363846553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7243271495363846553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7243271495363846553'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/12/microsoft-research-releases-inkblot.html' title='Microsoft Research releases the Inkblot service'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2269420461554512359</id><published>2007-12-08T07:46:00.000+01:00</published><updated>2007-12-08T08:51:14.508+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='Mashup Applications OpenID Security SSO Single-sign-on'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>OpenID 2.0 released</title><content type='html'>The OpenID 2.0 (or to be precise &lt;a href="http://openid.net/specs/openid-authentication-2_0.html"&gt;OpenID Authentication 2.0&lt;/a&gt; and &lt;a href="http://openid.net/specs/openid-attribute-exchange-1_0.html"&gt;OpenID Attribute Exchange 1.0)&lt;/a&gt; was released a few days ago  on the &lt;a href="http://iiw.windley.com/wiki/Workshop_2007b" onclick="javascript:urchinTracker('/outbound/iiw.windley.com/wiki/Workshop_2007b?ref=/2007/12/05/openid-2_0-final-ly/');"&gt;Internet Identity Workshop&lt;/a&gt; in Mountain View CA. Both specifications have evolved through extensive community participation and feedback and each have been stable for a number of months.&lt;br /&gt;Both Microsoft and Google shipped OpenID features in beta products. &lt;a href="http://openid.net/pipermail/general/2007-November/003729.html"&gt;Microsoft Research announced&lt;/a&gt; the &lt;a href="http://www.inkblotpassword.com/"&gt;Inkblot Service&lt;/a&gt; as an an experimental Provider while &lt;a href="http://bloggerindraft.blogspot.com/2007/11/new-feature-openid-commenting.html" onclick="javascript:urchinTracker('/outbound/bloggerindraft.blogspot.com/2007/11/new-feature-openid-commenting.html?ref=/2007/12/05/openid-2_0-final-ly/');"&gt;Google announced&lt;/a&gt; the ability to comment on Blogger blogs using OpenID.&lt;br /&gt;There are a number of of open source libraries out there including Google’s Blogger (via Sxip’s library) and Drupal who did their own implementation of the specifications. Multiple OpenID Providers including &lt;a href="http://www.myopenid.com/" onclick="javascript:urchinTracker('/outbound/www.myopenid.com/?ref=/');"&gt;MyOpenID&lt;/a&gt;, &lt;a href="http://www.sxipper.com/" onclick="javascript:urchinTracker('/outbound/www.sxipper.com/?ref=/');"&gt;Sxipper&lt;/a&gt;, and &lt;a href="http://pip.verisignlabs.com/" onclick="javascript:urchinTracker('/outbound/pip.verisignlabs.com/?ref=/');"&gt;VeriSign’s PIP&lt;/a&gt; already have support for both of these specifications. Today the following libraries exist which implement OpenID Authentication 1.1 and 2.0, OpenID Attribute Exchange 1.0, and OpenID Simple Registration 1.0: &lt;ul&gt;&lt;li&gt;&lt;a href="http://openidenabled.com/php-openid/" onclick="javascript:urchinTracker('/outbound/openidenabled.com/php-openid/?ref=/');"&gt;JanRain PHP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://framework.zend.com/fisheye/browse/Zend_Framework/trunk/library/Zend/OpenId" onclick="javascript:urchinTracker('/outbound/framework.zend.com/fisheye/browse/Zend_Framework/trunk/library/Zend/OpenId?ref=/');"&gt;Zend PHP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://openidenabled.com/python-openid/" onclick="javascript:urchinTracker('/outbound/openidenabled.com/python-openid/?ref=/');"&gt;JanRain Python&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.sxip.com/openid4java/" onclick="javascript:urchinTracker('/outbound/code.sxip.com/openid4java/?ref=/');"&gt;Sxip Java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/joid/" onclick="javascript:urchinTracker('/outbound/code.google.com/p/joid/?ref=/');"&gt;VeriSign Java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://openidenabled.com/ruby-openid/" onclick="javascript:urchinTracker('/outbound/openidenabled.com/ruby-openid/?ref=/');"&gt;JanRain Ruby&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;This SSO standard is definately any public site developer should consider.&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2269420461554512359?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2269420461554512359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2269420461554512359' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2269420461554512359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2269420461554512359'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/12/openid-20-released.html' title='OpenID 2.0 released'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6006948707663015552</id><published>2007-11-20T06:27:00.000+01:00</published><updated>2007-11-20T09:18:36.274+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSR168'/><category scheme='http://www.blogger.com/atom/ns#' term='WSRP'/><category scheme='http://www.blogger.com/atom/ns#' term='Portals'/><category scheme='http://www.blogger.com/atom/ns#' term='Portlets'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>Sorting out WSRP, JSR168 and Web parts</title><content type='html'>&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;I’ve noticed a lot of confusion and misunderstandings around these portlet ”standards”. This posting aims to sort things out on a fairly high level of understanding by reasoning around the strengths and weaknesses and suggesting some best practices. &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span lang="EN-US"  style="font-size:100%;"&gt;So, what is WSRP?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;The abbreviation stands for Web Services for Remote Portlets, and the key word here is “&lt;i&gt;Remote&lt;/i&gt;”. It is now a fairly old standard, version 1 came 2003 and version 2 is still in draft although many portal vendoers have already made their own implementations of the not-decided version 2. The standardisation work is run in an OASIS committe’ (&lt;/span&gt;&lt;span lang="EN"   style="font-family:';font-size:100%;"&gt;&lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp"&gt;&lt;span lang="EN-US"&gt;http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;WSRP basically defines how to use SOAP to request and retrieve blocks of HTML, instead of XML as regular web services does. This means that the WSRP portlet runs on a one web server and can appear in one or many web portals running on other web servers by sending HTML-code to these web portals. WSRP portlets can be written in any programming language. Before getting into the reasoning around when to use WSRP, we need to sort out the two “non-remote” portlet specs, JSR168 and Web parts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span lang="EN-US"  style="font-size:100%;"&gt;Comparing JSR 168 portlets with Web parts&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;JSR 168 is a standard for coding portlets in Java. It consists of a set of class definitions to be installed on portal products supporting JSR168.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;To compare apples with apples, JSR168 competes with Web Parts. WSRP is a completely other kind of fruit. Both can support WSRP. These are the most important points of comparison between Web parts and JSR 168:&lt;/span&gt;&lt;span lang="EN"   style="font-family:';font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span lang="EN-US"  style="font-family:';"&gt;Language :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt; JSR168 portlets can only be developed in Java. No other language works. &lt;span style="font-size:0;"&gt;&lt;/span&gt;Web Parts can on the contrary be developed in any language supporting .NET, which at least in theory includes Java/J++…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span lang="EN-US"  style="font-family:';"&gt;Support for different portal plattforms :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt; JSR168 portlets can, at least in theory, be codes once, and run in any os the JSR168-compliant portal produkcts out there. In reality, it is very easy in the Java development tools for each portal product, include product-specific class libraries breaking the standard. &lt;span style="font-size:0;"&gt;&lt;/span&gt;Using them makes You tied to a proprietary portal product anyway. &lt;/span&gt;&lt;span style="font-family:';font-size:100%;"&gt;In any case, every portlet needs careful testing and debugging when porting from one portal product to another. &lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;I personally think that the JSR168 in reality provide very little value from a standardization och reuse point of view. Web Parts makes no secret it’s a proprietary technology and Microsoft makes the most of that freedom not having to compromise in standards committees. Web parts is therefore a superior portlet technology to the JSR168 implementations. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span lang="EN-US"  style="font-family:';"&gt;Support for different environments :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt; JSR168 portlets are just portlets. They only execute in the context of at portal product. Web Parts runs in MOSS/Sharepoint Portal, in Windows as Win32-apps as well as in so called Smart clients for handheld devices. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span lang="EN-US"  style="font-family:';"&gt;Consuming WSRP :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt; Some portal products have built-in WSRP support while others goes through a JSR168 portlet. Microsoft takes that road by offering at out-of-the box WSRP consumer Web part. &lt;/span&gt;&lt;span lang="EN"   style="font-family:';font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span lang="EN-US"  style="font-family:';"&gt;Producing WSRP-portlets :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt; Most JSR168-portal products includes code to emit JSR168-portlets as WSRP. Microsoft haven’t built in WSRP produces support in MOSS 2007, but 3rd-party solutions from &lt;/span&gt;&lt;span lang="EN"   style="font-family:';font-size:100%;"&gt;&lt;a href="http://www.netunitysoftware.com/" target="_blank"&gt;&lt;span lang="EN-US"&gt;NetUnity Software&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt; supplies tool to develop WSRP producer portlets on the .NET platform.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;This is a simple architecture for JSR168/Web parts portlet applications:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span lang="EN-US" style="LINE-HEIGHT: 115%;font-family:';font-size:100%;"  &gt;&lt;?xml:namespace prefix = v /&gt;&lt;v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" preferrelative="t" spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:formulas&gt;&lt;v:path connecttype="rect" gradientshapeok="t" extrusionok="f"&gt;&lt;o:lock aspectratio="t" ext="edit"&gt;&lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75"&gt;&lt;v:imagedata title="Portalarkitektur nyutveckling eng" src="file:///C:\DOCUME~1\TOMAS~1.BET\LOKALA~1\Temp\msohtml1\01\clip_image001.jpg"&gt;&lt;/v:shape&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;/span&gt; &lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_fdhqBg1iHWo/R0J2yH-WGHI/AAAAAAAAACA/9Cso7NN-cD4/s1600-h/Portalarkitektur+nyutveckling+eng.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5134797128661866610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_fdhqBg1iHWo/R0J2yH-WGHI/AAAAAAAAACA/9Cso7NN-cD4/s400/Portalarkitektur+nyutveckling+eng.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;&lt;span lang="EN-US"&gt;When to use WSRP portlets?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;Scenarios motivating use of WSRP are:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;From a host / web server deliver portlets as presentation oriented web services to be included in aggregating web porta application. On such host can cater for many web apps.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;Web portal apps consuming and in a portal framework integrates presentation oriented&lt;span style="font-size:0;"&gt; &lt;/span&gt;web services delivered by internal and external WSRP suppliers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;The WSRP-specification says nothing about the implementation of the portlet, it defines its interface. This is where WSRP connects to Java's portlet specification, &lt;/span&gt;&lt;span style="font-family:';font-size:100%;"&gt;&lt;a title="JSR 168" href="http://en.wikipedia.org/wiki/JSR_168"&gt;&lt;span lang="EN-US" style="TEXT-DECORATION: none;color:#000000;" &gt;JSR 168&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"   style="font-family:';font-size:12;"&gt;&lt;span style="font-size:100%;"&gt;, and Microsoft’s Web parts. WSRP is not a competing technology, it’s more like complementary. JSR 168/Web parts are used to define the portlet whereas WSRP is used to define the portlets appearance in a remote portlet container (like a web portal app).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span lang="EN-US"&gt;Experiences of WSRP&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;WSRP has some limitations when it comes to complex web applications with advanced user interfaces (interactivity, design). These limitations are: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span style="font-size:100%;"&gt;&lt;a name="OLE_LINK2"&gt;&lt;/a&gt;&lt;a style="COLOR: rgb(0,0,0)" name="OLE_LINK1"&gt;&lt;span style="font-size:0;"&gt;&lt;span lang="EN-US"  style="font-family:';"&gt;Separation and handling of &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="COLOR: rgb(0,0,0);font-family:';font-size:100%;"  &gt;presentation/design and the use of Cascading Style Sheets. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="COLOR: rgb(0,0,0); LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;Handling of DOCTYPE making accessibility /WAI-adoption harder&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:12;"&gt;&lt;span style="font-size:100%;"&gt;A WSRP-portlet knows nothing about its content. The content and design of a WSRP portlet may look different from the rest of the web page it is appearing in. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;span lang="EN"&gt;How to think&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p class="MsoNormal" style="LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US"   style="font-family:';font-size:100%;"&gt;If You have a ”pure” Java or .NET –miljö without any needs to remotely distribute portlets, then You develop directly in JSR168 or Web parts. &lt;/span&gt;&lt;span style="font-family:';font-size:100%;"&gt;No need for WSRP. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;The advantages of WSRP are obvious, it can easily be used in any portal application without local installation, but what are the downsides?&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;Consider if You can live with the limitations described above.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;The extra development work to add the WSRP-interface to Your portletspå dina portlets. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN"&gt;Code running locally &lt;/span&gt;&lt;span lang="EN-US"&gt;(JSR168 and Web parts) &lt;/span&gt;&lt;span lang="EN"&gt;generally runs faster than remotely run&lt;span style="font-size:0;"&gt; &lt;/span&gt;code. &lt;/span&gt;&lt;span lang="EN-US"&gt;There is overhead in the Web service calls.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;Code running locally has access to more information about the execution environment, both the hardware to execute on and the web page to appear in. Using that information, the portlet can act smarter. Communication with other portlets are easier if you know what other portlets that surrounds You. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span lang="EN-US" style="LINE-HEIGHT: 115%;font-family:';font-size:100%;"  &gt;One smart way of setting up a WSRP-enabled system architecture is to use a “portal UI staging tier”:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_fdhqBg1iHWo/R0J2i3-WGGI/AAAAAAAAAB4/ttO3xa0u504/s1600-h/Portalarkitektur+nyutveckling+baserat+pÃ¥+befintliga+tjÃ¤nster+eng.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5134796866668861538" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_fdhqBg1iHWo/R0J2i3-WGGI/AAAAAAAAAB4/ttO3xa0u504/s400/Portalarkitektur+nyutveckling+baserat+p%C3%A5+befintliga+tj%C3%A4nster+eng.jpg" border="0" /&gt;&lt;/a&gt;&lt;span lang="EN-US"   style="font-family:';font-size:12;"&gt;&lt;span style="font-size:100%;"&gt;The plan here is to develop WSRP producer portlets either in in Java or .NET. Render them in a web portal application using a thin layer of portal specific code (for instance a JSR168 or Web part). This is a SOA-friendly architecture, easy to deploy and modify, that also scales well.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;br /&gt;&lt;/v:imagedata&gt;&lt;/o:lock&gt;&lt;/v:path&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:stroke&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6006948707663015552?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6006948707663015552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6006948707663015552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6006948707663015552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6006948707663015552'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/11/sorting-out-wsrp-jsr168-and-web-parts.html' title='Sorting out WSRP, JSR168 and Web parts'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_fdhqBg1iHWo/R0J2yH-WGHI/AAAAAAAAACA/9Cso7NN-cD4/s72-c/Portalarkitektur+nyutveckling+eng.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3246189954260362466</id><published>2007-11-17T22:36:00.000+01:00</published><updated>2007-11-18T13:17:06.456+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BEA'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>BEA turns down Oracle bid</title><content type='html'>It appears &lt;a href="http://blog.tomaselfving.com/2007/11/wouldnt-hp-be-better-for-bea-than.html"&gt;my guest appearance&lt;/a&gt; as IT business analyst wasn't completely out-of-line as BEA on Friday turned down Oracle $6,7 billion bid, saying it seriously undervalued the company. Now I'm only waiting for HP to make its move ;-)&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3246189954260362466?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3246189954260362466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3246189954260362466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3246189954260362466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3246189954260362466'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/11/bea-turns-down-oracle-bid.html' title='BEA turns down Oracle bid'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1592619609211825911</id><published>2007-11-03T09:23:00.000+01:00</published><updated>2007-11-03T09:27:01.817+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BEA'/><category scheme='http://www.blogger.com/atom/ns#' term='HP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Portal servers'/><title type='text'>Wouldn't HP be better for BEA than Oracle?</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;I generally don’t comment on IT business acquisitions and business events but this one has implications on the entire application/portal-server market, so I feel it is time for an exception ;-).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;The backgroud is Oracle’s recent bid to aquire BEA Systems. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;Oracle feels they needs to fill out its product portfolio by acquiring BEA, but will the acquisition bid be successful? Oracle will be faced with a great deal of redundancy in the product range, and as fierce as the competition in that portal servers market is, it is hard to believe that any player has the resources to R&amp;amp;D more than one portal server platform. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;Futhermore, &lt;span style=""&gt; &lt;/span&gt;It won't be easy to convince BEA's customer base that Oracle only has their best interests at heart. BEA is a serious competitor to Oracle, with some fine technology that is making it difficult for Oracle to become dominant in the middleware space - so BEA has to go whatever the consequences.&lt;br /&gt;&lt;br /&gt;BEA has made it clear that being acquired by Oracle is not foremost in its business plan, but Oracle several times has shown its ability aquire companies against their will. It therefore looks likely that BEA will ultimately be acquired - but not necessarily by Oracle. BEA has a strong product set, but would benefit from the additional financial stability of being acquired by a large IT vendor. If not Oracle, then which other vendors might join in the chase?&lt;br /&gt;&lt;br /&gt;IBM would be the most obvious competition for Oracle, and it has also been very active on the acquisition trail recently. However, the same issue of product set overlap would make this equally unwelcome to BEA's customers and board.&lt;br /&gt;&lt;br /&gt;However, BEA has been very successful in partnering with HP, and since HP abandoned its service-oriented architecture (SOA) platform foray (which it entered through the earlier acquisition of Bluestone) the two product sets have become extremely complementary. HP has waded into the SOA management and governance market through the acquisition of Mercury, but has steered clear of providing its own SOA platform. The combination of HP and BEA, if executed well, would create a significant force in the industry and a natural balance to the otherwise dominant IBM and Oracle.&lt;br /&gt;&lt;br /&gt;If BEA should happen to survive the onslaught by Oracle, it would certainly be weakened by the experience and will probably see its market share slip. This would not be good for customers, shareholders or employees, and would probably lead to a further acquisition attempt (by Oracle or others) being ultimately successful. Now might be a better time for BEA to seek a friendly acquisition by a vendor looking for something more positive than simply to trash the competition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  © Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1592619609211825911?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1592619609211825911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1592619609211825911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1592619609211825911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1592619609211825911'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/11/wouldnt-hp-be-better-for-bea-than.html' title='Wouldn&apos;t HP be better for BEA than Oracle?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-8013990221849945312</id><published>2007-11-03T07:39:00.000+01:00</published><updated>2007-11-20T09:19:20.394+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mashups'/><category scheme='http://www.blogger.com/atom/ns#' term='composite applications'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Popfly'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Popfly, an enterprise-ready environment for end-user-driven mashups?</title><content type='html'>&lt;span lang="EN-GB"&gt;Popfly features programmable blocks using JavaScript is at the moment not very integrated with the &lt;span style="font-size:+0;"&gt;&lt;/span&gt;.NET framework-based technologies. Popfly is an example of evolving technologies that exploit the power of combining mashups&lt;span style="color:navy;"&gt; &lt;/span&gt;and Web 2.0.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;p&gt;&lt;span lang="EN-GB"&gt;Initially, the Popfly environment will mostly target public Web users, but it has the potential to become an enterprise-ready environment for end-user-driven mashups. By “&lt;?xml:namespace prefix = st1 /&gt;&lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Enterprise&lt;/st1:place&gt;&lt;/st1:city&gt; ready”, I mean that the Popfly environment and block portfolio is managed as an enterprise repository containing assets to enable end-user composite application building. The potential benefits are compelling and with Popfly, Microsoft joins product such as &lt;a href="http://pipes.yahoo.com/pipes/"&gt;Yahoo (Pipes)&lt;/a&gt;, &lt;/span&gt;&lt;span lang="EN-GB"&gt;&lt;a href="http://services.alphaworks.ibm.com/qedwiki/"&gt;IBM (QEDwiki)&lt;/a&gt;, &lt;/span&gt;&lt;span lang="EN-GB"&gt;&lt;a href="http://www.oracle.com/products/middleware/webcenter.html"&gt;Oracle (WebCenter)&lt;/a&gt; and &lt;a href="http://www.bea.com/framework.jsp?CNT=index.jsp&amp;amp;FP=/content/products/aqualogic/ensemble/"&gt;BEA Systems (Aqualogic Ensemble)&lt;/a&gt; in the mashup tool market. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="EN-GB"&gt;Popfly is primarily interesting in two ways:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol type="1"&gt;&lt;li class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;The &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt;-based user interface is powerful, engaging, and sufficiently easy to use that non-developer users can get involved in building composite applications. Users make mashup applications by usings the build-in blocks library, or build their own blocks. These blocks can be service-oriented architecture (SOA) services. The blocks may&lt;span style="color:navy;"&gt; &lt;/span&gt;include visualization service blocks or data service blocks, and the application can also demonstrate a block that handles transformation between two other blocks. Popfly goes far beyond dropping a gadget into a Web portal. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Popfly is also a mashup Web 2.0 community, applying the "network effect" to the mashup world. A user-driven mashup composite application environment is only as valuable as the quality and quantity of services (or blocks) available to users. Users can think of the Popfly community as a "programmable Web" that allows developers and nondevelopers to easily find, consume, create, rate, sell and share blocks and mashups. Popfly's success on the public Web will depend on Microsoft's ability to engage and develop this community.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;© Copyright 2007, Tomas Elfving&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-8013990221849945312?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/8013990221849945312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=8013990221849945312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8013990221849945312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8013990221849945312'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/11/popfly-enterprise-ready-environment-for.html' title='Popfly, an enterprise-ready environment for end-user-driven mashups?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-9077393017370735190</id><published>2007-11-03T07:36:00.000+01:00</published><updated>2007-11-03T07:38:38.668+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mashups'/><category scheme='http://www.blogger.com/atom/ns#' term='Popfly'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Popfly now in public beta</title><content type='html'>&lt;p&gt;&lt;span style="" lang="EN-GB"&gt;Microsoft is now done ironing out the bugs and feedback gathered during the invited-only alpha release period. Now anyone with a &lt;a href="http://login.live.com/"&gt;Live ID&lt;/a&gt; can start a Popfly account and start being creative.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;Microsoft® Popfly™ is a web site and tool to help people create and share web sites, mashups, and other kinds of experiences. It has two parts: the social network ("Popfly Space") and the online tool for creating different mashups and web sites ("Popfly Creator."). In addition to the Popfly web site, Microsoft® Popfly™ Explorer Beta is an add-on component for Microsoft Visual Studio® 2005 that enables you to create and share Visual Studio® projects on the Popfly Space network.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;The list of added features of the beta can be summarized as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Gadgets. Popfly can create both Windows      Vista Sidebar gadgets and Windows Live gadgets. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Tweaking and Properties. Last iteration,      we added “tweaking,” but many blocks didn’t have a lot of properties to      tweak, so we added properties to a host of our output blocks including      Photoshow, Virtual Earth, PhotoSphere, Gauge, and Page Turner. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Tweaking and the color picker. When you      tweak a mashup you now have a color picker so you don’t have to remember      the alphanumeric codes for colors. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;New and updated blocks. Popfly has a      category for new and updated blocks. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;New screencasts. Updated videos explaining      how to use Popfly. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;New blocks.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Updated block documentation. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Finally, check out the &lt;a href="http://popflyteam.spaces.live.com/Blog/cns%2151018025071FD37F%21266.entry"&gt;release notes&lt;/a&gt; before you get started! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  © Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-9077393017370735190?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/9077393017370735190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=9077393017370735190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/9077393017370735190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/9077393017370735190'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/11/popfly-now-in-public-beta.html' title='Popfly now in public beta'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2950751330882840837</id><published>2007-10-17T05:29:00.000+02:00</published><updated>2007-10-17T05:40:21.726+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Single-sign-on'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoCard systems'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='identity models'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CardSpace'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='LiveID'/><category scheme='http://www.blogger.com/atom/ns#' term='claims'/><category scheme='http://www.blogger.com/atom/ns#' term='Digital Me'/><category scheme='http://www.blogger.com/atom/ns#' term='LDAPv3-based directories'/><category scheme='http://www.blogger.com/atom/ns#' term='Active Directory'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Microsoft announces new identity model in Sharepoint</title><content type='html'>Microsoft is now making an interesting move as they announce to replace the authentication system for SharePoint Server. Microsoft plan to make the collaboration platform one of the first of the company’s marquee applications to rely on a new claims-based identity model.&lt;br /&gt;&lt;br /&gt;The goal is to have SharePoint incorporate an authentication model that works with any corporate identity system, including Active Directory, LDAPv3-based directories, application-specific databases and new user-centric identity models, such as LiveID, OpenID and InfoCard systems, including Microsoft’s CardSpace and Novell’s Digital Me.&lt;br /&gt;&lt;br /&gt;SharePoint will lose its rigid authentication system and replace it with an claims-based authentifiation solution. Claims could for instance be age or group membership, that are passed to obtain access to the SharePoint environment and to systems integrated with that environment. Claims are a set of statements that identify a user and provide specific information.The claims are used by systems to make such decisions as who gets access, who can retrieve content or who can complete transactions.&lt;br /&gt;&lt;br /&gt;“We don’t want to come up with another, or the next, authentication system for SharePoint,” says Venkey Veeraraghavan, senior program manager lead for Office SharePoint Server.&lt;br /&gt;&lt;br /&gt;Veeraraghavan said Microsoft settled on a claims-based system because it is flexible and designed for heterogeneous identity environments. “It allowed us to invest in one place [SharePoint] and know that we can credibly say we work with multiple systems, especially as they are woven into what we’re calling a Metasystem. We want to continue to work on making SharePoint useful to our customers, not spend a lot of time integrating with each and every identity system one-by-one, or worse, not do it because of resource concerns.”&lt;br /&gt;&lt;br /&gt;In its current release SharePoint is fairly limited with authentication mechanisms. You can use NTLM (ancient and inefficient), Basic (used with SSL and the clear-text passwords are SO not good) or Kerberos (complex to configure, but better performance) or use MS Single Sign-On. This new move sounds like a great way to open up their collaboration platform to third party options, which are what most companies use.&lt;br /&gt;&lt;br /&gt;Kim Cameron, Microsoft’s identity architect, believes an industry transformation to claims-based identity is 18 to 24 months away, which would, considering the normal product release cycle of the Office platform, place the implementation of new claims-based identity model in the next major release of Sharepoint Server 2009 or later.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/news/2007/101607-microsoft-switching-sharepoint.html?fsrc=netflash-rss"&gt;Read full article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2950751330882840837?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2950751330882840837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2950751330882840837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2950751330882840837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2950751330882840837'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/10/microsoft-announces-new-identity-model.html' title='Microsoft announces new identity model in Sharepoint'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-4258563547747221694</id><published>2007-10-13T08:58:00.000+02:00</published><updated>2007-10-13T09:13:09.628+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mashup Applications OpenID Security SSO Single-sign-on'/><title type='text'>Security and identity in Mashup applications</title><content type='html'>&lt;strong&gt;&lt;/strong&gt;The most interesting mashup apps will be creations powered with our personal and business information.  So far, there haven't been a single-sign-on model supporting the mashup programming model. Most mashups we've seen so far don't require (or support) logins that allow it to collect information from your private repositories of information.  While initiatives like &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; have the potential to resolve some of these issues, there is a lot of work to be done before the average user will trust a mashup with access to their private information.  In coming posts, I'll dive into the Open ID initiative to find out its potential to fill this important technology gap that fundamentally limits the real value that mashups have the potential to provide. &lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-4258563547747221694?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/4258563547747221694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=4258563547747221694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4258563547747221694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4258563547747221694'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/10/security-and-identity-in-mashup.html' title='Security and identity in Mashup applications'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3440102748211081377</id><published>2007-10-10T22:22:00.000+02:00</published><updated>2007-10-13T09:34:41.895+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AD groups'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Audience targeting'/><title type='text'>Problem seeing updates in AD groups in MOSS solved</title><content type='html'>&lt;span class="q"&gt;There have been comments regarding a problem of synchronizing AD and Sharepoint groups ("&lt;a href="http://tomaselfving.blogspot.com/2007/05/audience-targeting-in-moss-2007.html"&gt;Audience Targeting and User Profiles in MOSS 2007&lt;/a&gt;") . Tim O finally figured the solution and here's his description:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"If experiencing problems seeing updates to the AD groups, it's possible the timer service has stopped and failed to restart. A few people at MS are aware of this problem. In Central Administration for SharePoint, select 'Operations', then 'Timer Job Status' to view the most recent timer job activity. Several jobs are visible here and some run infrequently.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;On your SP server, in the services section, restart the following service:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Windows Sharepoint Services timer.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Thanks Tim O for sharing!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3440102748211081377?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3440102748211081377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3440102748211081377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3440102748211081377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3440102748211081377'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/10/problem-seeing-updates-in-ad-groups-in.html' title='Problem seeing updates in AD groups in MOSS solved'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-3592740689605233340</id><published>2007-10-09T22:33:00.001+02:00</published><updated>2007-10-13T09:33:29.887+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Index database'/><category scheme='http://www.blogger.com/atom/ns#' term='Query processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Indexing'/><category scheme='http://www.blogger.com/atom/ns#' term='Spiders'/><category scheme='http://www.blogger.com/atom/ns#' term='Content aquisition'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Search'/><title type='text'>Components of an Enterprise Search system</title><content type='html'>In a previous posting, I described a custom-made enterprise search solution. This time I look into the characteristics of generic search systems that are available on the market. In the decision between developing a custom solution or buy a commercial system, an important aspect will be the amount of work you need to put in to make the commercial product actually do what you want. This article aims to give You a  better understanding of what factors that affect the feasibility of these products.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The components and the behaviour of an Enterprise Search System&lt;/span&gt;&lt;br /&gt;Search systems act in two directions: toward the content and toward the searcher. Search engines indexes content to enable accurately sorted result sets and process queries, to put it simply. To accomplish these tasks, most search systems consists of three major quite interdependent components:&lt;br /&gt;&lt;br /&gt;1. Content acquisition&lt;br /&gt;2. Indexing service&lt;br /&gt;3. Query processing (including parsing, matching and post-processing)&lt;br /&gt;&lt;br /&gt;If something goes wrong in any one of these subsystems, the problem can significantly downgrade the performance and effectiveness of the search engine as a whole. If the content acquisition function is not able to identify and incorporate new content in the index, then the  index will obviously soon become outdated. If heavy work load overloads the query processing system, the resources needed to perform index updating to refresh the index may not be sufficient, or the response time for displaying result sets to users degrades to an unacceptable level.&lt;br /&gt;Performance is important an issue in all parts of an search engine solutions. Most of the processes in a search system are processor- and disc-intensive. In order to improve the overall performance, additional hardware, memory, storage, or bandwidth may be needed. To speed up response time in the query processing module, one might need to limit the number of users, place a ceiling on number of results displayed per query, or eliminate certain resource hungry indexing processes such as automated metatagging.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Content Acquisition&lt;/span&gt;&lt;br /&gt;You need a plan how to aquire content into Your search solution. The following strategies may be used separately, or mixed. There is no single strategy that always works for everyone:&lt;br /&gt;&lt;br /&gt;1. The content acquisition subsystem gathers content to a common index database. Content must be identified, then copied from its location to a processing folder, and finally moved to a “to be indexed” folder. This is the approach most enterprise search systems use.&lt;br /&gt;&lt;br /&gt;2. The second way is ton set up the servers with content to run a script and identify changed or new content, then copies that content to a new folder, maybe do some processes the content before moving the processed files to the indexing subsystem. This is an approach supported by such enterprise systems as FAST Search&amp;amp; Transfer, Verity, and others. This makes it possible to plan when updates of the index occurs to avoid performance-heavy indexing updates when a lot of users do searches.&lt;br /&gt;&lt;br /&gt;3. Finally one can use so called “spiders”. A spider is a script that on a scheduled basis visits servers, folders, or files. When a change or a new document is identified, the script copies the file to the index processing subsystem. This is an approach supported by virtually all search systems today, but remains a surprisingly complicated exercise. Spiders can for instance experience problems with session variables in URLs, JavaScript, Flash, and forms. When improperly configured, a spider can chase its own tail through a series of infinitely recursive links.&lt;br /&gt;&lt;br /&gt;These three content acquisition techniques can be used separately or together by the search system. When the enterprise search system offers application programming interfaces or toolkit modules, highly customized content acquisition systems can be developed. For example, mission-critical content data can be acquired on a near real time basis and incorporated into th  search system using scripts whereas non-critical may be acquired on a longed interval. No single content acquisition approach is appropriate in most organizations, hybrid content acquisition techniques are the norm.&lt;br /&gt;&lt;br /&gt;To improve content acquisition, a search system can integrate with a records management system, a document management system, or other enterprise information management system that holds information in a particular format or structure. This type of integration typically requires custom scripting and may require additional infrastructure modifications. Similarly, compliance with Basel II, Sarbanes-Oxley or other mandated guidelines will require customization of the content acquisition module as well as other parts of the search system to ensure that versions of documents are not made unfindable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Indexing Service&lt;/span&gt;&lt;br /&gt;The goal of storing content data in an index is to optimize the speed of finding relevant documents for a search query. No one really want a full “byte-by-byte” disk scan for every search query. It may take minutes or hours to complete for an index of say 10 000 documents (which is really nothing in most search solutions). With an index we talking a few milleseconds for the same operation!&lt;br /&gt;&lt;br /&gt;To provide a set of matching items quickly, a search engine will typically collect information, or metadata, about the group of items under consideration beforehand. For example, a library search engine may determine the author of each book automatically and add the author name to a description of each book. Users can then search for books by the author's name. Other metadata in this example might include the book title, the number of pages in the book, the date it was published, and so forth.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Index Design Factors&lt;/span&gt;&lt;br /&gt;The challenge is to find a optimal Index design and it boils down to considering the following index design factors:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Merge factors – It is about how data enters the index, or how words or subject features are added to the index. Do You have multiple indexes that needs to be merged? Can it be done asynchronously? Search engine index merging is similar in concept to the SQL Merge command and other merge algorithms.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Storage techniques - How to store the index data - should the information be data compressed or filtered?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Index size - How much computer storage is required to support the index&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Lookup speed – What are Your lookup speed performance requirements? How quickly an entry in a data structure can be found, versus how quickly it can be updated or removed?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Maintenance – How to work with maintenance of the index over time&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Fault tolerance - How important it is for the service to be reliable, how to deal with index corruption, whether bad data can be treated in isolation, dealing with bad hardware, partition (database)|partitioning schemes. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Expressing queryies&lt;/span&gt;&lt;br /&gt;Search engines provide an interface to a group of items that enables users to specify criteria about an item of interest and have the engine find the matching items within the group. Most commonly, items are documents or web pages and the criteria are words or concepts that the documents may contain.&lt;br /&gt;There are several varieties of syntax in which a search engine user can express a query. Some methods are formalized and require a strict, logical and algebraic syntax. Other approaches are less strict and allow for a less defined query. One form of a less-restricted query syntax is referred to as Natural Language Search, which is a term typically used to describe web search engines that apply natural language processing of some form. For example, instead of searching for one or two words, a query could consist of an English sentence or paragraph. A natural language search engine will then parse the query into words and evaluate searches for these words. This places less burden on the search engine user to formulate a specific query using restrictive, and sometimes difficult to learn, syntax. A second definition of natural language search engines reflects how the search engine performs indexing, unrelated to the query syntax. This requires a semantic understanding of the query in order to disambiguate the text.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ranking search result sets&lt;/span&gt;&lt;br /&gt;A Boolean search for an item within a group of items will either return the exact matching item or nothing. This is a rather orthodox search method where the equality between the desired item and the actual item must be exact. In application, it is sometimes far more beneficial and useful to incorporate a more lax measure of similarity between the desired item(s) and the items that exist in the group being searched. For example, instead of finding only the exact book in a library, a library search engine may return a list of 'similar' books, with the exact book listed first.&lt;br /&gt;The list of items that meet the criteria specified by the query are typically sorted, or ranked, in some regard so as to place the most 'relevant' items first. Placing the most relevant items first reduces the time required by users to determine whether one or more of the resulting items are sufficiently similar to the query. It has become common knowledge through the use of Web search engines that the further down the list of matching items you browse, the less relevant the items become.&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-3592740689605233340?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/3592740689605233340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=3592740689605233340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3592740689605233340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/3592740689605233340'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/10/components-of-enterprise-search-system.html' title='Components of an Enterprise Search system'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2199523125137531627</id><published>2007-09-20T11:11:00.000+02:00</published><updated>2007-09-21T00:42:44.686+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Search Lucene'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise'/><title type='text'>An Enterprise Search solution using Lucene</title><content type='html'>I recently designed an enterprise search solution for a +50000 employees organization in the public sector. I have layed out the challenges that we aimed to handle in a previous posting (&lt;a href="http://tomaselfving.blogspot.com/2007/09/challenges-of-enterprise-search.html"&gt;http://tomaselfving.blogspot.com/2007/09/challenges-of-enterprise-search.html&lt;/a&gt;). One additional design objective was to minimize the number of synchronous calls to the base systems.&lt;br /&gt;&lt;br /&gt;The solution consists of a 5 layered architecture:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Web application layer – any number of web sites and client applications using the search web services of layer 2.&lt;/li&gt;&lt;li&gt;Web service layer publishing web services with customized search functionality.&lt;/li&gt;&lt;li&gt;Data warehouse layer – The index database that the web services performs its search queries in.&lt;/li&gt;&lt;li&gt;Integration layer with components managing the import and the processing of base system data.&lt;/li&gt;&lt;li&gt;Base systems connected to the solution.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_fdhqBg1iHWo/RvI6o0qZSQI/AAAAAAAAABU/j7WxAvqMgPE/s1600-h/Enterprise+Search+Architecture.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_fdhqBg1iHWo/RvI6o0qZSQI/AAAAAAAAABU/j7WxAvqMgPE/s400/Enterprise+Search+Architecture.jpg" alt="" id="BLOGGER_PHOTO_ID_5112213000024574210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web application layer&lt;/span&gt;&lt;br /&gt;The web application’s consists of a single search field on the intranet portal home page and a set of underlying pages displaying the search result sets and other user interactions from the result set pages. It uses three web services exposing the enterprise search functionality found in the web services layer. The result set can easily be merged and sorted together with search results from searches on web sites and document stores.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web service layer&lt;/span&gt;&lt;br /&gt;The web services are designed to expose custom search functionality based on the structure of the data in the base systems. The first WS is the search service returning a result set with the search result, sorted by relevance and ready to display. As the base systems that we have integrated is document management systems, we need a way to retrieve the physical documents. The second and the third WS is to fetch the document from the two base systems. It takes the document id as in-parameter and returns the corresponding document from the base system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Intermediate database layer and the integrations&lt;/span&gt;&lt;br /&gt;The idea is to gather as much information from the base systems in an intermediate database as possible, in order make it available for high-performance search queries. No round-trips to the base systems are required. This way, the base systems are protected against the hard-to-estimate performance load from web applications using the web services. The only disadvantage is that data in the intermediate database will not be as fresh as the data in the base systems. In this case, this is acceptable. Synchronizations may be done as often as you like, we use an interval of 1 hour. The length of the interval depends on:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How long time the synchronization process takes. The interval shouldn’t, obviously, be shorter as the previous synchronization process needs to finish before the next one starts!&lt;/li&gt;&lt;li&gt;How much changes it is in the base data. The more changes, the shorter interval is recommended.&lt;/li&gt;&lt;/ol&gt;We populate the index using a Microsoft Biztalk orchestration reading in-files from a folder. The two participating bas systems sends their respective XML-files in their own XML format. They contains both metadata and document information for new and changed documents to this folder using FTP. This mechanism ensures that documents are only sent once. We use different XML mapping schemas for each system to translate words with different meaning and perform simple logic processing like formatting for instance.&lt;br /&gt;The information is stored in the index database and free-text indexing is immediately performed on the incoming data. The index database may also store the entire source document content, if You want to make it searchable. This is a figure showing the connection between the web services, the index database and the base systems.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_fdhqBg1iHWo/RvI66EqZSRI/AAAAAAAAABc/hxL2OF_OiSI/s1600-h/Enterprise+Search+Architecture+Communication+flow.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_fdhqBg1iHWo/RvI66EqZSRI/AAAAAAAAABc/hxL2OF_OiSI/s400/Enterprise+Search+Architecture+Communication+flow.jpg" alt="" id="BLOGGER_PHOTO_ID_5112213296377317650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The communication between the base systems works according to the principles of loosely coupled systems. Dependencies regarding system up-time are minimized. With this solution the responsibility to produce and deliver the incoming XML-file including…&lt;br /&gt;&lt;ul&gt;&lt;li&gt;filtering of information that the base system doesn’t want to publish and make available for search&lt;/li&gt;&lt;li&gt;and optimization of the data for improved searchability&lt;/li&gt;&lt;/ul&gt;…lies in the respective base system.&lt;br /&gt;&lt;br /&gt;One risk is that the FTP-file transfer fails for some reason, but from a search user perspective the solution still works. The latest data will not be in the index database, but the search function will work. The next time the FTP-transfer works, the index database will be up-to-date again.&lt;br /&gt;One requirement on the base systems and their transfer programs is that they set time-stamps on changes in the base systems. Using that timestamp, only the changed and new data since the last run can be extracted in a batchprogram.&lt;br /&gt;&lt;br /&gt;What is this magic Lucene index database then? Lucene is a free/open source information retrieval library, originally implemented in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License. Lucene has been ported to programming languages including Delphi, Perl, C#, C++, Python, Ruby and PHP. Our solution used the C# version known as Lucene.NET.&lt;br /&gt;While suitable for any application which requires full text indexing and searching capability, Lucene has been widely recognized for its utility in the implementation of Internet search engines and local, single-site searching. Lucene itself is just an indexing and search library and does not contain crawling and HTML parsing functionality. The Apache project Nutch is based on Lucene and provides this functionality; the Apache project Solr is a fully-featured search server based on Lucene.&lt;br /&gt;At the core of Lucene's logical architecture is a notion of a document containing fields of text. This flexibility allows Lucene's API to be agnostic of file format. Text from PDFs, HTML, Microsoft Word documents, as well as many others can all be indexed so long as their textual information can be extracted.&lt;br /&gt;&lt;br /&gt;This is just one way to implement this functionality. It proved to work very well for us, the quality of the search result sets are good, and the performance in term of search response times is fantastic.&lt;br /&gt;&lt;br /&gt;Feel free to comment on this or let me know if you have made other experiences in the field of Enterprise search!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2199523125137531627?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2199523125137531627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2199523125137531627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2199523125137531627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2199523125137531627'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/09/enterprise-search-solution-using-lucene.html' title='An Enterprise Search solution using Lucene'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fdhqBg1iHWo/RvI6o0qZSQI/AAAAAAAAABU/j7WxAvqMgPE/s72-c/Enterprise+Search+Architecture.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-7751141298764974800</id><published>2007-09-08T08:11:00.000+02:00</published><updated>2007-09-15T07:30:02.877+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Search'/><title type='text'>Challenges of an Enterprise Search implementation</title><content type='html'>Enterprise Search is, to quote Wikipedia, "the practice of identifying and enabling specific content across the enterprise to be indexed, searched, and displayed to authorized users". The goal is to give the users the "single search"-field while still search all kinds of content from all kind of data sources. The challenge is that "content" comes in many formats and from different kinds of data sources. It may for instance be:&lt;br /&gt;- other web internal sites&lt;br /&gt;- your own extranets &amp;amp; internet sites&lt;br /&gt;- file shares&lt;br /&gt;- customer records held in a CRM system&lt;br /&gt;- business information in an internal database&lt;br /&gt;- letters and reports in Document Management Systems.&lt;br /&gt;- people/contact information in a telephony system&lt;br /&gt;&lt;br /&gt;Another challenge is that the information often have various levels of security classification so that only authorized user should get hits on a search. Sounds faily simple, right. But that means firstly that the user making the search needs to identify himself, and secondly that all the systems needs to be able to identify that user correctly. Not an easy task when different base systems have their own user database with their own user identification solution. Across an enterprise, numerous user databases may be in use.&lt;br /&gt;&lt;br /&gt;Information in base systems is not structured in a "search-friendly" format. A relational database is pretty useless as it is when it comes to extracting relevance-sorted search results from a free text search. You probably need to do some work to make these system available as a good data source in an enterprise search solution.&lt;br /&gt;&lt;br /&gt;How do You create a search result when hits comes from many different data sources? In what order should the search hits be sorted? You need a way to understand the relevance weight of each search hit from each data source when assembly the total, final search result to be presented to the user.&lt;br /&gt;&lt;br /&gt;Lastly, performance issues needs to be adressed. The users of an enterprise search expects response times of no more than a few seconds, they are spoiled with the Google performance of "0,047 seconds" ;-). The base systems participating in the search solutions are rarely prepared for this scenario.&lt;br /&gt;&lt;br /&gt;In an upcoming post I'll describe an enterprise search solution atchitecture that I recently implemented for a large organisation adressing the challenges described above.&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-7751141298764974800?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/7751141298764974800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=7751141298764974800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7751141298764974800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/7751141298764974800'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/09/challenges-of-enterprise-search.html' title='Challenges of an Enterprise Search implementation'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5605277830390004255</id><published>2007-09-03T11:18:00.000+02:00</published><updated>2007-09-08T08:03:59.196+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MOSS Audience targeting Sharepoint'/><title type='text'>Scoping content with Audience targeting in MOSS 2007</title><content type='html'>&lt;div class="ExternalClassE950C9231EC94163A1835052E0359E43"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;I'm getting comments &amp; questions about different "group problems" on a previous post on Audience targeting ("&lt;a href="http://tomaselfving.blogspot.com/2007/05/audience-targeting-in-moss-2007.html"&gt;Audience targeting and User profiles in MOSS 2007&lt;/a&gt;"), &lt;/span&gt;&lt;span style="font-size:100%;"&gt;and it seem to be a good idea to clarify the different options available with audiences. These are some additional thoughts on scoping content in MOSS 2007.&lt;/span&gt;&lt;/div&gt; &lt;div class="ExternalClassE950C9231EC94163A1835052E0359E43"  style="font-family:verdana;"&gt; &lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;SharePoint Groups&lt;/strong&gt; - SharePoint Groups are a valid Target Audience mechanism.  This is especially useful when the site administrators may not have access to Active Directory. With Sharepoint Groups, the site administrator have full control to modify his audience. SharePoint Groups have the added benefit of allowing self-enrollment if the site administrator wants to setup a site that might have different levels of information and allow the users themselves to subscribe to what components they'd like.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Active Directory Domain Groups or Roles&lt;/strong&gt;- Active Directory domain groups are also a valid Target Audience. The nice thing with this option is that many organizations already have groups setup for internal use that are suitable for targeting specific areas of an organization.  The SharePoint site administrator has however less or no control over the membership in the group. This might, on the other hand, be just what you want!&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Audience Rules&lt;/strong&gt; - These are very powerful and potentially maybe least understood. They can be used to do a number of convenient things. They can be setup with multiple rules and then setup to require a match to all rules or any rule.  This allows a SharePoint Shared Services administrator to define and scope very flexible audiences that will update automatically as user information is changed and synchronized in to SharePoint.  The rules might be as simple as belonging to a security group or being a part of a specific area of the Actove Directory organizational hierarchy. Group, list and organizational rules have operators of "Reports Under" and "Member Of".  User profile property rules have operators of "Contains" and "Not Contains".  You could for instance make a basic rule to match all users with the word &lt;strong style="font-weight: normal;"&gt;&lt;span style="font-style: italic;"&gt;Sales rep&lt;/span&gt; &lt;/strong&gt;in their &lt;strong style="font-weight: normal; font-style: italic;"&gt;Title&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-style: italic; font-weight: normal;"&gt;SharePoint&lt;/span&gt; &lt;/strong&gt;under their &lt;strong style="font-style: italic; font-weight: normal;"&gt;Skills&lt;/strong&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;and &lt;strong style="font-weight: normal; font-style: italic;"&gt;Manager &lt;/strong&gt;in their &lt;strong style="font-style: italic; font-weight: normal;"&gt;Title&lt;/strong&gt;&lt;strong style="font-weight: normal;"&gt;&lt;span style="font-style: italic;"&gt;New Employee Orientation Team&lt;/span&gt; &lt;/strong&gt;distribution list.&lt;/span&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5605277830390004255?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5605277830390004255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5605277830390004255' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5605277830390004255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5605277830390004255'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/09/scoping-content-with-audience.html' title='Scoping content with Audience targeting in MOSS 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-9072101156613116402</id><published>2007-08-30T14:37:00.001+02:00</published><updated>2007-08-31T00:15:13.282+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA defined</title><content type='html'>&lt;p&gt;&lt;span lang="EN-US"&gt;We can define Service-Oriented Architecture as an architectural style for building systems based on interacting coarse grained autonomous components called services. Each service expose functionality and behavior through contracts. Contracts are composed of messages at discoverable addresses called Interfaces. &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_fdhqBg1iHWo/Rta6Ph1RycI/AAAAAAAAABM/pMCtay1-Qo8/s1600-h/SOA.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5104472003613673922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_fdhqBg1iHWo/Rta6Ph1RycI/AAAAAAAAABM/pMCtay1-Qo8/s400/SOA.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;Service&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;. A Service should provide a high cohesion and distinct function. Services should be coarse grained pieces of logic. A Service should implement at least all the functionality promised by the contracts it exposes. One of the characteristics of services is service autonomy. Autonomy means the services should be self-sufficient, at least to some extent, and manifest self healing properties.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;Contract&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;. The collection of all the messages supported by the Service is collectively known as the service's contract. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;Interface&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;. The Interface is a URI, a specific place where the service can be found and consumed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;Messages&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;. The communication mechanism in SOA is the message. Messages can for instance be &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="MARGIN-LEFT: 36pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="EN-US"&gt;http GET messages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="MARGIN-LEFT: 36pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="EN-US"&gt;SOAP messages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="MARGIN-LEFT: 36pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="EN-US"&gt;JMS messages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="MARGIN-LEFT: 36pt; TEXT-INDENT: -18pt"&gt;&lt;span lang="EN-US"&gt;and even SMTP messages &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;Messages must have both a header and a body. The header is usually more generic and can be understood by infrastructure and framework components without understanding, and consequently coupling to, every message type. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;Service Consumer&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;. This is the user of the Service. A service consumer is any software that interacts with a service by exchanging messages with the service. Consumers can be either client applications or other "neighboring" services their only requirement is that they bind to an SOA contract.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-9072101156613116402?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/9072101156613116402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=9072101156613116402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/9072101156613116402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/9072101156613116402'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/08/soa-defined.html' title='SOA defined'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_fdhqBg1iHWo/Rta6Ph1RycI/AAAAAAAAABM/pMCtay1-Qo8/s72-c/SOA.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2477553187794098456</id><published>2007-08-13T23:46:00.000+02:00</published><updated>2007-08-13T23:56:05.489+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSS 3.0 Visual Studio 2005 Extensions for Windows SharePoint Services 3.0'/><title type='text'>New to WSS 3.0 development?</title><content type='html'>Patrick Tisseghem has written a great introduction to Windows SharePoint Services 3.0 outlining the differences between traditional ASP.NET and WSS 3.0 development. He explains the required development environment, and the steps to build a Windows SharePoint Services solution with Visual Studio 2005 Extensions for Windows SharePoint Services 3.0.&lt;br /&gt;Enjoy step 1 on &lt;a href="http://msdn2.microsoft.com/en-us/library/bb530302.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb530302.aspx&lt;/a&gt; and step 2 on &lt;a href="http://msdn2.microsoft.com/en-us/library/bb530301.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb530301.aspx&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2477553187794098456?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2477553187794098456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2477553187794098456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2477553187794098456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2477553187794098456'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/08/new-to-wss-30-development.html' title='New to WSS 3.0 development?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-438907091284319753</id><published>2007-08-09T00:26:00.000+02:00</published><updated>2007-08-09T08:02:28.289+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Audience targeting'/><title type='text'>MOSS Audiences aren't security objects</title><content type='html'>Don't use MOSS 2007 audiences as security objects. They are to be used for audience targeting only. You can target any list item or web part directly to a rule based audience. This enables rule based audiences to be created and maintained in the Shared service provider, while letting an individual site owner use these defined audiences on individuel sites.&lt;br /&gt;&lt;br /&gt;Audiences are a global concept, whereas MOSS(Sharepoint) Groups are a relatively local concept. You might reuse the same audience across multiple portals, which will each have their own groups. There is sadly no way to define an audience rule based on groups. On most of the places where you use audience targeting, you can also use SharePoint Groups to target audiences.&lt;br /&gt;&lt;br /&gt;Audiences are not used to assign rights and permissions. MOSS uses site groups to assign rights and permissions to users within the portal. Audiences are used to manage how content is distributed, not to enforce security. They push information to a user, not restrict or permit access to information. &lt;p class="MsoNormal"&gt;&lt;span style="font-family:ArialMT;font-size:10;"&gt;&lt;/span&gt;&lt;span style="font-family:Arial-BoldMT;font-size:10;"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;© Copyright 2007, Tomas Elfving&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-438907091284319753?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/438907091284319753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=438907091284319753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/438907091284319753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/438907091284319753'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/08/audiences-arent-security-objects.html' title='MOSS Audiences aren&apos;t security objects'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-8695818819525380929</id><published>2007-07-06T06:44:00.000+02:00</published><updated>2007-07-06T07:32:11.677+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blocks'/><category scheme='http://www.blogger.com/atom/ns#' term='Popfly'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Popfly Blocks intro</title><content type='html'>In Popfly, You can either create your own web pages, create mashups (A mashup is a web application that combines information from two or more  websites or sources.) based on existing "blocks", or create your own blocks. A block is a component acting like a piece of middleware. It is contained in a single JavaScript file (.js), which provides methods for user generated code to invoke. A block may also make use of resource files such as XAML files, images, etc.&lt;br /&gt;&lt;br /&gt;A block can act as a middleman between externally provisioned services such as web services, or it may simply be a library of reuseable functions, e.g. a function that convert between currencies or is retrieving customer data from an ERP system. A block can also have a user interface acting as a display surface: something which takes data from other blocks by using their functions and displays it in a meaningful manner, and allows the user to interact with it.&lt;br /&gt;&lt;br /&gt;At the moment You can't edit JavaScript directly inte the Popfly environment as the JavaScript editor currently lacks some basic functionality such as syntax highlighting (The Popfly team is working on that.) Use for instance the Microsoft Visual Web Developer 2005 Express, freely available from: &lt;a href="http://msdn.microsoft.com/vstudio/express/vwd/"&gt;http://msdn.microsoft.com/vstudio/express/vwd/&lt;/a&gt; to develop Your Popfly blocks!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-8695818819525380929?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/8695818819525380929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=8695818819525380929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8695818819525380929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/8695818819525380929'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/07/popfly-blocks-intro.html' title='Popfly Blocks intro'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6063601571905659276</id><published>2007-06-12T06:06:00.000+02:00</published><updated>2007-06-12T19:28:06.554+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alpha'/><category scheme='http://www.blogger.com/atom/ns#' term='Popfly'/><title type='text'>Becoming a Popfly user</title><content type='html'>&lt;span style="font-size:100%;"&gt;The day after I requested an invitation på the Popfly Alpha, I got an invitation by "Suzanne" on the Microsoft Popfly Team. Acception the invitation and it's time to get off to create my own profile with a Display Name, Page Title, Display Title, Tag Line, RSS feed and banner picture. This isn't MySpace, right?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6063601571905659276?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6063601571905659276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6063601571905659276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6063601571905659276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6063601571905659276'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/06/becoming-popfly-user.html' title='Becoming a Popfly user'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-6570057667666992733</id><published>2007-06-11T06:44:00.001+02:00</published><updated>2007-06-12T06:05:24.468+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Popfly'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>What is Popfly?</title><content type='html'>There's a lot of talk about &lt;a href="http://www.popfly.com/" target="_blank"&gt;Popfly&lt;/a&gt; now. It's a new web application to create Mashups. Mashups is a fusion of information and application based on various web-based sources. A Mashup may for instance link new, video, photo, maps etc together in an integrated application. In Popfly You can easily build and share mashups, gadgets, Web pages, and applications. Popfly consists of two parts:&lt;br /&gt;1. Popfly Creator is a set of online visual tools for building Web pages and mashups.&lt;br /&gt;2. Popfly Space is an online community of creators where you can host, share, rate, comment and even remix creations from other Popfly users.&lt;br /&gt;&lt;br /&gt;Check out the  &lt;a href="http://go.microsoft.com/fwlink/?LinkID=91175" target="_blank"&gt;Popfly webcast&lt;/a&gt; and You will get the big picture.&lt;br /&gt;&lt;br /&gt;Popfly builds of the new Microsoft technology &lt;a href="http://www.microsoft.com/silverlight" target="_blank"&gt;Silverlight&lt;/a&gt;, which is a crossplatform browser plug-in. A a first glance it seems similar to Flash, but I would not take that comparison any further at this point. There's also a webcast out there about how to integrate Popfly and MOSS: &lt;a href="http://wm.microsoft.com/ms/gsd/mikegannotti/Popfly_SharePoint_Integration.wmv" target="_blank"&gt;Popfly-SharePoint integration&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm requesting an invitation to the Popfly alpha at www. popfly.com. I'm now waiting impatiently...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-6570057667666992733?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/6570057667666992733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=6570057667666992733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6570057667666992733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/6570057667666992733'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/06/what-is-popfly.html' title='What is Popfly?'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-910675760020560332</id><published>2007-06-03T06:57:00.000+02:00</published><updated>2007-06-03T08:58:53.246+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Evaluation'/><title type='text'>Evaluating EpiServer 4.61 as portal framework</title><content type='html'>EPiServer has since version 4.51 a built-in support for portal functionality through its CMS add-on “Portlet Framework”, and in the latest version 4.61 has the support been further developed. Version 5 is scheduled during the second half of 2007. The Portal framework of EPiServer is based on Microsoft ASP.NET 1.1 and has recently added support for producing and consuming WSRP (Web Services for Remote Portlets) -based portlets and for Microsoft WebParts, also used in MOSS 2007.&lt;br /&gt;&lt;br /&gt;Based on the identified evaluation areas described in my previous post "&lt;a href="http://tomaselfving.blogspot.com/2007/05/need-for-portal-architecture.html"&gt;The need for a portal architecture&lt;/a&gt;", EPiServer have been evaluated as portal framework for development of both intra-, extra- and internet solutions for larger companies or organizations. The figure below illustrates a fairly generic system architecture with portal services. One important aspect to look into regarding portal products is to what extent the portal services are reusable, programmable components.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_fdhqBg1iHWo/RmJP3jtCKrI/AAAAAAAAABE/t271Y7LVXGc/s1600-h/EPi+as+Portal+Fremework.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5071703946268125874" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_fdhqBg1iHWo/RmJP3jtCKrI/AAAAAAAAABE/t271Y7LVXGc/s400/EPi+as+Portal+Fremework.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Regarding portal services included in the product, EPiServer has the following features.&lt;br /&gt;- Document management&lt;br /&gt;EPiServer has a basic support for document management with capacity to define meta-data and have version management on documents using what EPiServer calls Unified File System (UFS). UFS is a component framework for EPiServer with possibility to extend it with other external data sources. The functionality is fairly basic especially compared to products like BEA WebLogic, IBM Websphere and MOSS 2007.&lt;br /&gt;&lt;br /&gt;- Collaboration tools&lt;br /&gt;EPiServer has basic support for collaboration through a predeveloped template where users can share documents, new, calendars and notes. It uses the built-in user- and group management facility of EpiServer.&lt;br /&gt;&lt;br /&gt;- Search&lt;br /&gt;The standard installation of EPiServer has a simple search engile covering content stored in the EpiServer database (no external sites can be indexed for search). EPiServer relies on 3rd-party products adding various functionality. SiteSeeker and MondoSearch are two examples of partner products that has proven to work well.&lt;br /&gt;&lt;br /&gt;- Workflow&lt;br /&gt;EPiServer has a proprietary framework for configuration and development of workflow functionality using the Windows Workflow Foundation in .NET 3.0.&lt;br /&gt;.&lt;br /&gt;- Forms&lt;br /&gt;EPiServer has forms management based on XForms. Via EPiServers forms management any editor can publish simple forms using the EPiServer editor user interface. For more advanced forms with integration to external systems custom development is required.&lt;br /&gt;&lt;br /&gt;EPiServers support for portlets can be used in two ways:&lt;br /&gt;1. Use single portlets integrate with other standard EPiServer modules/controls. This can be done with the standard EPiServer licence.&lt;br /&gt;2. Use the full EPiServer Portal Framework where a page i entirely built by several portlets layed out on the page. EPiServer Portal Framework is an addon product to EPiServer.&lt;br /&gt;&lt;br /&gt;Key functions for EPiServer as portal platform:&lt;br /&gt;- Support for WSRP (open standard from OASIS)&lt;br /&gt;- Support for WebParts (Microsoft)&lt;br /&gt;- Support for both produce and consume WSRP-based portlets&lt;br /&gt;- Built-in support for content management&lt;br /&gt;- By supporting WSRP, ability to consume both java and .NET portlets.&lt;br /&gt;- Ability to mix WSRP-portlets with standard controls in .NET and EPiServer&lt;br /&gt;&lt;br /&gt;Furthermore one can have personal setting managing which portlets to show and if you want, let the user decide for himself using the built-in administration interface. There are also built-in portlet adapters for publishing content via RSS and IFRAME. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;A new version of EPiServer is coming during fall 2007. The new version of EPiServer is launched with a number of architecturally important mechanisms. It will for instance have full support for Microsoft .NET 3.0 including Windows Workflow Foundation and Windows Communication Foundation. EPiServer will also feature a more open programming interface for consumption of components (such as user management) to ensure improved scalability. With these changes EPiServer have taken a big step towards being a more complete platform for development of complex web solutions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pros&lt;br /&gt;&lt;/strong&gt;I have found the following main arguments for EPiServer as a portal platform:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- It has a strong track record for internet sites with portal functionality.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- EPiServer has with its portal framework managed well to add portal functionality with its popular CMS. It supports portal standards well and works fine together with EPiServers regular content management functionality. It is, especially from an editor and administrator usability perspective, an advantage that CMS and portal functionality is handled within the same tool.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- In a scenario where EpiServer coexists with MOSS or Websphere or other portal platforms, its integration capabilities becomes important. EPiServer has support for WebParts, WSRP, IFrames and RSS integration with other portal tools. &lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Cons&lt;br /&gt;&lt;/strong&gt;The following weaker areas have been identified with EPiServer 4.61 and EPiServer portal framework:&lt;br /&gt;&lt;br /&gt;- Scalability - Version 4.61 EPiServer has a known limitation in handling a large number of registered users (for instance on a intranet or extranet with 10000+ registered users). Even though an external Active directory is used, EpiServer also stores the users temporarily internally. This leads to problems with large number of users when EPiServer does a very performace-heavy search (read JOIN) when authentificating in the EPiServer-database.&lt;br /&gt;&lt;br /&gt;- Portlet technology - Just as all products supporting the WSRP, I have seen that the WSRP-technology is still not mature to handle complex web solutions with high requirements om interactivity, design and usability. The most notable limitations are: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Handling of presentation/design and the use of Cascading Style Sheets. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Handling of DOCTYPE which makes accessibility adoption harder &lt;/li&gt;&lt;br /&gt;&lt;li&gt;WSRP includes no quality assurance of content. Content in the WSRP portlet can break accessibility compliance of a whole page in the portal &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;- Search&lt;br /&gt;The built-in search functionality of EPiServer can’t handle the requirements of indexing all the different sites that most companies has. There are 3rd party products such as MondoSearch and SiteSeeker that have been proven successful complements. They can be used at an additional licencing cost.&lt;br /&gt;&lt;br /&gt;- Portal components&lt;br /&gt;EpiServer’s support for important components such as document management, workflow, collaboration is rudimentary and insufficient, especially for intranet and the extranet solutions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Summary &lt;/strong&gt;&lt;br /&gt;EPiServer is a strong CMS product, it’s ease of use is well documented. As a portal framework however, EPiServer still can’t compete with MOSS and Websphere mainly due to limited functionality in the portal components. On sites with requirements on compliance to accessibility standards and guidelines (WCAG) is EPiServer on the other hand a far better product that both MOSS and Websphere.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-910675760020560332?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/910675760020560332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=910675760020560332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/910675760020560332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/910675760020560332'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/06/evaluating-episerver-461-as-portal.html' title='Evaluating EpiServer 4.61 as portal framework'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fdhqBg1iHWo/RmJP3jtCKrI/AAAAAAAAABE/t271Y7LVXGc/s72-c/EPi+as+Portal+Fremework.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-5612105296394083197</id><published>2007-05-14T11:12:00.000+02:00</published><updated>2007-06-02T08:05:10.229+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Portlets'/><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WGAC'/><title type='text'>The need for a Portal architecture</title><content type='html'>&lt;span style="font-size:100%;"&gt;On almost any company’s agenda thesedays is the need to increase flexibility and speed of development for digital services. They are the main tool for implementing business processes meeting ever-changing customer demands. The need for efficient content management have been a base requirement for many years now, but to really unleash the potential of digital services, You need an efficient delivery platform. These are commonly called web portals.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;A portal is a point for the person gathering of information and consumption of services in different situations. They provide an excellent way for enterprises to provide a consistent look and feel with access control and procedures for multiple applications, which otherwise would have been different entities altogether.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;In choosing a portal platform, it is important to study to what extent the portal products supports the integration of digital services (a k a web applications or simply portlets). Portlets are pluggable user interface components that are managed and displayed in a web portal. Portlets produce fragments of markup code that are aggregated into a portal page. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;These portlets will typically be targeted to different kind of users both internally, among partners and externally (see previous post on &lt;a href="http://tomaselfving.blogspot.com/2007/05/audience-targeting-in-moss-2007.html"&gt;Audience Targeting &lt;/a&gt;).&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Typically, following the desktop metaphor, a portal page is displayed as a collection of non-overlapping portlet windows, where each portlet window displays a portlet. Hence a portlet (or collection of portlets) resembles a web-based application that is hosted in a portal. Portlet applications may generic portlets such as include email, weather reports, discussion forums, news and business specific portlets like product search &amp; sales, support issue management.&lt;br /&gt;&lt;br /&gt;Portlets may be used as user interface components implementing efficient business processes providing the users a great service experience. Portlet standards are intended to enable software developers to create portlets that can be plugged in any portal supporting the standards.&lt;br /&gt;&lt;br /&gt;The new thing is that the business process and the collaboration around these processes, not the web content, is at the heart of the new generation of portal solutions. Important supporting technologies include workflow management (business process automation), document management, forms management, system integration, collaboration, personalization, multi languages and security.&lt;br /&gt;&lt;br /&gt;In evaluating portal products, I suggest the following focus areas of investigation:&lt;br /&gt;-    Portal application development and portlets&lt;br /&gt;The portal application development and portlets verification aim to investigate the efficiency and ease of portlet development using the recommended portlet standard (web parts, WSRP, JSR168). The distribution of functionality between CMS-tools and portaltools may be a problematic area, especially from a content editor/administrator perspective.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;-    Interfaces and principles for integration&lt;br /&gt;Evaluating integration options to existing platfirms and systems in the IT infrastructure. Look into how well the products expose their components according to a service-oriented architecture.&lt;br /&gt;&lt;br /&gt;-    Included portal components&lt;br /&gt;Investigate the level of functionality of the out-of-the box portal components. Document management, collaboration, workflow, search and forms management is particularily interesting.&lt;br /&gt;&lt;br /&gt;-     Web standards&lt;br /&gt;How well will portal solutions build on each tool conform to accessibility standards such as WCAG (Web Content Accessibility Guidelines)? WCAG is based on specifications from W3C (World Wide Web Consortium) and is aimed for everyone developing content and services for web publication.&lt;br /&gt;&lt;br /&gt;The following figure illustrates the necessary components of a portal platform and the composition of these components.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_fdhqBg1iHWo/Rkg0rczml5I/AAAAAAAAAA0/WWQVMukC5xA/s1600-h/A+generic+portal+platform.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_fdhqBg1iHWo/Rkg0rczml5I/AAAAAAAAAA0/WWQVMukC5xA/s320/A+generic+portal+platform.jpg" alt="" id="BLOGGER_PHOTO_ID_5064355702049773458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;I will deconstruct &lt;/span&gt;&lt;/span&gt;this portal architecture in great detail in an upcoming series of posts.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-5612105296394083197?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/5612105296394083197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=5612105296394083197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5612105296394083197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/5612105296394083197'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/05/need-for-portal-architecture.html' title='The need for a Portal architecture'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_fdhqBg1iHWo/Rkg0rczml5I/AAAAAAAAAA0/WWQVMukC5xA/s72-c/A+generic+portal+platform.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-4333353406567634047</id><published>2007-05-02T05:13:00.000+02:00</published><updated>2007-05-14T12:21:28.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='User profiles'/><category scheme='http://www.blogger.com/atom/ns#' term='Audience targeting'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>Audience Targeting and User profiles in MOSS 2007</title><content type='html'>&lt;p&gt;The concept of Audience Targeting brings a new dimension to web portal site design. You are not any more restricted to define a single (or maybe two; the unknown's and the logged-in's) target audience, with targets audiences the granularity of user group definition has decreased significantly. You may now distinguish one user from another based on any single piece of information that you have on that user, and customize the services and content presented to that user by dynamically showing relevant Web parts based on the values of the Web part's custom properties. An audience can be identified by using SharePoint groups based on Active Directory, distribution lists, or security groups or by using a rules-based system to create a global audience.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;By using Audience Targeting &lt;strong&gt;&lt;/strong&gt;in MOSS 2007, You can define an audience by specifying criteria to define a subset of your user crowd. Once you have defined an audience, you can then configure content such as list or library items, navigation links, and Web Parts to conditionally display its content only when the current user is a member of that audience. This makes it straightforward to target services and content to those users who need it while hiding that content from users who would find it distracting. On an intra-or extranet these groups may be defined as an Active Directory user group like "Project managers" having for project managers customized Web parts presented to them. You can also use custom properties to define audiences for users that You don't store in the Active Directory. It could, for global audiences on an internet eCommerce site, be that You want to give special attention or service on your site to customers that have previously spent more than a certain amount. You don't need to be logged in, the custom properties of a Web Part could be set by using session variables from user interaction, or read from a cookie.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span class="bodycopy"&gt;&lt;p&gt;Audience Targeting builds upon another nice feature of MOSS, User profiling. Within an organization, there is generally a lot of information about a user stored in various IT systems. A user has a network login, an EmployeeID, name, an address, &lt;span&gt;&lt;span&gt;&lt;span class="bodycopy"&gt;&lt;span class="bodycopy"&gt;a phone number, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;a title, maybe a photograph, current assignments, time reporting information and the payroll department may have tax and salary information.&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span class="bodycopy"&gt;&lt;p&gt;&lt;a name="more"&gt;This information usually is stored in disparate systems that aren't integrated with each other. The User profiling feature provides &lt;/a&gt;&lt;a name="more"&gt;a solution by making it possible for a&lt;/a&gt;ll this information to be stored in one system, so that specific content could be targeted to specific users. So, for example,  news regarding a project could be viewed only bu people assigned to work on that project.&lt;a name="more"&gt; User profiles allow you to associate metadata with every UserID. This metadata can then be kept in sync with the other systems in the organization using the Business Data Catalogue connections or an Active Directory.&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="more"&gt;User profile has, among others, the following features:&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a name="more"&gt;Multivalued properties - Properties may have multiple choice list values, for instance for a "Competence" property.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="more"&gt;Properties with open or closed choice lists - You can tie user profile properties to a vocabulary constraining the list of possible values. The list can be open so that users can add new choices, or closed so only administrators can edit choices.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="more"&gt;Property mapping from external data sources other than Active Directory, such as an entity registered in the Business Data Catalogue.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="more"&gt;Property privacy policies restricting who can access the property. You can set policies to restrict access to Only Me, My Manager, My Workgroup, My Colleagues, or Everyone, and to enforce that a property is required, optional, or disabled.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span class="bodycopy"&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span class="bodycopy"&gt;&lt;p&gt;&lt;a name="more"&gt;&lt;br /&gt;User data can be imported into a User profile from these data sources:&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a name="more"&gt;Any catalogue directory service supporting LDAP (Lightweight Directory Access Protocol), for instance Novell eDirectory, IBM iSeries Directory Service etc.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="more"&gt;Databases&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="more"&gt;Enterprise applications (such as SAP or PeopleSoft)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;Active Directory is  not required, but  still the recommended technology for user data storage for MOSS.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span class="bodycopy"&gt;On the Microsoft Sharepoint Products and Technologies' blog, they have provided step-by-step instructions on &lt;a href="http://blogs.msdn.com/sharepoint/archive/2006/12/01/getting-started-with-personalization-in-moss-2007.aspx"&gt;setting up personilazation&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:78%;"&gt;© Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-4333353406567634047?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/4333353406567634047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=4333353406567634047' title='39 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4333353406567634047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/4333353406567634047'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/05/audience-targeting-in-moss-2007.html' title='Audience Targeting and User profiles in MOSS 2007'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2680230233382918432</id><published>2007-04-28T06:31:00.000+02:00</published><updated>2007-04-28T23:20:04.008+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='divs instead of tables'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>ASP.NET 2.0 CSS Friendly Control Adapter to solve the accessibility issue in MOSS</title><content type='html'>The problems in MOSS regarding accessibility and web standards is getting more and more attention (see also &lt;a href="http://tomaselfving.blogspot.com/2007/04/web-parts-and-accessibility-in-moss.html"&gt;http://tomaselfving.blogspot.com/2007/04/web-parts-and-accessibility-in-moss.html&lt;/a&gt;). Frank van Rooijen addresses the issue and points at a one solution based on the Microsoft ASP.NET 2.0 CSS Friendly Control Adapters in his blog &lt;a href="http://blogs.tamtam.nl/frank/PermaLink,guid,aad39854-4f7d-4666-8a0a-0fc02f3cd01b.aspx"&gt;http://blogs.tamtam.nl/frank/PermaLink,guid,aad39854-4f7d-4666-8a0a-0fc02f3cd01b.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Copyright 2007, Tomas Elfving&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2680230233382918432?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2680230233382918432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2680230233382918432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2680230233382918432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2680230233382918432'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/04/problems-of-moss-regarding.html' title='ASP.NET 2.0 CSS Friendly Control Adapter to solve the accessibility issue in MOSS'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-1158586649132964932</id><published>2007-04-20T05:34:00.000+02:00</published><updated>2007-04-28T23:22:49.591+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Web 2.0 and the future of desktop apps</title><content type='html'>&lt;span style=";font-family:Times;font-size:130%;"  lang="EN-GB" &gt;&lt;span style="font-family:times new roman;"&gt;Web 2.0 has entered the business main stream. For a phrase coined by O'Reilly Media only in 2004, referring to a perceived second-generation of Web-based services that emphasize online collaboration and sharing among users, Web 2.0 seems to have already established itself as a driving force amazingly quickly, but appears to mean somewhat different things depending who you ask.&lt;/span&gt;&lt;/span&gt; &lt;p class="MsoNormal"  style="font-family:times new roman;"&gt;&lt;span lang="EN-GB"  style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;By using the version-numbers concept commonly used for software upgrades, the phrase "Web 2.0" confusingly hints at an improved version of the World Wide Web; it is instead name for web-based applications with a rich user interface often featuring collaborative functionality. It is built upon technologies (that have been around since long before the "Web 2.0"-expression buzz began) such as weblogs, social bookmarking, wikis, podcasts, RSS feeds , social software, Web APIs, Web standards and online Web services.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:times new roman;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_fdhqBg1iHWo/Ri5lTqCE8OI/AAAAAAAAAAs/rAKiCbjwwLU/s1600-h/Web-buzz600.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5057090819958567138" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://bp2.blogger.com/_fdhqBg1iHWo/Ri5lTqCE8OI/AAAAAAAAAAs/rAKiCbjwwLU/s400/Web-buzz600.jpg" border="0" /&gt;&lt;/a&gt;&lt;span lang="EN-GB"  style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Time bar of Web 2.0 buzz words. This image shows the age of some buzzwords sometimes used in Web 2.0 lingo and its dependencies. (picture from http://en.wikipedia.org/wiki/Web_2.0)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:times new roman;"&gt;&lt;span lang="EN-GB"  style="font-size:130%;"&gt;Web 2.0 brings with it is a shift from desktop applications to shared spaces — collaboration delivered as a service over the internet. This is a break with the desktop centric world we have lived with during the "Windows" era. Rather than working out of a desktop application and exchange dokuments in various formats and expecting the reciever to have the same software installed to be able to read and work with the document, we may collaborate in the same "document" using shared spaces (wikis, blogs, project rooms, blogs, …) with invited friends and colleagues. Both long-term cooperation needs and more sponataneous situations is catered for. A new project may be initiated with an online project management tool, bringing a virtual team together across physical locations, time zones, and even organisations to work on a common project. The shared space space will just as efficiently be used for a few hours to resolve an emergency issue. Web 2.0 has obvious attractions in the enterprise, providing flexibility and improved cooperation by quickly being able to bring the right people to every task collaborating across space, time and room.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="times new roman"&gt;&lt;span lang="EN-GB"  style="font-size:130%;"&gt;Still the Office-packages installed locally on the users desktop dominates . When it comes to document sharing and collaboration, portal tools with collaboration functionality only goes as far as making it possible to share document files in workgroup spaces.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: times new roman;"&gt;&lt;span lang="EN-GB"  style="font-size:130%;"&gt;Things will, however, become really interesingly when the real Web 2.0 killer app makes is launched with full strength: The web-based online word processor and spread sheet (see http://docs.google.com, formerly www.writely.com, for a tryout of this technology). Having the functionality of letting many users work together in the physically same document and store the document directy on internet file shares, combined with the power of collaboration enabling teams to collect, share and discuss these documents and information withing workgroups, I believe the use of desktop Office application suites slowly but inevitably &lt;/span&gt;&lt;span lang="EN-GB"  style="font-size:130%;"&gt;will decrease&lt;/span&gt;&lt;span lang="EN-GB"  style="font-size:130%;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;&lt;o:lock ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;br /&gt;&lt;/v:path&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:stroke&gt;&lt;span style="font-size:78%;"&gt;@Copyright 2007, Tomas Elfving&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-1158586649132964932?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/1158586649132964932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=1158586649132964932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1158586649132964932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/1158586649132964932'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/04/web-20-and-future-of-desktop-apps.html' title='Web 2.0 and the future of desktop apps'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_fdhqBg1iHWo/Ri5lTqCE8OI/AAAAAAAAAAs/rAKiCbjwwLU/s72-c/Web-buzz600.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6102547566906293159.post-2527619862261898990</id><published>2007-04-11T13:30:00.000+02:00</published><updated>2007-04-28T23:23:14.323+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='WCAG'/><category scheme='http://www.blogger.com/atom/ns#' term='Portlets'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Parts'/><title type='text'>Web Parts accessibility limitations in MOSS</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;The support of accessibility (WCAG 1.0) in Web parts on pages in MOSS is limited. Stay with ASP.NET controls and leave the Web parts until your users really need that personalization functionality. When they do you can add personalization support and start using the WebPartZones in MOSS, and accept the accessibility limitation. This article outlines these limitations and discusses some consequences. &lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;The WCAG standard&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;The W3C standard “Web Content Accessibility Guidelines 1.0 (WCAG 1.0)” ( &lt;/span&gt;&lt;a href="http://www.w3.org/TR/WCAG10"&gt;&lt;span style="font-size:130%;"&gt;http://www.w3.org/TR/WCAG10&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt; ) covers a wide range of issues and recommendations for making Web content more accessible. The document contains principles, guidelines, and success criteria that define and explain the requirements for making Web-based information and applications accessible. "Accessible" means usable to a wide range of people with disabilities, including blindness and low vision, deafness and hearing loss, learning difficulties, cognitive limitations, limited movement, speech difficulties, photosensitivity and combinations of these. Following these guidelines will also make your Web content more accessible to the vast majority of users, including older users. It will also enable people to access Web content using many different devices - including a wide variety of assistive technologies.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;What is Web Parts?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;Web Parts are server-controls (portlets) that can be placed on a web page where the end-user is given the possibility to edit content, appearance and behaviour of the portlet directly from within the web browser. By integrating Web Parts into web pages using WebPartZones and WebPartPages in MOSS, the end-user can also add, remove, move around, maximize and minimize WebPart-portlets. When the end-user make changes to these portlets or pages, the changes can be saved and reused in later browser sessions.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;The big advantage with web parts is that it gives the end-user the possibility to personalize the content of a web site dynamically without the involvement of an administrator or a developer. It is also possible to import and export personalized WebPart-settings between different pages and sites. ASP.NET 2.0 has built-in support for WebParts. Basically, WebParts in ASP.NET are common server controls, but with the difference that it has support for personalization through the WebPart-interface. To get the full potential out of Web parts (that is, the personilazation functionality), the Web parts one must put the in a WebPartZone using a WebPartManager store and retrieve personalization data to a database (a MS SQL Server or Sharepoint Server) is also required. One can also put a common ASP.NET server control in a WebPartZone. These control will in that case be wrapped in a GenericWebPart-contol.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Accessibility limitations when using Web Parts&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;The implementation of WebPartZones in MOSS is hardcoded (unlike the corresponding classes in IBM Websphere. They are just as poorly implemented, but at least open to rewrite as you please) and doesn't support the accessibility guidelines on a number of instances:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul  style="font-family:times new roman;"&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;WebPartZones uses HTML tables for its graphical design whitch breaks the 5.3 guideline in WCAG 1.0.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul  style="font-family:times new roman;"&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;WebPartZones does only support only personalization if You use javascript, which breaks guideline 6.3 in WCAG 1.0. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul  style="font-family:times new roman;"&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;At the time of writing, the rich user interface of Web parts only works with Microsofts own web browsers:&lt;br /&gt;- WIN IE 6.0 and above&lt;br /&gt;&lt;br /&gt;It doesn’t work very well in the following browsers:&lt;br /&gt;- WIN Firefox 1.5 and above&lt;br /&gt;- WIN Opera 9 and above&lt;br /&gt;- MAC Safari 2.0 and above&lt;br /&gt;- MAC Firefox 1.5 and above&lt;br /&gt;- MAC Camino 1.0 and above&lt;br /&gt;- Linux Firefox 1.5 and above&lt;br /&gt;- Linux Konqueror 3.4 and above&lt;br /&gt;&lt;br /&gt;This breaks the guideline 6.4 in WCAG 1.0. This means that pages that uses web parts will be hard to use in other browsers other than Internet explorer. The pages will not be adapted to mobile user interfaces and devices used by for instance vision imparired people. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;A WebPart can also run outside MOSS and works in this scenario like any other ASP.NET server control. It may not rely on personalized data. I can, however, not see any advantage in developing controls as Web parts instead as web controls unless they are going to be used as personalizable portlets in WebPartZones.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:130%;"&gt;PS. This article partly builds upon the work of Martin Odhelius.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;@Copyright 2007, Tomas Elfving&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6102547566906293159-2527619862261898990?l=blog.tomaselfving.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.tomaselfving.com/feeds/2527619862261898990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6102547566906293159&amp;postID=2527619862261898990' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2527619862261898990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6102547566906293159/posts/default/2527619862261898990'/><link rel='alternate' type='text/html' href='http://blog.tomaselfving.com/2007/04/web-parts-and-accessibility-in-moss.html' title='Web Parts accessibility limitations in MOSS'/><author><name>Tomas Elfving</name><uri>https://profiles.google.com/115665447721434017856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-h7LV9ki6pc8/AAAAAAAAAAI/AAAAAAAAAAA/ZHNrMKbU4X4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry></feed>
