Welcome to my blog on all things SharePoint. I have a range of articles that will interest you if you've made it as far as visiting my blog. I was awarded as an SharePoint MVP by Microsoft in July 2010. I currently live in New York and am an Enterprise Architect at AvePoint Inc.. I co founded www.NothingButSharePoint.com with Mark Miller in 2010.

MVP AwardJeremy Thake Profile Photo

Whitepapers

NBSP

Check out my articles on NothingButSharePoint.com

Solution Development in SharePoint 2007

This series was inspired by the chatter amongst SharePoint blogs on the best ways to approach customisations in SharePoint using Solutions.

Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8

Leveraging the SharePoint Platform

This series was inspired by a discussion had with Andrew Coates at a Perth SharePoint User Group meeting. This then turned into a 6 part series on Arno Nell's SharePointMagazine.net web site.

Initial post - Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6

Webcasts

I have recorded various web casts that I present at User Groups or just on a specific topic by request:
How ASP.NET Developers can leverage SharePoint webcast
SPSource Webcast: Reverse engineer Lists to ListTemplates and much more
SharePoint Development with Unit Testing webcast
Perth SharePoint UG Web Cast on approaches to deploying artefacts (SPSource)
More...


Podcasts

I have been interviewed about Leveraging the SharePoint Platform by the SharePoint Pod Show: listen here .

RSS Feed Feed your read!

Archives

November 2012 (6)
October 2012 (8)
September 2012 (4)
August 2012 (7)
July 2012 (13)
June 2012 (4)
March 2012 (1)
February 2012 (1)
January 2012 (5)
September 2011 (2)
August 2011 (1)
July 2011 (3)
June 2011 (7)
May 2011 (3)
April 2011 (3)
March 2011 (3)
February 2011 (2)
January 2011 (1)
December 2010 (4)
September 2010 (4)
July 2010 (5)
June 2010 (4)
May 2010 (6)
April 2010 (7)
March 2010 (5)
February 2010 (7)
January 2010 (3)
December 2009 (1)
November 2009 (6)
October 2009 (9)
September 2009 (7)
August 2009 (6)
July 2009 (13)
June 2009 (4)
May 2009 (12)
April 2009 (4)
March 2009 (4)
February 2009 (13)
January 2009 (4)
December 2008 (4)
November 2008 (11)
October 2008 (16)
September 2008 (4)
August 2008 (5)
July 2008 (4)
June 2008 (8)
May 2008 (5)
April 2008 (9)
March 2008 (5)
February 2008 (6)
January 2008 (1)
November 2007 (11)
October 2007 (8)
September 2007 (24)
August 2007 (5)
July 2007 (2)
May 2007 (1)
April 2007 (1)
March 2007 (1)
February 2007 (3)
January 2007 (4)
November 2006 (7)
October 2006 (7)
September 2006 (18)
August 2006 (14)
June 2006 (3)
May 2006 (8)
April 2006 (4)
March 2006 (38)
February 2006 (30)
January 2006 (2)
December 2005 (3)
November 2005 (28)
May 2005 (1)
April 2005 (5)
March 2005 (1)
November 2004 (1)
August 2004 (11)
July 2004 (1)
Failed to render control: An error occurred during a call to extension function 'createMonthUrl'. See InnerException for a complete description of the error.

Links

Tag Cloud

Ajax, Apple, DotNetNuke, Enterprise Content Management, Error Resolution, Gadgets, General, Governance, Microsoft .Net Development, Mobile, SharePoint, Sharepoint Business Forms, Sharepoint Business Intelligence, Sharepoint Collaboration, SharePoint Development, Sharepoint Enterprise Content Management, Sharepoint Enterprise Search, Sharepoint Portal, US Migration, Web 2.0, Workflow
May 142010

Photos from Perth SharePoint User Group: Office Launch #ANZOfficeLaunch

We had a great Perth SharePoint User Group meeting this week for the launch day. Sezai Komur did an awesome session on Upgrading to SharePoint 2010 with a sample SharePoint 2007 site live in his presentation! Got some good laughs too as he wrote a web part that picked the winners of the raffle prizes.

We had reasonable amount of luck with the LiveMeeting call with the other states, but unfortunately as Microsoft Perth offices don’t have a presentation room, we couldn’t leverage the cool gear the other states had such as RoundTables to show off our HUGE crowd! Well it was bigger than Adelaide’s anyway LOL

I’ve uploaded Sezai’s screencast on SharePointDevWiki.com webcasts area if you missed out.

See the photos below.

 

The crowd listening to Sezai and sipping down some Coronas ;-)

 

Sezai presenting and having a Corona ;-)

Jack “mr lucky” Doan winning his XBOX prize sponsored by AvePoint!

Benny Unaroma wins the free pass to the Australian SharePoint conference next week.

Bhavik Merchant from CSG winning a bottle of wine.

Mike Stringfellow wins a TypeMock Isolator license!

Ian missed out on a TypeMock license because he was in the toilet! But we gave him a bottle of wine instead!

Clayton Dorrington from Clayko Group winning a bottle of wine.

Andreas Gesellmann winning  a $100 voucher sponsored by CSG.

Chee Ng winning a Resharper license holding the invisible certificate ;-)

 

Published: 5/14/2010  11:25 PM | 0  Comments | 0  Links to this post

Nov 252009

CKS:EBE 2.0 feedburner bug

I found an error with CKS:EBE 2.0 which I submitted to CodePlex Issues.

So I finally worked out what was wrong with my CKS:EBE 2.0 SharePoint blog and links coming off of Twitter which is feed from my Feedburner.com RSS feed. Turns out Feedburner in their wisdom have added some querystring goodness to the urls potentially for tracking ability.

http://wss.made4the.net/archive/2009/11/21/pspugwebcastNOV09.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Made4thenet+%28wss.made4the.net%3A+by+Jeremy+Thake+%28Perth%2C+AUS%29%29&utm_content=FeedBurner

You’ll see an error like: 
”Failed to render control: Value cannot be null. Parameter name: String”

So I downloaded the CKS:EBE 2.0 source from CodePlex and took a look at what was going on. Turns out that a HTTP Handler has been used to intercept the friendly URLs and pattern matches the url and changes it under the covers so that it identifies the List Item Id of the post it needs to render etc. The problem being that the post.cs file when requesting the Request.QueryString() seems to see the original url not the rewritten one!

A quick work around for this is to modify the post.cs file, repackage and redeploy it. I was waiting to be added to the CKS:EBE project but I think they had some problems, otherwise the fix would have been there last week ;-)

I noticed that Rene Hezser has put a fix up on Tuesday for this in build 29521 now, but Woody has pointed out there are some bugs in the branch that need ironing out.

There are plenty of blogs out there with this issue, please give them a heads up if you find one!

Published: 11/25/2009  5:05 PM | 2  Comments | 0  Links to this post

Nov 212009

New release of SPSource on CodePlex

I’ve finally got round to putting a new official release of SPSource on CodePlex. This one has added a few new fixtures and fixed a few issues highlighted by great community guys such as @coreyroth, @miches, @grumpywookie! Big thanks to them for taking the time to add issues into CodePlex and blog about it too!

If you do find any issues please submit them, I have alerts on the project ;-)

What’s SPSource, click here to find out more!

Published: 11/21/2009  9:08 PM | 1  Comment | 0  Links to this post

Nov 212009

Jun 232009

SharePoint Development Weekly Roundup (23Jun)

[Cross Posted on www.SharePointDevWiki.com]
It seems every week more and more great content appears! These could almost become daily Coffee break posts!

WSP

Environment

API

Agile Development

WCM

Cloud

Misc

Published: 6/23/2009  5:09 AM | 1  Comment | 0  Links to this post

Jun 032009

Importing a stsadm export package from a MOSS Farm to a WSS Farm

So I’ve been doing some work in a MOSS Farm Development VM for a release to a WSS Farm. I created a a Site Collection using the Collaboration Team Site Definition thinking it wouldn’t use any of the MOSS Features (as you may know that MOSS is a superset of WSS).

When I did an stsadm –o export from my MOSS Farm and then did an stsadm –o import into my WSS Farm I got the following errors:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\BIN>stsa
dm -o import -url http://tfsserver:1010 -filename c:\drops\backup.cab
Start Time: 6/3/2009 7:50:58 PM.
Progress: Initializing Import.
FatalError: Could not find Feature OffWFCommon.
   at Microsoft.SharePoint.Deployment.ImportRequirementsManager.VerifyFeatureDef
inition(SPRequirementObject reqObj)
   at Microsoft.SharePoint.Deployment.ImportRequirementsManager.Validate(SPRequi
rementObject reqObj)
   at Microsoft.SharePoint.Deployment.ImportRequirementsManager.DeserializeAndVa
lidate()
   at Microsoft.SharePoint.Deployment.SPImport.VerifyRequirements()
   at Microsoft.SharePoint.Deployment.SPImport.Run()
Progress: Import Completed.
Finish Time: 6/3/2009 7:51:04 PM.
Completed with 0 warnings.
Completed with 1 errors.
Log file generated:
        c:\drops\backup.cab.import.log
Could not find Feature OffWFCommon.

A little bit of poking around and some recommendations from @pseale via Twitter and I discovered that these files created by the export are in actual fact .cab files.

So I renamed the file to .cab and I extracted the contents into a new folder using the Windows UI.

Then I had to work out where the references were that were causing the error. There were lots of .dat files and then the following:

  • exportsettings.xml
  • manifest.xml
  • requirements.xml
  • rootobjectmap.xml
  • systemdata.xml
  • usergroup.xml
  • viewformslist.xml

Alarm bells rang at Requirementsxml, so I started searching for the ‘OssWFCommon’ mentioned in the error. Bingo! So I made that change…now how do I wrap this back as a .cab?

To do this I need to create a manifest file…to do this I used makecab.exe but this requires a ddf manifest file. As there was 99 .dat files I didn’t feel like writing one myself…so I used powershell and did a ‘dir | ft Name > list.ddf’ and added the following to the top of it.

.OPTION EXPLICIT
.Set CabinetNameTemplate=backup.bak
.Set DiskDirectoryTemplate=CDROM ; All cabinets go in single directory
.Set CompressionType=MSZIP ; All files compressed in cabinet files
.Set UniqueFiles="ON"
.Set Cabinet=on
.Set DiskDirectory1=Package

Then I simply ran makecab.exe to create the new cab, deployed it to my WSS Farm and tried again. I got some other errors for other features and repeatedly removed them until the errors went away!

The full xml elements removed from requirements.xml were:

<Requirement Type="FeatureDefinition" Id="c9c9515d-e4e2-4001-9050-74f980f93160" Name="OssWFCommon" />
<Requirement Type="FeatureDefinition" Id="fde5d850-671e-4143-950a-87b473922dc7" Name="IssueTrackingWorkflow" />
<Requirement Type="FeatureDefinition" Id="02464c6a-9d07-4f30-ba04-e9035cf54392" Name="ReviewWorkflows" />
<Requirement Type="FeatureDefinition" Id="6c09612b-46af-4b2f-8dfc-59185c962a29" Name="SignaturesWorkflow" />
<Requirement Type="FeatureDefinition" Id="c6561405-ea03-40a9-a57f-f25472942a22" Name="TranslationWorkflow" />
<Requirement Type="FeatureDefinition" Id="c85e5759-f323-4efb-b548-443d2216efb5" Name="ExpirationWorkflow" />
<Requirement Type="FeatureDefinition" Id="29d85c25-170c-4df9-a641-12db0b9d4130" Name="TransMgmtLib" />
<Requirement Type="FeatureDefinition" Id="00bfea71-dbd7-4f72-b8cb-da7ac0440130" Name="DataConnectionLibrary" />

I also had to remove some ContentType references from the manifest.xml too which referenced the Id of the feature. So best thing to do is before you remove the Requirement element, is search for the Id in the other xml files ;-)

I would suggest that this is not the best way to do this as you may delete things you shouldn’t ie. that are dependent on Lists working etc.

Published: 6/3/2009  4:53 AM | 0  Comments | 0  Links to this post

May 222009

FACT: You can’t be a SharePoint Developer unless…

I’ve just been on a training course and was shocked to find out that some of the Developers hadn’t heard of various SharePoint Resources online, including the SharePointDevWiki.com . I know, I know! Where have they been since December last year! LOL

Seriously, it wasn’t so much the wiki, as I know that it is only promoted in various inner circles and not as mainstream as MSDN as a resource. I will say though, that I really appreciate the continued support from the community in promoting and contributing to the wiki and am extremely pleased with its progress in the 6 months it has been online!

“I didn’t know about that”

What did surprise me is that some seemed to give blank looks when the Patterns & Practices material available on CodePlex was mentioned and I daren’t even ask about whether they knew the issues with disposing of objects.

“Who’s that?”

How has this come about…well they aren’t the first SharePoint Developers I’m come across like this. Often at the local Perth SharePoint User Group, you’ll mention things that you just assume people know because they are as stir-crazy as yourself and read the main stream SharePoint Blogs. This is an incorrect assumption. Sometimes I’ll even mention names like Andrew Connell, Joel Oleson, Spencer Harbar, Bob Fox, Todd Klindt, Rob Bogue, Todd Baginski, etc. and they’ll give me that look as if they’ve never heard the names. For me, without keeping up with these guys you’ll just simply miss so many things to make your life as a SharePoint Developer infinitely easier!

“Not everyones like you”

I understand for some SharePoint Development is simply a day job, and my girlfriend reminds me on lots of occasions that “not everyone is like you…it’s just a job to them” and “I bet they don’t fall to sleep with a SharePoint text book on their nose”. Developers simply don’t get time to sit and read through all the resources that are updated regularly online.

I am extremely passionate about SharePoint, a lot of my ASP.NET Readify colleagues ask me “why?” and my answer is: “SharePoint is a challenge, no one will ever conquer it! I love the daily challenges and the excitement of overcoming it and learning new things.”.

I take a lot of pride in my work and i just don’t think I’d be half the SharePoint Developer I would be if I didn’t read the blogs I do, listen to the podcasts I do, watch the webcasts I do and debate with the other guys at User Groups that I do.

SharePoint Developers – It’s not just about buying a book!

One thing I have realised is that often teams just buy the books off the shelf. Now these are great, but by the time they are published they are almost 6 months behind. 6 months in SharePoint World is a long bloody time! SPDisposeChecker wasn’t even released to the public at that stage, VSeWSS 1.3 CTP wasn’t even released, SPSource wasn’t released (plug)…and that’s just the tools that wouldn’t have been mentioned in books.

So for those Developers out there not leveraging the resources out there…please try and find time to at least be aware of what a DataFormWebPart (Data View Web Part) is and stop cutting your own ones (borrowed from @imorrish), that SPDisposeChecker wil save your arse getting kicked when stuff goes to Production and sucks up all your RAM, that SPSource can save you hours of code cutting (plug) and that WSPBuilder can save you lifetimes!

I have discussed this quite frequently in terms of the amount of content out there and I believe whole-heartedly that the SharePointDevWIki.com can help set a baseline of resources and knowledge that SharePoint Developers should have as a minimum. I also believe it can give them a lot more too and that they can give a lot more back!
I have started a weekly update (I hope you have all noticed) promoting SharePoint Development news worth reading. I am hoping this will allow people to at the minimum check this out to keep up-to-date.

Development Managers – Raise the bar!

For Development Managers out there, I don’t see any harm in asking these kind of questions to ensure that they are at the correct level for your team. I’m sick of seeing other integrators code that won’t pass SPDisposeChecker, is deploying things manually to the 12Hive without wsp’s and overwriting out of the box 12 Hive files!

Please encourage Developers to attend User Groups and to also present at them. The SharePoint community is large and don’t think that what you are doing has been done a thousand times before…because it probably hasn’t!

Conclusion

So to answer the post title: “unless…they atleast digest the ‘Where to start with SharePoint Development’” which does include the Microsoft resources, but some other key areas that should be regularly checked.

Published: 5/22/2009  8:03 PM | 8  Comments | 0  Links to this post

May 182009

Reviewing open source SharePoint products: First look at CompleteSharePoint.NET v2.0

CompleteSharePoint.NET v2.0 was released today by Tommy Segoro, another local Perth SharePoint Developer. This open source project provides functionality to Windows SharePoint Server (WSS) 3.0 similar to the Publishing Feature within Microsoft Office SharePoint Server (MOSS) 2007.

Right now I’m sitting on a plane on the way to Sydney and figured this was a great time to deploy the source to a Windows Server 2008 VM and give it a run for its money. Especially as I’m currently looking at building a Web Content Management System in WSS for my fathers Spanish Magazine (lots of posts/webcasts to come on WSS3.0 + WCM).concept1---Home

First Impressions

Licensing

The CompleteSharePoint.NET web site does not mention anything about licensing and does not link to the CodePlex.com project which I found when v1.0 was released. I have already emailed Tommy to ask about this…the v2.0 source is currently not in CodePlex either, but available to download as a zip from the web site.

CodePlex Developers

So I’d really like to help grow this solution, but based on the CodePlex project not being promoted I’m not sure what the go is here. Especially as v2.0 isn’t in there.

v1.0 stability

I actually downloaded v1.0 and tried to get it running in a VM but there were no installation instructions and the source was not using one of the commonly used productivity tools (VSeWSS etc). This made it hard to see how this was all hanging together. I managed to get the wsps deploying, but when creating a page I got a blank screen. Anyway, after seeing the installation instructions for this one…there are two mods to the web.config that would’ve fixed it.

Feature Set

The web site does not really say what you actually get by installing this product other than a page editing toolbar. It really needs a full run down of what you get and how it is hanging together architecturally.

The Installation Process

So, I decided to go for broke and just install the wsp’s into the farm. The installation instructions were a bit odd:

“Install and deploy CompleteSharepoint.NET.Web.Site.wsp (only if you want to run CompleteSharepoint.NET website on your machine).”

Why else would you deploy the wsp unless you wanted it running? I think what he means is only deploy it to the Web Applications where you want to use this functionality. The other WSP is mandatory on the farm and shared by each Web Application instance that uses it.

No Installation Script

Anyway, noticed there was no installation script so quickly threw together the STSADM commands to add and deploy it:

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o addsolution -filename "CompleteSharepoint.NET.wsp"
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o deploysolution -name "CompleteSharepoint.NET.wsp" -immediate -url "
http://win-0XQBNQW37UF:8116" -allowGacDeployment -allowCasPolicies -force
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o addsolution -filename "CompleteSharepoint.NET.Web.Site.wsp"
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o deploysolution -name "CompleteSharepoint.NET.Web.Site.wsp" -immediate -url "
http://win-0XQBNQW37UF:8116" -allowGacDeployment -allowCasPolicies -force
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
pause

Some assumptions were made that there was no order in which the wsp’s had to be deployed. Obviously an installation script would have made this self explanatory.

Web Config Modifications

v2.0 has a support page where it explains the modifications required to the web.config. Again, this got me worried as these modifications can be done as part of the deployment process by leveraging the SPWebConfigModification class in the API.

Site Definition

It wasn’t very clear whether you had to use your own Site Definition or a specific CompleteSharePoint.NET one:

“You will need your custom site definition.”

In v1.0 you had to use the one provided and it appears you do in v2.0 also.

ERROR

So when I actually created the site definition I got this error:

“The given key was not present in the dictionary.”

Looking in the ULS logs gave me:

0x07DC    Windows SharePoint Services       General                           88jb    Medium      Feature Activation: Activating Feature 'CompleteSharepointNETContentTypeBinding' (ID: '49870641-bd3c-4042-8703-0aff88ad4b71') at URL http://win-0xqbnqw37uf:8116.    
05/18/2009 18:27:16.94     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72bf    Medium      SPContentTypeBindingElement.ElementActivated(). Applying ContentType '0x0101006FEE00D312DD41D58E8D3D104FC0595F' to list 'Pages' on web '
http://win-0xqbnqw37uf:8116'
05/18/2009 18:27:17.07     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       Feature Infrastructure            889x    High        The element of type 'ContentTypeBinding' for feature 'CompleteSharepointNETContentTypeBinding' (id: 49870641-bd3c-4042-8703-0aff88ad4b71) threw an exception during activation: The given key was not present in the dictionary.    
05/18/2009 18:27:17.09     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72by    High        Feature Activation: Threw an exception, attempting to roll back.  Feature 'CompleteSharepointNETContentTypeBinding' (ID: '49870641-bd3c-4042-8703-0aff88ad4b71').  Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.     at System.ThrowHelper.ThrowKeyNotFoundException()     at System.Collections.Generic.Dictionary`2.get_Item(TKey key)     at Microsoft.SharePoint.SPFieldCollection.CreateSPField(Int32 index)     at Microsoft.SharePoint.SPFieldCollection.EnsureSPField(Int32 index)     at Microsoft.SharePoint.SPFieldCollection.get_Item(Int32 iIndex)     at Microsoft.SharePoint.SPFieldCollection.ItemAtIndex(Int32 iIndex)     at Microsoft.SharePoint.SPBaseCollection.SPEnumerator.System.Collections.IEnumerator.get_Current()     at Microsoft.S...    
05/18/2009 18:27:17.09*    w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72by    High        ...harePoint.SPContentType.get_Fields()     at Microsoft.SharePoint.SPContentType.DeriveContentType(SPContentTypeCollection cts, SPContentType& ctNew)     at Microsoft.SharePoint.SPContentTypeCollection.DeriveContentType(SPContentType ct, SPContentType& ctNew)     at Microsoft.SharePoint.SPContentTypeCollection.AddContentTypeToList(SPContentType contentType)     at Microsoft.SharePoint.SPContentTypeCollection.AddContentType(SPContentType contentType, Boolean checkName, Boolean updateResourceFileProperty)     at Microsoft.SharePoint.SPContentTypeCollection.Add(SPContentType contentType)     at Microsoft.SharePoint.SPContentTypeBindingElement.EnsureContentTypeExists(SPWeb web)     at Microsoft.SharePoint.SPContentTypeBindingElement.ElementActivated(SPFeaturePropertyCollection props, SPSqlComman...    
05/18/2009 18:27:17.09*    w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72by    High        ...d sqlcmdAppendOnly, SPWebApplication webApp, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionContentTypeAndEventReceiverBindings(SPFeaturePropertyCollection props, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionElements(SPFeaturePropertyCollection props, SPWebApplication webapp, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.SPFeature.ProvisionElements(SPFeaturePropertyCollection props, SPWebApplication webapp, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.SPFeature.Activate(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, Boolean fForce)    
05/18/2009 18:27:17.11     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           8l36    High        Failed to activate site-scoped features for template 'COMPLETESHAREPOINT20#0' in site '
http://win-0xqbnqw37uf:8116'.    
05/18/2009 18:27:17.11     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72h9    High        Failed to apply template "COMPLETESHAREPOINT20#0" to web at URL "
http://win-0xqbnqw37uf:8116".    
05/18/2009 18:27:17.11     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72k2    High        Failed to apply template "COMPLETESHAREPOINT20#0" to web at URL "
http://win-0xqbnqw37uf:8116", error The given key was not present in the dictionary. 0x8107058a    
05/18/2009 18:27:23.52     OWSTIMER.EXE (0x0900)
                      

At this stage I was tempted to throw the headphones on and watch Mr Bean for the millionth time, but persistence and Heineken for fuel kept me going!

So I followed the flow of the onet.xml to make sure the Content Type being binded ‘Article Page’ was being provisioned before in the process which is was…and no errors occured. SharePoint Manager 2007 also helped me see it within the Site Collection also.

Further poking in the logs and I found a bit earlier on in the provisioning process:

edium      Feature Activation: Activating Feature 'CompleteSharepointNETRootLists' (ID: 'dbac423b-f07e-44ba-b230-f718c22ce4d1') at URL http://win-0xqbnqw37uf:8116.    
05/18/2009 18:47:35.67     w3wp.exe (0x0BC8)                           0x0FA0    Windows SharePoint Services       Fields                            88yf    Medium      Creating list "Application Settings" in web "
http://win-0xqbnqw37uf:8116" at URL "Lists/ApplicationSettings", (setuppath: "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Features\CompleteSharepointNETRootLists\KeyValueList")    
05/18/2009 18:47:35.70     w3wp.exe (0x0BC8)                           0x0FA0                                      1388                              8e2x    High        Failed to find the content type schema for ct-1033-0x0162d9afca87664c8e83cf6a63ff35 while caching feature data.    
05/18/2009 18:47:35.72     w3wp.exe (0x0BC8)                           0x0FA0                                      1388                              8e2x    High        Failed to find the content type schema for ct-1033-0x0162d9afca87664c8e83cf6a63ff while caching feature data.    
05/18/2009 18:47:35.74     w3wp.exe (0x0BC8)                           0x0FA0                                      1388                              8e2x    High        Failed to find the content type schema for ct-1033-0x0162d9afca87664c8e83cf6a63 while caching feature data.

So it wasn’t provisioning the ApplicationSettings list properly and this had a key field, which I’m assuming the error came from.

Basically it was trying to find the content type schema ‘ct-1033-0x0162d9afca87664c8e83cf6a63ff’ or one of it’s parents. A reference to this id couldn’t be found in the source which was odd, I hadn’t seen the ‘ct-1033-‘ prefix, when I removed this I found the reference. Having a look at the KeyValueList ListTemplate I noticed it had an embedded ContentType called the ‘NNTT Key Value List’ with id ‘0x0162d9afca87664c8e83cf6a63ff’…good to see reuse going on here from previous projects (NNTT) ;-)
It didn’t look like it actually needed that ContentType, but the ListTemplate looked too empty for my liking. I’ve spent the last few months inside ListTemplates writing SPSource tool…so I know a dodgy ListTemplate when I see one!

Anyways, I commented out the Content Type and the Site Provisioning worked! Yipeeee….oh shit, I’m on a plane, now everyone is looking at me!?!

image

So now I get the screen shot above….great, ok so it hasn’t got the corny picture of the two geeky looking people pointing on the desk (you know which one I mean!)…but the error is pretty obscure!

“You have no default page specified. To specify a default page please create a new page.”

OK, so I click on Site Actions and see:

image

Cool, so if I want to create a new page, I’m guessing I go ‘Create Publishing Page’. For uniformity sake, I would recommend that naming be the same e.g. use ‘Publishing Page’ in error message. I’d also recommend moving all the Site Actions that are custom for CompleteSharePoint.NET into it’s own sub group, just like the MOSS one does…except you don’t pay $000’s for it ;-)

Creating my first Publishing Page

So I click ‘Create Publishing Page’ and get this.

image

image

First impressions…the Date Picker is not what SharePoint UI uses…people are used to custom fields with a nicer date picker than that…changing months causes a full post back on the page…AJAX anyone?!?

So filling in the form:

Content Type:

Another bug, the content types didn’t appear in the drop down

image

Page layout

A few options here:

image

Then there are a heap of check boxes with no explanation of what they do…could really do with some help text here! So I leave the rest as default and click submit. Drum roll…

image

So, first impressions…for an open source project…I wasn’t that impressed with Tommy’s company logo being on the page! Based on these ‘Our partner links’…I can see that some of my questions around licensing and joining the CodePlex team may already be answered ;-)

I chopped the url to just the server and port and it still gave me that error…creating a new page with ‘Welcome Page’ checked made that the default page for that site.

When I click Site Actions now I’m presented with the following:

image

Edit Page

So this is where the proof in the pudding really comes in…nothing much has been apparently different from an end user perspective until now, unfortunately no screen on the planet will display the screenshot in one hit…the “page toolbar” looks like this:

image

Compared with the MOSS one…I can see trying to pitch this at anyone is going to get a …OK OK we’ll pay for MOSS WCM!

Further down the page there is:

image

but interestingly at the top…the content is still there and not including in rich text editor?!?

image

I added some content into the rich text editor and click the Publish button and now get:

image

So I can click Hide button to hide the toolbar…but the hide/show still exists…need to test anonymous users don’t see that at later stage.

Also noticed this

image

So it’s doing site hits too which is nice, again, a feature list on the product site would have been useful to mention this. At this I decided to stop checking out features for this post (more to come though).

The Source

Build

So the first thing I did was try and build the solutions. The CompleteSharePoint.NET solution built fine, but the CompleteSharePoint.NET.Site.Web was dependent on the other solution and the references were going to the GAC. I’m also not entirely sure of the logical split between the two solutions as the second is dependent on the first anyway.
It also relied on FreeTextBox dll, fortunately I didn’t do a clean before I built (as I wouldn’t have been able to download it at 30,000 ft), as the dll was sitting in the bin directory – even though there is a DLLs folder within each project.

Proprietory Solution Package generation

Again, I noticed the CreateCabDDF.vbs files and CreateManifest.vbs files like v1.0. The use of proprietary scripts to generate a wsp, when there are tools commonly used such as VSeWSS, WSPBuilder and STSDev out there loomed on my mind a bit…but I got over it…and the VBScript (yuk)!

The scripts were hooked up in the Visual Studio project, much like STSDev does with a targets file, but it was part of the actual csproj msbuild file instead. Changing the build target to CreateSolution and building entire solution kicked off the process to create the manifest and then the wsp file itself.

Lessons Learnt

Continuous Integration Script

I would recommend having a script to create a web app, site collection with the site defintion and also a uninstall one too. It could also include firing off the process to build the solution each time and also build the wsp etc.

This way you have a Continuous Integration process. It makes it extremely easy with this approach to pull the source into a fresh VM and fire off the script and see whether it works or not. It also gets new developers to a project up and running quickly!

In the long run, it also saves the developer who’s making changes from doing manual steps and he can tweak the site definitions, run the script and see his work…either working…or breaking ;-)

Conclusions

As with any Solution you deploy in your farm, it is always good to do some homework on its foundations…what it is actually doing…rather than just deploying the wsp to the farm.

Most Organisations have a policy to bring the source code in-house and control it internally once deployed. Typically a senior developer/architect will do a review of the Solution before allowing it in production. Again, with the troubleshooting I was doing above, it really needs someone with SharePoint Development experience to do this review.

This is fine for open source products…the question that I have got looming now is…what about all those ISV’s out there developing their Solutions. They will not release their source, so how do you know it’s any better. More and more little ISVs are appearing developing web parts and Site Defintions…be extremely careful with this! I would recommend looking at SharePointReviews.com to get an indication of whether the product is any good or not from that stand point.

As for CompleteSharePoint.net v2.0, I’d wait for v3.0 before taking this seriously unless you have a lot of time on your hands to get to grip with what the solution is doing and fixing it up. This is by no means dissing Tommy’s efforts,some serious time has been put into getting this where it is at. I would just suggest that it needs to be reviewed before releasing it as v2.0 as I still think this is an alpha release.

In terms of the open source projects that I have contributed to…I am now more aware of putting the hat on where “I haven’t seen this before”. I have provided various web casts for SPSource to show how it works, but even then I have realised that people like to see instructions in a Word/PDF Document which I wrote last week and have currently got being reviewed.

Published: 5/18/2009  6:21 AM | 4  Comments | 8  Links to this post

May 142009

SharePoint Development MVP Panel Discussion Review

image

So if you watch one web cast this year…it has to be the MVP Panel Discussion SharePoint Development recorded at TechEd in LA (#TeLA09). It included Rob Bogue (@RobBogue), Matthew McDermott (@MatthewMcD), Todd Bleeker (@ToddBleeker), Eric Shupps, Andrew Connell (@AndrewConnell), Todd Baginksi (@ToddBaginski), Maurice Prather and Scott Hillier. Some crazy pictures of the crew can be found on Rob’s blog ;-)

Productivity Tools

It was interesting hearing that a lot of them use different tools: VSeWSS (Rob Bogue), Eric Schupps (WSPBuilder), Andrew Connell (STSDev) and a lot admitted writing them from scratch so that it encourages learning the principles.

For more on comparisons on these productivity tools see wiki page.

Other tools

They also mentioned AC’s content type tool, SharePoint Manager 2007, SharePoint Designer (SPD). Interesting to see AC pitching SPD for prototyping stuff…bit disappointed they didn’t mention SPSource, as a way to make these prototypes reality. Oh well…maybe next year!

For more tools check out the Other SharePoint Dev Tools on @SPDevWiki.

Upgrading Artefacts and Updating Servers

Rob Bogue also talks briefly near the end on upgrading artefacts….hoping his presentation is put online to watch! Rob has been very prominent with the P&P Contoso stuff too.
Andrew also discussed about Site Definitions on upgrades and ghosted items.

Heroes

These guys are my heroes and cannot stress enough how much all SharePoint Devs new and old should watch this!

ASP.NET Developers and SharePoint

Based on discussions and post yesterday I have posted a new page on the wiki to start pitching pros and cons of SharePoint as a platform to be leveraged by ASP.NET developers.

Published: 5/14/2009  1:26 AM | 1  Comment | 0  Links to this post

May 132009

“#IfIHadAYearAtMicrosoft I would…”, the SharePoint Product team and SharePoint 2010 migration path…

So last night before calling it a night I decided to post a tweet:

#IfIHadAYearAtMicrosoft...I would ensure #SharePoint UI was 100% W3C compliant & be able to develop remotely off the server

and got a reply within an hour from @LougeFlyZ aka Chris Johnson from the SharePoint Product team headed up by Arpan Shah (@arpanshah):

@jthake one year?!? You can't do these things outside of a release cycle. They effect millions of users and create back compat issues.

The reason I stated those two issues around W3C compliance and Remote Development is that these are two key issues that stop Development Teams using SharePoint and sticking with ASP.NET and writing it themselves. I am currently preparing a presentation for the Perth .NET User Group to discuss the pros and cons in more detail…I expect to have tomatoes thrown at me….so any ammo is greatly appreciated!

This got me thinking this morning on the way to work…

Immense pressure the SharePoint team is under

The boys in that team are under extreme pressure with Microsoft pinning its hopes on SharePoint for various Server products: Office Server, Commerce Server 2009, Reporting Services (integrated option), Performance Point (now been swallowed into SharePoint 2010) and TFS (now optional in TFS 2010). I’m sure the pressure alone internally from all the products they have to support is immense, let only from the MVP community providing early feedback and from the public community on releases!

Release cycles

Just yesterday the team posted more information on the April Cumulative Update which has caused some confusion so soon after SP2 was released (within a week). The diagram below indicates the CU’s to come before 2010 will be released. There is also the first public beta coming in July 2009.

image

Chris did make a good point in his tweet about making large changes like I suggested “outside of the release cycle”. I, along with a lot of the community who spend their working (and private lives) consumed by SharePoint, look forward to seeing what made it through to 2010.

Feature lockdown

Another thing to bear in mind is that due to these release cycles and the time that the MVPs and public see a release to give feedback, is often after the feature list has been locked down. SharePoint 2007 beta was released in November 2006 to the public and went RTM in early 2007.
This obviously did not give enough time for the public to sway much of the final RTM feature list and most likely Microsoft were bug swatting and ironing out the beta for release in feature lock down. With this in mind, come July this year…treat the Beta as a way of your organisation having some practice runs at migrating 2007 into it and playing with the new features to pitch ideas to your organisation. Don’t expect too much to change between the two.

Don’t believe it, until you see it

I think we can expect a similar time frame for the next major release in 2012 with service packs probably once a year. One thing to bear in mind with this, is when you are making architectural decisions and assume that you can just wait for the features that are promised by Microsoft or hinted at or on the rumour mill…that you shouldn’t always rely on them. The last thing you want to do is promise the CEO that it’ll be in the next major version and when it’s released, it’s not, and then you’re on the back foot having to build something quickly!

Effects millions of users

Chris other point about backward compatibility is also something to bare in mind. SharePoint has a HUGE user base now and as I’ve mentioned above…supports a large foot print of products on top of it. With the release of 2010, the team will have to ensure that they are backward compatible with 2007 implementations.

From a development perspective this means scenarios like:

Master Pages/Page Layouts

If you are not in the “cool” SharePoint blue for your organisation Intranet, you have most likely even developed your own theme and applied it…or copied the default.master and modified it. Between SP1 and SP2 there were NO changes to master pages. I expect changes to default.master this time round, this will mean your copied instance will not have the new controls in it…which may cause a breaking change to your environment. I’m guessing no migration path is going to simply just add those missing controls to your master pages so you’ll have to start comparing differences in files.

Style Sheets

Same deal as master pages, there’s bound to be new styles with the recently announced support for Internet Explorer 7.0 and more advanced support for FireFox 3.0. So if you’ve changed things like ItemStyle.xsl when using Content by Query Web Part…which I’ve seen it lots of instances…you’ll have some fun.

List Templates

One thing to bear in mind with this also, with the announcement of AJAX inpage list item editing, is List Templates with their defined <View> elements. I'm intrigue to see how they are going to modify not only existing List Instances to support this new AJAX view and also List Templates within the 12 Hive.

Web Services/API

If the organisation has any custom managed code that calls off to the web services in 2007 or uses the API for event receivers and feature receivers, the product team has obviously had to ensure that there are no breaking changes here. Again, I strongly encourage organisations to retest all of their managed code against 2010. I would also suggest if you have written some “funky” workarounds for bugs in 2007, they may have been fixed in Service Packs or Cumulative Updates…you’re “funky” workarounds might not work anymore and therefore you should be testing heavily in these scenarios too.

Source Control

How will this effect organisations who have these Master Pages, Page Layouts, Style Sheets, List Templates, etc. deployed by Solution Packages (as recommended) and stored in source control?

Their hands are tied

Following on from the backward compatibility restrictions…this will obviously mean that the teams hands are tied on certain feature requests. Most likely the two I’ve mentioned in my tweet.

The requests for a stronger replacement for SQL tables with scalability for SharePoint Lists has been met which was obviously a key business driven requirement.

Remote Development

It looks like for this release married with the release of Visual Studio 2010, to not expect any changes on the current approach to development where you require SharePoint server natively in your development environment.

COM Component

It would have been great also to drop the old COM component that the SharePoint .NET API wraps around for us developers…but I haven’t heard anything about this as yet. This will mean that the SPDisposeChecker tool will be at the top of our toolbox at all times!

Should have cut their ties with 2003

The whole “should, coulda, woulda” hindsight is always a kick in the balls…but I thought I’d raise it here regardless. The migration path from 2003 to 2007 wasn’t a pretty one…especially in two major scenarios: heavily customised MCMS to SharePoint 2007 and SharePoint 2003 to SharePoint 2007.

I guess what I’m trying to indicate here is that from a marketing and strategy point of view Microsoft wanted to make it as easy as possible for existing MCMS and SharePoint 2003 organisations to move to 2007. In doing so, they had their hands tied behind their back on a variety of things.

For us developers, one of the most obvious examples of this is the SharePoint API with SPSite meaning Site Collection and SPWeb meaning Site. Sounds trivial…but you explain this to .NET developers who have been used to .NET moving through framework releases without this confusion. It makes SharePoint a harder sell alright!

Sometimes I wonder what would have happened if they severed their ties with 2003 and started the product from ground up without worrying about a migration path from 2003…

In Summary

The team have done an amazing job and I’m looking forward to SharePoint 2010. I would absolutely love and be honoured to work inside the team on the product development at some stage, so don’t take this post as a rant on the team or Microsoft by any means!

I just guess as Developers who leverage the Platform we just need to be aware of the length of these release cycles and be conscious of the migration path between major releases..

Published: 5/13/2009  6:10 PM | 2  Comments | 0  Links to this post

 Next >>