Converting SharePoint 2007 list templates for SharePoint 2010

I’m hot on the heels of a SharePoint 2007 to 2010 migration project.  It had been decided not to upgrade, but to transition all of the content across and try and make better use of the document management features of SharePoint from scratch.

One of the first problems we discovered was for bringing across list libraries.  This was to be a simple task, simply save the list as a template, import into the new environment and it should just work. Unfortunately, I was greeted with an error along the lines of “version 3 templates are not supported in this version of the product“.

Searching for the error, I came across the answer in this blog post of Importing SharePoint 2007 list templates (STP) into SharePoint 2010.

Tom’s solution  worked great, but there was no way I could get general users to extract the list template, edit the XML and re-package.  So I wrote this small PowerShell script:
#Script:  UpgradeSharePointList
#Author:  Peter Heydon (www.heyweb.net)
#Date:	  16 September 2010
#Purpose: This script will convert a SharePoint 2007 list template to be SharePoint 2010 compatible.
#
#Credit for defining the conversion process:  http://tom-dw.blogspot.com/2010/06/importing-sharepoint-2007-list.html
#Credit for calling 7-Zip from Powershell: http://mats.gardstad.se/matscodemix/2009/02/05/calling-7-zip-from-powershell/
#Everything else cobbled together from Microsoft TechNet
#
#Requirements:
#	Three folders:	input		(SharePoint 2007 list templates)
#			output		(SharePoint 2010 compatible list templates)
#			processed	(SharePoint 2007 list templates that have been processed)
#	7z.exe (from 7-Zip installation: http://www.7-zip.org/)
#	makecab.exe (should be in your WINDOWS installation folder)
#
#WARNINGS:  There is zero error handling, so don't expect the script to be gracefull.  The script is supplied
#		'as is' and should be tested thoroughly before using in a production environment.  
 
### DEFINITIONS
$RootDir = "\\server\share\path\"	#Ensure it has a trailing backslash ('\')
Set-Alias sz ("C:\path\to\7zip\7z.exe")
Set-Alias mcab ("C:\windows\system32\makecab.exe")
 
#  Get list of all STP files
$InputDir = get-childitem ($RootDir + "input") 
 
foreach ($item in $InputDir | where {$_.extension -eq ".stp"})
{
	$targetFile = ($RootDir + "input\" +$item.name)
	$extractPath = $targetFile.substring(0,$targetFile.length-4)
 
	"Processing: " + $targetFile  
 
	#Create directory
	New-Item $extractPath -type directory
 
	#Expand STP File
	$extractPathOption = ("-o" + $extractPath)
	sz x $extractPathOption $targetFile
 
	#Replace files
	$manifestFileIn = $extractPath + "\manifest.xml"
	$manifestFileOut = $extractPath + "\manifestOut.xml"
	(Get-Content $manifestFileIn | Foreach-Object {$_ -replace "<ProductVersion>3</ProductVersion>", "<ProductVersion>4</ProductVersion>"} | Set-Content $manifestFileOut)
 
	#Cleanup files
	Remove-Item $manifestFileIn
	Rename-Item $manifestFileOut $manifestFileIn
 
	#Recompress (MakeCab)
	$itemNoExtension = $item.name.substring(0,$item.name.length-4)
	$CabFileName = ($RootDir + "\output\" + $itemNoExtension  + ".cab")
	$NewSTPFileName =  ($RootDir + "\output\" + $itemNoExtension  + ".stp")
	mcab $manifestFileIn $CabFileName 
 
	#Rename cab, and move to output folder
	Rename-Item $CabFileName $NewSTPFileName
	Remove-Item $manifestFileIn
	Remove-Item $extractPath
 
	#Move original file to processed folder
	Move-Item $targetFile ($RootDir + 'processed')
 
}

I have a scheduled task now running every 10 minutes during the day that will process all files in the input folder.  The process is simplified, I’m not having to get involved, so everyone is happy! Click here in order to Buy Windows 7 Ultimate Online for your office or home pc.

Could we survive without Google?

Unfortunately the phrase ‘Google it’ is too often heard where I work, and undoubtedly used throughout the world.  It seems that one can get by in an IT job just by being able to search the internet.  Even I catch myself trying to solve problems online when I really should have spent a bit more time trying to figure it out.  It is just too easy sometimes.

I’m not against using search technologies, and can appreciate the efficiencies from learning from past mistakes and preventing the reinvention of the proverbial wheel.  I’ll be the first person to admit when I to know something, I’ll ‘Google it’, and I usually demand that I find out immediately – the knowledge must be in the now.

Rewind 10+ years, I recall a support environment that I was in.  At the time it was pre-Google, and when the accessibility to the internet was limited to one terminal in our workplace of 300 staff.  How did I ever survive?  Fortunately learning on the job, learning from books, and learning from peers was common practice.  For the most part I learned how to troubleshoot and resolve problems.  I learned how to think.

Since then I have hired support staff and I can attest that analytical problem solving skills are lacking in a large number of candidates.  These people are typically ‘Gen-Y‘ and they don’t have the drive to just figure it out for themselves.  This may be fine for mainstream applications where documentation, forums and blog posts are abound and plentiful, but very problematic for bespoke applications or mainstream applications which have very closed documentation sources.

We live in an information rich age and accessibility is everywhere.  It has become our way of life.  However I do question if we will come to a situation where we could survive without Google, or other search technologies.  Probably not completely, but I challenge you to spend some time to get your thinking hat on before you start pounding the keys and ‘Google it’. As we proceed further, we present to you the latest Hawkhost Review and hope y’all guys enjoy it as much as we did.

SharePoint 2010 Secure Store Service Error

Tonight I was configuring my SharePoint 2010 farm and attempted to “Generate New Key” for the Secure Store Service.  After entering my passphrase, I was presented with the error:

An error occurred during the “Generate Key” process. Please try again or contact your administrator.

Not very helpful, and neither was the event or ULS logs.  I found this post here from Trevor that describes the same error, and he advises to ensure that the logged in user is a member of the farm administrators group – but that was OK.

After turning up the diagnostic logging, I came across this line in the logs:

The Secure Store Service application Secure Store Service is not accessible. The full exception text is: User does not have permission to perform the operation.

This seems to concur with Trevor’s findings, however the next line in the logs was:

Unexpected exception from endpoint address : https://app01:32844/cabb71d36c534d49ba47bf4ca164e983/SecureStoreService.svc/https

App01 is one of five servers in my farm, and one of two application servers.  It seemed a bit suspicious that it couldn’t communicate on a particular URL, and both app01 and app02 had the Microsoft SharePoint Foundation Web Application stopped.  As soon as I started the web application on app01 only, I was able to generate the key for the Secure Store Service.

I then confirmed that the web application was still stopped on app02.  Very weird it had a problem with one and not the other.  Nonetheless I was able to generate the key.

Out of Hot Water

Buying a new hot-water system, in summary:

  • Buying decisions for big items requires rational, logical thought.
  • Set your requirements, and be flexible.
  • There will be situations where time is not a luxury to make quick decisions.

UPDATE:  Click here to read my update on the unit six months after the installation

Last week, my family & I jumped into the car with our pyjamas on.  It it had been four days since our hot water system was out of action, and we were on our way to the mother-in-laws house for a shower.  We had been through quite a few big expenses of late, and this was another one to add to the list.

Our 18 year old electric system just hadn’t been working properly, and over winter we noticed the lack of hot water.  In an attempt to use the relief valve, it got stuck and would not shut off.  We could either spend $200+ reparing an old unit, or put that money towards a new system.  We set a budget of at least $1500, knowing almost nothing about hot water systems.

Then we deducted our requirements:

  • Larger than our existing system (140L), and from researching online, needed a minimum of 250L
  • Cost the same or less to operate (~$65 per quarter, tarriff 33)
  • Budget: $1500-2000 installed
  • Replaced as quick as possible

Queensland regulations state that we must now install a greenhouse efficient hot water system, where we have reticualted natural gas available.  After quick phone call to AGL, who put me on to Natural Gas Connections (because they have the actual gas network maps…) I was out of luck.  In my conversation I also found out that once the street is established, highly unlikely that gas will ever be laid.

Not to be deterred, I had a look at bottled LPG options.  The concensus from online looking and confirmed by a friend was that 45KG bottles would cost $100 each, and I’d probably need to replace one about once a month.  With LPG gas, this would have certainly tripled my running costs.  Similarly, a larger electric unit of double the size would have lead to a larger electricity bill, and this was undesirable.

After all of this research, it had been a good two days without hot water.  At this point I was going to bite the bullet on a new full electric system.  My brother-in-law pointed me to some of the rebates that I could get from the Queensland and Australian governments, and I started my discovery on heat pumps.  I’ll let you do your own reading on these, but the conclusion was that I could reduce my hot water electricity bill to about 25% of what I currently pay, with the government helping to foot the bill.

The cream of the crop seemed to be a Stiebel Eltron Heat Pump, and had very good reviews online.  It only came in one size, 300L.  By its efficiency I anticipated a smaller bill, so far half of my requirements were met.

I found a local Brisbane company that specialised in these heat pumps, The Solar Guys, and I gave them a call.  The service was very prompt.  I had a return call within 15 minutes, and an appointment made for the next day.  The salesman turned up on time, and confirmed everything I had read about heat pumps and the Stiebel Eltron product.  Best of all, we could have one installed within two days.  Great, that was almost all of my requirements.

Of course price was going to be the killer and I was not prepared for it.  Even after selling the RECs and rebates, it came in at about $1000 more than the maximum budget we had set.  This caused a bit of agony but we put some numbers to the total cost.  We figured that if our hot water charges drop by 75% as advertised, we would save about $200 per year, with a return on investment beyond our budget in about 5 years.  I also discovered the design life is 15 years, so it may even be possible to have it pay for itself over the entire life of the unit.

Although it was a tough decision, we did not have the luxury of time to seek more quotes, look at alternatives, and come to a more considered conclusion.  My three year old did enjoy his bath-in-a-bucket using water from the kettle, but my 30 week pregnant wife was rather unpleased.  So we called up and booked it in, and within 48 hours we had an installed system, and hot water soon ensured.

Overall, I was happy with the purchase, happy with the service we received, and happy we had hot water again.  I was not happy about the time I had to research and make that decision, and that the event was untimely in our current household economic cycle.  But, if it makes me feel any better, at least I’m helping the environment and reducing my carbon footprint.

Hanging Up on Vodafone

Lessons learned:

  • Companies, like Vodafone, make it extremely difficult for you to terminate a service.
  • Staff are only doing what they have been told, try hard not to blame them.
  • Sometimes you need to seek alternate paths, away from the obvious route.

The first revision of this blog post was going to be a rant on the problems I had trying to disconnect my Vodafone mobile broadband service. In the spirit of trying to keep positive on life, I thought some constructive criticism would be better.

To begin, I signed up to the mobile broadband service in June 2008  for 5 GB per month, $39 per month on a 24 month contract.  This was one of the best deals available at the time.  I predominately used it commuting to work, and it came handy while on holidays or when the home ADSL service was unavailable.  I had good days with this service, and terrible days too.  Between problems with USB modem detection and inconsistent coverage, I usually had a 50% chance of getting on first go, and then a 50% chance of staying connected on my daily journeys (within 15km of CBD) commute.  The experience over the two years was barely passable as satisfactory.

My actual usage varied from what I initially thought I needed, and I found myself to consistently use less than 500MB a month.  If you take that into a pure $/MB view, I was only using 10%, wasting $35 per month.

Very recently,my work laptop died just one month out of the Vodafone mobile broadband contract.  With no immediate plans for it to be replaced, I decided to terminate the service.  This should have been a straightforward task, so I decided to visit my local Vodafone outlet.  The guy there was helpful enough, confirmed my contract had ended, but couldn’t cancel the service.  He cited that I would need to agree to some legal clauses which would be recorded over the phone.

The next day I called the number given to me at the first store. At 12pm, on my lunchbreak, I attempted the vodafone customer service number. After getting through the IVR, I waited 30 minutes before I gave up.

30 minutes waiting for Vodafone...
30 minutes waiting for Vodafone...

That afternoon, I visited one of the Vodafone stores in the Brisbane CBD.  Again I was told to call the Vodafone customer service line.  I explained the 30 minute wait time, and I was advised that it would be busy now (approx 5pm), and told me to call at lunchtime when it would be quieter.  It is quite frustrating that a simple task as I perceived it couldn’t be achieved immediately in store.

After I got home that evening, I tried three times to call customer service.  Each time I cited to the IVR, as per their recommendations, to ‘cancel my service’.  I was played a standard message of ‘we have more calls than usual’ and then had my call disconnected.  Clearly a ploy to imped my request to terminate.

To test my theory that service cancellations were given a low priority, I tried for a fourth time.  I was now within 15 minutes of my first call that evening, and I had 15 minutes to go before the call centre closed at 8pm.  I rang again and told the IVR I wanted an ”account enquiry’.  I few moments passed and I heard on hold music,  and there was no message that they were all busy.  Finally some progress.

Twelve minutes later, I was answered by a gentleman who was part of the accounts department.  He helped me reset my PIN, but had to transfer my call to a separate team to perform the cancellation.  It was now 8pm, and my hopes of getting through to someone was diminishing quickly.  Thankfully, a representative answered, and after I abruptly stopped their cross-sell and retention effort, I had the cancellation scheduled for the next business day – no legal questions asked.

I’ve never met an organisation so unwilling to assist with a basic, legitimate request.  Had this had been resolved upon first contact, Vodafone would have been perceived by myself in a positive light, and I would have been happy to recommend their service.