Friday, March 28, 2014

SharePoint 2010 Deferred site collection upgrade with custom SharePoint solutions


We have been struggling with this concept for a while, being an ISV with many customers who use our products on SharePoint 2007 and 2010 and are interested in upgrading to SharePoint 2013, but using the deferred site collection upgrade approach.
You see, in this approach you upgrade to a SharePoint 2013 farm but still run your 2010 sites in SharePoint 2010 user interface, while allowing site owners to gradually upgrade to 2013 interface gradually.
The problem this poses for us was simple: which version of my solution do I install on that hybrid farm?
SharePoint 2010 solution will work on the 2010 experience sites, but will not work on those that were already upgraded to 2013 or on new sites created in 2013 experience.

SharePoint 2013 solution will work on the upgraded sites or new sites, but not on sites still using the 2010 user interface.

First try (didn't work)

Installing both versions seemed to be the solution, but we had a few issues with that approach:
1. Our 2010 and 2013 WSP solutions have the same solution ID, thus cannot be installed on the same farm at the same time
2. Both 2010 and 2013 WSP packages contain the same DLLs assemblies, and so if we retract one – it will remove the shared DLLs and break the other. So, when upgrade is done and we want to remove the 2010 package it will break the 2013 package.

Working approach

After working closely with the good people at Microsoft, we run some tests and come to the following procedure that would work for us (and possible for everyone in this situation):
1. Install the 2013 solution
2. Create a new package that adds 2010 backward compatibility (called “2010 BC”) that installs only the needed resources and use it during the deferred site collection upgrade period
3. Once that period is over and everything was upgraded – remove the “2010 BC” package *

This approach seems to be working great on our testing, but we still had the 2 issues to deal with (DLLs and solution ID) and I didn’t want to burden our R&D with maintaining and producing another package for every product.

Tools of trade

So, I am happy to share with you a new codeplex project I just released for this purpose:
“WSP REpackage tool” found here: https://wsprp.codeplex.com/
image
image
This tool will take your existing 2010 solution package, and repackage it as a new WSP file with a new solution ID and without the assemblies inside. This new package will be the “2010 BC” package that  you can safely install on your SharePoint 2013 farm along with the SharePoint 2013 solution to be able to support both 2013 native sites and upgraded sites that still use 2010 user interface.
I hope this tool helps you guys support this great new upgrade experience for SharePoint, I am happy to announce KWizCom products were tested and now support the deferred site collection upgrade also using our Web Installer experience that allows you to directly download and install our products and (now) add support for 2010 BC sites with just a few clicks (tool available here: ClickOnce installer)
If you have thoughts, comments please feel free to either comment here or on the discussion in the codeplex project.
I would love to hear what you think about this tool and this upgrade approach in general.
Shai.

* Very important edit note: after discussing with Microsoft, if you retract the 2010BC solution or the 2013 solution using the central administration - even though these solutions now do not share the same solution ID and are set to different versions of SharePoint, they will remove each other's files from both SharePoint root folders (14 and 15). This is a know issue, and MS advised me that the only supported way to retract packages is by using PowerShell with the correct -CompatibilityLevel version flag. http://technet.microsoft.com/en-us/library/ff607873(v=office.15).aspx So please be advised.

Monday, March 24, 2014

Speaking Engagements 2014

 

Just FYI, my speaking engagements for 2014 are posted here,

If you are around – come see me!
If you were in one of my sessions, you can find links to the session code and presentation below. Also – if you have any comments on my session – feel free to post it here!

 

April 2Online web cast – How I built my first commercial SharePoint hosted app (10am, eastern time)

April 17Hamilton SharePoint User Group – How I built my first commercial SharePoint hosted app

May 29Online web castSharePoint 2013 Deferred Site Collection Upgrade With Full Trust Solutions Support

July 12SharePoint Saturday TorontoKWizCom Forms 

July 26SharePoint Saturday New YorkHow I built my first commercial SharePoint hosted app

Thursday, January 9, 2014

SharePoint, CCleaner and IE10 – be nice!

So, funny story…

During update of our SharePoint 2013 QA machine, as a routine before saving a template I run CCleaner to cleanup the disk after installing updates and what not.

Got a strange report from my QA: using IE10 from the server can load the site, but any menu they try to use (such as the site settings) give out this error:

clip_image002

(An error has occurred with the date fetch. Please refresh the page and try again).

So, refreshing, closing and reopening the browser, clearing cache, even resetting IE to factory settings – nothing worked!

Other browsers worked just fine, as well as IE from another machine.

Opening JS debugger pointed me to window.localStorage that caused this error, and as I didn’t want to disable it I found that clearing the browser cache is the right solution, only I didn’t do it properly…

image

Notice the first checkbox “Preserve Favorites website data” that is checked by default?

Well, the SharePoint site I was working with is set as a trusted site and my guess is that clearing the cache with this setting on skipped it.

Once I cleared this checkbox and deleted my cache everything went back to normal.

Just to be sure, I run CCleaner again – sure enough the problem immediately occurred.

Running clear cache again – fixed it immediately.

So, there you have it… good luck