Archive for the ‘ SharePoint ’ Category

#SPSVAN – SharePoint Saturday Vancouver 2010 – Successful Community Event

I just want to give a BIG SHOUT OUT to everyone who organized, presented, participated and attended VANSPUG‘s SharePoint Saturday in Vancouver (#SPSVAN). This is honestly one of the most organized, professional community I’ve attended in the last little while. All the sessions I attended were excellent, and yes – you do get that warm touchy-feely feeling after the event that kind of feels like you attended some kind of reunion (saw and talked to @jasonklatt too – we went to BCIT CST in the same batch! Although we were not in the same set, we were in the same labs).

Thank you to our presenters, including Todd Klindt (@toddklindt), Sean McDonough (@spmcdonough), Cathy Dew (@catpaint1) and Yaroslav Pentsarskyy (@spentsarsky) :) who devoted time and energy in coming to Vancouver, and presenting excellent materials to the inquisitive Vancouver techie community.

I know it’s been a lot of work for everyone who made this happen, especially the event chairs Sherman Woo (@SPSherm) and Michal Pisarek (@MichalPisarek). But I can’t say enough that it’s been a GREAT event. They gave out lots of cool prizes:
– Telerik Ultimate Suite Licenses
– Critical Path Training voucher
– Amazon Kindles
– Dell LCD Monitors
– Microsoft keyboard/mouse
– Bamboo Store Certificate
– KWizcom Store Certificates
– Awesome SharePoint books – including Todd Klindt’s Wrox SharePoint Administration 2010 book, Sean McDonough’s SharePoint 2010 Disaster Recovery book, and Yaroslav Pentsarskyy’s (@spentsarsky) Top 60 Custom Solutions built on Microsoft SharePoint Server 2010 . … (yes, yes, all awesome books but Lady Luck was not with me today so I didn’t win any …)

Generous sponsors include AvePoint, Habanero Consulting Group, K2, Quest Software, WPCG, Colligo Networks, Idera – and in our own little way – Black Ninja Software. Shereen (blog | twitter) and I would have wanted to present as well, but sometimes 24 hours is just not enough in a day :)

As someone who is part of the community – thank you again – for making this happen. And I just want to reiterate – this is an excellent community event – to share knowledge and experiences – and I look forward to more in the future. I look forward to being more active myself in the future.

And if you happen to be reading my blog, let’s continue supporting VANSPUG. It’s a great community initiative.

Here’s just a few points worth noting in the sessions I attended:

Upgrading SharePoint 2007 to SharePoint 2010 by Todd Klindt

– Never have your only resume on SharePoint :)
– When upgrading, key type should be the same. Ie, Trial 2007 to Trial 2010, or Enterprise 2007 to Enterprise 2010
– Some goofiness even after visual upgrade, for example, broken breadcrumbs
– MySite upgrade is a whole different story. The MySite site collection is upgraded – but the MySite Host is not. Also, links in mysites do get lost ..
– (eherm) .. DBAs are sometimes not gracious hosts, so you need to plan when your DB detach/attach is going to happen.
– DB attach with AAM redirect – option for Terabyte databases/big sites and site collections
– PowerShell, baby! — when you’re upgrading multiple sites.

Saving SharePoint by Sean McDonough

– RPO (Recovery Point Objective), RTO (Recovery Time Objective), RLO (Recovery Level Objective)
– At the end of the day, the questions to ask are what does your business need to be back in the event of the disaster? What is the money you stand to lose if your system is down x amount of hours?
– Content is king. Protect your king.
– When applying Service Packs, patches and hotfixes, do a Central Admin backup before and after the patch.
– Your site collections can be big – terabytes big – SharePoint can handle that, but backup becomes the boundary. You just need to plan your backup and recovery. How long will it take for you to backup the whole thing?
– For big site collections, worth looking at Remote Blob Storage solutions.
– Be careful with VM snapshots and cloning. Always test, test, test. Consistency is key.
– SharePoint 2010 is mirroring aware.
– There is a PowerShell script that can help you document your SharePoint sites. It runs for a long time, but it’s worth it. Here’s the link (
– Have confidence in your solution. And confidence is gained through testing.
– If you need to back up on the cloud, check RackSpace.

Making PowerShell Less Scary for the SharePoint Administrator by Todd Klindt

(I love PowerShell. It rocketh. To the nth degree. (Ok, ok, I know I sound very geeky. I’ll stop))
– Task driven learning is an effective way to learn PowerShell. Have a task at hand. See how that can be done in PowerShell.
– Your friends are Get-Help, Get-Command, Get-Member
– When doing EnumWebs, and you want to see all, use -LIMIT ALL
– Make sure you dispose any SP objects properly, use Start-SPAssignment -Global, then your code, then Stop-SPAssignment
– Few tasks you can do with SP and Powershell:
– Activate features across site collections
– Provisioning of Managed Accounts
– Create new sites
– Backup all site Collections

VN:F [1.9.22_1171]
Rating: 10.0/10 (8 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Now that you have collected all your information in your SharePoint lists, your business users will want to see reports off them.

You may want to leverage SQL Server Reporting Services for this (I would! I’d love to use SSRS for all the reports I need to create!), but we know it’s not an easy task.
Your options are:
Read the rest of this entry »

VN:F [1.9.22_1171]
Rating: 7.5/10 (38 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 4 votes)

I just wrote a couple of SharePoint posts at the Black Ninja Software blog:

How to Programmatically Impersonate Users in SharePoint
– this post shows how you can programmatically execute code in another user’s context, and you can do this by getting a handle to that user’s UserToken

How to Invoke Javascript Snippets Without Using RegisterClientScriptBlock
– this post shows how to invoke and change Javascript code without needing to register that code. This approach uses asp:Literal

And in case you missed this one:
SharePoint Readiness Checklist – Reposted

VN:F [1.9.22_1171]
Rating: 10.0/10 (3 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Powershell Script to Add ActiveDirectory (AD) Users

Been a while since I blogged on SharePoint. For the past year I have been more involved in DBA work, and have been more active in my other blog (

Anyway, here is an old script I have been meaning to post:

#* FileName:  PowerShellTemplate.ps1
#* Created:     [11 December 2007]
#* Author:      Donabel Santos
#* Reqrmnts:   
#* Keywords:   
#* Purpose:    
#* This Powershell script queries ActiveDirectory for OU-specific
#* users and inserts those users as new records in a Sharepoint
#* out-of-the-box Contact List
#Powershell Script that queries a specific OU in AD,
#and populates the Contact List
#based on the members that are queried
#This needs to be run on the MOSS Server because the
#SP Object Model cannot be invoked remotely
#Step 1: Install Powershell RC2
#Step 2: Set Execution Policy to RemoteSigned (uncomment below)
#Set-ExecutionPolicy RemoteSigned
#Step 3: Set the following variables
$siteUrl = "http://moss/sites/test"
$ou = "LDAP://OU=My Group,OU=Guest Users,DC=domain,DC=ca"
#Step 4: Run this script on Powershell on the Sharepoint Server
#Rest of code follows
#Load Sharepoint DLL
#we want to query just the top web of the "test" site collection
$webName = ""
#create a site object
$spSite = new-object Microsoft.SharePoint.SPSite($siteurl)
#the following just displays URL, ID, Name and Users in a table format
$spSite.AllWebs | format-table Url, ID, Name, AllUsers
#open web
$spWeb = $spSite.OpenWeb($webName)
#we want to get a handle on contacts
$listName = "Contacts"
#get a handle to the Contacts list
$spList = $spWeb.lists[$listName]
#Create an AD DirectorySearcher object
$searcher = new-object DirectoryServices.DirectorySearcher([ADSI]"$ou")
#sample filter below, if you need to filter further
#$searcher.filter = "(&(objectClass=user)(givenName=Belle))"
#find all that matches
$groups = $searcher.findall()
#the following for loop just displays
@(foreach($group in $groups)
    [string]$firstname = $
    [string]$lastname = $
    if (($firstname.length -gt 0) -and ($lastname.length -gt 0))
       "Given Name:{0} {1}" -f  $firstname, $firstname.length
#this code block inserts the AD user as a new user 
#into the Sharepoint Contact list
@(foreach($group in $groups)
    #extract all properties we need first
    #add fields here if necessary
    [string]$name = $
    [string]$firstname = $
    [string]$lastname = $
    [string]$company = $
    [string]$email = $
    [string]$objectclass = $
    [string]$distinguishedname = $
    #now add this to the sharepoint list only if first name 
    #and last name are not empty
    #add fields here if necessary
    if (($firstname.length -gt 0) -and ($lastname.length -gt 0))
       $spitem = $spList.Items.Add()
       $spitem["Last Name"] = $lastname
       $spitem["First Name"] = $firstname
       $spitem["Company"] = $company
       $spitem["E-mail Address"] = $email
#voila! we're done!
VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Victoria Code Camp Materials

Sorry I have been sick and out of commission for a week. The past few days, I’ve been drinking the meds the doctor gave me, which just really knocks me right out.

I apologize for the delay, but here are the materials, finally.

SharePoint 101

SharePoint 101 – Slides

SharePoint Web Parts

SharePoint Web Parts 101 – Slides

SharePoint Web Part Sample Projects:

1. Hello World Web Part

2. Simple Web Part with Custom Properties and Verbs

3. Connectable Web Parts

Enjoy! I’ll start blogging more again, as soon as I’m 100% better :)

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Victoria Code Camp Stuff Coming Really Soon!

The Victoria Code Camp last weekend had been awesome! The location was great, and the attendees were awesome. They were all attentive and curious, and they even laughed at some of my jokes ?

I have been really sick the past couple of days, but I will be posting the materials/slides and demo code soon. I plan to have it up by tomorrow!

And please feel free to keep the questions coming in :) It makes my work a lot more interesting!

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Victoria Code Camp, January 26, 2008

I’m doing a couple of sessions at the Victoria Code Camp on January 26, 2008! Thank you to Nolan Zak for giving me this opportunity.

These are my two sessions:

SharePoint 101
This session will provide a high level overview of Windows Sharepoint Services 3.0 and Microsoft Office Sharepoint Server (MOSS 2007). This session will also cover demos of out-of-the-box Sharepoint components like: sites, lists, document libraries, and web parts.

SharePoint Web Parts
This session will cover Web Part concepts, and will walk you through creating custom ASP.NET Web Parts for SharePoint (MOSS 2007, WSS 3.0). Features will also be introduced towards the end of the session.

Schedule is posted at
The list of speakers can be found at

Just posting the schedule here as well for your reference:

Morning Schedule

Afternoon Schedule

As usual, I will be posting the materials I will use at the presentations. Hope to see you there! Beautiful Victoria, here I come!

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

LoadWithPartialName Deprecated

Apparently LoadWithPartialName is deprecated in v3
#replace this

#in WSS/v3, this should be
[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c")

#in MOSS/v3, this should be
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Portal, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c")

Have to say though, I’m loving Powershell.

Found another couple good Powershell/Sharepoint blogs:

Colin Byrne’s Adventures in SP Wonderland (
Darrin Bishop’s Blog (

Darrin has a cool demo code that:

  • Installs a feature
  • Creates sub sites from a configuration file
  • Adds the feature to the sub sites
    Finds the sub sites with the feature
  • Removes the feature from the sub site
  • Deletes the sites
  • Uninstalls the feature.
VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)