<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>EduGeek.net - Blogs - jamesb</title>
		<link>http://www.edugeek.net/blogs/jamesb/</link>
		<description><![CDATA[EduGeek.net - The I.T. professionals' life line]]></description>
		<language>en</language>
		<lastBuildDate>Tue, 21 May 2013 18:41:55 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>2</ttl>
		<image>
			<url>http://staticc3.cdngeek.net/images/misc/rss.jpg</url>
			<title>EduGeek.net - Blogs - jamesb</title>
			<link>http://www.edugeek.net/blogs/jamesb/</link>
		</image>
		<item>
			<title>Customizing SharePoint Usage Stats - Part Three</title>
			<link>http://www.edugeek.net/blogs/jamesb/650-customizing-sharepoint-usage-stats-part-three.html</link>
			<pubDate>Wed, 23 Feb 2011 09:43:48 GMT</pubDate>
			<description><![CDATA[Revisiting this, we may now be going down a completely different path (which I feel little, if any, regret about). We're looking at a third party...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Revisiting this, we may now be going down a completely different path (which I feel little, if any, regret about). We're looking at a third party solution which would do exactly what I want it to do. The only problem is the price, and the fact that only the Enterprise license provides the required API. On the other hand I think I can justify the price tag as to build anything more than simple, static reports ourselves, let alone coming close to what this one provides, would take six months at a bare minimum and probably longer.<br />
 <br />
It's also worth noting, for those who are looking to do some more detailed SharePoint usage reporting on SP2007, that they also have a Lite version available for free.<br />
 <br />
The product's CardioLog and I'd be interested to know if anyone has prior experience of this or any other information which might be useful. I'm currently trying to schedule a phone call with them to discuss requirements and will be able to update after that.</blockquote>

]]></content:encoded>
			<dc:creator>jamesb</dc:creator>
			<guid isPermaLink="true">http://www.edugeek.net/blogs/jamesb/650-customizing-sharepoint-usage-stats-part-three.html</guid>
		</item>
		<item>
			<title>Customising SharePoint Usage Stats - Part Two Code</title>
			<link>http://www.edugeek.net/blogs/jamesb/641-customising-sharepoint-usage-stats-part-two-code.html</link>
			<pubDate>Fri, 18 Feb 2011 09:56:37 GMT</pubDate>
			<description>Code: 
--------- 
SPFarm farm = this.Farm; 
int intTime; 
foreach (SPService service in farm.Services) 
{ 
if (service isSPWebService) 
{...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<pre class="bbcode_code"style="height:300px;"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPFarm</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> farm = </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">this</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2">.Farm;</font></span>
</font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">int</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> intTime;</font></span>
</font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">foreach</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (</font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPService</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> service </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">in</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> farm.Services)</font></span>
<font size="2"><span style="font-family: Consolas">{</span></font></font></span>
<div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">if</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (service </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">is</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPWebService</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2">)</font></span>
<font size="2"><span style="font-family: Consolas">{</span></font></font></span>
<div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPWebService</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> webService = (</font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPWebService</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2">)service;</font></span>
</font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">foreach</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (</font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPWebApplication</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> webApplication </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">in</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> webService.WebApplications)</font></span>
<font size="2"><span style="font-family: Consolas">{</span></font></font></span>
<div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">foreach</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (</font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPSite</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> site </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">in</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> webApplication.Sites)</font></span>
<font size="2"><span style="font-family: Consolas">{</span></font></font></span>
<div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">OrganizationProfileManager</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> organizationManager = </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">new</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">OrganizationProfileManager(</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">SPServiceContext</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2">.GetContext(site));</font></span>
</font></span></div><div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">OrganizationProfile</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> root = organizationManager.RootOrganization;</font></span></font></span></div></div></div></div><div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">foreach</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (</font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">OrganizationProfile</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> organizationProfile </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">in</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> root.GetChildren())</font></span>
<font size="2"><span style="font-family: Consolas">{</span></font></font></span>
<div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">if</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (!(listOrganizations.Contains(organizationProfile)))</font></span>
<font size="2"><span style="font-family: Consolas">{listOrganizations.Add(organizationProfile);</span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2">}</font></span></font></span></div><span style="font-family: Consolas"><font size="2"><font size="2"><span style="font-family: Consolas">}</span></font>
</font></span></div></div></div><div style="margin-left:40px"><div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font size="2"><span style="font-family: Consolas">}</span></font></font></span></div><span style="font-family: Consolas"><font size="2">}</font></span>
<span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">foreach</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> (</font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">OrganizationProfile</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> organizationProfile </font></span></font></span><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff"><span style="font-family: Consolas"><font size="2"><font color="#0000ff">in</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2"> listOrganizations)</font></span>
<font size="2"><span style="font-family: Consolas">{
<div style="margin-left:40px">AddOrgPairing(organizationProfile.ID.ToString(), organizationProfile.GetImmediateMembers().ToList&lt;</div></span></font>
</font></span>
<div style="margin-left:40px"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af"><span style="font-family: Consolas"><font size="2"><font color="#2b91af">UserProfile</font></font></span></font></font></span></font></font></span><span style="font-family: Consolas"><font size="2"><span style="font-family: Consolas"><font size="2">&gt;());</font></span>
</font></span></div><span style="font-family: Consolas"><font size="2"><font size="2"><span style="font-family: Consolas">}</span></font></font></span></div><span style="font-family: Consolas"><font size="2"><font size="2"><span style="font-family: Consolas">}</span></font></font></span></div><span style="font-family: Consolas"><font size="2">}</font></span></pre>
</div></blockquote>

]]></content:encoded>
			<dc:creator>jamesb</dc:creator>
			<guid isPermaLink="true">http://www.edugeek.net/blogs/jamesb/641-customising-sharepoint-usage-stats-part-two-code.html</guid>
		</item>
		<item>
			<title>Customising SharePoint Usage Stats - Part Two</title>
			<link>http://www.edugeek.net/blogs/jamesb/640-customising-sharepoint-usage-stats-part-two.html</link>
			<pubDate>Thu, 17 Feb 2011 09:24:57 GMT</pubDate>
			<description><![CDATA[Due to some, ahem, technical difficulties with getting the custom usage provider to actually trigger (registering wasn't a problem, and it did...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Due to some, ahem, technical difficulties with getting the custom usage provider to actually trigger (registering wasn't a problem, and it did intercept the event, just never actually triggered it's own handler so I essentially spent several days in order to write a solution which comprehensively breaks usage logging) I've been re-evaluating my approach to this.<br />
 <br />
New method will still involve logging organisation IDs along with users (any direct memberships get logged with the user, chains are ignored to simplify report filtering), but will log these to a dedicated SQL table in the WSS_Logging database, along with Content Type details, and the custom fields of documents. Then it should be a simple case of creating View and Reports which leverage all of this and pipe them into SharePoint. I'll be putting the code up here once I know it's working.<br />
 <br />
Update - The code is now up in another blog entry, unfortunately it was too long to include in this one. Currently uncommented but essentially just collates the data required, processes it, fires it off to a couple of methods in order to turn the data into stored procedure calls for SQL, finds the local logging database for SQL and drops the data in through the stored procedures. The stored procedures are there to make sure that entries are updated rather than duplicated if they already exist.</blockquote>

]]></content:encoded>
			<dc:creator>jamesb</dc:creator>
			<guid isPermaLink="true">http://www.edugeek.net/blogs/jamesb/640-customising-sharepoint-usage-stats-part-two.html</guid>
		</item>
		<item>
			<title>Customising SharePoint Usage Stats - Part One</title>
			<link>http://www.edugeek.net/blogs/jamesb/632-customising-sharepoint-usage-stats-part-one.html</link>
			<pubDate>Mon, 14 Feb 2011 09:42:47 GMT</pubDate>
			<description><![CDATA[One of the first tasks I've been faced with in my new job is to get some sort of SharePoint usage reporting working. At first I thought this would be...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">One of the first tasks I've been faced with in my new job is to get some sort of SharePoint usage reporting working. At first I thought this would be nice and easy, after all, SharePoint comes with a nice set of usage reporting which could simply be plugged in to some custom reporting modules - easy, yes?<br />
 <br />
No. The problem comes in that they want reporting for groups of users. These groups are currently ill-defined, conceptual groupings, so part of the first challenge is to deal with that by getting user management set up. For the time being I've put that off while I concentrate on a method for getting the reports working at all, with the added information that's required. After some hours of hunting I did manage to find <a href="http://blogs.msdn.com/b/tejasr/archive/2010/12/26/customizing-web-analytics-in-sharepoint.aspx" target="_blank">this lovely post</a> which was enough to make a start at least.<br />
 <br />
So after numerous meetings we have now settled on the actual information that needs to be reported, and I've thrown together a quick and dirty system design which'll allow for all of the stats processing to be done away from the SharePoint farm other than the initial collection. So far I've only got the usage receiver itself coded, since interfaces need to go through a few more discussions (Silverlight or no Silverlight, how customizable do the reports need to be, and so on) but I do at least seem to be getting a nice lost of HTTP posts going out with the information and can start building a web service to receive and log them.<br />
 <br />
If nothing else this should at least keep me out of trouble for a while. Any suggestions or ideas others might have, either for this area or the user management, are more than welcome.</blockquote>

]]></content:encoded>
			<dc:creator>jamesb</dc:creator>
			<guid isPermaLink="true">http://www.edugeek.net/blogs/jamesb/632-customising-sharepoint-usage-stats-part-one.html</guid>
		</item>
	</channel>
</rss>
