Why there is a shortage of SharePoint experts


Came across an interesting post on Nadir Kamdar’s Blog, which offers his thoughts on why hardy SharePoint developers are difficult to come by.

…we are reaching a very unique and rather unexpected situation where the demand for SharePoint developers is surpassing the demand for Web developers.

This shift in demand are forcing IT departments and Web Development companies to reduce the size of the web development teams and increase the size of their SharePoint team, in other words, take staff originally hired for web development and get them into SharePoint development.

This is currently the “normal” approach in getting SharePoint experts…

He goes on to explain why he thinks web developers traditionally have a tough time migrating to a SharePoint-based development model, and I think he’s right when he concludes that, “Demand shifts are forcing managers to turn web developers to SharePoint developers. This is not what web developers signed up for, the approach for these projects is very different and in many ways restrictive and frustrating, so they don’t do it, leading to the shortage in SharePoint skills.

Read the full article

The SharePoint Customization Hippocratic Oath


Here’s an excellent post on how to go about deciding on an approach for modifying your SharePoint implementation – or, should you be modifying it at all?

From the article:

When I was speaking at the Wisconsin SharePoint Users Group last week, someone asked me: “How do you know when to choose SharePoint Designer or Visual Studio for a particular change to a site?” I explained that I had a sort of “Hippocratic Oath” for SharePoint customization. In essence, it involves not making changes any more complicated than they need to be in order to achieve the design objectives.

Read on for some great tips on when you should be modifying CSS or master pages, when you should be creating site definitions or just creating features, and how you could be using the out-the-box functionality instead of building your own components.

Fun with SharePoint Designer


Sometimes I think SPD gets a bad rap.  I mean, more often than not it is either bad configuration or a related issue that makes SPD throw an error.  I have to admit that it’s error reporting isn’t the best.  Luckily the “cannot publish workflow” issues of the beta version is behind us.

I, personally, don’t have an issue with SPD, but do hope that Microsoft continue to improve it, especially in the area of stability and error notifications.

When editing a master page, I was faced with the following error:

soap:Server was unable to process request. —> Value does not fall within the expected range

Trying to do anything in SPD won’t help as it is essentially getting all of its information from the underlying Site Collection.  I went about trying to check in / check out the document manually.  This worked.  I then proceeded to look at the approval of the document, this also worked.

I then reverted to my friends on the social technet blog and badaboom, the answer was right there.  Once I read it, it made total sense.

Alternate access mappings need to be adjusted.  It seemed as though one of our developers were playing with the alternate access mappings and removed the default for the site collection in question.  I simply updated it and all started working fine.

So, next time, you want to murder SPD, have a look under the hood, you might find it’s not SPDs fault after all.

Here is the link to the answer on social.technet forum.

SharePoint’s list view threshold – why 5,000?


I came across this message while doing some stuff in SharePoint 2010:

I found a couple of articles that explained what the List View Threshold is, and how to modify this value (which I didn’t need to do), but during my investigation I stumbled across an interesting snippet (from here) that I thought I would share:

Why is 5,000 such a magic number?

To minimize database contention, SQL Server often uses row-level locking as a strategy to ensure accurate updates without adversely impacting other users who are accessing other rows. However, if a read or write database operation, such as a query, causes more than 5,000 rows to be locked at once, then it’s more efficient for SQL Server to temporarily escalate the lock to the entire table until the database operation is completed. Note that the actual number is not always 5,000, and can vary depending on your site, the amount of activity in the database, and your site’s configuration. When this lock escalation occurs, it prevents other users from accessing the table. If this happens too often, then users will experience a degradation of system performance. Therefore, thresholds and limits are essential to help minimize the impact of resource-intensive database operations and balance the needs of all users.

Custom Action Locations and IDs for SharePoint 2010


I wanted to add a link into SharePoint 2010′s Central Administration. I knew that this could be achieved with custom actions as I had researched and used them before in SharePoint 2007 to add items to the context menu and form toolbars. So I created my custom action in Visual Studio which was easy enough, but I couldn’t seem to figure out what the Location attribute should be set to in order to get my link displaying in the right place in central admin.

The problem was that all of the MSDN articles I came across said they were for SharePoint 2010, but the content was still aimed at 2007. For example, the article Default Custom Action Locations and IDs, which clearly states SharePoint 2010 at the top (and the url even references Office 14), tells me that in order to add a link into the Application Management group in central admin I need to set my custom action’s Location attribute to ‘Microsoft.SharePoint.Administration.ApplicationManagement‘. This is apparently incorrect, as is a host of other info on that page, because what I really needed to use was ‘Microsoft.SharePoint.Administration.Applications‘, and that worked like a charm.

I got the right info from this article, which lists the correct custom action locations and IDs for SharePoint 2010. Thanks Arjen Bloemsma :)

K2 Solutions Professional Training – Day 3


After a bucket load of theory I was pleasantly surprised when our lecturer gave us our overview for day 3.  It was going to be basically just practical – #excite.

During the exercises I got a fairly decent overview of the API and realised that the product is super extensible (blackpearl off course).  In our labs we built a custom work list, custom approval form, mini management interface (via ProcessSets) and more.

The support our lecturer gave us was brilliant and apart from the annoying HTML (which I started skipping after exercise 1) all our labs were good.

Here, in no particular order, are the K2 snacks I picked up on day 3:

K2 intends to move away from Kerberos.

The Server Event permission is required for long running processes

Action Rights allow for granular action management per task on each process

Reporting in K2 can assist business to plan resource using Activity reporting

ETL – Extract, transform and load (runs on schedule)

K2 does not support ETL out of the box

EII – Enterprise information integration (real-time data from multiple data sources)

K2 provides EII as part of SmartObjects

K2 surfaces their reports using SSRS and a K2 for SSRS component must be installed for it to work.

K2 ships with the 2 x Reporting Tools; K2 workspace and K2 Process Portal

Custom development tools such as .NET, Silverlight etc are all supported to surface the data

The K2 view flow is available for users to see the real-time look into the process. Take care of this when designing your process

View Flow component can be re-hosted as it simply requires the process id as a query string parameter

Reports may be build using Reporting Services and SmartObjects. To get to the queries, run the SmartObject Service Tester.exe (C:\Program Files\K2 blackpearl\Bin)

Example query: SELECT * FROM Activity_Instance.List inner join Process_Instance.List on Activity_Instance.List.ProcessInstanceID = Process_Instance.List.ProcessInstanceID

By default console logging is enabled

When versioning DLLs, try not to leave the DLL extension as K2 gets slightly confused. Rather use TFS for source control

K2 DLLs need to be GAC’ed on the reporting server if you wish to use the extended reports with K2 blackpoint. Once that is completed, register the extensions in the reporting services configuration XML files to ensure the SOURCECODE data source is available for selection.

I used the same trick on day 3 to warm up my food and enjoyed lunch thoroughly.  After lunch, with some extra inspiration, I also added a link to the View Flow report into my custom work list which made me smile.

 

K2 Solutions Professional Training – Day 2


Day 2 started off considerably better than day 1.  A minor hotfix was required to get our SharePoint hosts back up and running and I was delighted to find my VPC is running order after updated it.  #success.

Here, in no particular order, are the K2 snacks I picked up on day 2:

SmartObjects allows for loose coupling of data via referential consumption

Enterprise information integration (EII) ensures that you are always looking at real-time data

SmartObjects are transactional and expose methods to rollback if required

SmartBox is a pretty useful tool to create virtual 3rd party datasources as part of a POC / presales engagement

SmartObjects only available for design when using K2 blackpearl.

K2 blackpoint does not ship with SmartObject designer, but references the SharePoint objects.

K2 ships with SmartObjects out of the box for example Salesforce.com, Microsoft Active Directory and more.

K2 blackpoint SmartObject definition is still slightly unclear.

K2 underground has a number of prebuilt service objects for use.

K2 plan to add Dynamics CRM to their list of available service objects soon.

K2 connect is geared towards providing Service Objects for SAP using BAPI.

A SmartObject tester utility is available in the K2 bin folder on the installed server. This tool can be used to interrogate the SmartObject without building InfoPath forms or any other data surfacing tool.

K2 has 14 databases

At lunch I decided not to settle for cold food and took it downstairs so I was a happy camper.

Fixing the VMware Host Agent


The BikeID development environment runs on VMWare and I’ve had a couple of interesting issues to deal with.  The latest one seem to be as a result of a corrupt hard drive (or parts thereof).  I was faced with the following error message in the event log.  This error was as a result of me trying to get into the VMWare Web Access site.

The VMware Host Agent service terminated with service-specific error %%-1.

Thankfully the VMWare community is pretty jacked up and the answer was quickly forthcoming.  I simply renamed the datastore.xml.default to datastore.xml and deleted the empty one which sorted out the problem.

Thanks to JayCagey for the answer on this one.  View the entire posting here – VMware Host Agent service terminated