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
Feb 242009

Issues from the field: SharePoint Development Environment Limitations

There has been some debate on the OzMoss List Serve here in Australia regarding the inability to develop with SharePoint on an XP/Vista machine properly.

The reason for this requirement by so many people is because of the controls put in place by organisation dictating that Developers HAVE to use an SOE workstation and typically these are locked down to XP/Vista and only have 2Gb RAM.

Common Steps in the Process

  1. Admin Rights
    The first battle for developers within these organisations is trying to get local admin rights granted to install the extra applications required...this is an uphill battle from the start!
  2. RAM
    Getting extra RAM to handle having SQL Server and Visual Studio running to build Web Applications in IIS in isolation is probably the second thing these developers go through!
  3. Windows Server 2003/8 -> Virtual Machine
    To run SharePoint and all the trimmings you need Windows Server 2003/8 (there is a workaround - but it's a workaround for a reason). So if you are stuck with a SOE XP/Vista machine you can run a client Virtual Machine (VM) inside this host. For this, you're going to need to give the client VM at least 1.5Gb RAM and leave a minimum of a 1Gb RAM for your host.
  4. Network access for source control
    Once you have a VM running, you'll find it'll need access to the network to get to the source control server. This can also be an issue depending on whether your source control needs to be on the domain or not etc. You may also want to be able to access the Internet from within your VM as well.

Licensing Implications

All of this does imply license consideration, for example to get MSDN Subscriptions so that Developers can run Windows Server 2003/8, SQL 2005/8, MOSS 200 and VS2008 within their own environment. With most vendor platforms there are certain developer tools you need. I've always been fortunate enough to have access to these things, but it's definitely worth bearing in mind those who don't! I can understand why EndUserSharePoint.com is doing so well...because there are so many customisation shops out there that don't touch VS2008!

This has been discussed and documented in more detail on the 'Building a SharePoint Development Environment' on the SharePointDevWiki.com.

VSeWSS 1.3 CTP WCF Web Service

There has been some work done in VSeWSS 1.3 CTP to have a WCF web service included as part of the installation. My assumptions around this is that you can install this on a remote SharePoint Server and execute some of the commands remotely. This would mean that you could potentially do some work with just the dlls copied onto your XP/Vista Workstation and have VS2008 on there.

Published: 2/24/2009  10:16 PM | 0  Comments | 0  Links to this post

Feb 232009

jQuery: the SharePoint Band Aid

Ok, so now I've got your attention you eager beaver SharePoint End Users...Power Users...etc. I thought I'd just put a few things out there from the other side of the fence!

So there's lots of hype around jQuery and SharePoint on various resources such as EndUserSharePoint.com and some of my other personal SharePoint Developer heroes: Joel Oleson, Jan Tielens, Waldek Mastykarz, Nick Swan, Paul Grenier (aka AutoSponge) and David Kitchen. There is a great summary post on jQuery here by Vedant Kulshreshtha.

To summarise, jQuery is mainly used to make SharePoint User Interface "useable" as Mark Miller put it in Joel's comments. He does put a caveat in terms of "it having its place".

The Cons

Avoiding Development

jQuery is a serious band aid in terms of avoiding modifying the User Interface via the correct Microsoft supported approach: Solution Packges, Features, Master Pages, Page Layouts and CSS properly. If you click on a lot of the links above you'll notice most is to tweak how SharePoint renders the out of the box page elements. This can all be done by development approach as well with a lot more control around it (versioning, deployment, performance, extensibility etc.).

Upgrade Path

The benefit of modifying the User Interface via the development approach is that you are extending SharePoint's User Interface control elements rather than adding an extra layer between SharePoint's rendering and the User viewing seeing it rendered. By adding this extra layer using jQuery to hack at what would be rendered you are introducing dependencies in terms of what you expect SharePoint to render. This will become an issue when you run any service packs on the SharePoint farm because there is no guarantee that things will stay the same between version!

Losing Control - "all or nothing"

This brings me on to my next point. Most of the examples displayed encourage users to place jQuery into Content Editor Web Parts within Web Part Zones. This basically means that anyone with access to a Page can add this web part, paste in the jQuery code and save it.
In short, controlling who can and cannot add jQuery is going to be a problem. SharePoint does not have the ability out of the box to block certain code blocks such as <script> from being used within Content Editor Web Parts or any Rich Text Editor element on a page for that matter.

Breaking stuff

It is also worth pointing out that if "power users" write crap code and don't test it properly, that they will break the JavaScript for that page which could stop other scripts from loading up properly. This could cause even more useability problems. Even worse, imagine if they write recursive methods or massive loops or worse still find some code that calls the web services and puts huge load on SharePoint servers. The worst case scenarios here are endless!

Enforcing Branding

jQuery basically gives "power users" the ability to break the branding that SharePoint is meant to put back into the control of the corporation. It's one of the selling points of the Platform, and now we're encouraging them to hack around the efforts of consistency with Master Pages and Page Layouts.

Maintenance

As a scenario, imagine two years down the line when there has been multiple "power users" who have dabbled with jQuery and cut and paste stuff from all these resources out there to make their SharePoint User Interface "useable". It'll be an absolute nightmare!

The other issue with this is that the scripts are being put straight into the Content Editor Web Part. There is no versioning in these web parts and I can't see anybody trying to enforce that jQuery scripts be put in source control first by Power Users before being deployed to Production as it'll be deemed as content.

Business Logic locked in client side

I've also seen jQuery being used for Business Logic, for example, domain validation of List Item columns in forms. This again can lead to business logic being locked into client side code with no versioning or unit testing! The best way forward with regards to this is calling off to Web Services...but that would require Development. So why not do it in development in the first place?

Testability

jQuery is a client side script that is executed in the browser. The only real way to test this would be to record User Interface scripts and re-run them each time. Again, this is a huge overhead...even more so if this is done manually. To put this into perspective...how would you test it's all operational when you've completed the next SharePoint update where the user interface has changed?

Debugging

I'm actually quite shocked how jQuery has entered the mainstream like this. It wasn't that long ago that JavaScript was the devil and that it was just all so hard to debug! There are some great tools around to help you these days with this, but just bear in mind that sometimes it is a nightmare to see what is going on. So if developers aren't that happy with it (in general) how are "power users" going to cope?

Accessibility

Browsers have come along way with regards to JavaScript support and jQuery as a framework has done a great job of getting coverage across most JavaScript engines. Most Power Users who are playing with jQuery are in an Intranet environment which is typically controlled by a SOE that includes the latest update of Internet Explorer 7.0.
It is worth highlighting, for those not in this scenario to be aware that it is not going to be a reality if they have JavaScript disabled. This is especially so for Internet facing web sites where you can't control the end users browser.

The Pros

Open Source

As a framework, you can't go wrong with jQuery. It's becoming the mainstream JavaScript framework of choice across many solutions these days. I appreciate that there is a lot of buzz across the whole IT world around jQuery for numerous reasons such as Microsoft taking it up for SharePoint 14 even though its an open source  project originally created by John Resig (who currently works at Mozilla).

Easy to Use

The jQuery framework is a lot easier to read and understand compared to other frameworks out there. It is also extremely light-weight and easy to snap into a page (almost too easy).

Community

The jQuery community (see Joel's post) is growing at a huge rate because of the uptake by major platforms and also because the open source community just knows how to create buzz around products.

Web Services calls to avoid postbacks

Everyone hates ASP.NET/SharePoint Postbacks with a vengeance, the ability to refresh sections of the page without refreshing the entire screen is a godsend from a usability point of view.

 

Ok, so I'm off my soap box. But I feel that it is my duty as a member of the SharePoint community to point out the risks of jQuery in SharePoint implementations! Giving this much control to "power users" scares the sh*t out of me or as my Perth metal lover Paul Culmsee would say "leads to a wicked problem".
I'm all for "power users" to control content within the platform...I just don't see writing jQuery as something they should control!

Published: 2/23/2009  1:28 AM | 11  Comments | 1  Links to this post

Feb 222009

The Ultimate SharePoint Development Tool and the new release of VSeWSS 1.3 CTP and STSDev 2008 v2.0

I've been tweeting lately on SharePoint Development tools and @MattBremer kindly pointed out that STSDev 2008 v2.0 was released last week.

What is STSDev?

STSDev codeplex project originally started by the Ted Pattison Group David Mann is currently the lead on this although there have been no updates for a long time. STSDev v1.3 is a stable product which is widely used across the community, along with WSPBuilder. I won't repeat what has been compared already on the Wiki (definately worth a read!),

What is STSDev 2008?

STSDev 2008 v2.0 codeplex project is a branched version of the original STSDev v1.3. Just to highlight what STSDev 2008 v2.0 has tried to do is integrate with Visual Studio 2008 (like WSPBuilder) rather than being a separate executable.

The problem is I downloaded this version into a clean VM (without STSDev, VSeWSS or WSPBuilder). I found that even using the new integration with VS2008 for New Project and selecting any of the templates provided...that most of them wouldn't build without errors.

I can see the advantage of the integration and also with the ability to add new project items (like WSPBuilder) such as Features, WebParts, Workflow, Web Services etc.
WSPBuilder doesn't allow you to have exposure to the build events like STSDev .targets file which a lot of SharePoint Developers like to have exposure too. But WSPBuilder is a lot more elegant in terms of extending what Project Items are available by using Templates.

UPDATE 24-Feb-2009 - I've communicated with David McWee who is the Lead on this project and have gone into more detail on the 6 errors I found with the release and posted them on CodePlex Issue register for the project.

VSeWSS 1.3 CTP - Microsoft's Tool

VSeWSS 1.3 CTP has been released over the weekend, I've had a good play with it and already posted an issue I have. It is interesting to see such negative feedback on the product across the community (won't quote people, but its easy to find). This has been illustrated in the comparison page as well.
The main issue around it seems to be the lack of 12 Hive structure support. I can see where the team has come from in terms of reducing the knowledge needed on SharePoint architecture to build solutions...but the flipside is that debugging for these guys without fundamental knowledge is going to be impossible!
I know VS2010 tools have had some sneak peaks from Somasegar, but seriously it looks like they are just integration VSeWSS 1.3 directly into it.

UPDATE 24-Feb-2009 -I've communicated with Paul Andrew (Product Manager) on this and he has corrected some isses on the comparison page in terms of what VSeWSS can do in terms of producing a package that can be source controlled and also a command line utility which drops dependency on Visual Studio.

Hold off

If you really want Visual Studio integration, I would stick with WSPBuilder personally - the main reason being around 12 Hive support.
If you want the exposure to build targets I would look at STSDev v1.3. At this stage STSDev 2008 v2.0 is not stable enough to use on projects.

The Future

I have had brief discussions with Carsten Keutmann to try and work to merge the STSDev and WSPBuilder features to get the best of both worlds. In my opinion we should use WSPBuilder as the base because it is a more elegant code base and just pull across some of the templates that are missing and expose the build targets.

We don't want to fragment the market!

The last thing the SharePoint Community needs is a fragmented list of SharePoint Development Tools. It would be great to consolidate this. I have tried to make it easier for people to chose with the comparison page.
Hopefully the team at STSDev 2008 v2.0 will also help to consolidate into a single tool to go in the direction of the Ultimate SharePoint Development Tool. I believe the reason they branched off originally was due to them finding it hard to contact the STSDev CodePlex project team to enhance that version. Be great to merge those changes back in and have the one project.

The Ultimate SharePoint Development Tool

I have been busy trying to encourage the community to add to the wish list of 'The Ultimate SharePoint Development Tool' and also to review the comparisons of the 3 main tools WSPBuilder, STSDev and VSeWSS (Microsoft).

I strongly encourage everyone to add their ideas to the wiki pages!

Published: 2/22/2009  9:40 PM | 2  Comments | 0  Links to this post

Feb 212009

VSeWSS 1.3 CTP - why does it require SQL access?

So the new VSeWSS 1.3 CTP creates a Web Application to host a WCF web service. Nice to see the SharePoint Development Product team playing with new technology. In my experience of installing it into a Development environment where I follow Least Priviledged installation approach recommended by Microsoft I found that you'll receive an error when trying to Package any VSeWSS Project in Visual Studio 2008:

Error    1    VSeWSS Service Error: Assembly C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\Empty1\Empty1\bin\Debug\Empty1.dll not found. This may occur because the VSeWSS WCF Service does not have local administrator permissions. Please review the release notes. 

Log file written to: C:\Documents and Settings\Default User\Application Data\Microsoft\VSeWSS 1.3\VSeWSS1.3 service.log        0    0    

You can get round this by adding the domain account running the Application Pool that the VSeWSS web application is running under to the Local Administrators group and running IISRESET. Not the best configuration in the World required just to write a log file to the Application Data folder! I would suggest to the team rethinking the architectural approach of writing log files here if it requires this configuration.

This also fired another little gotcha as I tried to create a new local admin user to run the application pool, then I realised that the user running the isolated Application Pool would have to be part of these groups (according to the VSeWSS 1.3 CTP release notes):

  • Administrators
  • IIS_IUSRS
  • Users
  • WSS_ADMIN_WPG
  • WSS_RESTRICTED_WPG
  • WSS_WPG
  • SQLServer2005MSSQLUser$ - Unique on your machine created for SQL Server access

Why on Earth does the account require access to the SQL Server? After much thought I decided to run the Solution Generator to reverse engineer a List Definition and got this error (because I didn't grant the account access to SQL):

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
Microsoft.SharePoint.Tools.Utilities.VSeWSSServiceException: VSeWSS Service Error: Cannot open database "WSS_Content_Portal" requested by the login. The login failed.
Login failed for user 'DEV-MOSS01\VSEWSS'.

Log file written to: C:\Documents and Settings\Default User\Application Data\Microsoft\VSeWSS 1.3\VSeWSS1.3 service.log
   at Microsoft.SharePoint.Tools.Utilities.SPProxy.HandleResponse(Response response)
   at Microsoft.SharePoint.Tools.Forms.ListSelectionPanel.UpdateListView()
   at Microsoft.SharePoint.Tools.Forms.ExportDetailForm.ListSelectionPanelVisibleChanged(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnLocationChanged(EventArgs e)
   at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
   at System.Windows.Forms.Control.UpdateBounds()
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
SPSolGen
    Assembly Version: 12.0.0.0
    Win32 Version: 12.0.4518.1092
    CodeBase: file:///C:/Program%20Files/Microsoft%20SharePoint%20Developer%20Tools%209.0/ssg%201.3/SPSolGen.exe
----------------------------------------
System.Runtime.Serialization
    Assembly Version: 3.0.0.0
    Win32 Version: 3.0.4506.2152 (SP.030729-0100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Serialization/3.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.ServiceModel
    Assembly Version: 3.0.0.0
    Win32 Version: 3.0.4506.2152 (SP.030729-0100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.ServiceModel/3.0.0.0__b77a5c561934e089/System.ServiceModel.dll
----------------------------------------
SMDiagnostics
    Assembly Version: 3.0.0.0
    Win32 Version: 3.0.4506.2152 (SP.030729-0100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/SMDiagnostics/3.0.0.0__b77a5c561934e089/SMDiagnostics.dll
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Web
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
System.WorkflowServices
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.594.1152
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.WorkflowServices/3.5.0.0__31bf3856ad364e35/System.WorkflowServices.dll
----------------------------------------
System.ServiceModel.Web
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.594.1152
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.ServiceModel.Web/3.5.0.0__31bf3856ad364e35/System.ServiceModel.Web.dll
----------------------------------------
Microsoft.VisualStudio.Diagnostics.ServiceModelSink
    Assembly Version: 3.0.0.0
    Win32 Version: 9.0.30729.1
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualStudio.Diagnostics.ServiceModelSink/3.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.Diagnostics.ServiceModelSink.dll
----------------------------------------
System.IdentityModel
    Assembly Version: 3.0.0.0
    Win32 Version: 3.0.4506.2152 (SP.030729-0100)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.IdentityModel/3.0.0.0__b77a5c561934e089/System.IdentityModel.dll
----------------------------------------
Microsoft.SharePoint.Tools.Resources
    Assembly Version: 12.0.0.0
    Win32 Version: 12.0.4518.1092
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.SharePoint.Tools.Resources/12.0.0.0__5c284271f0d9907c/Microsoft.SharePoint.Tools.Resources.dll
----------------------------------------
Microsoft.SharePoint.Tools.FileResources
    Assembly Version: 12.0.0.0
    Win32 Version: 12.0.4518.1092
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.SharePoint.Tools.FileResources/12.0.0.0__5c284271f0d9907c/Microsoft.SharePoint.Tools.FileResources.dll
----------------------------------------
Accessibility
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

The log file had this entry:

2009/02/22 14:13:08    Error
System.Data.SqlClient.SqlException: Cannot open database "WSS_Content_Portal" requested by the login. The login failed.
Login failed for user 'DEV-MOSS01\VSEWSS'.
   at Microsoft.SharePoint.Tools.Reflection.ReflectionUtility.InvokeMethod(MethodBase method, Object instance, Object[] parameters)
   at Microsoft.SharePoint.Tools.Reflection.ReflectionUtility.InvokeGetProperty(Type type, String propertyName, Object instance)
   at Microsoft.SharePoint.Tools.SharePointProxies.SPProxy.InvokeGetProperty(String name)
   at Microsoft.SharePoint.Tools.SharePointProxies.SPWebProxy.get_ID()
   at Microsoft.SharePoint.Tools.SharePointProxies.SPProxyUtility.GetWeb(SPSiteProxy site, String relativeUrl)
   at Microsoft.SharePoint.Tools.SharePointProxies.SPProxyUtility.GetWeb(String url)
   at Microsoft.SharePoint.Tools.SharePointProxies.SPListCollectionFacade.GetLists(String siteUrl)
   at VSeWSS.Server.Services.SPService.GetListCollectionLists(String siteUrl)

VSeWSS 1.2

I used RedGate Reflector to look at VSeWSS 1.2 to see how it reverse engineered and they were using RPC in the ExportListTemplate.

VSeWSS 1.3

I used RedGate Reflector again to look at VSeWSS 1.3 new WCF web service located at C:\Program Files\Microsoft SharePoint Developer Tools 9.0\svc\bin\ . There are four dlls: Microsoft.SharePoint.Tools.FileResources.dll, Microsoft.SharePoint.Tools.Resources.dll, VSeWSS.Server.Services.dll and VSeWSS.Server.SPProxies.dll.

The code appears to be the same as VSeWSS. I was in the Disassembled version of the ExportListTemplate method. I had a flick through here and it's just doing a lot of hacking at the schema file generated by the RPC method to get it to be compatible with a schema file in a wsp package (e.g. removing unsupported fields, tweaking the summary view, updating the content type references etc.).

Looking at the log entry again, it looks like its trying to use reflection to get at the Web object. I can't see any code that is calling off to System.Data.SqlClient but it's calling it and needs an account for it to work.

Are they breaking the rules?

So why is Solution Generator trying to access the SQL Database directly using this account rather than going through the API? Is there a limitation to the API that means you have to use the SQL Database directly? Isn't this breaking the main rule Microsoft have set with regards to Developing on top of SharePoint?

If these guys are breaking the rules...why won't the rest of the SharePoint Developer community? Be great to get some feedback on this?!?!

I've added this to the forum to make sure the team are aware of it. Any thoughts would be greatly appreciated!

UPDATE 24-Feb-2009

Paul Andrew kindly sent me an email explaining the reasoning behind this:

"You have to have local administrator permissions (and those others) for the SharePoint deployment API’s to succeed. This is required whether you use STSADM or the APIs. We chose not to add the permissions automatically to the WCF service, and hence you have to add them before it will work. This isn’t a change in VSeWSS 1.3, but is just a requirement of the SharePoint APIs."

Thanks again for Paul getting back so swiftly on this one.

Published: 2/21/2009  11:01 PM | 2  Comments | 0  Links to this post

Feb 202009

How we did WA.com with SharePoint WCM - Perth SharePoint User Group February Presentation Web Cast

 
It's great to finally get round to posting up a webcast of our Perth User Group for those that couldn't make it either due to living the other side of the World or being flat out at work!
 
I spent the best part of the flight over to Sydney syncing the PowerPoint slides to the voice recording I made. I've watched through it and it's a great presentation to keep referring back to if you are dealing with WCM!
 
Thanks again to Michael Hanes for presenting last week! Great job and looking forward to the next one next month!
 
WEBCAST

Click here to download the web cast

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

Feb 202009

Some advice for SharePoint Community Bloggers to up their game!

I've noticed that there are plenty of bloggers out there that don't have a few social networking tools hooked up as well as some obvious tweaks. This will not only encourage more traffic to their own blog but also help the community to spread the word! So here goes:

Full Posts in RSS Feed

Don't cut your posts to summary fields in RSS feeds. If people want to pull down all the communities posts to read on a plane or car journey etc. If they are offline...they won't be able to see all your content! Don't try and force people to come to your site, it will deter people more than encourage reading!

Feedburner

A lot the SharePoint bloggers have 'ummed and 'arrrd about what blog engine to use or what url they want to use. This has meant feeds going offline and changing...use Feedburner at a minimum to prevent loss of readership. Also use it to track your readership levels!

image

Technorati

Every blogger should register, login and configure their RSS feed with Technorati! It's a very clever engine that basically looks through all posts that are configured inside it and sees whether your posts are referred to. Check out my Technorati page and you'll see who's referred to me. This basically assigns you a Technorati rank.

This is what Path to SharePoint's SharePoint Blogs page ranks each blog! Have a look through the list and you'll see it's extremely accurate if you konw the community well enough in terms of regular quality content.

image

Blog Post Titles!

I've contacted a few SharePoint Community bloggers about their blogs where the Page title doesn't show up properly in the <HEAD><TITLE> in the <HTML> which means that when people using Social Bookmarking tools such as Diigo try and bookmark their page...it doesn't pick up the post title...making it pretty useless for referencing later on! This is usually due to the CKS:EBE 2.0 SharePoint Engine blogs unfortunately!

Activate Blog Comments!

If you're posting content on your blog...please switch on comments so that the community can collaborate back. The irony is that most of the SharePoint blogs that don't have comments switched on is because of the limitations of the SharePoint Platform Blog engine!

Twitter

If you're not on Twitter, get on it! There's heaps of SharePoint crew online and they're all out there announcing new posts and sharing ideas and answering questions!

UPDATE: There is a Twitter Grader page for SharePoint too...just make sure you have SharePoint mentioned in your profile! Can't believe how many of you guys don't!

image

PostRank

PostRank is a great way of showing your users which of your posts is most popular. This is especially handy if the user has only just discovered your blog after a post title catching their eye and wants to see what else your blog has to offer!

image

Please use the comments to suggest any other things that people should be adding.

Published: 2/20/2009  10:55 PM | 8  Comments | 0  Links to this post

Feb 202009

SharePoint Link Love 21-Feb-2009

Published: 2/20/2009  10:36 PM | 0  Comments | 0  Links to this post

Feb 192009

SharePoint Link Love 20-Feb-2009

Published: 2/19/2009  11:42 PM | 0  Comments | 0  Links to this post

Feb 152009

The SharePoint Implementation Market needs to grow up!

We've all watched the industry make the most of the "SharePoint boom" that Microsoft has created by releasing SharePoint 2007 in 2006. This led to various problems in the market surrounding the product.

How did this unravel?

  • significant issues in the initial RTM release
  • no governance up front by Microsoft on how to implement solutions on top of SharePoint
  • immature SharePoint Solution Integrators (SI's) who implemented poor solutions
  • slightly more experienced SI's going in and patching up the damage caused by the first attempt at the solution

This has led to a huge misconception of the product and lots of SI's walking away from SharePoint projects due to getting seriously burnt and it all "being just too hard".

Why did it happen?

We've all seen the devastation its caused in the market place for various reasons:

Everyone is doing everything

"This is a platform people!"...treat each implementation as another solution on a single maintained infrastructure! Don't let SI's come in and do everything, it's unlikely they've got the skill sets to do both Infrastructure AND Solutions! There are immense skills sets to do this, SI's should stick to what they're good at:

  • If they are known for implementing networks and servers they're unlikely to be any good at implementing a Document Management System on top of SharePoint.
  • If they are known for implementing a Document Management System on top of SharePoint, they're unlikely to be able to architect networks and servers!

Hopefully you get where I'm coming from! It also means that your people have to know so much and training people up becomes a nightmare. The other issues is you have pockets of knowledge and usually too much dependency on one person in the team. This results in SI's dumping junior guys into implementations where they're learning on the job, but being charged out at "SharePoint Developer" rates.

I'll finish this bit with a question..."Would you let an electrician come back and hang some doors in your house?" e.g. "Would you let server admin guys write CSS and XHTML to build your Internet Site in SharePoint?" The sad thing is plenty are!

Microsoft's "Certification"

I can confidently say this now as I have all four MCTS certifications for SharePoint, which are broken up into Administration and Development for both MOSS and WSS.

This really doesn't test anyone's skills deep enough to be worthy of a certification compared to other Microsoft certifications out there. If you took on someone who had an MCTS in MOSS Development and ask them to go implement a large scale Business Data Catalogue solution or InfoPath solution, they'd be stumped.

The certifications just don't go deep enough and SI's and Organisations just assume that an MCTS MOSS Dev certified developer can do everything in the MOSS stack which is ridiculous!

"Dog of all trades, master of none"

Organisations buy into the marketing and then realise that there is a lot of implementation to be done after it's all installed to make it operational. Blogs are no where near ready for Enterprise 2.0 out of the box! Check out my Leveraging the SharePoint Platform series to read more on this.

Cutting Corners

There are so many ways to do things in SharePoint (see SharePoint Implementation Approach Comparison Chart) and usually because it's such a complicated and expensive process to purchase and deploy the base platform, when it comes to implementing the initial solutions such as Intranets...corners are cut! Mostly by not investing the time in Developing Solutions properly and just hacking away at out of the box files because its quicker.
A lot of projects have been awarded to the SI who had the cheapest quote and it's usually due to the overhead costs of doing things properly over getting it done. This always bites the Organisation up the backside, but by that point its too late!

Upgrades too hard

I've seen plenty of implementations where corners were cut and then there was no confidence when it came to even try to upgrade the underlying platform. This has left organisations stuck on RTM with lots of bugs and missing new functionality available, for example, the extra Search functionality in the Infrastructure Updates.

Blame game

We've all been there..."it's the SQL server"..."its the development code"..."its the load balancer"..."it's the SAN". There's a lot of blame pushed around. This causes lots of projects to stall and people aren't all that helpful and trying to pin point the issue as a team. They tend to only even investigate it once every other possibility, other than their precious area, has been discounted.
Often the support team, due to not having any knowledge, throw it straight at the developers...even though it could be a simple security administration issue that they are responsible for.

Poor Development Tools

So most Developers do cut corners because the tools just aren't helpful enough and the community has done an amazing job of writing them.

I've created a new 'Ultimate SharePoint Development Tool' page on the wiki which explains what SHOULD be available to Developers on this platform. Please please please get on their, log in, and add the features YOU want to see!

Microsoft rely on the community too much

With SharePoint 14 on its way, I'd really like to see the content available on its release and not slowly being released on MSDN on a case by case basis. This will be especially so with FAST integration and Performance Point being put into the Platform. The community shouldn't have to rely on other community members to publish information on how to do things. The MSDN Forums are great, but the information is not structured and makes it hard to find solid authoritative content.
If SharePoint had been released before the Internet was prevalent, it would have failed because Microsoft would not have been able to keep up with the support calls that occurred. Internet Searches save SharePoint consultants on a day to day basis!

What next?

So I've already discussed some of these things in my most popular blog post 'Solution Development in SharePoint 2007'. This is now broken down with a bit more responsibility shown:

What Microsoft need to do

  • Don't rely on the community - focus on MSDN content being ready for SharePoint 14! Link to community content and leverage it if it isn't in MSDN.
  • Focus on the Developer Tools - if the tools are easier to use and conform to standards, they'll be more successful implementations out there and more developers will come on board from .NET world...forget about it otherwise...leave it to the Community!
  • Split up the exams - they need to break up the exams to isolate particular skill sets. Sure, have a platform framework cert, but then also have separate ones for InfoPath, BDC, Excel Services, Search for MOSS Dev for a start!
  • Learn from other platforms - they need to open their eyes and ears to other platforms like SAP who have already been through this pain, I don't want to be tarred with the same brush that a lot of SAP engineers are across the World!
  • Partner Badges - Microsoft should award more distinct Services badges for SharePoint. Differentiating between those who can do Infrastructure and those who can do Implementations both Customisations and Development (see Defining SharePoint Development on the SharePointDevWiki.com).
  • "Dog of all trades, master of none" - be more honest on where SharePoint's strengths are and in the sales material that the Organisations see, indicate where it's not ready yet or better still leave it out!

What SI's need to do

  • Be Bold - sure there's work out there in the infrastructure space, but if it isn't your strength...be bold and stick to what you know. There's plenty of work out there and Organisations will respect you in your strengths and not judge you on your weaknesses.
  • Partner - if it isn't your strength, partner with another SI that can do it with their eyes closed...then they can let you do the bit they can't do and you form a perfect partnership!
  • Train your team - there's plenty of SI's out there who are "too busy" to give their team time to skill up properly. Schedule time for your team to skill up and have programs to find team skill gaps.
  • Best Practice - spend the time investing in setting up a Development practice to develop and deploy solutions properly.
  • Transition to support - when you implement these solutions, ensure that they are transitioned to support. Trust me, it'll do you huge favours in the future where you don't just get dumped every error!
  • Work as a team - For the market to trust Partners, people need to play as a team and not fall into the blame game.

What Organisations need to do

  • Isolate - Like other platforms, have separate SI's for Infrastructure and Implementations (Customisations and Development). This mitigates lots of risk around having all your eggs in one basket!
  • References - Do your homework and get solid references for previous projects. Sounds obvious, but you'd be surprised how many large projects have gone a stray and the SI's still continue to get work!
  • Get Help with Tender Requests - ask Microsoft or an independent consulting firm to help write tender requests. Don't just cut and paste from sources and then complain when the quotes come back and they're too expensive because they've put so much contingency in as the scope was open ended. SI's will stop responding if this carries on in the market place!
  • Don't just assume SharePoint - don't just assume that just because the Organisation has SharePoint that everything should be implemented in it! This is regularly occurs, know the limitations and boundaries of the platform. ASP.NET Web Forms and WPF Applications are still the answer to solutions.
  • "Functional Requiremetns" - Keep your requirements Functional without technology to drive this.
  • Don't compromise - don't go for the cheapest option and cut corners, ensure quality in all implementations.
  • Define levels of support - define the levels between each time involved in the SharePoint platform.

In Conclusion

I'd love to have the $$$ to fly and speak at the SharePoint Best Practice Conference on this, but unfortunately the bills take priority! ;-) I would strongly recommend that people keep up with the conference and also the generosity of the presenters in distributing their slide decks after the fact! Great work by all but especially Ben Curry in organising it all!

Published: 2/15/2009  5:25 PM | 9  Comments | 1  Links to this post

Feb 152009

SharePoint Community Content - Where to find it

Blogs / RSS Feeds

I am subscribed to over 500 active SharePoint blogs from around the World and try and ensure that I keep up with my reading on these on a daily if not weekly basis (depending on how busy I am). I find this is the only way to keep up with developments within the community.

There are some blogs that constantly produce awesome content and I have had to start prioritising which blogs I definitely keep up with every day over those that I try and cover in my spare time in front of the TV or by the pool.

There are some great aggregated feeds out there for those who want to get a head start and also some extremely good OPML files that are collections of SharePoint feeds.

There is also a great SharePoint Blog ranking site hosted in SharePoint itself which uses Technorati ratings to list the top SharePoint blogs and also which ones are growing the fastest. I'd recommend subscribing to at least the top 10 to keep up with what's going on in the SharePoint world!

Social Bookmarking - Semantic Retrieval

Over the last few months I've had mixed responses to my social book marking activities. @AndrewConnell has asked why I don't just use Google to find things when I want them again, my response to this was that by using social bookmarks I can store the posts semantically by keywords and then retrieve them in the same way. I frequently find myself using Diigo to go and retrieve bookmarks based on collections of tags such as InfoPath or Workflow.

Fresh Content

On top of the advantages of retrieval, I also find it is a good way of indicating what blogs are focusing on and also what blogs I bookmark with valuable fresh content.

When I say fresh, I don't bookmark every blog that announces the VSeWSS 1.3 CTP or SPDisposeChecker tool. Check out the results on Google, way too many duplicates for the same information that you can get from the SharePoint Blog that pretty much everyone subscribes too - which posted it first. It's great if bloggers expand on the announcement with their thoughts, but when it's just a link, its just noise that should really be just stored as a social bookmark or twittered about in a micro-blogging fashion.

Therefore, following my, or others, Social Bookmarking RSS image  for all SharePoint tags is also a pretty efficient way of keeping up with reading with out all of the bloat...free of charge ;-)

SharePoint Community Discovery

I can also discover new people in the community who also bookmark the same posts and discover posts that other people in the community have found that I had not come across.

Twitter

Twitter is a great way to microblog about all things SharePoint. @JoelOleson has done a great job of putting together a list of all SharePoint Twitter people. My twitter feed:

  • announces new bookmarks that I believe are high quality content
  • responses to SharePoint questions
  • questions posed to the SharePoint community
  • announcements of new blogs/rss feeds I discover
  • general SharePoint ranting ;-)

Twitter is a great way to engage with the community and most of the top guys in the game will happily respond to you.

Discussion Forums

The MSDN Discussion forums are a great place to find answers to commonly asked quetions. It can also be a great place to find new developments and challenges in SharePoint.

There are other forums out there, my own personal opinion with this is that why dilute the forums when there are willing people who will respond in the MSDN ones and also with the extreme feature set that has appeared since the migration to the new platform including Rankings which encourages people to contribute.

Don't forget that you can subscribe to particular forum rooms via RSS and see these things pop up in your RSS Reader of choice ;-)

Other Peoples Opinions

I'd be really interested to hear other peoples opinions on how the make sense of the amount of content out there...

Published: 2/15/2009  3:31 AM | 0  Comments | 1  Links to this post

 Next >>