#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 (http://technet.microsoft.com/en-us/library/ff645391.aspx).
– 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

Creating Reports From SharePoint Lists Using SQL Server Reporting Services (SSRS)

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:
Continue reading

BlackNinja Posts: Invoking Javascript and Impersonating Users in SharePoint

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

How to Add a Date Filter to a BDC

for Tammie, apologies for the late reply. i hope you will still find this useful.

I’ve worked with BDCs quite a bit, especially when MOSS was still very new (B2, B2TR, Gold Code, and RC). This is the only way I’ve gotten Date Filters to work in BDCs.

1. In the <FilterDescriptors> section, add your date filter descriptor.

<FilterDescriptor Type="Comparison" Name="Date Entered">
    <Property Name="Comparator" Type="System.String">Equals</Property>

2. In the <Parameters> section, add 2 parameters: a low date boundary, and a high date boundary

<Parameter Direction="In" Name="@min_date_entered">
  <TypeDescriptor TypeName="System.DateTime" AssociatedFilter="Date Entered" Name="min_date_entered">
      <DefaultValue MethodInstanceName="MyListFinder" Type="System.DateTime">2000-01-01 01:01:01Z</DefaultValue>
      <DefaultValue MethodInstanceName="MyListSpecificFinder" Type="System.DateTime">2000-01-01 01:01:01Z</DefaultValue>
<Parameter Direction="In" Name="@max_date_entered">
  <TypeDescriptor TypeName="System.DateTime" AssociatedFilter="Date Entered" Name="max_date_entered">
      <DefaultValue MethodInstanceName="MyListFinder" Type="System.DateTime">3000-01-01 01:01:01Z</DefaultValue>
      <DefaultValue MethodInstanceName="MyListSpecificFinder" Type="System.DateTime">3000-01-01 01:01:01Z</DefaultValue>

3. For the list of return values, add your datetime column

<Parameter Direction="Return" Name="MyList">
  <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="MyListDataReader">
      <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="MyListDataRecord">

<TypeDescriptor TypeName=“System.String” IdentifierName=“my_id” Name=“my_id”>
<LocalizedDisplayName LCID=“1033”>CA ID</LocalizedDisplayName>

<TypeDescriptor TypeName=“System.DateTime” Name=“date_entered”>
<LocalizedDisplayName LCID=“1033”>Date Entered</LocalizedDisplayName>
<Property Name=“DisplayByDefault” Type=“System.Boolean”>true</Property>


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 🙂

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!

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 http://www.victoriacodecamp.com/SessionSchedule.aspx.
The list of speakers can be found at http://www.victoriacodecamp.com/CampSpeakers.aspx

Just posting the schedule here as well for your reference:

Morning Schedule
Victoria Code Camp 2008 - AM Schedule

Afternoon Schedule

Victoria Code Camp 2008 - 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!

v2 and v3 Web Parts in Site Definitions (onet.xml)

I am creating a site definition that involves both v2 and v3 web parts. Going through standard tutorials on creating site definitions, I copied and used the sts folder – which had only v2 web parts.

A v2 web part in onet.xml has the following format:

<alluserswebpart webpartzoneid="Right" webpartorder="1"><![CDATA[     <webpart xmlns="http://schemas.microsoft.com/WebPart/v2">      <assembly>Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c</assembly>      <typename>Microsoft.SharePoint.WebPartPages.MembersWebPart</typename>      <title>$Resources:wp_Members;</title>      <description>$Resources:wp_Members_Desc;</description>      <frametype>Standard</frametype>      <isvisible>true</isvisible>   </webpart>]]></alluserswebpart>

I needed to add a v3 (custom web part) to the site definition. Of course the format above will not work (and I learned this through some trial and error).

So a v3 webpart looks in onet.xml looks like the following:

<AllUsersWebPart WebPartZoneID="LeftNavBar" WebPartOrder="1"><![CDATA[    <webParts>      <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">         <metaData>            <type name="YourCompany.SharePoint2007.SideNav.SiteNav, YourCompany.SharePoint2007.SiteNav, Version=, Culture=neutral, PublicKeyToken=e2c0c4fc62593f5e" />         <importErrorMessage>Cannot import this Web Part.</importErrorMessage>         </metaData>         <data>            <properties>               <property name="Title" type="string">Site Navigation</property>            </properties>         </data>      </webPart>   </webParts>]]>                  </AllUsersWebPart>