﻿<?xml version="1.0" encoding="UTF-8"?>
<!--RSS generated by Microsoft SharePoint Foundation RSS Generator on 9/2/2010 10:30:48 AM -->
<?xml-stylesheet type="text/xsl" href="/sharepoint-ecm-blog/_layouts/RssXslt.aspx?List=603d8a98-aeb1-485c-9995-5e42a1ed77e4" version="1.0"?>
<rss version="2.0">
  <channel>
    <title>KnowledgeLake Team Blog: Posts</title>
    <link>http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/AllPosts.aspx</link>
    <description>RSS feed for the Posts list.</description>
    <copyright>KnowledgeLake Inc</copyright>
    <managingEditor>DJ Monzyk</managingEditor>
    <webMaster>DJ Monzyk</webMaster>
    <lastBuildDate>Thu, 02 Sep 2010 15:30:48 GMT</lastBuildDate>
    <generator>Microsoft SharePoint Foundation RSS Generator</generator>
    <ttl>60</ttl>
    <language>en-US</language>
    <image>
      <title>KnowledgeLake Team Blog: Posts</title>
      <url>http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/images/siteIcon.png</url>
      <link>http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/AllPosts.aspx</link>
    </image>
    <item>
      <title>Public-Facing Website on SharePoint 2010 – Part 2: Web Forms</title>
      <link>http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/ViewPost.aspx?ID=45</link>
      <description><![CDATA[<div><b>Body:</b> <div class="ExternalClass2C498A1D574449969741AE3303ACBE71"><h3>I just need a contact form...simple, right?</h3>
<p>I would have thought creating a contact from on our new website would be easy as pie.  It is….if you are talking instead about calculating Pi….to the 100th decimal place.</p>
<p>Our old, static website had a custom-coded .asp webform which pushed traffic to pre-determined email recipients in the company.  At first, I thought about porting this code over to keep everything as is, but this is SharePoint, why not make it more robust?</p>

<h3>InfoPath, Anonymous Users and SharePoint Lists = Danger!</h3>
<p>If only I had known what this heading states before so many man hours were wasted.  Since our website is customer-facing we of course need to support Anonymous Users.  And we need to ensure those users can contact us without trouble.  Our original architectural approach was the following:</p>
<ul>
<li>Deploy an InfoPath webform that is able to be submitted by Anonymous Users</li>
<li>Create a custom List in SharePoint that would be a data connection setup in InfoPath Designer; data flows from the webform to the List (this allows us to keep information about our users, and possibly later allow us to flow this data directly into our Microsoft Dynamics CRM application as possible leads)</li>
<li>Add another data connection which is an email to our representatives with the form data for manual follow-up later</li>
</ul>
<p>I didn’t think this was a big deal…boy was I wrong.  The big problem in all of this is SharePoint 2010’s support of Anonymous Users.  <strong>Anonymous users cannot create list items!</strong>  So, in-turn, an InfoPath form submitted by an Anonymous User cannot automatically create a list item.  Although I understand there are probably security concerns with SharePoint allowing this, it seems like there should be a way to allow Anonymous Users to do this through some specifically granted permissions.  I can think of many instances where this functionality would be incredibly helpful. </p>

<h3>So now what?</h3>
<p>What we ended up doing, was simply having email notification sent to our representatives and forgetting about storing data in SharePoint.  I created a series of InfoPath webforms, published them to SharePoint, and I used the InfoPath Web Part to place the forms on the pages.  This also caused a little heartburn as well, because the InfoPath Web Part cannot see InfoPath forms that aren’t stored within the site where you are editing pages.   I discovered the best way to handle this was to publish ALL forms as a content type to a central forms library at the top site in the collection.  Then, I could create a forms library within each sub-site, and in the library under Advanced Settings ‘allow the management of Content Types’.  I could then select to inherit the needed content type (Form) from the top-level site and voila, InfoPath Web Parts for that site could now see it for selection.&lt;
Until recently this method didn’t seem to be a problem, but we just realized that because we are only doing email submit actions, we have no way to gather metrics on what percentage of people who hit a contact form actually submitted one. </p>
<p>Well, how about after form submission we send users to a specific confirmation page?….we can setup a page in our analytics tool to see how many get to the page vs. visited the contact form, and that equals our conversion rate.  No sorry, InfoPath doesn’t have a submission rule for “re-direct to another page”.  Ouch again.  I strongly urge the InfoPath development team to think about supporting what I think would be a VERY popular form submission action.
So what’s our conversion rate?  I have no idea.  We are now looking at having to contract a third party to host our webforms, track our conversions, and submit the data directly to our CRM.  Ugh.</p>

<h3>Now the good news…</h3>
<p>So what DO I like about InfoPath/SharePoint webforms?</p>
<h4>Point and Click form building</h4>
<p>Being able to manipulate forms in this way is very nice for a designer.  Dragging form elements and labels onto a page and deploying to SharePoint with a couple clicks is definitely nice.</p>
<h4>Form Views</h4>
<p>I like the idea of supporting multiple Form Views.  I was able to create a Form Submit rule that upon submission, the form could change to an alternate ‘view’.  For our contact forms, this allowed us to put a custom message to confirm the form was submitted, and hide the form from the user to prevent multiple submissions.  This also allowed us to create form-protected assets.  We can force a user to fill out a form, and upon submission be shown ‘protected’ content or links.  Pretty cool.</p>
<h4>Form Submit Rules</h4>
<p>I like the ability to build form logic using submit rules.  In my case, it was great because I could use the logic “if user clicks radio button ‘x’, use data connection ‘y’ to send email to a specific representative”.  I also like the flexibility of form validation rules and display that you can set on a per-field basis.</p>
<p>
</p>
<h4>Support of Browser-Based WebForms</h4>
<p>Thankfully you can set forms to appear as a normal browser-based webform.  It would be a shame if every user who visited the site had to have InfoPath installed to send a form.</p>

<h3>Any Other Gripes?</h3>
<p>Sorry, but yes…</p>
<h4>The InfoPath-Assigned Background Color</h4>
<p>Why can’t you just set the form to have NO background at all?  Well, I <strong>did</strong> set the form to have no background color, but it did no good.  I have a ton of transparency on the website as you can see, and a big ugly white background with padding and margins set by default around a webform caused me much pain.  These background and margin styles are inserted DIRECTLY into the markup as an element.style instead of a CSS class being assigned to the form.  This means I have to use the ‘!important’ css hack to override this default InfoPath styling to get the output I really want.  AND I have to go find EVERY instance of a form (of which I have many), copy the HUGE CSS ID to my clipboard and assign this style hack in the stylesheet.  This is NOT easily maintainable and a huge waste of time all around.  InfoPath developers: please just trust the developer using InfoPath Designer knows what they are doing, and don’t automatically assign styles.  If they want a white background and 30 pixels of margin, they can do that in the app.  REVERSING it however, now that is a pain.</p>
<h4>Required Fields Styling</h4>
<p>How about a little more control on what is shown to the user when indicating a required field.  Having a red-dashed outline around a required radio button selection is a bit confining if you ask me…..Allowing for a custom style to be created in InfoPath would be nice.  <strong>Or better yet</strong> allow a CSS Class to be assigned on a per-field basis and/or on a validation rule basis.  Then you can control it centrally through your stylesheet, and change EVERY webform on the site with one change.</p>
</div>
</div>
<div><b>Category:</b> <a onclick="OpenPopUpPage('http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=18&RootFolder=*', RefreshPage); return false;" href="http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=18&RootFolder=*">InfoPath</a>; <a onclick="OpenPopUpPage('http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=13&RootFolder=*', RefreshPage); return false;" href="http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=13&RootFolder=*">Lists</a>; <a onclick="OpenPopUpPage('http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=6&RootFolder=*', RefreshPage); return false;" href="http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=6&RootFolder=*">SharePoint 2010</a>; <a onclick="OpenPopUpPage('http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=15&RootFolder=*', RefreshPage); return false;" href="http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=15&RootFolder=*">Web Content Management</a></div>
<div><b>Published:</b> 8/30/2010 10:50 AM</div>
]]></description>
      <author>DJ Monzyk</author>
      <category>InfoPath; Lists; SharePoint 2010; Web Content Management</category>
      <pubDate>Tue, 24 Aug 2010 17:07:45 GMT</pubDate>
      <guid isPermaLink="true">http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/ViewPost.aspx?ID=45</guid>
    </item>
    <item>
      <title>Creating a Basic KnowledgeLake Index Extension</title>
      <link>http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/ViewPost.aspx?ID=46</link>
      <description><![CDATA[<div><b>Body:</b> <div class="ExternalClassF38142279ED84EF3B0C69CF1CF9E3C10"><p>One of the most common customizations to KnowledgeLake software is to customize the act of Indexing, or applying metadata to SharePoint documents. While KnowledgeLake software has always made these customizations possible, it has never been easier than with the newly redesigned Index component built into KnowledgeLake Imaging 4.0. </p>
<p>In this post, I will walk through how to create a very basic KnowledgeLake Index extension that will load a special default value into a DueDate column. This extension can easily be deployed for farm-wide use in the KnowledgeLake Imaging Index Edit Form, the KnowledgeLake Viewer, the KnowledgeLake Search Query Results Web Part and the KnowledgeLake Search Query Results built into the KnowledgeLake Search Center. This post assumes you have some existing Knowledge of programming with Visual Studio and some general, high level Knowledge of how the KnowledgeLake Index Behaviors integrate with SharePoint 2010's Content Types. </p>
<h2>Step 1: Creating the extension </h2>
<p>In order to create extensions for KnowledgeLake Index, you will need the following tools and Silverlight assemblies. Additionally, I will assume you are developing on your SharePoint server. This has become easier than ever since SharePoint 2010 can now be deployed on Windows 7! </p>
<ul><li>Microsoft Visual Studio 2010 </li>
<li>The Silverlight 4 developer runtime and tools for Visual Studio 2010. </li>
<li><div>The Microsoft SharePoint Silverlight Client Object assemblies. </div>
<ul><li>Microsoft.SharePoint.Client.Silverlight </li>
<li>Microsoft.SharePoint.Client.Silverlight.Runtime </li>
<li>System.Windows.Controls </li></ul></li>
<li><div>The KnowledgeLake Imaging Silverlight assemblies (found in the KnowledgeLake Imaging SDK or can be extracted from the KLViewer2.xap or KLEditForm.xap packages. </div>
<ul><li>KnowledgeLake.Silverlight </li>
<li>KnowledgeLake.Silverlight.Index.Client </li>
<li>KnowledgeLake.Silverlight.Index.Contracts </li>
<li>KnowledgeLake.Silverlight.Index.Controls (optional) </li></ul></li></ul>
<p>Start by creating a new <em>Silverlight</em> <em>application project</em> in Visual Studio. This will allow generation of a xap project to deploy to the SharePoint farm. The KnowledgeLake Index component is expecting the xap package to be titled <strong>KLIndexExtensions</strong>, so call it that. Additionally, add references to all of the assemblies listed above to your project. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082410_1859_CreatingaBa1.png" alt="" />  </p>
<p> </p>
<p class="MsoNormal">Create a new <b>ResourceDictionary</b> in your project and call it <b>CustomTemplates.xaml</b>.<span>  </span>For the purpose of being able to instantiate this class in code behind, add a <b>CustomTemplates.cs</b> class alongside of it.<span>  </span>This is where the meat of the extension will lie.<span>  </span>Add the code shown below into your <b>CustomTemplates.xaml</b>.<span>  </span></p>
<pre><span style="font-family:consolas;color:blue">&lt;</span><span style="font-family:consolas">ResourceDictionary</span><span style="font-family:consolas;color:red"> x</span><span style="font-family:consolas;color:blue">:</span><span style="font-family:consolas;color:red">Class</span><span style="font-family:consolas;color:blue">=&quot;KLIndexExtensions.Resources.CustomTemplates&quot;</span><span style="font-family:consolas"><br /><span>                    </span><span style="color:red">x</span><span style="color:blue">:</span><span style="color:red">ClassModifier</span><span style="color:blue">=&quot;public&quot;</span><br /><span>                    </span><span style="color:red">xmlns</span><span style="color:blue">=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span><br /><span>                    </span><span style="color:red">xmlns</span><span style="color:blue">:</span><span style="color:red">x</span><span style="color:blue">=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span><br />                   <span style="color:red"> xmlns</span><span style="color:blue">:</span><span style="color:red">System_Windows_Controls</span><span style="color:blue">=&quot;clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls&quot;</span><br /><span>                    </span><span style="color:red">xmlns</span><span style="color:blue">:</span><span style="color:red">converters</span><span style="color:blue">=&quot;clr-namespace:KLIndexExtensions.Converters;assembly=KLIndexExtensions&quot;</span><span>                                       </span><br />                   <span style="color:red"> xmlns</span><span style="color:blue">:</span><span style="color:red">KnowledgeLake_Silverlight_Index_Controls</span><span style="color:blue">=</span></span></pre>
<pre><span style="font-family:consolas"><span style="color:blue">			&quot;clr-namespace:KnowledgeLake.Silverlight.Index.Controls;assembly=KnowledgeLake.Silverlight.Index.Controls&quot;&gt;</span><br /><span>    </span><span style="color:blue">&lt;</span><span>KnowledgeLake_Silverlight_Index_Controls</span><span style="color:blue">:</span><span>IndexColumnTemplate</span><span style="color:red"> x</span><span style="color:blue">:</span><span style="color:red">Key</span><span style="color:blue">=&quot;CustomDateTemplate&quot;</span> <br />                  <span style="color:red">ColumnDataTypes</span><span style="color:blue">=&quot;DateTime&quot;</span><span style="color:red"> Modes</span><span style="color:blue">=&quot;Index, Modify&quot;</span><span style="color:red"> DisplayFormats</span><span style="color:blue">=&quot;DateOnly&quot;&gt;</span><span>        </span><br /><span>        </span><span style="color:blue">&lt;</span><span>StackPanel</span><span style="color:blue">&gt;</span><br /><span>            </span><span style="color:blue">&lt;</span><span>System_Windows_Controls</span><span style="color:blue">:</span><span>DatePicker</span><span style="color:red"> </span></span></pre>
<pre><span style="font-family:consolas"><span style="color:red">		SelectedDate</span><span style="color:blue">=&quot;{</span><span>Binding</span><span style="color:red"> Value</span><span style="color:blue">,</span><span style="color:red"> Mode</span><span style="color:blue">=TwoWay}&quot;</span><span style="color:red"> </span></span></pre>
<pre><span style="font-family:consolas"><span style="color:red">		Loaded</span><span style="color:blue">=&quot;OnDatePickerLoaded&quot; /&gt;</span><br /><span>        </span><span style="color:blue">&lt;/</span><span>StackPanel</span><span style="color:blue">&gt;</span><span>        </span><br /><span>    </span><span style="color:blue">&lt;/</span><span>KnowledgeLake_Silverlight_Index_Controls</span><span style="color:blue">:</span><span>IndexColumnTemplate</span><span style="color:blue">&gt;</span><br /><span style="color:blue">&lt;/</span><span>ResourceDictionary</span><span style="color:blue">&gt;</span></span></pre>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Next, we will go back to our <b>CustomIndexPanelTemplateLoader.cs</b> file and return a new instance of the <b>CustomTemplates </b>ResourceDictionary as shown (note that I decided to add my <b>CustomTemplates</b> ResourceDictionary to a <b>Resources</b> namespace within my application).</p>
<p class="MsoNormal" style="line-height:normal;margin-bottom:0pt"><span style="font-family:consolas;color:blue;font-size:10pt">using</span><span style="font-family:consolas;font-size:10pt"> System;<br /><span style="color:blue">using</span> System.Net;<br /><span style="color:blue">using</span> System.Windows;<br /><span style="color:blue">using</span> System.Windows.Controls;<br /><span style="color:blue">using</span> System.Windows.Documents;<br /><span style="color:blue">using</span> System.Windows.Ink;<br /><span style="color:blue">using</span> System.Windows.Input;<br /><span style="color:blue">using</span> System.Windows.Media;<br /><span style="color:blue">using</span> System.Windows.Media.Animation;<br /><span style="color:blue">using</span> System.Windows.Shapes;<br /><span style="color:blue">using</span> KnowledgeLake.Silverlight.Index.Contracts;<br /><span> </span><br /><span style="color:blue">namespace</span> KLIndexExtensions<br />{<br />    <span style="color:blue">public</span> <span style="color:blue">class</span> <span>CustomIndexPanelTemplateLoader</span> : <span>IIndexPanelTemplateLoader</span><br />    {<br />        <span style="color:blue">public</span> <span>ResourceDictionary</span> LoadTemplates()<br />        {<br />            <span style="color:blue">return</span> <span style="color:blue">new</span> KLIndexExtensions.Resources.<span>CustomTemplates</span>();<br />        }<br />    }<br />}</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Finally, add the code shown below to your <b>CustomTemplates.cs</b>.<span>   </span>The OnDatePickerLoaded event handler will handle anytime a column named “DueDate” is loaded without an existing value, the value will be populated with the first day of the following month.<span>  </span>Build the project, which will create <i>KLIndexExtensions.xap</i>.<span>  </span>This is the package that is deployed to the SharePoint farm for use with KnowledgeLake products.<span> </span></p>
<pre><span style="font-family:consolas;color:blue">using</span><span style="font-family:consolas"> System;<br /><span style="color:blue">using</span> System.Net;<br /><span style="color:blue">using</span> System.Windows;<br /><span style="color:blue">using</span> System.Windows.Controls;<br /><span style="color:blue">using</span> System.Windows.Documents;<br /><span style="color:blue">using</span> System.Windows.Ink;<br /><span style="color:blue">using</span> System.Windows.Input;<br /><span style="color:blue">using</span> System.Windows.Media;<br /><span style="color:blue">using</span> System.Windows.Media.Animation;<br /><span style="color:blue">using</span> System.Windows.Shapes;<br /><span style="color:blue">using</span> KnowledgeLake.Silverlight.Index.Controls.ViewModel;<br /><br /><span style="color:blue">namespace</span> KLIndexExtensions.Resources<br />{<br />    <span style="color:blue">public</span> <span style="color:blue">partial</span> <span style="color:blue">class</span> <span>CustomTemplates</span><br />    {<br />        <span style="color:blue">public</span> CustomTemplates() <br />        {<br />            InitializeComponent();<br />        }</span></pre>
<pre><span style="font-family:consolas"><br />        <span style="color:blue">private</span> <span style="color:blue">void</span> OnDatePickerLoaded(<span style="color:blue">object</span> sender, <span>EventArgs</span> e)<br />        {<br />            <span>DatePicker</span> dp = sender <span style="color:blue">as</span> <span>DatePicker</span>;<br />            <span>ColumnModel</span> model = dp.DataContext <span style="color:blue">as</span> <span>ColumnModel</span>;</span></pre>
<pre><span style="font-family:consolas"><br />            <span style="color:blue">if</span> (model.DisplayName == <span>&quot;DueDate&quot;</span> &amp;&amp; <span style="color:blue">string</span>.IsNullOrEmpty(model.Value))<br />            {<br />                <span>DateTime</span> dueDate = <span>DateTime</span>.Now.AddMonths(1);<br />                dueDate = <span style="color:blue">new</span> <span>DateTime</span>(dueDate.Year, dueDate.Month, 1);<br />                model.Value = dueDate.ToString(<span>&quot;o&quot;</span>);<br />            }<br />        }<br />    }<br />}</span></pre>
<p class="MsoNormal"> </p>
<h2>Step 2:<span>  </span>Deploying your extension xap package</h2>
<p class="MsoNormal">In order for KnowledgeLake Index enabled products to use this extension, it needs to be deployed to 2 different directories on every web front end server in the farm.<span>  </span>Deploy it to the following location to enable it for use in the KnowledgeLake Index Edit Form and KnowledgeLake Search.</p>
<p class="MsoListParagraph" style="text-indent:-0.25in"><span style="font-family:symbol"><span>·<span style="font:7pt &quot;times new roman&quot;">         </span></span></span>%SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLClientBin</p>
<p class="MsoNormal">Secondly, it must be deployed to a subdirectory of the KnowledgeLake Viewer to enable the extension in KnowledgeLake View.<span>  </span>This is because the Viewer resides in its own IIS application.</p>
<p class="MsoListParagraph" style="text-indent:-0.25in"><span style="font-family:symbol"><span>·<span style="font:7pt &quot;times new roman&quot;">         </span></span></span>%SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLViewer\ClientBin</p>
<p class="MsoNormal">Note that the default location of %SHAREPOINT_ROOT% is “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14”.<span>  </span>That’s it!<span>  </span>Your extension will now be picked up by KnowledgeLake products across your entire farm!</p>
<p> </p>
<p> </p>
<h2>Step 2: Deploying your extension xap package </h2>
<p>In order for KnowledgeLake Index enabled products to use this extension, it needs to be deployed to 2 different directories on every web front end server in the farm. Deploy it to the following location to enable it for use in the KnowledgeLake Index Edit Form and KnowledgeLake Search. </p>
<ul><li>%SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLClientBin </li></ul>
<p>Secondly, it must be deployed to a subdirectory of the KnowledgeLake Viewer to enable the extension in KnowledgeLake View. This is because the Viewer resides in its own IIS application. </p>
<ul><li>%SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLViewer\ClientBin </li></ul>
<p>Note that the default location of %SHAREPOINT_ROOT% is &quot;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14&quot;. That's it! Your extension will now be picked up by KnowledgeLake products across your entire farm! </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082410_1859_CreatingaBa3.png" alt="" />  </p>
<h2>Step 3: Debugging </h2>
<p>If only every extension were that easy! Inevitably, you'll want to be able to step into the extension code as you develop your extension. While there are many ways to accomplish this, I will show you a way I found easiest when developing extensions. Start by going to the properties page for your KLIndexExtensions.Web project created by the Visual Studio Wizard earlier. In the Web tab, choose a valid url where your extension will be hosted. I've chosen the KnowledgeLake Viewer here. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082410_1859_CreatingaBa4.png" alt="" style="width:610px;height:20px" />  </p>
<p>Under debuggers, select Silverlight and unselect ASP.NET. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082410_1859_CreatingaBa5.png" alt="" />  </p>
<p>Simply hit F5 and you will be able to set breakpoints and step into your code. I like to set up post build events to copy my xap to the destination directories on my development server, but make sure you remove them as needed for your team. </p>
<h2>Summary </h2>
<p>There are many ways to extend KnowledgeLake Index, and KnowledgeLake Index for Imaging 4 makes it easier than ever before. While deployment can be as simple as a copy operation, you could create a custom wsp solution for a multi WFE environment. For more information on creating wsp's, see this <a href="http://msdn.microsoft.com/en-us/library/ee231585.aspx">MSDN article</a>. For more complex Index scenarios and more development scenarios, please see the KnowledgeLake Imaging SDK, which will be available at the end of this month. </p></div></div>
<div><b>Published:</b> 8/25/2010 8:34 AM</div>
]]></description>
      <author>Steve Danner</author>
      <pubDate>Tue, 24 Aug 2010 19:02:18 GMT</pubDate>
      <guid isPermaLink="true">http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/ViewPost.aspx?ID=46</guid>
    </item>
    <item>
      <title>Imaging 4.0 Rx for SharePoint 2010 Health Monitoring and Analysis</title>
      <link>http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/ViewPost.aspx?ID=43</link>
      <description><![CDATA[<div><b>Body:</b> <div class="ExternalClassA4DF1F08F48045C08DE17143CC505B55"><p>SharePoint Foundation (aka WSS v4) comes with some new monitoring and analysis features to give administrator better control over activity and performance of SharePoint 2010 Farm via rules (SharePoint Maintenance Engine) and reporting. At KnowledgeLake we knew we needed a little something extra to effectively support our SharePoint and KnowledgeLake implementations, enter the KnowledgeLake Log Viewer, a Microsoft Silverlight application. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx1.png" alt="" /> </p>
<h3>Unified Logging Service and Diagnostic Logging </h3>
<p>As with MOSS 2007 the ULS (Unified Logging Service) is still with us in SharePoint 2010 but the administration of Event Throttling (figure 1) has improved with in the Configuration of Diagnostic Logging UI. An Event Log Flood Protection (figure 2) feature has been included to detect duplicate events from flooding the ULS logs. Additionally, you can administer the threshold (figure 3) for day to store the files before purging and space usage. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx2.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 1 - Event Throttling </strong></span></p>
<p> </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx3.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 2 - Event Log Flood Protection </strong></span></p>
<p> </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx4.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 3 - Trace Log </strong></span></p>
<p> </p>
<h3>KnowledgeLake Monitoring </h3>
<p>KnowledgeLake knows full well that with the plethora of features and functionality SharePoint 2010 provides come issues that will need to be supported and resolved. With this new version of Imaging, our flag ship product, we included a much needed and missing SharePoint administration feature, the KnowledgeLake Log Viewer. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx5.png" alt="" /> </p>
<p>In the past we used Notepad to glean through the ULS logs (figure 4), and spent an inordinate amount of time doing so. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx6.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 4 - Notepad </strong></span></p>
<p>With the KnowledgeLake Log Viewer we can now load the ULS logs, the event logs or a combination of both. We can specify a date and time range, sort, filter, import and export logs from and to XML and set a limit count (figure 5, 6, 7). </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx7.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 5 - KnowledgeLake Log Viewer </strong></span></p>
<p> </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx8.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 6 - Filter and Features </strong></span></p>
<p> </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx9.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 7 - XML ULS Export </strong></span></p>
<p> </p>
<p>The XML export can be opened in Microsoft Excel (figure 8) and we can use this to build a knowledge base on problem resolution. This XML export is also an invaluable tool for the KnowledgeLake support team and can be submitted as an attachment to a support ticket on the KnowledgeLake Support web site. </p>
<p><img src="/sharepoint-ecm-blog/Lists/Photos/082310_2051_Imaging40Rx10.png" alt="" /> </p>
<p><span style="color:rgb(79, 129, 189);font-size:9pt"><strong>Figure 8 - Viewing with Excel </strong></span></p>
<p> </p>
<h3>Resolving the Issue </h3>
<p>Using the well formatted ULS entry of the KnowledgeLake Log Viewer we were able to diagnose the Object Cache issue by creating/configuring the settings for a Portal Super User and Portal Super Reader. We followed the instructions from this Microsoft TechNet Article - <a href="http://technet.microsoft.com/en-us/library/ff758656.aspx">Configure Object Cache User Accounts</a>. </p>
<p> </p>
<h4>About the Author </h4>
<p>Jeff Borghoff is a Sr. Technical Architect at KnowledgeLake and is CDIA+, MCTS: WSS &amp; MOSS and AIIM SharePoint<sup>P</sup> certified.</p></div></div>
<div><b>Category:</b> <a onclick="OpenPopUpPage('http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=5&RootFolder=*', RefreshPage); return false;" href="http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=5&RootFolder=*">Imaging for SharePoint</a>; <a onclick="OpenPopUpPage('http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=6&RootFolder=*', RefreshPage); return false;" href="http://www.knowledgelake.com/sharepoint-ecm-blog/_layouts/listform.aspx?PageType=4&ListId={C37B74CA-F4AE-4D87-BA19-D872D00FC6C6}&ID=6&RootFolder=*">SharePoint 2010</a></div>
<div><b>Published:</b> 8/24/2010 8:26 AM</div>
]]></description>
      <author>Jeff Borghoff</author>
      <category>Imaging for SharePoint; SharePoint 2010</category>
      <pubDate>Mon, 23 Aug 2010 20:50:28 GMT</pubDate>
      <guid isPermaLink="true">http://www.knowledgelake.com/sharepoint-ecm-blog/Lists/Posts/ViewPost.aspx?ID=43</guid>
    </item>
  </channel>
</rss>