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
Nov 252008

Where to draw the line between SharePoint Customisation and SharePoint Development

I was recently on a client site where they have spent the best part of a year going through the process of making the decision and getting approval to purchase Microsoft Office SharePoint Server 2007 Enterprise Edition. Part of that presales process actually included attending one of my discussions on Enterprise 2.0 along the lines of "Facebook for the Enterprise" with a 15 minute segment at the end that demonstrated what MOSS 2007 had out of the box that could be used.

There seemed to be a large disconnect between using the Out of the Box functionality and extending SharePoint to meet their needs. One of the biggest questions I get is "where to draw the line between Customisation and Development".

The client was under the impression that the changes they required to the Out of the Box functionality based on their Business Requirements could be simply done via Customisation. They raised concerns that this required Development due to the skills required and costs implicated.

SharePoint Customisation

Customisation is typically anything changed in a vanilla SharePoint installation. Customisation can be done by anyone with the correct permissions within a SharePoint Web Application and access to it using the Web User Interface or SharePoint Designer. There is a limited amount of things that can be done with this approach.

SharePoint Development

Development is using Solution Packages and Features to automate these same changes PLUS other things that simply can't be done via Customisation out of the box. The skill set required for Development requires knowledge in: Visual Studio, C#/VB.NET, ASP.NET 2.0, HTML, CSS, XLST at a minimum. This is really dependent on what areas of out of the box functionality you wish to Extend.

Drawing the line is hard

image

There are big problems using the Customisation approach over Development approach. The biggest issue as I've discussed before is around Deployment in a version 2.0 scenario from a Dev environment to a Test environment to a Production environment.

For very basic extensions to functionality you could simply repeat the customisation in each environment based on a script (or more dangerously from memory). This raises issues around inconsistencies in environments and reliance on particular resources.

The draw back of Development is the skill set required and therefore the related cost. Most Organisations will not be able to get a full-time SharePoint Developer on board and will have to outsource the Development. There is a significant overhead with producing the equivalent end result using Solution Packages and this can be made easier by a lot of the tools I've mentioned before. My recent Readify RDN presentation (slides/samples available here) highlighted the issues with SharePoint Development currently.

When does a proof of concept become a production application?

Another point brought up by the same client was around doing these Customisation's directly into Production. It is perfectly acceptable to over time improve the functionality by using Customisation, but if the application is a important Business Process you don't want to break the application with your Customisation's. So you end up having a Dev/Test environment to do these Customisation's. This is really the line drawn by having a proof of concept that moves into main stream production with a larger Business User base than ever imagined. Again, making these Customisation's in Dev/Test will then need to be repeated in Production again later.

The Business Users making these Customisation's soon get sick of repeating work and want to throw it back to the IT department as soon as possible. This is where I suggest moving to Development and not Customisation.

Reaching the limits

Another issue with Organisations going down the route of Customisation is that at some stage they will want to push their functionality past what is possible in the UI. This again comes back to the version 2.0 scenario where you require to pull the hard work they've done back into a Development environment and then recreate this using Solution Packages. Fortunately some tools are out there to help with some of the reverse engineering such as SPSource.

What we need is some scenarios of when to use Customisation and when to use Development. Also with some scenarios of when to move from Customisation to Development.

Migration scripts vs Change scripts

image

The issue with then making the changes is that you simply can't just overwrite what you've got in Production because they'll be live data in there. So what you have to do as a Developer is script up a change script to bring v1.0 to v2.0. This can be a maintenance nightmare once you've got v10.0 in the works as you can all imagine. The alternative is to just simply amend v1.0 and push this into Production and migrate the data from v1.0 to the newly built v2.0 via a migration script.

There is currently on tools out there to do either of these approaches which is unfortunate. My gut feel is that Microsoft aren't going to provide anything to do this either. My personal opinion is that this is something that is commonly done and in training courses I've run is constantly asked of....with replies that result in blank faces and the pin dropping in the back of the room!

In Conclusion

"So Jeremy...what are you advising?"...well basically...SET THE EXPECTATIONS early with Business Users. Make sure they are aware of "the v2.0 scenario" and the difference between Customisation and Development. This will mean wiping the stored memories from all the Sales Presentations about SharePoint as a Collaborative Provisioning Platform that is easy for Business Users to build new applications on. For the first 18 months Organisations may get away with Customisation's directly into Production, but it will not last forever.

Published: 11/25/2008  5:41 PM | 5  Comments | 3  Links to this post

Nov 242008

The SharePoint Development Community need our help!

As any seasoned SharePoint Developers will point out, SharePoint has come along way in the Development journey since it's beginnings in 2001 to what it is today. It has still got a long way to go for a variety of reasons, some of which I have covered in my 8 part series.

vNext Hype

There is much hype surrounding Visual Studio 2010 starting to be spun by Microsoft after PDC with regards for its native support for SharePoint Development. This does indeed look like a great step from what is available in VSeWSS 1.2 currently.
The cynics among us would raise the fact that this support will only exist in Visual Studio 2010 and with lots still not making the move to 2008 will mean that this will not be available to the masses.

Compatibility

The same can also be said for Organisations that are running SharePoint 2007, a lot which aren't even on 2007 SP1 let along the Infrastructure or Cumulative Updates due to fear of breaking customisation's already created on the new 2007 version. Worse still I know of lots of large scale 2003 implementations out there still planning for migration!
Reality leads to a more uglier picture of Developers wanting to use these new tools when they are released but held back by not having the latest Visual Studio or developing to a 2007 SP1 platform and not vNext (whatever it may be called). I'm making a large assumption that the new toolset will leverage a lot of the new functionality and framework in vNext and I can't see it being fully backwards compatible to 2007 SP2 (due in Q1 09).

Information overload

What I am try to raise here is that "the time is now", we can look into the future and see the new tools...but we have to have solutions for today's developments. With Microsoft focusing on VS2010 tools we are stuck with the VSeWSS 1.2 toolset which is not the complete package by any means. The slurry of information available on TechNet and multitude of books, blogs and forums make it hard to see the wood through the trees.

Migration

There was a large step to migrate from 2003 to 2007, which I believe will not be as hard between 2007 to vNext. The hard part is all the new implementations built straight onto 2007 that have not followed best practice. This is due to the poor toolset which has pushed organisations to use the UI and hack at it using SharePoint Designer rather than following the Best Practice methods of Solutions and Features.
The use of customisation's over development has led to Organisations being unconfident of service packs and updates let alone a large jump to a new version. Microsoft will be focusing on migrations that use the correct methods, but realistically they need to prepare for the ugly truth.

More than one way to skin a cat

There's plenty of issues with using Solutions and Features also. You can get so far with Elements Manifest creating things, but you'll need to use Feature Receivers to clean up if you want to un-activate them.

So you find yourself as a Developer in either two camps, or directly working with the API and ignoring the Elements. It makes it debugging hell if you have to check two places, for example, to see what is creating the list or attaching the event receiver. And then you have PowerShell/STSADM extensions that could possibly do it too.

The Patterns and Practices Guidance is moving in the right direction with their Contoso sample, the problem I find with this is that some of it is seriously over-architected and not realistic for the large percentage of SharePoint Projects out there.

What we need now

What the community needs is a toolset that will help Developers move customisation's into managed Solutions and Features. This will ensure that customisation's are deployed correctly in a SharePoint Farm and ensure that migration to the next platform isn't going to be a nightmare.

We also need a single resource to fill the middle ground to explain the "best practice way" to do things with sample code and an explanation of why not to use the other approaches. With lessons learnt so people can understand why not to use them if they wish (this will stop turf wars for example Site Definitions vs. Site Templates vs. Features).

The Community Needs our Help!

Microsoft can hype as much as they like, reality means at least 9 months after release we'll start seeing it in the Market Place unless its a fresh install. So the community needs to act now!

We have some great community resources out there now with EndUserSharePoint.com and SharePointMagazine.net, but nothing that focuses purely on SharePoint Development.

I have the domain name and am currently locking down a host and a Wiki engine to collaborate on. Although it would be great to eat our own dog food, the SharePoint Wikis currently have their limitations.

I am progressing forward with a collaborative solution for this, if anyone is interested please contact me.

Published: 11/24/2008  8:21 PM | 3  Comments | 0  Links to this post

Nov 242008

TypeMock Isolator for SharePoint Announced

Testing SharePoint was always an issue, because SharePoint has number of classes that are sealed and/or does not have public constructors. SharePoint's API consists heavily of sealed classes and classes with internal constructors. None of existed unit-testing frameworks provided ability to mock such classes.

Guys from TypeMock (http://www.typemock.com) did fantastic work, providing really powerful framework to mock such classes, which were not covered with existed frameworks, like RhinoMock and Moq or NUnit mocks.

And today, they announced Isolator for sharepoint:

It is almost the same as Typemock Isolator, but will only work on APIs that are directly connected with sharepoint’s API. That means that if you only need to test sharepoint stuff, you can get a powerful product, for a much cheaper price than the full Isolator (you can always upgrade later if you need to isolate more APIs).

 

Info for masses, how to get free licence:

Typemock are offering their new product for unit testing SharePoint called Isolator For SharePoint, for a special introduction price. it is the only tool that allows you to unit test SharePoint without a SharePoint server. To learn more click here.

The first 50 bloggers who blog this text in their blog and tell us about it, will get a Full Isolator license, Free. for rules and info click here.

Published: 11/24/2008  2:17 PM | 0  Comments | 0  Links to this post

Nov 122008

Shared Services Provider Provisioning Failure

I'm building a completely new farm with all the latest patches and when I create the SSP it lets me create individual Application Pools for MySites and the SSP itself and I can confirm creation which gives me the lovely spinning icon:

image

And it just sits there for 10 minutes...I didn't want to close it so I opened another window with Central Administration.

Finding the error

The SSP link in Quick Launch is disabled, but clicking on the Shared Services Administration page gives me this:

image

Finally after 15 minutes the progress page comes back with a Failure message. It clearly failed way before that but still kept spinning! LOL

image

The ULS Logs gives the same error: "A runtime exception was detected. Details follow.  Message: Windows NT user or group 'domain.wa.gov.au\SP_SSPAppPool' not found. Check the name again. ". But nothing more than that.

vNext Error reporting

The Note is not very clear:

"If you correct the error that caused this failure, provisioning will subsequently succeed. To stop provisioning from being retired, delete the SSP."

It doesn't tell you how to correct the error, I mean I can go into IIS and modify the Identity of the application pool, but if I try and go through SSP configuration it fails with an error when editing the Application Pool.

image

Deleting SSP

And deleting the SSP is an option in the User Interface! The link is disabled!

image

So the easiest way to recover from this...is delete the SSP using (had to delete Web Applications first for SSP and MySites):

   1: stsadm –o deletessp –title SharedServices1

and then run through the steps again. This MSDN forum post help a lot.

Windows 2000 compatible domain

So this didn't work as some of my other accounts had the FQDN domain like 'domain.wa.gov.au' instead of 'DOMAIN' and so I had to go through where ever I've set service accounts and change them! The weird thing is that the FQDN ('domain.wa.gov.au\sp_admin') worked fine in the People Picker when setting the accounts and resolved, but obviously causes issues whenever it hits SQL! So best bet is just to use the DOMAIN within SharePoint. Lesson Learnt.

Not sure why it has only come up when creating SSP as install went fine! Once I'd done that the SSP page changed to "Provisioning in Progress":

image 

I also noticed in the event log getting same errors for Search and this has now gone too! It always pays to check the logs for each step as you install SharePoint.

Event Type:    Error
Event Source:    Office SharePoint Server
Event Category:    Office Server General
Event ID:    7888
Date:        12/11/2008
Time:        4:55:56 PM
User:        N/A
Computer:    SOMSP01
Description:
A runtime exception was detected. Details follow.
Message: Windows NT user or group 'domain.wa.gov.au\SP_MOSSSearch' not found. Check the name again.

Techinal Details:
System.Data.SqlClient.SqlException: Windows NT user or group 'domain.wa.gov.au\SP_MOSSSearch' not found. Check the name again.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)
   at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user)
   at Microsoft.Office.Server.Administration.SharedDatabase.Microsoft.Office.Server.Administration.ISharedAccessControl.SetAccessControl(SharedComponentSecurity security)
   at Microsoft.Office.Server.Search.Administration.SearchAdminUtils.GrantAccessToAccount(String username, ISharedAccessControl sharedAccessControl)
   at Microsoft.Office.Server.Search.Administration.SearchSharedApplication.Install()
   at Microsoft.Office.Server.Administration.SharedResourceProvider.ProvisionApplications(SharedComponentSecurity sharedApplicationSecurity)
   at Microsoft.Office.Server.Administration.SharedResourceProvider.Microsoft.Office.Server.Administration.ISharedComponent.Install()
   at Microsoft.Office.Server.Administration.SharedResourceProvider.Provision()

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Published: 11/12/2008  5:05 AM | 0  Comments | 6  Links to this post

Nov 122008

WARNING: Joining a SharePoint Farm with updates already installed

image image

 

   1: 11/12/2008 10:00:40  8  INF                            Creating connection string for config db SharePoint_Config server SOMSQL01\SQLMOSS 
   2: 11/12/2008 10:00:40  8  INF                            Creating connection string for admin content db SharePoint_AdminContent_c6b34e10-9f32-4fae-bfc1-50b489e58913 server SOMSQL01\SQLMOSS 
   3: 11/12/2008 10:00:40  8  INF                            Using NTLM for sql connection string 
   4: 11/12/2008 10:00:40  8  INF                            Openning configdb so that I can join it at server SOMSQL01\SQLMOSS database SharePoint_Config in farm mode 
   5: 11/12/2008 10:00:40  8  INF                            Now joining to farm at server SOMSQL01\SQLMOSS database SharePoint_Config 
   6: 11/12/2008 10:00:42  8  ERR                            Task configdb has failed with an unknown exception 
   7: 11/12/2008 10:00:42  8  ERR                            Exception: System.Security.SecurityException: Access denied. 
   8:    at Microsoft.SharePoint.Administration.SPPersistedObject.Update() 
   9:    at Microsoft.SharePoint.Administration.SPServer.Update() 
  10:    at Microsoft.SharePoint.Administration.SPFarm.Join() 
  11:    at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb() 
  12:    at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run() 
  13:    at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask() 
  14: The Zone of the assembly that failed was: 
  15: MyComputer

Basically, my application server had the Infrastructure Updates, Excel Services Security Update, Document Lifecycle Workflow Update and Cumulative Updates installed.

Once I ran these on the new WFE Server and then ran the wizard to join the existing farm it worked. Found this resolution on MSDN Forums.

SharePoint vNext Recommendation

Wouldn't it be nice if the error message stated:

"The SharePoint Farm you are trying to join has more recent updates installed (listed below), please install these updates and join the farm again"

Or even better, the Central Administration server sends the updates to the new WFE server automatically!

SharePoint Updates/Patching Tip

I've downloaded all my updates and I have labelled the folders with the KB<number> as well as the order and what Edition it's for e.g. WSS 3.0 or MOSS 2007. This enables me to power through in order and I take these when I do any install along with the MOSS 2007 SP1 install ISO (not RTM). Anyone looking at what's installed can use the KB<number> to locate it on the support site and see what it fixes. Can't wait for SP2 to come out so it's just rolled up in one install ;-)

image

Published: 11/12/2008  4:56 AM | 1  Comment | 1  Links to this post

Nov 112008

MCP Microsoft Certified Master: Microsoft Office SharePoint Server 2007

So the SharePoint Team Blog announced two new certifications around SharePoint. The Microsoft Certified Master (MCM) and the Microsoft Certified Architect.

Resources

We were having discussions internally about this at Readify just today and what we look for in an individual. There was hot debate around whether we should mandate configuration and administration skills for a SharePoint Developer/Architect or whether that is a completely separate role. We came to the conclusion that to be a strong leading SharePoint Developer you have to understand the platform at this level and have had experience with installations and configuring the underlying platform. There is so much under the surface in Central Administration/STSADM etc. that you can leverage as a developer!

New Direction

This course is following in Cisco's efforts of certifying people in person and not just letting them take a tick box "monkey push the button" type exam format! They'll most likely have scenarios set up to prove your troubleshooting skills, debugging web parts or fixing a crawl that isn't working with authentication issues...or even worse still Kerberos!

Experience

I can understand why they are asking for SPS 2003 or CMS 2003 experience to get people with more than 2 years experience, lets face it MOSS 2007 Beta 2 hasn't been out that long and only RTM'd in November 2006.

One thing to bear in mind is if you're after a highly experienced SharePoint resource, you can pretty much rip the experience required for this course and slap it in a Job Description...can see Recruiters probably cutting and pasting as we speak!

Price

It seems overly expensive at $18,500USD and I can't see many companies paying for their staff to go on the course and I'm sure as hell anyone that good at SharePoint doesn't need a badge to prove it either!

Be interesting to see who goes on the course first and what they think of it...anyone booked already?

Dev Masters + Infra/IT Masters

I noticed that @JoelOleson has put a post out there on this and these were the responses on Twitter by @andrewconnell and @harbars. Joel's comments on Infra/IT and Dev camps hit home with our discussions today and that maybe in a commercial reality you need your Devs to be able to do installs. There aren't many companies out there with large teams of SharePoint resources that can split them into two camps! I still believe that Infrastructure specialists in general who would normally build Exchange etc. don't want to go near SharePoint and it's an extremely specialist area for them to get into! And get BURNT by.

Joel also discusses about Design Masters, Dev Masters and IT Masters. I tend to agree with Design Masters not needing to know the entire ins and outs of BDC or Enterprise Search for example and vice versa on Dev Masters. But the whole separate role for IT Masters is just something I haven't witnessed out there in that space. I'm sure they'll be more posts about this shortly!

image

Published: 11/11/2008  2:03 AM | 3  Comments | 5  Links to this post

Nov 112008

SharePoint Development Tools future and give them your opinion!

New Visual Studio 2010 SharePoint Development tools were announced at TechEd EMEA last week. Paul Andrew discusses what features will be available.

You can actually provide feedback on the current Visual Studio Extensions for Windows SharePoint Services 3.0 v1.2 at the Visual Studio Gallery site which Paul also announced in October this year. I have noticed that Ishai Sagi made a comment that he uses WSPBuilder due to complications that VSeWSS is required on the development environment to open projects created with it. This is also true of the STSDEV alternative. The usual cracks about requiring SharePoint running in your development environment was also raised by John Saunders.

I urge everyone to take the time to put feedback in the VSeWSS tool.

  • What do you like about VSeWSS?
  • Why don't you use it?
  • Why do you use WSPBuilder, STSDev, SPSource...what else do you use?
  • What would you like to see in it?

What do you like about VSeWSS?

  • It's developed by Microsoft and they obviously have more insight into vNext to drive path of VSeWSS

Why don't I use it?

I must admit I only install it to use the Solution Generator tool to reverse engineer List Instances to List Templates to include in Features in Solution Packages inside a STSDev created project. Once I have completed my work on SPSource to do the same functionality I would no longer require it in my environment.

Why do I use STSDEV?

STSDev does everything else that I require to build a Solution Package:

  • Visual Studio Targets for various tasks such as add, deploy, retract, delete, push to GAC etc.
  • Pre-built templates for Workflow, Web Parts, Empty Solution, Empty Solution with Assembly etc. Visual Studio projects
  • Auto-generate solution manifest, ddf, wsp
  • Auto-adds files in solution to 12 Hive structure in Solution manifest

Why do I use SPSource?

SPSource does reverse engineering for me on Content Types and Site Columns:

  • It integrates with STSDev (and also VSeWSS and WSPBuilder)

Why do I use PowerShell scripts?

PowerShell gives me the ability to use the SharePoint API directly in code. This is a lot more powerful than using STSADM administration tool and saves me writing C# console apps that use the API. I have been using the scripts on CodePlex as well as the ones on my blog.

What would I like to see?

  • Remove dependency on SharePoint on Dev environment
    Well, not having to have SharePoint running would get me out of Virtual Machine mode which would be nice!
  • Move over from .bat files and move towards PowerShell
    So much more control with PowerShell with looping, recursion, functions etc.
  • Create Scripts to stop dependency on VSeWSS + Visual Studio in environment
    The Deploy command within VSeWSS is great for deploying to your development environment, but it'd be great it if produced scripts that you could call with parameters that can be moved to an environment with the wsp to run. This could do the same things as the Deploy, maybe with switches for certain things such as retract, delete, add, deploy, activate etc. ALl that stuff that we all permanently type in each environment we deploy wsps too!
  • Reverse engineering
    Much like the facilities available in SPSource, but on a entire scale for all artefacts within a SharePoint environment.
  • Script Generator Configuration tool
    The ability to point at a farm that you have configured sweet and script an install script in XML that can then be used to install another farm identical. No more creating SSPs in the UI or scripting them by hand!
  • Code Performance Analysis Tool
    As dicussed in other posts, there are a lot of grey areas around best ways to use the API (see my diigo links on this). It would be great if a tool like FXCop could have a package that warned developers about these things up front. That way they could be taught on the job and learn from their mistakes as they go.
  • Demo VM options
    So the Demo VM is great although it has a time limit. It'd be great if there was a way to plug in your MSDN product keys and kill the time limit and use that VM. It would save companies building their own from scratch. I've been so many places where they have VMs built "their own special way". Microsoft could have a Windows Server 2003/2008, SQL 2005/2008  also with RTM/SP1/SP2 combinations. Could also have a set of VMs with a sample Domain controller like the VM I have running on the same host to allow for full AD testing etc. As the Demo VM is using Local Accounts, like the issue I highlighted yesterday around the SPG Guidance.

More Information

  • Tommy Segoro here in Perth will be presenting at this months Perth SharePoint User Group comparing the development tools out there. I've reviewed his deck and they'll be some useful stuff for everyone, I'll post up a link as soon as the presentation is complete.
  • There's plenty of blog posts out there on what peoples SharePoint Development Environments look like check them out
  • Sahil Malik has written a good 2 post set here and here on SharePoint Development. He also discusses it more here!
  • Matt Smith does a great overview of peoples concerns here too.
Published: 11/11/2008  1:47 AM | 0  Comments | 0  Links to this post

Nov 102008

SharePoint Developer Resources not to be missed! Not just a repeat announcement of SharePoint Guidance ;-)

SharePoint Guidance : P&P

image

The new SharePoint Guidance was released last week. There's a whole CodePlex source control project that covers how the team have implemented particular areas Leveraging the SharePoint Platform. They have taken a Contoso scenario to show how the solution could be implemented using the SharePoint platform.

It covers off so far:

  • Content types
  • Custom actions
  • Custom groups and permission levels
  • Event receivers
  • Features
  • Lists
  • Standard and custom Web Parts
  • Workflows

    It leverages the Visual Studio Extensions for WSS 3.0 (VSeWSS 1.2) that can be downloaded and installed on Visual Studio 2008. They also promote other tools like Typemock for unit testing and utilise them, but unfortunately don't promote other useful tools such as SPSource that will reverse engineer Content Types and Site Columns from a SharePoint Site in the Development Environment. I can understand why they don't promote STSDEV or WSPBuilder because they are open source tools that do a similar sort of thing as VSeWSS but with a different approach.

    They provide a Virtual PC image for development and has installation instructions for the Contoso package and source code.

    The documentation explains why the application was designed the way it was and the architecture etc. They use various Patterns (MVP, Repository and Service Locator) to implement the solution. There's also a vision document that explains what they are trying achieve.

    There are various issues being tracked with the Solution on the CodePlex Portal that are worth bearing in mind ;-)

    What I'd like to see in the next version. Please understand that this is constructive criticism and I can apreciate A LOT of work has gone into this and that I certainly will be taking it all onboard and reusing this with my students in the future.

    • Web Part Pattern
      I had a look at the way this has been implemented and I think that this much engineering is going to really scare people off and is probably unrealistic. As I've mentioned in posts before, Business Users can build these things in minutes (with a few exceptions - workflows, event receivers)...to develop what's in this solution is by my estimations at least 1 developer for 3 weeks coding. Once the developers get used to this approach it'll come down, but when you look at what is built for 3 weeks work, it isn't going to wow that many Stakeholders.
      There are huge advantages of writing it this way, maybe they need to think of it from the Stakeholders point of view and scare them a little about doing this the "quick and dirty way".
    • PowerShell
      Use of PowerShell for automated build scripts, not relying on VSeWSS 1.2 to deploy to environment...e.g. how would they currently deploy this giving instructions to a SharePoint Administrator into UAT.
    • The Versioning story
      More explanation on how they have done the Contoso.RI.Upgrade solution for web parts, workflows etc. and how you would do this step by step.
      This seems to be a very tedious approach, as you really want to get v1.0 correct otherwise you'll be permanently writing incremental update scripts from v1.0 to v2.0 to v3.0. Will make getting the big picture on a Solution a nightmare by v5.0. I understand this is an issue with how SharePoint treats instances but there must be a smarter way of doing this with a tool.
    • TypeMock Unit Tests
      The Unit Tests are in a separate solution file and utilise TypeMock . I had a few failed Unit Tests, didn't have time to have a full look to see why they failed but the Domain issue (below) seems to be some of them.
      image
    • ISSUE: Domain Machine
      Also noticed when I installed this on a machine in a Dev Domain it is actually hard coded to use local accounts to get the HR Manager and doesn't fully leverage the SharePoint Environment. I know this is only a demonstration, but didn't see that warning in the notes.
         1: /// <summary>
         2: /// The GetManager method returns a user's manager.
         3: /// </summary>
         4: /// <param name="userName">the username of the employee</param>
         5: /// <returns>the name of the employee's manager</returns>
         6: public string GetManager(string userName)
         7: {
         8:     return String.Format(@"{0}\{1}", Environment.MachineName, "spgmanager");            
         9: }
    • ISSUE: Rendering Failed
      Also found when I approved the Task I got this in the View (below), I'm sure these things will come out in the wash.
      image 

    PDC 2008 - SharePoint 2007: Creating SharePoint Applications with Visual Studio 2008

    image

    If you want to see a webcast walk through VSeWSS 1.2, this is a great webcast walk-thru of using VSeWSS 1.2 to create Contoso application that is self provisioning using Features and Solution packages which includes Custom Fields, Content Types, Custom Actions, Event Receivers, Custom Application Page and Lists.

    I liked the 'List Definition from Content Type' feature in VSeWSS 1.2. This saves using Solution Generator and generate you your List definition files. He also walks through how to modify schema.xml to add the Fields in a Content Type to the Default View into the <ViewFields> element.

    He also created a WIKI Page Library too which gave all the List Definition files too. He also links the Content Type to the Wiki page using a Custom Action which will create the wiki page if it's not already there using a Custom Application Page.

    He discusses how to disable/enable event firing when he makes changes to list properties inside an Event Receiver which is extremely useful!

    He also discusses SilverLight too and discusses new Controls including the new Charting control in SharePoint.

    He shows how to deploy the generated WSP package and also debug the Event Receiver with a build (yes it will find the correct w3wp process to attach to and start debugging! NEAT).

    He had a "demo god" moment and used Hyper-V to jump to a working snapshot as his code didn't build and deploy properly! Very slick! His code is available here. Chris Johnson did a great job presenting too!

    Microsoft SharePoint Developer Portal

    image

    Andrew Connell and Robert Bogue put together a Portal for SharePoint targeted at ASP.NET Developers with Web Casts, Labs and quick start code. They picked 10 areas that they thought would catch developers eyes and encourage them to Leverage the SharePoint Platform.

    The content is broken down in such a way that it makes it easy to keep coming back to this almost like a virtual "brown bag" lunch! There's no excuse to miss this! The Silverlight interface adds that "get the developers excited" feel. Again  I had issues with accessing some of the screen casts.

    RAMPUP

    image

    The new MSDN Ramp Up section is targeted at SharePoint Developers too and covers off:

    • Web Parts
    • Data Lists
    • Event Handlers
    • Workflow
    • Silverlight Web Parts

    There are:

    • Articles
    • Slide-casts (couldn't get working!)
    • Code-casts (couldn't get working!)
    • Virtual Labs

    These are another great set of training content that will overlap with the SharePoint Development Portal content. But it's another great place for people to start. I noticed I couldn't view the slide-casts or code-casts.

    Andrew Connell's book: Professional SharePoint 2007 Web Content Management Development

    image

    This book has so many great chapters and although it focuses on WCM, has the best flow for learning how to develop Site Definitions, Solution packages, Features, Web Parts, Custom Fields, Site Columsn...the list goes on! I've read a lot of SharePoint 2007 books and for me this is one of the best Development focused books out there! His podcast interview over at SharePointPodShow.com was awesome last week! Top work to Andrew Connell!

    Final word

    One thing to take into account is do yourself a favour and use Internet Explorer with all these Microsoft web sites, they just don't work the way they should do in Firefox!

  • Published: 11/10/2008  4:46 AM | 0  Comments | 1  Links to this post

    Nov 072008

    Developing a InfoPath Solution using a Solution Package

    I've had a request from @julioc for my Solution package that deploys:

    • Site Collection Feature
      • InfoPath Form
        • Automatically to Central Administration Forms Templates
    • Site Feature
      • InfoPath Form Library
        • Provisioned by a Feature
        • Includes the Form Content Type automatically hooked up to it
      • Projects List
        • Provisioned by a Feature
        • List is used within the form in a Drop Down binded by a UDCX Data Connection
      • UDCX Files in a  Data Connection Library 
        • Provisioned by a Feature
        • Creates a Data Connection Library (DCL) at that Site where Feature activated
        • Creates the UDCX files in the DCL and automatically edits the xml with the correct references to the Projects List in that Site

    I used STSDev to create this Solution in Visual Studio to give me the Build Targets quick options for deploying in my development environment. I have leveraged Sahil Malik's solution to deploy the InfoPath Form.

    The benefits to this approach is:

    • No manual deploying of InfoPath Forms in ANY environment
    • The ability to retract the entire thing out as it's a Solution package with Features.
    • Having the whole Solution Package in SOURCE CONTROL
    • UDCX files are automatically generated, no hand coding!
    • UDCX files allow the Feature to be activated at different levels of multiple Site Collections and reference the relative Data Connection Library to point to the relative Projects List without hard coding it directly in the InfoPath Form and having multiple copies for each environment (YUCK!).

    I will be doing a web cast in the week to walk-through this in more detail. The sample code can be found on my Sky Drive.

    Published: 11/7/2008  11:39 PM | 1  Comment | 0  Links to this post

    Nov 062008

    Windows SharePoint Services 3.0: Surveys and Mobile Limitation

    So I had a SharePoint Bat Phone call today about a client of Readify's that had created a Survey in WSS 3.0 with two simple questions and wanted it to be viewed on a Windows Mobile Device. They were aware that SharePoint had a out of the box Mobile view of all it's pages. It's one of the top 10 reasons to use SharePoint from the marketing site.

    The MSDN homepage for SharePoint Mobile Development is great as a kick start into this area. The Mobile Fields Table page basically outlines how elements are rendered in the Mobile View. This explains that all out of the box Site Column Types are rendered correctly. Obviously if you create your own custom fields and Site Columns you are going to have some extra overheads that won't work straight away for you.

    If you want to customise the actual Mobile List View Page or Form Page  there are How To's on this too.

    The problem there were having was that Surveys do not support a Mobile View. There is not much out there to document what can and can't be supported by the "/m/" switch on SharePoint URLs.

    The problem with trying to get non-supporting List Views to be mobile compatible is that you can't select 'Modify this View'  on a Survey via the Web Interface like you can with other Types of SharePoint Lists such as Custom Lists, Document Libraries etc. And therefore can't get to these options.

    image

    There are probably ways to extend SharePoint Surveys, but I would recommend looking at your requirements and seeing whether you can use a simple Custom List with multiple Columns that represent Questions. You're not going to get the "lite" reporting you get out of Surveys, but at least it'll be Mobile View compatible.

    If anyone can point me to a list of non-compatible Mobile interfaces for SharePoint I'd greatly appreciate it and so would the rest of the community no doubt!

    Published: 11/6/2008  1:33 AM | 0  Comments | 0  Links to this post

     Next >>