None of this WordPress stuff anymore…now we’re running on SharePoint 2010…check it out:

http://www.sharepoint-ers.com


I have a client that wanted some color coding of their SharePoint calendars.

I installed “Colour Calendar” from CodePlex: http://planetwilson.codeplex.com/

I have used this solution many times as it provides great functionality, which I can’t believe Microsoft left out of MOSS 2007.  I am happy to report that color calendars are available in SharePoint 2010.

I have my solution deployed, activated for my site collection.  I add the color decoder web part added to my calendar’s page and I proceed to enable the functionality on my calendar.

When I click “Enable Colour Calendar”, I received the following error:

I proceeded to troubleshoot with a new instance of a calendar, proceed with the same web part installation, enabling procedure and I do not receive the error.  I am able to enable the feature and color code my calendar entries until I am blue in the face.

So, what is going on?

For my calendar that I did not receive the error, I noticed that when you enable the color calendar functionality, it adds two columns:

“Event Category” is your drop down list of, what else, categories which are then color coded.  “Event Category Title” is used to generate the title of the event.  You will notice that it is a calculated field which uses the [Title] in its formula.

For calendars where I received the error, I see that “Event Category” is created (although it does not populate the choice list), but it does not create the calculated column.

I figure that if it’s using “Title” in the formula, either they had deleted the column from the list, or they had renamed it.

Sure, enough…no “Title”…

Using SharePoint Manager 2007 (another invaluable tool for a SharePoint architect), I verified that it had been renamed:

If I rename the column back to “Title”, I can now properly enable the functionality.  I can now rename the Title column back to whatever I want, the functionality remains because the calculated column can figure out that Title is now “” and the formula is updated.

So what is the moral of the story?

That CodePlex is bad and that open source solutions have no place in SharePoint?

NO!

The moral of the story is, don’t rename out-of-the-box or default columns.  You never know when a service pack might update them or when something might reference them which could, as we saw, break.


If you have not seen these yet, check them out.

They are poster-sized, representations of recommended solutions.  With SharePoint being such a massive undertaking, these tools can prove extremely valuable to aid in envisioning, developing a strategy and deployment plan around SharePoint.

They are available in PDF, XPS and Visio formats.

Link: http://technet.microsoft.com/en-us/library/cc263199%28office.14%29.aspx


Working with technology, you are inevitably going to run across a task that seems so simply, when you still can’t do what you wanted to do 10 minutes later, will leave you questioning your sanity.

I came across such a problem when updating a set of custom content types for a client.  One of the content types was seldom used and we wanted to re-classify any existing items of that type to another new content type, then delete the deprecated content type.

With only four items  of the old content type, this was a simply enough task.  The new content type was created, I re-classified content and then moved on to delete the old content type.

When I tried to delete it from the document library, I received the “Content Type is still in use” error.

Convinced that I had re-classified my content, I double and triple checked.  I was right; all items of the old content type were not of the new.  Through this testing, I came across an interesting piece of T-SQL that queries a DB to identity all places where a content type is used.

DECLARE @ContentTypeName nvarchar(128)

SET @ContentTypeName=’Document’

SELECT w.Title AS [Web Site], w.FullUrl AS [Web Url], al.tp_Title AS [List Title], ct2.* FROM ContentTypes ct1 JOIN ContentTypes ct2 ON LEFT(ct2.ContentTypeId, Len(ct1.ContentTypeId))=ct1.ContentTypeId LEFT OUTER JOIN dbo.ContentTypeUsage ctu ON LEFT(ctu.ContentTypeId, Len(ct2.ContentTypeId)) = ct2.ContentTypeId LEFT OUTER JOIN dbo.AllLists al ON ctu.ListId = al.tp_Id AND ctu.WebId=al.tp_WebId LEFT OUTER JOIN dbo.Webs w ON al.tp_WebId = w.Id WHERE ct1.ResourceDir=@ContentTypeName

Reference: http://social.technet.microsoft.com/Forums/en/sharepointadmin/thread/0a558f4f-cd1e-4432-85bb-caaa3a3b57ae

The T-SQL code confirmed what I already knew.  Yes, the only place where the content type was used was in the library by virtue of being added as a content type.

I first tried disabling and re-enabling content type management at the library, no luck.

I then tried an IIS reset, no luck.

Then I came across the following article which made my error so obvious that a slap in the face would have been more subtle.

Reference: http://hristopavlov.wordpress.com/2008/06/24/content-type-is-still-in-use/

As Hristo points out, just because I don’t have any current versions using it, it doesn’t mean that I didn’t have any previous minor versions using the old content type.

“If the list allows both minor and major versions and if any of the documents in the list is a minor version, but also has an existing previous major version (i.e. published version), then SharePoint will refuse to delete the content type if it is used by this last major version, even if the latest minor version is not using it.  I don’t have an explanation about why it is doing it, but this is how it works. It seems that you will need to check in a major version if you want to remove the content type in this case.”

Sure enough, when I re-classified my items, I only published a minor version.  To resolve this, simply publish a major version of the affected items or simply publish a major version anytime you are changing the content type of an item!


This afternoon, a client contacted me about an issue with a SPD workflow they created to copy items between document libraries. In short…

User A has access to both document libraries.  User B has access to the first library, but not the second.  The WF copies new items from the first library to the second.  User A can add an item to the first library and WF works properly.  When User B adds an item to the first library, the WF fails in copying it to the second.

This is an expected result, as SPD workflows run in the context of the WF initiator.

http://blogs.msdn.com/ben_hickman/archive/2009/06/04/sharepoint-designer-workflows-what-user-identity.aspx

The solution?  Well, there are two possibilities.  The first involves custom workflows with Visual Studio.  The second is a little more forgiving if you do not have developer resources in your IT department and don’t have the funds to hire a consultant.

There is a Codeplex project called “Useful SharePoint Designer Custom Workflow Activities” which includes an activity called “Copy List Item Extended Activity”.  This will do exactly what you want in that it impersonates SYSTEM account!

http://spdactivities.codeplex.com/wikipage?title=Copy%20List%20Item%20Extended%20Activity&referringTitle=Home

A word of warning, as the above link states this creates a possible security risk.  Use at your discretion.

Warning: This custom action presents a potential security issue. Because it runs as SHAREPOINT\system it can copy file/items to any site in the farm. A user with access to create SPD workflows on any one site, can set this activity up to copy to sites that he does not have access to. If you do not want this behavior I suggest you remove this activity from DPWorkflow.Actions file, located in [SPHive]\TEMPLATE\1033\Workflow\ folder.



One of my clients called me this morning with a SharePoint logging problem.  Her server(s) were creating blank log files, 0KB in size without any errors or apparent issue.

I started with some basics:

1) Is there adequate disk space on the server(s)?
2) Is the “Windows SharePoint Timer Service” running?

I then restarted the timer service to ensure that the credentials were still valid.  But that didn’t help.

Next, I wanted to validate what my logging levels were set to, so I ran the following STSADM command:

stsadm -o listlogginglevels

This revealed that everything was set to “None” from the original defaults.

I next ran the following command to reset values to defaults:

stsadm -o setlogginglevel -default


That did it!


I am excited to announce that we will be hosting a SharePoint Saturday event on March 13th at Washtenaw Community College.  We are currently seeking sponsors and additional speakers.  For more information, please see: http://www.sharepointsaturday.org/michigan.


The Cloud

The Cloud is a metaphor for the term “cloud computing”.  One of the first web-based applications was SalesForce.com, starting in 1999, even before that there was Hotmail.  With the advent of technologies such as AJAX and the launch of Gmail in 2005 (later followed by Google Apps) the concept of web-based applications has become more widespread.

If you have had any involvement in the IT world in 2009, you surely have seen offerings from major vendors, such as Amazon (EC2) and Microsoft (BPOS) touting cloud-based services.  In 2010, service offerings will continue to grow and you are likely to run into in some form or another.

What is BPOS?

Our focus will be Microsoft’s Business Productivity Online Suite, or BPOS.  It is their suite of hosted messaging and collaboration solutions.

Offerings

The suite includes the following functionality which is well known to the client/server environment, but now available as a service:

  • Email                                                                     ->                            Exchange Online
  • Collaboration                                                     ->                            Office SharePoint Online
  • Instant Messaging                                           ->                            Office Communications Online
  • Meetings                                                             ->                            Office Live Meeting

Why Should I Care?

Web-based applications have not displaced boxed software as the primary means for delivering functionality, however, for those entrusted with crafting IT strategy for business, it is a trend that cannot be ignored.  Furthermore, Intel’s investment in the Atom processor platform, the increasing popularity of net books, and increasing power and functionality of PDA and smart phones should provide some clue that the concept is sure to grow, not fade away.

In addition, the possibility to lower the total cost of “ownership” through aggressive pricing and promotion to gain market share, guaranteed SLAs, and minimized management and maintenance are sure to garner of cost-conscious IT leaders.

Is BPOS For Me?

The advent of cloud computing, web-based applications and an ever demanding economic climate increase the need for flexibility and mobility.  From these new needs come the concepts of the “desk-less worker” and “mobile sales force”.

No longer does productivity require us to be tethered to our desks and bound by the traditional physical boundaries of “brick and mortar”.  Nowadays, our offices are the coffee shop down the street, the airport terminal, a home office, anywhere and everywhere we are needed.

The most obvious benefit to moving email, collaboration portals, instant messaging and conferencing to the cloud is in the reduced cost to manage infrastructure.  This includes eliminating the need to purchase server hardware, agents, software licensing and FTEs required to ensure proper maintenance through patching, backups, monitoring and administration.

The pricing for BPOS breaks down as a monthly per user cost.

  • Exchange Online                                              ->                            $10/user/month
  • SharePoint Online                                           ->                            $7.25/user/month
  • Office Communications Online                  ->                            $2.50/user/month
  • Office Live Meeting                                        ->                            $4.50/user/month
  • Exchange Online Deskless Worker           ->                            $2/user/month
  • SharePoint Online Deskless Worker        ->                            $2/user/month
  • Deskless Worker Suite                                   ->                            $3/user/month

The next time Microsoft releases a set of critical updates, wouldn’t it be nice to let someone else worry about coordinating downtime, testing and applying patches?

But there are also benefits beyond having servers live on someone else’s network.  Spending less time to size, architect and deploy any or all of the above helps you roll out new functionality quicker.

Lastly, Microsoft is not bashful about touting its three nines (99.9%) uptime SLA and their cash-backed guarantee.  Where most vendors mitigate issues stemming from outages with credit towards future service, Microsoft “puts its money where its mouth is” and pays you should they fail to meet their SLA.

Is BPOS Not For Me?

While it has many great benefits, BPOS, is not solution for all.  The specifics of your environment will dictate whether it makes sense to consider it.

First, BPOS has a five (5) user license minimum, which for some very small business may not make sense because the unused user licenses may offset cost benefit.

Every company has some instance of a legacy or custom application that requires the typical client/server setup.  So while quite “long in the tooth”, these applications may still provide a critical function to your business and may not allow for migrating to a cloud environment.

There is also a feeling that if it’s “in the cloud”, I don’t really “own” it.  Reality is that if you read through the EULA (end user license agreement) the next time you install a Microsoft product, rather than just “clicking next”, you will see that you really don’t own that copy of Office 2007 Professional, you merely paid for the right to install it and use it.  However, this may be an extremely minimal issue once the initial shock of realizing what the EULA states, and most companies would realize how little value there is in the traditional boxed software model.

In environments where cost constraints force open source, free software models to prevail the cost issue remains.  If your company runs MDaemon because Microsoft Exchange is too expensive, chances are even the minimal per-user costs of Exchange on BPOS are still too high.  Granted these situations are few and far between, but they are out there.

What Happens to IT After We Move to the Cloud?

Isn’t the cloud just another way to “outsource” my IT staff?  In a way, yes.  So what happens to my IT staff when I move services to BPOS?  Think of BPOS as an opportunity to re-direct effort into other areas where BPOS cannot provide value; legacy applications, building content within SharePoint, BI, dashboards, reporting, end user training, planning and developing proactive plans for technology, and over getting out of “fire fighting” mode.

BPOS offers a great opportunity to reduce IT operational costs and provide better services.  However, I will reiterate some key points about my earlier piece on outsourcing e-mail that similarly will ensure success with a BPOS deployment; 1) ensure that additional costs do not offset savings, 2) that visible change to end users is minimized and where unavoidable, training is prepared and 3) that where people resources are involved, management sees this as an opportunity to better utilize skills instead of simply lowering head count.


I had a call from a client this morning who was experiencing errors when editing instances of an InfoPath forms and in search results.  The full error was:

Web Part Error: One of the properties of the Web Part has an incorrect format. Windows SharePoint Services cannot deserialize the Web Part.  Check the format of the properties and try again.

My first thought was “weird”.  I have come across this error before, but only with custom developed web parts.  Being that this the edit form and search functionality are using all out-of-the-box features, this seemed strange for me. As I started to Google for some ideas, I found a couple of articles of interest:

1) OK, your C: drive could be full…that is easy to fix, you can see Hannah Scott’s post for details: http://bytelab.blogspot.com/2007/05/moss-webpart-errors-due-to-log-file.html

2) Alternatively, Shai Petel has a great blog for troubleshooting this error: http://kwizcom.blogspot.com/2008/06/unable-to-add-selected-web-parts.html

Under “Reason 5″, Shai mentions that after deploying DLLs to the GAC you should perform an IIS reset to register safe controls.  Sure enough, Windows Updates had inadvertently been pushed to the SharePoint environment.  I performed an iisreset /noforce and the error disappears from our InfoPath form and search.


Earlier this week, a client asked me to assist with an issue they came across when performing a search on their SharePoint portal.  The portal was available, content was accessible yet when they searched they would receive the following error:

Your licence for Office Server Search has expired.

As I began to research the error, I several ideas but none that manifested in the exact way my issue did.  Here is what I found:

1)  UAC causing issues with configuration wizard: http://social.msdn.microsoft.com/Forums/en/searchserverinstallconfigandadminstration/thread/61e6fec0-f4dd-4473-84d9-2144b67149c8

2) Hotfixes KB 960010 and 960011: http://social.technet.microsoft.com/Forums/en-US/sharepointsearch/thread/96bde6cd-578c-4e72-b81f-af3e9b905415/

3) Another post pointing to re-running the configuration wizard: http://share-point.blogspot.com/2008/04/moss2007-license-has-expired-error.html

Because my environment had SP2 (12.0.0.6421) I wondered if this was a manifestation of the 180-day trial issue: http://blogs.msdn.com/sharepoint/archive/2009/05/21/attention-important-information-on-service-pack-2.aspx

Sure enough, when I went to Central Administration > Operations > Convert License Type I saw:

To resolve this, you can install KB971620: http://support.microsoft.com/kb/971620

Or, you can fix it manually…

  1. Click Start, point to All Programs, point to Administrative Tools, and then click SharePoint 3.0 Central Administration.
  2. Click the Operations tab.
  3. Click Convert License Type.
  4. In the Enter the Product Key text box, type your product identification number, and then click OK.
  5. The License Synchronizer Job will run on all computers in the farm after a few moments. After all the computers have updated their license from the timer job, the Convert License Type page will reflect the correct license.

Voila!

By the way, the SP2 bits have been updated to resolve this issue.

Hope that helps!




Follow

Get every new post delivered to your Inbox.