harbar.net component based software & platform hygiene

Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

Print | posted on Wednesday, June 27, 2007 12:52 AM

Yeah, I know what you're thinking, 'it's that Harbar again, ranting uncontrollably about some admin crap I don't care about'. Well that might well be the case, but the thing is you should care. Especially if you are building solutions based upon the Web Content Management (WCM) features of Office SharePoint Server 2007. See the important bit is the word 'solutions' - that means the entire thing, not just the funky recursive wrapped wrapper you got for dealing with '/pages/', your reflection bling and email address capture widget.

One of the WCM features is that of Content Deployment. Content Deployment let's you deploy content from one Site Collection to another. It's pretty neat. It sorta came from the Site Deployment feature of MCMS and makes use of the 'PRIME' WSS APIs. It's pretty important if you are interested in the 'traditional' (in web terms) publishing scenario of separating content contribution from content delivery.

The trouble is Content Deployment is getting a bad rap. A really, really bad rap - think Vanilla Ice. That's bad. Worse than Tony M from the NPG.

Now I am not saying Content Deployment is the solution to world hunger (that's Windows SharePoint Services Solution Packages). I am not saying that Content Deployment doesn't have any "issues". I am not saying that Content Deployment doesn't need some love from the Product Group. I am not saying the SDK samples err, couldn't use some, err, sample code.

What I am saying is that most of the folk bitching and moaning about it don't have their platform house in order.

Over the last month or so I've been exposed to some pretty big Publishing Site based solutions along with the usual Portal addicts (and it's NOT all the same now!). Most of these have had problems with Content Deployment. I also had the pleasure of being at TechEd earlier in the month, and frankly the least pleasurable part of that was the number of Content Deployment conversations I had.

See, the most common cause of these problems is not Content Deployment being a disaster zone best left well alone, but a combination of a misunderstanding of the feature, a badly configured platform and zero awareness of publicly recognized and fixed bugs.

So, before you lament the feature for being utter rubbish and dialing up support expecting a miracle, please get your heads around the following essential information:

  1. First up - get your head around what the feature is and how it works.
    No really. This is actually quite a good idea. It's a bit like a codehead slapping that paging data grid on their web forms and then scratching their head cos it's slow. Duh! The more you know the more you know, you know?
    Check out the essential information here: Content Deployment: Tyler Butler over on the SharePoint Team Blog. I'm frequently amazed how many people ask questions about Paths, Jobs and wotnot without having seen this. Then head over to TechNet and read up some more.
  2. Stop whining when the problem you've got is cos you didn't do #1, above.
    "folder with the name Page Layout already exists, grrrr, Content Deployment sucks" Dude, give me a break - it isn't gonna work if your initial destination isn't a blank site. This is so common, but it's in the documentation, the item above and in a pretty explicit KB. You should also consider not using the blank site template via the Central Admin UI but use STSADM to create an empty site:

    STSADM.EXE -o createsite -url <url-to-site-collection> -ownerlogin domain\user -owneremail <email-address>
  3. Get your platform house in order. Part One.
    Oh dear, did you upgrade from Beta 2 TR? That was silly. Sorry, but it was. I'm not interested in claims from vendor sales types, it's just not sensible. However, you can fix it easily by following the steps detailed here
  4. Get your platform house in order. Part Two.
    Letting your "power users" rename system or feature created libraries? That's not a good idea. That's asking for trouble. It's just gonna break basically, so don't be renaming that stuff.
  5. Get your platform house in order. Part Three.
    It's essential to have a platform which is up to date and all that. The most common content deployment problem has been fixed since mid-May. Also consider what other configuration in your environment might impact things. The configuration of the solution space is important, for example, disk space, for the temporary files - not just CD files but those for the WSS Timer service. In addition in large environments you need to architect your CD topology to avoid timeouts and bottlenecks.

Now that's not all for this sordid story, but I hope you get the general idea. I may be back with some more, but then again I may not. I'm pretty tired of talking about Content Deployment.

I was actually pretty tired of talking about Site Server's Content Deployment feature back in 1998/99 - when guess what? Most problems then were due to the same stuff. Go figure.

Before slagging the product ensure your own house is in order before wasting time and money (especially if it's your customers) trying to fix something you didn't configure correctly or consider up front in your project planning. Platform Hygiene is essential, even for developers!

Feedback

Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

Maybe, if the documentation were actually something more than an sdk (with the aforementioned lack of examples) and some random kb links, people would be a little more up to speed on how the feature works.

6/27/2007 4:46 AM | me
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

I reckon MCMS sdo export import is far reliable than MOSS CD.

7/3/2007 2:47 AM | anonymous
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

I agree with anonymous. I seriously miss MCMS SDO Export/Import! What if I can't get a http connection between MOSS Servers I want to deploy content between? Why is Content Deployment so complicated to setup?

It's honestly sad that an older product (MCMS) performed better in this area. Aren't products meant to get better over the years?

Why does EVERYONE seem to have problems and issues with CD?

Also, if too many people are randomly abusing the product and calling support, then it suggests there is a problem with the software, otherwise no one would have a reason to abuse and call?

You should write a blog post on - "Why does MOSS make so many people angry?"

7/11/2007 10:23 AM | anonymoustoo
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

So, do you regularly censor comments?

6/5/2008 12:03 AM | Peter
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

Peter: not sure what you mean. I don't "censor" comments but they do require moderation due to alot of spam and so forth. This can cause a delay when I am busy.

6/5/2008 9:52 AM | Spence
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

Hi,

some years later ... are there check lists of the fixes that we should have in place for a proper CD ?

We are facing trouble sometimes by incremental CD, not everything is sync then .... sometimes a full CD will help ... other times I have to remove the whole site collection and start the sync all over again .....

1/16/2009 8:48 AM | Mr Ed
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

@Denny,

We got this error during content deployment as well:
Content deployment job 'MyContentDeployment' failed.The exception thrown was 'System.InvalidOperationException' : 'Client found response content type of 'text/html', but expected 'text/xml'. The request failed with the error message [html ... ] There is a problem with the resource you are looking for, and it cannot be displayed. [ ... /html]

It was occurring at the end of the export step. Turned out the Destination Central Administration Web App was broken. That's where this error is coming from - the end of the export step is the first time the Source farm tries to talk to the Destination farm, and the web service call was failing with a HTTP 500 error.

5/4/2009 3:15 AM | Mike
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

Thanks for that Blog post! Good information - and espacially your funny style of writing! :)
Content Deployment is a real needy tool, and it works well within our environment...thanks to the documentation!

6/18/2009 9:45 AM | Christoph
Gravatar

# re: Content Deployment: Ensure your platform hygiene before randomly abusing the product and calling support.

Hi,

I have been pulling my hair out.Having issues importing a site.

[11/26/2009 5:29:26 PM]: Progress: Importing List Tasks.
[11/26/2009 5:29:26 PM]: FatalError: Object reference not set to an instance of an object.
at Microsoft.SharePoint.SPFieldLinkCollection.Add(SPFieldLink fieldLink)
at Microsoft.SharePoint.SPContentType.LoadWithFieldLinks(XmlReader xrdr, String strFlnks)
at Microsoft.SharePoint.SPContentType.Load(XmlReader xrdr)
at Microsoft.SharePoint.Deployment.ListSerializer.UpdateListContentTypes(SPList list, Dictionary`2 listMetaData, StreamingContext context, ISurrogateSelector selector)
at Microsoft.SharePoint.Deployment.ListSerializer.SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
at Microsoft.SharePoint.Deployment.XmlFormatter.ParseObject(Type objectType, Boolean isChildObject)
at Microsoft.SharePoint.Deployment.XmlFormatter.DeserializeObject(Type objectType, Boolean isChildObject, DeploymentObject envelope)
at Microsoft.SharePoint.Deployment.XmlFormatter.Deserialize(Stream serializationStream)
at Microsoft.SharePoint.Deployment.ObjectSerializer.Deserialize(Stream serializationStream)
at Microsoft.SharePoint.Deployment.ImportObjectManager.ProcessObject(XmlReader xmlReader)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeObjects()
at Microsoft.SharePoint.Deployment.SPImport.Run()

Came across this post and hopefully someone can point in the right direction before call CSS..

Regards,
Sean

11/26/2009 3:44 PM | Sean

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 7 and 4 and type the answer here: