Wednesday, 5 December 2007

Introducing the SharePoint Content Deployment Wizard

Regular readers might have spotted I've been slightly quieter than usual over the past few weeks - actually I've not been slacking, but working on a tool which you might find useful from time to time. As I've discussed in numerous posts, deployment of SharePoint artifacts is something that's perhaps more complex than it should be, and the standard tools provided don't always simplify this picture. Personally, over my past few MOSS projects, there have been several times when I've thought:

  • I just need to move this document library from A to B
  • I just need to move these selected files (e.g. master page, page layouts, CSS etc.) from A to B
  • I just need to move this web from A to B
  • I just need to move this site collection from A to B
  • I just need to move these 20 list items from A to B

If only there was an easy way! CMS 2002 users may remember the SDO export mechanism which allowed you to use a treeview to select exactly which content you wished to move, but unfortunately there's no similar tool for MOSS. Sure, we have Content Deployment and STSADM export etc., but the lowest level of granularity is a web, and if you don't want to overwrite the whole thing neither option can be used. The only other option is to write code which uses the Content Migration API. This is fine for projects which have the appropriate development skills and time, but otherwise things can be tricky.

Enter the SharePoint Content Deployment Wizard.

The tool provides a wizard-like approach to deploying content between SharePoint sites. The selected content is exported using the Content Migration API (PRIME), giving a .cmp file (Content Migration Package) which can be copied to other servers.

Since pictures are often more useful than words, let's look at using the tool. Click to enlarge any of the images below:

EXPORTING CONTENT

Welcome screen (click any image to enlarge):


Select action (import or export) and provide site URL:

 

For export, use the treeview to select which content you wish to deploy. On container objects such as webs, there are options about whether descendent objects should be included:

 

Select options around security, dependencies, versions and name of the export file:
 
 
 
The details are shown back for confirmation, and when 'Finish' is clicked the export will begin:
 
 
 
IMPORTING CONTENT
 

Browse to the .cmp file we exported in the previous steps, and select options around security, versions and, importantly for some scenarios, whether object IDs should be retained:
 
 

The details are shown back for confirmation, and when 'Finish' is clicked the import will begin:
 
 
 

And that's the gist of it. This is the first beta of the tool and I'm sure there will be issues. Regardless, when using any tool which makes this kind of change to your data you should always take a backup before performing the import. Depending on what you're doing, it could be difficult to revert back to the previous state otherwise.

Some other notes:

  • the tool must be installed locally on the server which hosts the site
  • not all features of the Content Migration API are supported by the tool
  • the next beta (mid-December) will properly support large sites - currently the site bind operation can be slow for large sites since the treeview is built in one operation
  • it must be run under an account which has the appropriate permissions to the SharePoint site - use the Windows 'Run as..' feature to do this if necessary (shown below in the image below- right-click on the .exe and select 'Run as..')


 
In the next post, I'll cover details on different usages of the tool and the effect of different options. The tool also supports reparenting (e.g. importing a web or list to a different parent on the target) and I'll talk about this.

You can download the tool now from www.codeplex.com/SPDeploymentWizard. All feedback (particularly bug reports) welcome, either post here or on the Codeplex site.

219 comments:

1 – 200 of 219   Newer›   Newest»
Zack said...

does this also work with WSS 3.0? or only MOSS?

Cale Hoopes said...

Chris!

What a great contribution to the community! Content deployment has been one of the biggest things they missed in the product. When you look at MOSS in the eyes of a MCMS dev, you assume that they at least created all the features you were familiar with in MCMS - even if they improved on them. However, it's not the case. Content Deployment has been a big disappointment. I look forward to giving your tool a try simply because I will have a call for content deployment in an upcoming project.

just testing... said...

There *is* an equivalent to the CMS treeview for moving content, and its out-of-the-box. It's called 'Manage Content and Structure' and it is available at /_layouts/sitemanager.aspx when you activate the Office SharePoint Server Publishing Infrastructure feature on your site collection. Many OOTB site templates come with this feature activated (such as Collaboration Portal and Publishing Portal).

Either way, there are uses for this wizard-based UI. Good job!

Anonymous said...

Wow, this looks fantastic. Can't wait to try it out.

Robin Meuré said...

Awesome work mate!

Matt Ranlett said...

This looks like a great free tool. I think there is a tool on the market that does this (echo for SharePoint (http://www.echotechnology.com)) but that may be overkill for simple single doc lib. content moves.

Martin said...

Great tool - I've been wondering how to do the things you mention without going crazy over it. :)

Looking forward to the final version!

Peter said...

Possible to move the site / list from one site to another site within the same site collection??

Mark Kruger said...

Looks awesome... have to check this out.

Chris O'Brien said...

@Peter,

Yes this is possible. This is known as 'reparenting' and I wrote the following notes on the Codeplex page:

Reparenting of objects such as webs and lists is possible with the following usage on the import:

- enter the URL for the target web in the 'Import web URL' textbox
- ensure 'Retain object IDs and locations' is not checked

I'll post very soon with some more information on different options.

HTH,

Chris.

Anonymous said...

Chris,

How does one export a complete app and import it into a totally different server? I tried export, immediately followed by an import. The problem is that import requires visibility of the source from the target machine. When I try to use the .cmp, I get an error.

Dov

coachcs said...

I have installed the tool on two different servers so that I can move a copmlete app from one server to another (not in the same farm). Now I exported the site to a cmp file on a network drive and I try to import it to the other server. I get an error: "Could not find webtemplate CALLCENTER#75812 with LCID 1033"

What does this mean?

BTW, I love your use of the archaic "whilst" and thank thee for it.

Chris O'Brien said...

Hi Dov,

To move a complete app you should right-click on the root node of the tree and select 'Export > Include all descs'. This will export the root web of the site collection and everything beneath it. Visibility of the source from the destination is definitely not required - this won't be your problem.

Remember that all filesystem dependencies are not captured by the tool, so any site definitions, Features, assemblies etc. should be applied to the destination before the import. If you fail to do this, the exact cause of the import error (i.e. which dependency is missing) should be logged in the import log file which is generated (the tool tells you the location).

Ping me back if can't resolve with the log information.

Cheers,

Chris.

Chris O'Brien said...

@coachcs,

The error that you're seeing seems to point to a dependency which you must resolve before the import can work successfully. In this case, it looks like a custom site definition - since these comprise files on the filesystem (in the 12 directory), these must be copied to the destination before running the import.

Best thing to do would be to find out what all the files related to the site definition are, then copy them to the destination prior to re-running the import.

HTH,

Chris.

P.S. Thanks for the grammar observation :-)

Serge van den Oever [Macaw] said...

Hi Chris,

Great tool, thanks for making it available for all of us. I was expirimenting with it today on a Wss3 only machine, export goes great, but import gives an IO.FileNotFound exception. After some testing I found out that for the import you depend on the MOSS microsoft.sharepoint.publishing assembly. First of all it might be a good idea to test if this assembly is available, and give a warning if not, second, it is really a pitty to depend on this assembly, because the whole content migration API is a Wss3 thing that is really useful in a Wss3 only solution.

I hope you can make your tool independent of MOSS in your next release!

Keep up the good work!

Regards,

Serge

Chris O'Brien said...

Hey Serge,

Great feedback thanks. I found where a class from the Publishing assembly is used - applying publishing schedules from the source onto the destination so that they are respected there.

So it should be entirely possible to check for the assembly, go ahead and do this if present, but present a warning somewhere if not. Hence WSS-only support should definitely appear in the next release, and I agree the tool should support WSS-only.

Thanks again for the feedback Serge, much appreciated.

Chris.

P.S. Next release should be in around 3 weeks - I'm just slightly tied up until then with some other community stuff I was asked to do.

Sjoert Ebben said...

Hi Chris,

nice tool you made. Is it possible to run it from a command prompt so I can schedule the export/import?

Cheers,
Sjoert

Chris O'Brien said...

@Sjoert,

Not at this stage I'm afraid. It might be possible in a future release however, I'll add it to my list of functionality to consider.

Thanks for the feedback.

Chris.

Microsoft Sharepoint: Building Office 2007 Solutions in C# 2005 By Scot P. Hillier said...

Great Tool... How do you differentiate between the three export option.

Also, regarding the Lists, even if you say overwrite/Append, if it finds the List with same name in the target Site, it totally errors out. Possibly, it should give an error message and move on.

Is it possible to import to a existing site with overwrite/append options without the same GUID

Thanks a lot for the tool

Chris O'Brien said...

Hi,

My post on Using the Content Deployment Wizard covers some of your questions, particularly the difference between Export > Include descendants/Content only/Exclude descendants.

For your second question/comment, I'm pretty sure the error will be coming from the underlying SharePoint API rather than the tool, so examine the error message and consider the settings you're using. Even so, something doesn't sound right - you should definitely be able to update list items OK. If the items already exist on the destination, consider if they will currently have the same GUID - this should guide you in deciding whether to select 'Retain object IDs and locations' or not.

This is also relevant to your last question/comment. Generally I've selected the option to retain object IDs, but it depends on exactly what you're doing. Key Concepts in Selective Migration and Stefan's Deep Dive into the SharePoint Content Deployment and Migration API - Part 5 article offer good information on this.

Hope this helps, if you're still having specific problems let me know the exact details and I'll try to help further.

Cheers,

Chris.

GerryD said...

I love this tool. I want to take the content of a subsite of one location (different app) to a top-level managed path elsewehre.
example: site.company.com/subsite to smith.company.com/managed_path. What happened is that the subsite went to smith.company.com/managed_path/subsite instead of placing the content in the managed_path URL. Any idea what I did wrong?
export settings: chose the subsite and selected Include all descendents; Retain objtect ~ left blank; exlcude dependecnies ~ checked. Import Settings: Retain object ID's ~ left blank. Any input is greatly appreciated.
gedurish@hotmail.com

Chris O'Brien said...

Hi Gerry,

That's an interesting question - the reason this happened is because when you selected the subsite (web) for export, assuming you select "All descendents" you are effectively saying "take this web and everything beneath it". You are not saying "take only the contents of this web". So it's useful to consider the web as an object in it's own right, if that helps. When you import, you are adding that object (and all children) to the new parent site.

So you have two options:

- do not create the subweb before doing the import - let the import job create it for you. You should import to your new site's root web by either leaving the 'Import web URL' box blank or entering "http://smith.company.com" (either will work)
- if the target subweb already exists, export the contents of the original web only by "cherry-picking" them from the treeview. You'll need to specify the 'Import web URL' as "http://smith.company.com/subweb" in this case (this URL should already be browsable)

Any other questions, feel free to leave another comment.

HTH,

Chris.

GerryD said...

I chose the apps subweb i.e. site.company.com/subweb and included all descendants. I did not choose site.company.com and included all descendants. Correct me if I'm wrong. I assume descendants are the web itself and all its subsites - nothing from above?

The new location already exists in it's own database (no content in it yet). It is a managed path. You are correct I could import to http://smith.company.com and it would create the subsite, but the content would go to the wrong database.

If you'd like, I could send you screen shots of what I did.

Chris O'Brien said...

Gerry,

Yes, you're right in your assumption.

I've not worked with managed paths specifically, but if I understand how they work you'd need to use my option 2 to do this - go beneath the source web in the treeview and cherry-pick each list/subweb. Remember to also specify the import web URL on the import.

If my understanding of managed paths is right, this should work.

Let me know..

Chris.

GerryD said...

Do I need to cherry pick on the export and the import? I cherry pick the import and I ended up with smith.com.com/web/web.

My work around was to use your tool for a difficult migration and I ended up with the result described. I then used stsadm for a new import and export. I deleted and recreated the managed path. Stsadm correctly fixed the problem.

Chris O'Brien said...

You can only cherry-pick on the export, since the tool will always import all the contents of your chosen package.

It sounds like you got there in the end, just remember that STSADM will allocate new IDs for all your objects on import. This can be a problem in certain scenarios, e.g. if ListView web parts are used or you wish to use Content Deployment between the source and destination site. If these don't apply you should be OK though.

Cheers,

Chris.

Guillaume said...

Hi Chris - great tool. Thanks for sharing it.
I have 2 questions for you:

- is there a way to export a site with all its associated user groups?

- do you plan to have a bug reporting system in the future for beta-testers?
Guillaume

Chris O'Brien said...

Hi Guillaume,

Yes it is possible to export security groups along with the content. Select 'All' from the 'Include security' dropdown to do this.

In terms of bug reporting, adding issues on the codeplex site is the best idea - I monitor it regularly. Interested in all feedback!

Thanks,

Chris.

David said...

Chris - I cannot believe you built this incredible tool. Here was complaining that we started using SP on a development box and people will want to migrate their lists to production when we are ready. And you took care of that problem for us. Thank you!!!

it must be run under an account which has the appropriate permissions to the SharePoint site - use the Windows 'Run as..' feature to do this if necessary (shown below in the image below- right-click on the .exe and select 'Run as..')

Anyway, I have an export problem that is related to security. When I run with my account that has admin rights to the SP server, I get System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) errors.

When I do a RUN AS as my user account that is a Sharepoint admin, but not a user on the server, I keep getting a message "Unable to contact sute at address..."

Please Help???

TIA,
Dave

Chris O'Brien said...

Dave,

Is anything written to the log file from the export/import operation? This might give a clue as to what the permissions issue is. Or are you not getting as far as being able to start the operation?

Remember the account you use will also need permissions to write to the folder where the export/log files are saved.

Cheers,

Chris.

GerryD said...

I am struggling with a situation. I ran prescan on a WSS 2.0 site: smith.company.com. I copied the database. I created a new site in 2007 called smith2007.company.com, pointed it to the copied database and everything worked wonderfully. The site contains events with workspaces and the workspaces resolve when clicked. However. if I run stsadm or use the content deployment wizard to export/import of smith2007 and move it to a site collection, the workspaces resolve to the wrong URLs. I cannot find the code to change the URL. What happens is if I have a site collection: gohere.company.com/sitecollection/site the links for the workspaces will go to gohere.company.com/workspace. The 'sitecollection' is dropped from the link. I have no idea where this is codes. If I add the missing information into he URL in the webbrowser, the workspace resolves. This hard coded information is killing me. Has anyone come across these situations where URL's do not resolve? I opened the site in SP Designer and searched code, there is no reference to the incorrect URL's. They must be in the database or something. Any thoughts?

Guillaume said...

Hi Chris,

I am getting the following exception when exporting:

[2/20/2008 11:08:11 AM]: Start Time: 2/20/2008 11:08:11 AM.
[2/20/2008 11:08:11 AM]: Progress: Initializing Export.
[2/20/2008 11:08:11 AM]: FatalError: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
at System.IO.Path.GetFullPath(String path)
at Microsoft.SharePoint.Deployment.DataFileManager.get_CompressedFile()
at Microsoft.SharePoint.Deployment.ExportDataFileManager.VerifyFileLocation()
at Microsoft.SharePoint.Deployment.ExportDataFileManager.VerifyDataFileLocation()
at Microsoft.SharePoint.Deployment.ExportDataFileManager.Initialize()
at Microsoft.SharePoint.Deployment.SPExport.InitializeExport()
at Microsoft.SharePoint.Deployment.SPExport.Run()
[2/20/2008 11:08:13 AM]: Progress: Export Completed.
[2/20/2008 11:08:13 AM]: Finish Time: 2/20/2008 11:08:13 AM.
[2/20/2008 11:08:13 AM]: Completed with 0 warnings.
[2/20/2008 11:08:13 AM]: Completed with 1 errors.

I can export fine a particular piece of content from 1 box but I would get the above exception from another. I gather this must be down to an environment issue rather than a SharePoint content issue.

Do you know how I could figure out more precisely where this problem is coming from ?

Thanks,
Guillaume

Chris O'Brien said...

@GerryD,

I guess the key is working out how those links are generated. I'm afraid I haven't done much with workspaces or WSS2.0 upgrades, so not sure what the issue could be.

Anyone else chip in?

Chris.

Chris O'Brien said...

@Guillaume,

It looks like there is an issue with where you are trying to save the file to in that environment. Is it an extremely long path or are there any strange characters?

Suggest trying to save to different locations on that machine to see if that makes a difference.

HTH,

Chris.

Guillaume said...

Thanks for your help Chris.
I tried exporting to the C drive and it did make a difference.
The path which the wizard was struggling with was a shared drive, and it was definitely a long one!
Guillaume

Chris O'Brien said...

@Guillaume,

Thanks for letting me know, that's useful. I'll try and add better exception-handling for this scenario in the next release.

Cheers,

Chris.

Microsoft Sharepoint: Building Office 2007 Solutions in C# 2005 By Scot P. Hillier said...

Hi

I've a big problem in the stsadm -restore command

We only had Site collection backups and we need one site the user deleted from the backup

We did the backup in the production server and one of the user deleted the site(:)) and we’re trying to get the site backup.

When we try to restore we're getting the following error

C:\Documents and Settings\rameshk>stsadm -o restore -url http://localhost -filename z:\projects.bak -overwrite

Your backup is from a different version of Windows SharePoint Services and cannot be restored to a server running the current version. The backup file should be restored to a server with version '3701403.0.1196032409.29915337' or later.

I saw few post on this error.

http://blogs.technet.com/wbaer/archive/2007/05/22/understanding-and-handling-microsoft-it-site-delete-capture-1-0-archives.aspx - I did install the MSITDelete Site capture on my local machine. Not sure that is the problem. If only have installed this the production, that would have saved almost two days and still no postive results

http://serverdays.com/2007/08/10/problems-using-stsadm-to-backup-windows-sharepoint-services-30/

But not any solutions though. I don't know whether Microsoft knows about this or something I'm not doing correctly.

And by the way, if I have backup using stsadm can I read it using Content API or any other tool which wil read the data and restore it

Any help will be greatly appreciated.

Thanks
Ramesh

Chris O'Brien said...

@Ramesh,

Afraid I've not experienced this particular error but can imagine if different versions (service packs/hofixes etc.) are used in different environments there could be problems.

Since STSADM export uses the content migration API underneath, I'm pretty sure you won't be able to use this API to help the situation unfortunately.

HTH,

Chris.

GerryD said...

I would try a different route. Get the last known sql backup. Create a temporary top level site from the sql backup. Uses stsadm -o export to grab the subsite and then use stsadm -o import to put the subsite where you want it.

Microsoft Sharepoint: Building Office 2007 Solutions in C# 2005 By Scot P. Hillier said...

Thanks Chris and Gerry,

The problem is that we have only Site Collection backup and the site has been already deleted. If we want the site that has been deleted we have to use the existing backup.

Is there a way to find out what what are the hotfixes(we haven't applied the SP1 in production yet)

Some of them are not showing up in the add/remove program.

Thanks
Ramesh

Microsoft Sharepoint: Building Office 2007 Solutions in C# 2005 By Scot P. Hillier said...

Thanks Guys for the help

Finally, I was able to find ou the issue. The size of the file is 10Gb and we;re trying to copy from Production Datacenter to dev box using Robocopy and it seems robocopy failed to copy after so many items and it leaves a same size file with some junk in the file.

So, breaked up and compressed the backup using 7zip utility ( you would think, backup is compressed:), but it is not) using the and used robocopy to copy the file and it worked like a charm when we restored the site.

I hope this saves some one some (or a lot of) time

Thanks
Ramesh

Anonymous said...

Awesome. Thanks for building and sharing this great tool.

Adi said...

Hi, Chris,

This is a great tool, and we have been using it to migrate portals for customers.

We have been enountering excepctions during the process.
I there any chance of the new beta/rtm version coming out any time soon?

Otherwise, is the source code available? I would like to try overcoming the issues we've encountered.

Chris O'Brien said...

@Adi,

As I discuss on Recipe for successful use of the Content Deployment Wizard, the Wizard code itself is actually pretty stable despite the beta label. Your issues are more likely to come from the underlying MS API rather than the Wizard code, - suggest checking my earlier posts and also Stefan Gossner's blog for info on content deployment which might help.

Otherwise, please feel free to post your errors here and I'll try to help you work through them.

Cheers,

Chris.

jose said...

Hi Chris, and thanks 4 this great tool.
Is it possible to move(reparenting) an entire site collection to a subsite??

Chris O'Brien said...

@Jose,

Sorry for the delay in replying. Yes this should be possible - however, now I come to think about it, this could be a scenario I didn't cover in my series of tests. If you have any problems drop me a line and I will help.

Thanks,

Chris.

Fabiano Brito said...

Hello Chris,

thanks for this tool!!!

I have understood well, we dont have the feature Content Deployment in the WSS just in MOSS, is this right?

Thanks,
Fabiano Brito
(MOSS Admin from Brazil)

Chris O'Brien said...

Hi Fabiano,

As far as I understand the standard content deployment interface in SharePoint is only visible under MOSS (not WSS) as you say.

However, the Wizard is capable of working with WSS-only sites since it uses the API directly.

HTH,

Chris.

Anonymous said...

Hi Chris,

First good job of this tool.

Second, I got a issue:

I am trying to move a site across different domain but I got this Error: Access denied.
SharePoint.SPGlobal.HandleUnauthorizedAccessException()

I am using the form authentication under my source web.

Any ideal?

Thanks.
Ji

Chris O'Brien said...

@Ji,

Thanks.

Your error is likely to be because the Windows user you are running the Wizard as does not have permissions in the SharePoint site you are trying to export/import.

The best way of working with forms auth sites to extend on to another web application which uses Windows auth - use this site when working with the Wizard.

HTH,

Chris.

Chanaka said...

hi...
we have used your tool & succesfully exported. but when we are going to import it into another server it gives an error "the SMS event handler is not found", we have removed that event handler form the main site & export it again. but when we are going to import it, the same erro is populated...
plz help us..
thanks

Chris O'Brien said...

Hi Chanaka,

Generally this error only occurs when there still is an event handler somewhere on the source, but it isn't possible to add it on the destination during the import (e.g. because the code isn't yet present on that environment).

My suspicicion is that you still have the event handler registered somewhere on the source. Suggest writing some code to iterate through all your lists to check?

HTH,

Chris.

Sudhakar said...

Chris,

We're facing a weird scenario with import/export. Appreciate your help on this.

Our requirement is export a web and reimport to a new web ( in same site collection). Source web has pages based on custom content types (derived from Article Page).

Import runs good, however in target web->Pages->Doc lib settings-> Click on custom content type, all the site columns appear in duplicate ( not only custom fields, but some OOB fields such as roll up image, image caption etc). So when someone edits the page properties, all these fields appear in duplicate

- field id referred here is same for the duplicates.
- Custom Content at site coll level is intact. no duplicates

Any help on this is much appreciated. Attaching code snippet.

private static void ExportImport()
{

SPSite spsite = new SPSite("http://webapp/");

SPWeb spweb = spsite.OpenWeb("/source");
SPWeb destspweb = spsite.OpenWeb("/target");

SPExportObject exportObject = new SPExportObject();
exportObject.Id = spweb.ID;

//Only content ( pages, lists etc needed)
exportObject.IncludeDescendants = SPIncludeDescendants.Content;
exportObject.Type = SPDeploymentObjectType.Web;

// Creating export settings object to export content
SPExportSettings settings = new SPExportSettings();
settings.SiteUrl = spsite.Url;

// Exporting all the sites,subsites and content pages
settings.ExportMethod = SPExportMethodType.ExportAll;
settings.FileLocation = @"C:\ExportPath";
settings.BaseFileName = "Test.cab";
settings.FileCompression = false;

settings.ExcludeDependencies = true;
settings.CommandLineVerbose = true;
settings.ExportObjects.Add(exportObject);
SPExport export = new SPExport(settings);
export.Run();

Console.WriteLine("Staring Import.........");
SPImportSettings impsettings = new SPImportSettings();
impsettings.SiteUrl = spsite.Url;
impsettings.WebUrl = destspweb.Url;
impsettings.FileLocation = @"C:\ExportTest";
impsettings.FileCompression = false;
impsettings.BaseFileName = "Test.cab";
impsettings.CommandLineVerbose = true;
impsettings.RetainObjectIdentity = false;
SPImport import = new SPImport(impsettings);

import.Run();
}

Chris O'Brien said...

@Sudhakar,

First off, I've checked your code and it all looks good (don't forget to dispose the SPSite/SPWeb objects you create though!).

I'm struggling to think of a reason why you'd get duplicate fields on the list. If I read what you say correctly, your list/content type ends up with 2 fields with exactly the same ID, which I find especially surprising.

Are you up-to-date with service packs/content deployment hotfixes?

Cheers,

Chris.

Sudhakar said...

Chris,

Looks like my issue of duplicate site columns is a known bug in Microsoft (as clarified by MS escalation engineer). The fix was supposed to be in MOSS Post SP1 Hot Fix - May 2008, but hasnt worked properly. MS plans for a fix Aug end.

FYI - More digging revealed that even stsadm export, import has this issue. Even the OOB content types such as Page, Welcome Page, Article Page also have this issue.(Try exporting and importing Press Releases and explore content type in pages lib->doc lib settings)

Thanks

Keith said...

Hi!
Great tool, but I was wondering if there is a way I can tell it to put it's temporary cache somewhere other than the temp folder on C:\Windows? I have a HUGE D:\ but little space on C:\ so I can't use your tool because it runs out of room on C:\

Chris O'Brien said...

Hey Keith,

Yes, you should be able to do this by modifying your TEMP/TMP environment variables.

HTH,

Chris.

Poorna Chandra Singh said...

Awesome Utility,

However I have question, how to migrate Workflows which were designed using Sharepoint Designer and associated to a Form Library. I was able to Import the Form Library but the workflows didn't get migrated.

Is there anyway to migrate the custom workflows created using Sharepoint Designer 2007?

Thanks
Singh

Chris O'Brien said...

Hi Singh,

I'm afraid SPD workflows do not get deployed by the underlying SharePoint Content Migration API. At Using the SharePoint Content Deployment Wizard I note:

The following content does not get captured by the Content Migration API - alerts, audit trail, change log history, recycle-bin items, workflow tasks/state.

Sorry if that's not the answer you were hoping for.

Chris.

SteveMagid said...

Hi Chris,
Great contribution.

Dumb question - please explain why we should refrain from using a normal stsadm backup / retsore to move our projects from a dev to production environment.

Thanks!

Chris O'Brien said...

Hi Steve,

This isn't recommended for a couple of reasons:-

- obviously any existing content you have will be overwritten, thus ruling out incremental deployments
- lots of extra things you might not bargain for will get transferred, such as recycle bin contents, long running operation status
- BIG ONE - the change log (kind of like a SQL transaction log for SharePoint) will get deployed, and this confuses content deployment and some other operations in a big way

I was also thinking I'd seen something fairly official - suggest taking a look at Stefan's note on this http://blogs.technet.com/stefan_gossner/archive/2008/03/12/common-error-situation-with-when-using-backup-restore-to-transfer-a-database-to-a-new-farm-on-moss-2007.aspx.

HTH,

Chris.

Chris O'Brien said...

Hi Steve,

This isn't recommended for a couple of reasons:-

- obviously any existing content you have will be overwritten, thus ruling out incremental deployments
- lots of extra things you might not bargain for will get transferred, such as recycle bin contents, long running operation status
- BIG ONE - the change log (kind of like a SQL transaction log for SharePoint) will get deployed, and this confuses content deployment and some other operations in a big way

I was also thinking I'd seen something fairly official - suggest taking a look at Stefan's note on this http://blogs.technet.com/stefan_gossner/archive/2008/03/12/common-error-situation-with-when-using-backup-restore-to-transfer-a-database-to-a-new-farm-on-moss-2007.aspx.

HTH,

Chris.

SteveMagid said...

Thanks Chris,

Would you suggest backup and restore is also the wrong approach when initially deploying sites to a customers live server, say from a VPC.

I.e. we did the work on a VPC and then want to move it live so we ussually just backup and restore it.

Backup restore seems to include workflows which is nice.

Chris O'Brien said...

Steve,

Yep, there are benefits - I think backup/restore would be the only way to transfer SPD workflows (if that's what you meant).

However my recommendation would probably to avoid it for the support reason - if you need to raise a call and MS find this was the deployment method, they might say they cannot offer full support - not sure.

Certainly the other deployment methods are more involved, but I feel happier with them.

HTH,

Chris.

SteveMagid said...

Hi Chris,
I just tried your tool to export a Publishing portal. I realise you will probably need more information. Attached is the part of the export log with the error.



[2008/08/14 11:58:22 AM]: Progress: Exporting Web http://int-lab-moss:9050/accommodation.
[2008/08/14 11:58:22 AM]: FatalError: Failed to compare two elements in the array.
at System.Collections.Generic.ArraySortHelper`1.QuickSort[TValue](T[] keys, TValue[] values, Int32 left, Int32 right, IComparer`1 comparer)
at System.Collections.Generic.ArraySortHelper`1.Sort[TValue](T[] keys, TValue[] values, Int32 index, Int32 length, IComparer`1 comparer)
at System.Collections.Generic.ArraySortHelper`1.Sort(T[] items, Int32 index, Int32 length, IComparer`1 comparer)
at System.Array.Sort[T](T[] array, Int32 index, Int32 length, IComparer`1 comparer)
at System.Collections.Generic.List`1.Sort(Int32 index, Int32 count, IComparer`1 comparer)
at System.Collections.Generic.List`1.Sort(IComparer`1 comparer)
at Microsoft.SharePoint.Deployment.WebSerializer.GetDataFromObjectModel(Object obj, SerializationInfo info, StreamingContext context)
at Microsoft.SharePoint.Deployment.DeploymentSerializationSurrogate.GetObjectData(Object obj, SerializationInfo info, StreamingContext context)
at Microsoft.SharePoint.Deployment.XmlFormatter.SerializeObject(Object obj, ISerializationSurrogate surrogate, String elementName, Boolean bNeedEnvelope)
at Microsoft.SharePoint.Deployment.XmlFormatter.Serialize(Stream serializationStream, Object topLevelObject)
at Microsoft.SharePoint.Deployment.ObjectSerializer.Serialize(DeploymentObject deployObject, Stream serializationStream)
at Microsoft.SharePoint.Deployment.SPExport.SerializeObjects()
at Microsoft.SharePoint.Deployment.SPExport.Run()
*** Inner exception:
Object reference not set to an instance of an object.
at Microsoft.SharePoint.SPFeature.EnsureProperties()
at Microsoft.SharePoint.SPFeature.get_TimeActivated()
at Microsoft.SharePoint.Deployment.WebSerializer.ExportFeatureComparer.System.Collections.Generic.IComparer[Microsoft.SharePoint.Deployment.ExportObject].Compare(ExportObject exportObject1, ExportObject exportObject2)
at System.Collections.Generic.ArraySortHelper`1.QuickSort[TValue](T[] keys, TValue[] values, Int32 left, Int32 right, IComparer`1 comparer)
[2008/08/14 11:58:23 AM]: Progress: Export Completed.
[2008/08/14 11:58:23 AM]: Finish Time: 2008/08/14 11:58:23 AM.
[2008/08/14 11:58:23 AM]: Completed with 0 warnings.
[2008/08/14 11:58:23 AM]: Completed with 1 errors.

SteveMagid said...

Sorry Chris, did some homework and realise the error occurs with the native -o export as well. Its due to a missing feature. weird because I havent deployed any new features.

I found info on this here: http://blogs.technet.com/stefan_gossner/archive/2008/04/12/moss-common-issue-content-deployment-fails-with-failed-to-compare-two-elements-in-the-array.aspx

Raphael said...

Hi Chris,
I'm getting a rather disturbing error message when I attempt to import a list using the Content Deployment Wizard. Here's the scenario:

Source Site: http://sharepointdev
Target Web: http://sharepointdev/subsite_d

The task is to copy 2 custom lists each with its own custom content type from the source site to the target web. The export works fine but during the import I get the folowing error message:

FatalError: The element 'Fields' in namespace 'urn:deployment-manifest-schema' has invalid child element 'Field' in namespace 'http://schemas.microsoft.com/sharepoint/'. List of possible elements expected: 'FieldRef, Field' in namespace 'urn:deployment-manifest-schema'.

I found a possible related hotfix from Microsoft; unfortunately this didn't fix the issue.

Please let me know if you've got any ideas how to resolve the issue.

Regards,

Raphael.

Chris O'Brien said...

Raphael,

Sorry for the delay in replying, I was on holiday when you posted.

This issue arises when you're using the Content Deployment API (e.g. with the Wizard) and you also have lookup fields deployed by a Feature.

A few people have blogged about this, see Michael Nemtsev's post for information on how to get around the problem.

HTH,

Chris.

lifelearner said...

Hi Chris

i have the following error when using SPDWizard to move entire site collection to different farm and different AD. I have already installed SP1 and infrastructure update. Can you help me what is the problem? I then try to import the cmp file using stsadm import, it was successful but the top navigation node shows error for every sub site. I have checked content and structure, the subsite was there, but it cannot show in the navigation bar. pls help me! thx

[9/18/2008 10:09:07 AM]: Progress: Importing List List Template Gallery.
[9/18/2008 10:09:12 AM]: Progress: Importing List Master Page Gallery.
[9/18/2008 10:09:13 AM]: FatalError: Value does not fall within the expected range.
at Microsoft.SharePoint.SPFileCollection.get_Item(String urlOfFile)
at Microsoft.SharePoint.SPContentTypeCollection.Add(SPContentType contentType)
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.CreateContentType(SPContentType sourceContentType)
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.ProcessContentType(SPContentType sourceContentType, String contentTypeXml, ImportObjectManager importObjectManager, Boolean IsParentSystemObject)
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()
[9/18/2008 10:09:40 AM]: Progress: Import Completed.
[9/18/2008 10:09:40 AM]: Finish Time: 9/18/2008 10:09:40 AM.
[9/18/2008 10:09:40 AM]: Completed with 2 warnings.
[9/18/2008 10:09:40 AM]: Completed with 1 errors.

Chris O'Brien said...

@lifelearner,

Are all your content types present on the import site? Looks like one wasn't able to import for some reason - wasn't a content type deployed by a Feature was it? If so, you'd need to install this Feature on the import site.

Otherwise, I'd actually be tempted to open a support case with MS, as I can't really see anything logical which would cause this.

Sorry I can't be more help..

Chris.

Robin Burrows said...

Hi Chris,

I was hoping to start using your excellent tool, however when I try to access the codeplex home page, it is currently showing the message "This project is not yet published". Do you know if this is a short term issue or whether there is an alternative url available for the download.

Many thanks, Robin.

Chris O'Brien said...

Hi Robin,

Apologies - the Codeplex project has been unpublished by the adminstrators because I haven't published the source code. Whilst I'm working out what to do about this, suggest leaving another comment with your e-mail address (which I won't publish), and I'll mail you the tool.

Sorry about the inconvenience, Codeplex site hopefully back soon.

Cheers,

Chris.

Ben B. said...

Hi,

Looks good does this use STSADM for site collection moves etcetera?

Ben B. said...

Sorry but I forgot to ask if IDs get carried over, unlike DocAve Replicator which breaks lookups and such. Thanks!

matharuajay said...

Hi, When I tried to download the project from the codeplex from the following URL: http://www.codeplex.com/SPDeploymentWizard it says access denied. And asks to login even after logging in I am unable to access the project.

Chris O'Brien said...

@Ben B,

The tool uses SharePoint's Content Deployment API which is what STSADM export/import uses underneath, but allows you to set more options and have more control than the standard methods.

As an example, there is a checkbox to specify if you wish to retain the existing IDs - so this allows lookups etc. to continue to function.

HTH,

Chris.

Chris O'Brien said...

@Matharuajay,

Sorry for the inconvenience - the Codeplex site is now back up and running!

HTH,

Chris.

Blogueando, que es gerundio said...

Hi Chris!
Good work!

I'm having an exception when importing:
[30/09/2008 19:54:02]: Progress: Importing Role Assignment for Quick Deploy Items.
[30/09/2008 19:54:02]: FatalError: User cannot be found.
at Microsoft.SharePoint.SPUserCollection.GetByID(Int32 id)
at Microsoft.SharePoint.Deployment.WebSerializer.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()
[30/09/2008 19:54:06]: Progress: Import Completed.
[30/09/2008 19:54:06]: Finish Time: 30/09/2008 19:54:06.
[30/09/2008 19:54:06]: Completed with 8 warnings.
[30/09/2008 19:54:06]: Completed with 27 errors.

I have deleted all paths and jobs in the source server, just in case, but error persists.

Any ideas?

Thanks in advanced.
Chimo.

Chris O'Brien said...

@Chimo,

First off, apologies for the delay in replying.

I wonder of your error is due to the settings you selected for the import operation. It seems like your target site has a different set of users (e.g. different domain), but you selected all security information should be imported.

Suggest trying the job again with 'include security' to 'None' and 'User info update' to 'ReplaceUserWithSystem'.

HTH,

Chris.

shobha said...

Good tool!!
I have a Document library when i export the library with IncludeDescendants, it exports the library with 0 errors. But when i import the file, it gets fail saying different document library not found. In export log it shows importing other libraries(other libraries not present so its getting fail). My Question is : Is there any way to find out the dependencies of document library before exporting so that i can export all of them at a time.

statto1974 said...

Hi,

I know this error is due to the underlying Content Deployment API rather than your excellent tool, but I was wondering if you knew of a workaround or a way of solving this problem when running an import (The same error occurs if you use the STSADM import command)


[24/11/2008 10:40:28]: FatalError: The formula refers to a column that does not exist. Check the formula for spelling mistakes or change the non-existing column to an existing column.
at Microsoft.SharePoint.Library.SPRequest.CallCalcEngine(Int32 operation, String bstrUrl, String bstrListName, String bstrString1, String bstrString2)
at Microsoft.SharePoint.SPFieldCalculated.CheckFormulaForTemplate(SPWeb web, XmlDocument xd, XmlElement xroot)
at Microsoft.SharePoint.SPFieldCollection.AddFieldToWeb(String strXml, Boolean checkDisplayName)
at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXmlInternal(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
at Microsoft.SharePoint.Deployment.FieldTemplateSerializer.CreateField(SPWeb web, SerializationInfoHelper infoHelper)
at Microsoft.SharePoint.Deployment.FieldTemplateSerializer.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()

Cheers

Anonymous said...

Hi Chris.

I'm trying to export a task list from site A and import into site B.

I ran the export and copied the cmp file over. However when I do the import, I get this error.

[11/25/2008 10:38:22 AM]: Start Time: 11/25/2008 10:38:22 AM.
[11/25/2008 10:38:22 AM]: Progress: Initializing Import.
[11/25/2008 10:38:23 AM]: Warning: Import requirement file C:\Documents and Settings\Administrator.BERMUDA\Local Settings\Temp\2bbf21ac-8e13-4512-970b-55262870b369\Requirements.xml was not found no verifications ran.
[11/25/2008 10:38:23 AM]: FatalError: Could not find file 'C:\Documents and Settings\Administrator.BERMUDA\Local Settings\Temp\2bbf21ac-8e13-4512-970b-55262870b369\ExportSettings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.FileInfo.Open(FileMode mode, FileAccess access, FileShare share)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeExportSettings()
at Microsoft.SharePoint.Deployment.SPImport.Run()
[11/25/2008 10:38:23 AM]: Progress: Import Completed.
[11/25/2008 10:38:23 AM]: Finish Time: 11/25/2008 10:38:23 AM.
[11/25/2008 10:38:23 AM]: Completed with 1 warnings.
[11/25/2008 10:38:23 AM]: Completed with 1 errors.

I'm also unclear when doing the import if I need to fill in the Import web URL field. It seems optional.

Thanks.

Anonymous said...

can this tool backup a subweb and restore it to a site collection? i hear there are issues doing this with stsadm.

Chris O'Brien said...

@Shobha,

Unfortunately I'm not aware of any easy ways to find dependencies of a document library. However, if another library really is a dependent, I'd expect leaving 'Exclude dependencies of selected objects' unchecked should ensure the other objects also get included in the packge. This should then import fine.

HTH,

Chris.

Chris O'Brien said...

@Anonymous,

It looks like the account you're running the Wizard as doesn't have permissions to read/write to the administrator's 'My documents' folder. Files in the .cmp package are likely unzipped to here as part of the import process.

Suggest running the Wizard under an account which has NTFS permissions as well as permissions in the SharePoint db (or, amend the NTFS permissions).

HTH,

Chris.

Chris O'Brien said...

@Anonymous,

Yes, the Wizard can be used to deploy a subweb as you describe.

HTH,

Chris.

Johanna said...

We are running MOSS 2007 with multiple load balanced WFE servers. Does this need to be installed on every web server?

Thanks

Chris O'Brien said...

@Johanna,

No - since when you import you are effectively updating data in SharePoint's SQL database, which is separate from your WFEs. Hence you can just nominate one WFE and install the Wizard there.

That said, nothing stopping you having it on all your WFEs for convenience though, it really doesn't matter.

HTH,

Chris.

MOSSkeeter said...

Hi Chris,

I am trying to migrate a Blog list, Comments list and Categories list to a Team site but I am getting an error "Invalid List Template" when ever im importing the list to the site. Is it possible to migrate a Blog site to a Team site?

Chris O'Brien said...

@MOSSkeeter,

No, migration using the Wizard (or Content Deployment in general) needs be like for like in terms of the site template/definition used.

HTH,

Chris.

MOSSkeeter said...

Hi Chris,

Thanks for the last reply!

I got another question though, you mention that alerts will not be included in the export/import using the tool. I was just wondering if you have any idea in any way on how to migrate the alerts to another site?

Thanks!

Chris O'Brien said...

@MOSSkeeter,

You need to write code to do this - something like iterating through the alerts for the source site, writing them out to an XML file, then adding those alerts to the target site.

Now that you come to mention it, I think I might have written something to do this once - could maybe help you get started. If you're interested, leave me another comment with your e-mail address (which I won't publish), and I'll dig it out and send it through.

HTH,

Chris.

Peace said...

I am facing a unique problem.

----------------

Current Scenario

----------------

1) There are sites built out of OOB MOSS Site definitions.

2) Custom Site templates were created and few sites were based out of them

Today all such site templates have been deleted. Sites based out of it are still working as site templates are connected to the site definition & those site definitions (OOB) are still in place

**To prevent errors, Two New Custom Site Definitions were created. All newly created sites are based out of either of these custom site definitions & have no problem.

NOW CLIENT Wants to move existing sites built out of OOB site definition & the deleted custom site templates to be migrated to the 2 newly created custom site definition.

Q1) I am trying to change a site's association with its site definition through code so that it points to new site definition(Corrected one with extra features)

Q2) same question for site template scenario?

Q3) If i use steps for changing site's association with site definition as mentioned http://blogs.msdn.com/jackiebo/archive/2007/02/23/sharepoint-content-migration-object-model-and-content-migration-packages.aspx
then i am not able to migrate CUSTOM CONTENT TYPES but the sites association changes. NOw We have custom applications which refer to the custom content types through code!
Is it possible to migrate custom content type preserving its GUID?

***Alerts, workflow states are lost when we use export import, can you please send me the code for migrating it. I guess you have it.

Thanks a lot in advance

Anonymous said...

Hi,

Could this tool be used to migrate from WSS to MOSS 2007 ?

Many Thanks

Steve

Shirley said...

Hi, this tool gives me hope! I am trying to export files from one document library to another one (same web site). The export went OK. However, I got this error on the import.

[2/17/2009 4:04:13 PM]: Start Time: 2/17/2009 4:04:13 PM.
[2/17/2009 4:04:13 PM]: Progress: Initializing Import.
[2/17/2009 4:04:14 PM]: Progress: Starting content import.
[2/17/2009 4:04:14 PM]: Progress: De-Serializing Objects to Database.
[2/17/2009 4:04:14 PM]: Progress: Importing Folder /Shared Documents/Forms/Document.
[2/17/2009 4:04:14 PM]: FatalError: Object reference not set to an instance of an object.
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.GetContentType(SPContentType sourceContentType, ImportObjectManager importObjectManager, Boolean isParentSystemObject)
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.ProcessContentType(SPContentType sourceContentType, String contentTypeXml, ImportObjectManager importObjectManager, Boolean IsParentSystemObject)
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.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()
[2/17/2009 4:04:14 PM]: Progress: Import Completed.
[2/17/2009 4:04:14 PM]: Finish Time: 2/17/2009 4:04:14 PM.
[2/17/2009 4:04:14 PM]: Completed with 0 warnings.
[2/17/2009 4:04:14 PM]: Completed with 1 errors.

Note: On the Bind to site, I put http://SPtest:100/SharedDocs for both Site URL and Import web URL.

Any help would be greatly appreciated!

Chris O'Brien said...

Hi Shirley,

You don't need to use http://SPtest:100/SharedDocs as the import web URL in this case. This is because the web that you are importing to is actually the root web of your site - the import process itself should be smart enough to work out that these are docs from the 'SharedDocs' library and need to be imported there.

If modifying this doesn't change anything, it could be because you're not up-to-date on SP1 and/or cumulative updates - these make a difference when doing Content Deployment. See Content Deployment and Object Reference Not Set to an Instance for example.

HTH,

Chris.

Shirley said...

Thank you Chris for your quick response. I have not updated SP to SP1 yet. I will try your suggestion to see if it works for me. (I am new with this SharePoint world. I am taking baby steps with everything.) Thanks again!

Shirley

GerryD said...

Shirley, You and I are in the same on SP1. I planned to do it this Sunday, but our change control committee nixed the plan. I'm rescheduled for March 7 weekend.

If you want the information Microsoft sent me and an example of the batch files I will use, I can send you the information. Depending how your farm is setup, this may help you. My goal is to install SP1 and the December releases. Microsoft told me that SharePoint is not supported with out SP1 now.

I'm pretty cautious w/ SharePoint as I have heard some pretty rotten stories from other admins.

Chris O'Brien said...

@Steve,

Sorry for the delayed response. I've not specifically tested, but you should be able to move content from a WSS environment to MOSS without any issues whatsoever.

Let me know if you find otherwise and I'll try to help.

Thanks,

Chris.

Chris O'Brien said...

@Peace,

Sorry for the delay in responding to your comment. I'm afraid I haven't tried changing the site definition of an existing site - despite the article you point to, I still didn't think it was fully supported so I'm not entirely surprised you have run into issues.

My recommendation would be to make changes to your existing sites another way (e.g. through additional Features, changes using API etc.).

I'll send you the code I have to migrate alerts (unfortunately I now find it only writes out the details rather than doing a full migration, but if you need a full migration it should serve well as the starting point for you).

Cheers,

Chris.

Mike S. said...

Chris,

I have sort of a strange predicament. We have a MOSS site on a server that belongs to a different department. We need to move the content from that site to our server which only has WSS 3.0. Do you think your tool would work for our situation?

Thanks in advance!

Chris O'Brien said...

@Mike S,

I think it depends on what content you're moving - if you are moving documents and list items, you should be fine. If however, you're moving publishing pages, of course this is MOSS functionality so would not import to a WSS-only environment.

The tool does support both WSS and MOSS, so I think it should come down to your content.

HTH,

Chris.

Mike S. said...

Chris,

The site only contains documents and lists, so I'm going to give it a try. I'll let you know how it goes. One other thing I forgot to mention is that the MOSS server is 32 bit and the WSS server is 64 bit. Will your tool work on 64 bit machines?

Thanks again,
Mike

Chris O'Brien said...

@Mike S,

Yes it does, no worries there.

Cheers,

Chris.

vinay said...

Hi Chris Good tool.
When i was trying to export a site it is working fine and while importing it is saying the ioperation completed successfully but i am not able to see the result in the destination.
Am i doing something wrong.
would you help me?

Chris O'Brien said...

@Vinay,

If the Wizard and the import log are reporting that the import was successful, this often means your content has imported to a different location in the hierarchy to where you are looking (perhaps because you aren't clear on the effect your settings will have).

Suggest examining your entire site structure to look for the imported content.

HTH,

Chris.

Mike S. said...

Chris,

I tried exporting the content from the MOSS site to the WSS site. When I try to import, I get an error: Could not find Feature OffWFCommon. I'm guessing that has to do with a MOSS feature. Any ideas on how to get around that?

Thanks!

Chris O'Brien said...

@Mike S,

Aargh, I should have thought of this - what's happening here is that SharePoint's Content Deployment API is trying to ensure you have the same functionality in both source and target so the content will work in both places. Clearly this isn't the case for you because you're going for WSS -> MOSS, but the content you're moving probably doesn't use any MOSS functionality (I'm hoping).

Unfortunately there is no way to disable this check - it's a fundamental part of the CD model. Really sorry Mike, I don't have any ideas to work around it using the Wizard - you'll need to use some other tool to move the content (Quest, Echo, AvePoint etc..)

We can conclude then that it's not possible to go from MOSS -> WSS using the Wizard.

Hope you get sorted.

Cheers,

Chris.

Roger said...

Hei Chris,

I've successfully migrated a large SP 2003 site to SP 2007. My problem now is I'd like to get rid of all the custom stuff, site/list definitions and revert to plain old MOSS document libraries. Simply put, I'd like to move the content(file/folders) from the customized doclibs to default MOSS doclibs - all within the same site collection.

Is this possible using your wizard?

Peace said...

I am migrating a site from MOSS to MOSS. I am facing strange error during stsadm import of a site. We are currently on December cumulative updates. I saw one of your blogs to install jan31,08 hotfix. 1) I did that as well but doesn't help.
2) Checked Features on source as well as destination. Everything is present & activated in the destination. Still import fails.
Please HELP!
Below is the error:
[3/21/2009 4:48:50 PM]: Progress: Importing Role Assignment for en-us/About.
[3/21/2009 4:49:05 PM]: FatalError: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Microsoft.SharePoint.Deployment.ImportObjectManager.GetMappedRole(SPWeb web, Int32 ridIn, Int32& ridOut)
at Microsoft.SharePoint.Deployment.RoleAssignmentsImport.ProcessComplexElement(ImportStreamingContext context, XmlReader xr, SqlSession session)
at Microsoft.SharePoint.Deployment.SqlBatchImport.Run()
at Microsoft.SharePoint.Deployment.SecurityObjectSerializer.SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
at Microsoft.SharePoint.Deployment.XmlFormatter.ParseObjectDirect(Object objParent, Type objectType)
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()
[3/21/2009 4:49:05 PM]: Progress: Import Completed.
[3/21/2009 4:49:05 PM]: Finish Time: 3/21/2009 4:49:05 PM.
[3/21/2009 4:49:05 PM]: Completed with 13 warnings.
[3/21/2009 4:49:05 PM]: Completed with 1 errors.

Chris O'Brien said...

@Roger,

Unfortunately I don't think this would work - the Content Deployment API which the Wizard is based on is all about replicating from a source location to a destination. So what's likely to happen is that the customizations get added to your destination lists, which doesn't sound like what you're looking for.

I think you'd need a fairly sophisticated migration tool to do something like this - something which would allow you to define mappings between old columns and new. I've not used either, but I think Metalogix and Tzunami Deployer could be options for you.

Best of luck,

Chris.

Chris O'Brien said...

@Peace,

OK, have given this some thought and a couple of things spring to mind. If you have SP1/IU/Cumulative Updates up to December, then I'm wondering if this is a data issue - perhaps something along the lines of a user/group being deleted and the Content Deployment API failing to deal with this correctly.

My suggestion would be to try importing the content without the security information. If you're using the Wizard you can do this by ensuring the 'Include Security' checkbox is not cleared on import. If you're using STSADM import, you should not specify the -includeusersecurity switch.

If this succeeds, you've isolated the problem to the permissions data. From there you might be able to further identify the source, perhaps by splitting the export/import into smaller chunks.

HTH,

Chris.

Sumant Deshbhratar said...

Hey Chris

We are currently facing a scenario where we need to move content between two different sites. To put it in a brief detail:
1. We have two sites SITEA and SITEB with independent Content Type CONTA and CONTB.
2. We need to move content between these two sites from CONTA to CONTB.

Would it be possible to do this using the Content Deployment wizard?

Thank for your help,
Great tool by the way, has helped us a lot previously.

Shirley said...

I can't thank you enough for developing this Deployment tool. You have made my life a lot easier. :) Please keep up the good work. Thanks...and thanks a bunch!

Just to update! I have upgraded my servers to SP1 (3 wees ago) without any problem.

Chris O'Brien said...

@Sumant,

Sorry for the delay in getting to your comment, I've been completely snowed under.

If I understand correctly, yes this should be entirely fine with the Wizard. What will happen is that if any content types required will also be imported with the data. However, if this ISN'T what you want to happen (e.g. you want to change the content type) - this isn't what will happen I'm afraid as this isn't how the underlying Content Migration API works.

HTH,

Chris.

Anonymous said...

Chris

I have a question which you might be able to shed some light on.

I have three MOSS 2007 farms

1. Staging
2. Live
3. DR

I have Content Deployment setup between the farms to replicate the content from Staging to Live and DR. I now want to give access to a user so that he can Run the content deployment jobs himself but not have access to any other part of the Central Management page. I have thought about creating a script to do the content deployment and giving access to the user to that script. But it seems that stsadm.exe hasnt got anything for content deployment. I have also tried to play with the site permissions of the central admin site but have been unsucessful.

Is this something I can setup with your tool or could you guide me in setting up correct permissions?

Your help would be much appreciated.

Regards

Ad

A.G. said...

I'm using the deployment wizard to import a list between sites in two site collections. I keep getting the following error. Any ideas? Thanks!

FatalError: The file Lists/Issues cannot be imported because its parent web /teamsite/parking does not exist.
at Microsoft.SharePoint.Deployment.FolderSerializer.GetParentWeb(SerializationInfoHelper infoHelper, ImportObjectManager objectManager)
at Microsoft.SharePoint.Deployment.FolderSerializer.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()

Peter Chow said...

Chris,

I'm trying to determine how to use your tool to migrate a MOSS 2007 blog with the Comments, Categories, Posts. I didn't understand your response from 23 January 2009 about the "like for like for the template/definition". In any case I tried to just export each List Item from the Categories, Posts, and Comments lists and re-import (with re-parenting) and this sort of works. But the relationship between the list items in the three lists are lost during the import.

Do you have any recommendations on how to migrate a blog? Is your tool only useful for simple document libraries and lists that do not have these inter-relations like in a blog?

Chris O'Brien said...

@Ad,

Yes, I think you could conveivably use my tool for this. If you've seen Command-line support for Content Deployment Wizard you might be able to use this support to get there. My thoughts would be around creating special admin for your user, and this page would start a process which would call my STSADM command with an appropriate XML file for the content you wish the user to be able to deploy.

Hope that gives you some ideas, ping me again if you need more help.

Cheers,

Chris.

Chris O'Brien said...

@A.G.,

Generally this error will occur because you are importing the list to another parent web (known as re-parenting) and have the 'Retain object IDs and locations' box checked.

In this scenario you should uncheck this box (since you are changing the location of the list, so it needs to be assigned a new ID) and ensure you have the correct parent web URL in the 'Import web URL' on the first screen.

Hope that helps. Get in touch again if you're still struggling.

Cheers,

Chris.

Chris O'Brien said...

@Peter,

If you're importing lists which have relationships you should try to ensure the lists are being deployed in the same package. This allows the import process to recognise and recreate the relationships on the target.

I've not specifically tested deploying a blog site but don't think I'd anticipate any issues if done right. Suggest trying to grab all 3 lists in one package and then importing - that would be my recommendation.

My comment on 23rd Jan to MOSSkeeter was because I thought he/she might be trying to move an entire site from one site type to another (blog site -> team site). Moving just the lists however, should be fine. Might need to ensure any list templates used by the blog site are available though - this might require the activation of whichever Feature defines these list templates.

Hope that makes sense.

Cheers,

Chris.

P.S.

Anonymous said...

Hi,

I would like to move documents between two doc libs and maintain the version history of document and corresponding metadata.

I managed to move a doc lib with it's entire content and also to move a a doc lib cherry picking only one of the containing documents.

Is it possible to move documents between doc libs without affecting the version history?

Regards
/Magnus

Chris O'Brien said...

@Magnus,

Yes, it is possible to deploy files whilst maintaining metadata and version history. To do this, you should:

- select 'All versions' for the 'Include versions' setting when exporting files
- select 'Overwrite' for the 'Version options' setting when importing files

HTH,

Chris.

Jonam said...

Hello Chris,

i try to copy list with the tool but i get this exception. Any idea how to resolve this one?

Error: List AX 2009 Feedback could not be imported because it uses the IssueTracking base template and the destination uses the GenericList base template.

Peter Chow said...

Chris,

I want to provide an update to my comment on April 24th about migration of a blog site. I tried again by using your tool for the entire blog site including the dependencies. The import worked and maintained the relationship between the various list items in Posts, Comments, and Categories. Since this is working I have not tried to export the individual lists or list items, which isn't a likely scenario that I will need.

For the blog site import I did have a problem accessing the site afterwards and it gave me a "File Not Found". I think this has more to do with a branding issue in my original site. I fixed this by adding '/_layouts/settings.aspx' to access the site settings page and then setting the master page back to a default.master. I also re-inherited the permissions from the parent and will clean this up manually. But overall the blog site migration worked well with your tool. Thanks!

Chris O'Brien said...

@Jonam,

It sounds like you're trying to import to an existing list but that list was created with a different template. This won't work unfortunately - the underlying template needs to be the same one.

My suggestion would be to not create the list in the target environment if possible - 'create' it there by deploying it using the Wizard. If you do need it created before the first Wizard deployment, ensure it's created from the same template.

HTH,

Chris.

Chris O'Brien said...

@Peter,

Thanks for following up - glad you got sorted. Tend to agree with your thoughts that the 'File not found' more likely to be a branding issue that. Also, permissions should be migrated successfully if you select the 'Include security' option on export and import?

If you run into any other oddities with blog sites (or anything really), be interested to hear. Thanks again for the comment.

Cheers!

Chris.

Anonymous said...

Thanks for your reply, however I'm not sure I expressed myself correctly, or highly possible I've missed something. I give it a second try.

What I would like to do is to move one file (or a folder with several docs) from doc lib A to doc lib B. The doc libs A and B have nothing in common except having the same set of columns an house the same set of content types (to secure that tranferred metadata have a proper target).

When trying to export a file (or a folder) I recieve an error message whereas selecting a doc lib works fine.

It seems to me that a file needs it's parent doc lib to store information and can only be moved together with it's parent or to a doc lib previously copied. Is there a trick that I've missed?

A comment to your answear, why is it important to have overwrite upon import, the file has never seen the target doc lib...

Regards
/Magnus

Chris O'Brien said...

@Magnus,

Right, sorry I didn't understand some of the subtleties of what you're trying to do first time round.

Trying to maintain the metadata across different doc libs with 'same named' columns is a scenario I've not actually tested I think. I think the issue here could be that the content types will always have different IDs (since the list content ID will definitely be different) - however, it could be that it falls back and uses the column name (suggest internal name first), so you might be in luck.

However, in all this I would export any problem to occur on import, not export. Export should be fine.

What error are you seeing on export?

Cheers,

Chris.

Anonymous said...

Hi,

I've had issues before with not having the server account to be SharePoint administrator but have sorted that out, some of my error messages in the past can have been related to this. I made an export/ import of a single file and yes it's at the export the error occurs. I've cut'n pasted the whole log-file

[2009-05-11 11:49:05]: Start Time: 2009-05-11 11:49:05.
[2009-05-11 11:49:05]: Progress: Initializing Import.
[2009-05-11 11:49:06]: Progress: Starting content import.
[2009-05-11 11:49:06]: Progress: De-Serializing Objects to Database.
[2009-05-11 11:49:06]: Progress: Importing Folder /Documents/Forms/Document.
[2009-05-11 11:49:06]: FatalError: Object reference not set to an instance of an object.
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.GetContentType(SPContentType sourceContentType, ImportObjectManager importObjectManager, Boolean isParentSystemObject)
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.ProcessContentType(SPContentType sourceContentType, String contentTypeXml, ImportObjectManager importObjectManager, Boolean IsParentSystemObject)
at Microsoft.SharePoint.Deployment.ContentTypeSerializer.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()
[2009-05-11 11:49:06]: Progress: Import Completed.
[2009-05-11 11:49:06]: Finish Time: 2009-05-11 11:49:06.
[2009-05-11 11:49:06]: Completed with 0 warnings.
[2009-05-11 11:49:06]: Completed with 1 errors.

To secure no other issues with permissions I exported the same single file but within the context of the parent doc lib and that worked well. So the question still is can you move a single file between two doc libs?

Regards
/Magnus

Morten said...

Hi Chris,

Thanks for this tool, I have been appointed to test this tool out on our test-site.
I have created an export of the full site colletion with all content etc. And then set it to start.

I have one question though, does the tool take into concideration of the estimated size of the cmp-file and the actual available disc-space on the selected export-location?

And maybe just a newbie-question, but does it export to a file the same size as the Content-db?
This is the nature of my first question as the content-db currently is at an astounishing 181 GB and growing fast, while the server I am exporting the sitecollection to has only 12 GB free ;o)
So far it has not errored out, and is starting to consume free space slowly. Now I wonder what happens when this VM testserver runs out of space? ;o)

BR

Morten

Chris O'Brien said...

@Magnus,

OK now I'm really confused! You say you get the error on export but the log you pasted is from the import operation!

I think I'm coming to the conclusion though that you need more than columns just having the same 'names' for metadata to be transferred successfully. Most likely the columns would need to have the same IDs, which would be accomplished if the lists were based on the same list template or used the same site columns etc.

Does that make sense?

Thanks,

Chris.

Chris O'Brien said...

@Morten,

No the tool doesn't do any "pre-flight" check for disk space - I'd expect it to fail during the operation when space runs out. In the export process things do get compressed, but I'm not sure what ratio you can expect - this is down to the underlying SharePoint content migration API and I haven't seen MS release such figures.

One other thing that might be relevant here - when importing, extra disk space is required so the data can be "unpacked" prior to the actual import. Hence if you're importing say 100MB of data (and let's say SQL is hosted on the same box), you need way more than this free for the import to succeed.

HTH,

Chris.

Anonymous said...

Hi again,

Sorry for my last post, I didn't write that one very clear.

It's the import that is the problem. Most of my doc libs are created from the same list template. However for trouble shooting I made a new export/ import of a folder. I made the import to a doc lib that I recently moved (through export/ import with your wizard) from site A to site B. This should secure that the column definitions are the same.

However import failed again. The error log is pasted below, note that the "Fatal error" is not the same as in the last post.

[2009-05-15 08:29:26]: Start Time: 2009-05-15 08:29:26.
[2009-05-15 08:29:26]: Progress: Initializing Import.
[2009-05-15 08:29:27]: Progress: Starting content import.
[2009-05-15 08:29:27]: Progress: De-Serializing Objects to Database.
[2009-05-15 08:29:28]: Progress: Importing Folder /electro/Development/Energizer.
[2009-05-15 08:29:28]: FatalError: Value does not fall within the expected range.
at Microsoft.SharePoint.SPWeb.GetWebRelativeUrlFromUrl(String strUrl, Boolean includeQueryString, Boolean canonicalizeUrl)
at Microsoft.SharePoint.SPWeb.GetWebRelativeUrlFromUrl(String strUrl)
at Microsoft.SharePoint.Deployment.FolderSerializer.GetFolderUrl(Guid folderId, String folderUrl, Guid folderParentId, Guid listId, SPWeb parentWeb, ImportObjectManager objectManager, Boolean checkTargetUrl)
at Microsoft.SharePoint.Deployment.FolderSerializer.GetFolderUrl(Guid folderId, String folderUrl, Guid folderParentId, Guid listId, SPWeb parentWeb, ImportObjectManager objectManager)
at Microsoft.SharePoint.Deployment.FolderSerializer.GetFolder(SerializationInfoHelper infoHelper, SPWeb parentWeb, ImportObjectManager objectManager)
at Microsoft.SharePoint.Deployment.FolderSerializer.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()
[2009-05-15 08:29:28]: Progress: Import Completed.
[2009-05-15 08:29:28]: Finish Time: 2009-05-15 08:29:28.
[2009-05-15 08:29:28]: Completed with 0 warnings.
[2009-05-15 08:29:28]: Completed with 1 errors.

As for trouble shooting I also export one single file from a doc lib, deleted the file in the source doc lib and then finally imported the file back into the source doc lib. This also failed! So the issue is something else than column definitions. Checked the error log and I saw that the string with "importing folder" the doc lib was repeated twice in the path. I then changed my "Import web URL" to http://MyServer/MySite/ and the import succeded! I made the same with the folder that generated the error log above and again success (however in that error log the doc lib was not repeated twice in the import path...)!

As I have wanted to move my files and folders from doc lib A to doc lib B I have assumed that the way to do this is through the "Import web URL" http://MyServer/MySite/MyDocLib but this seems to be the failing part.

I change my question;
To import a file to a doc lib (target) with another name than the source doc lib, do I state this in the "Import wb URL"?

Thanks for your patience, hope we sort this out! Regards
/Magnus

Chris O'Brien said...

@Magnus,

OK maybe we're getting somewhere. Let me explain what the 'Import web URL' is used for and hopefully you can apply the information to what you're trying to do.

The 'Import web URL' is only required when you are changing the location within the site collection of where the list lives. So think about it like this:

- deploying list from farm A to farm B, list stays in same location in hierarchy: 'Import web URL' required = no
- deploying list from farm A to farm B, list changes place in hierarchy: 'Import web URL' required = yes
- deploying list within same farm, list changes place in hierarchy: 'Import web URL' required = yes

Does that help at all? It might explain the error if you're not using this value as SharePoint expects.

Thanks,

Chris.

Anonymous said...

Hi,

I hope we're getting closer...

As I want to move one single document or a folder from doc lib A to doc lib B (within or between sites) I guess ShP thinks this as a restructuring of the hierarchy and I need to use the Import URL field.

To indicate the target doc lib, do I use the Import URL "http://MyServer/MySite/MyNewDocLib" or how do I do?

Regards
/Magnus

Robertt said...

Hi Chris!
Great tool! I was able to make it work in my DEV environment (it's a VM actually), but I'm having trouble in the production environment. The tool won't even run at all, after running the .exe file I get a "SPContentDeploymentWizard has encountered a problem and needs to close. We are sorry for any inconvenience."
If I click the "Debug" button VS.NET comes up and I see a "NullReferenceException was unhandled" window - in the Troubleshooting tips reads "Use the new keyword to create an object instance."
I probably need to download the source code and debug further, but I first wanted to check if this is a know issue. FYI: the user ID I'm using in the prod server is the moss ID.

John Sitka said...

Does your wizard handle workflow list association?

These workflows have no tasks, none would be in progress, they are all custom deployed features from VS2008 and the deployment would be from web to web on the same server at the same level in the root site collection heirarchy. I'm simply considering using it as a way to copy a site right next door.

SITE0 begets

SITE1
SITE2
...
SITEn

where..

SITE0 is the web with the base content, structure, permissions and workflow feature list associations that all webs from SITE1 -> SITEn would be based on.

A simple site template maintains the workflow association but will not maintain list level permissions. A Share Point Designer .cpm file will not maintain the workflow association but it will maintains list level permissions.

I believe I read the deployment api does support workflow just that it can't keep all the workflow running or related things linked. Which makes sense because on export they may not be hydrated or even persisted.

Anonymous said...

Hi again Chris,

I guess I have found the answear at you blogg, http://www.sharepointnutsandbolts.com/2007/12/when-to-use-sharepoint-content.html, from 14 december 2007. I've read this and the introduction many times but this morning I understood what's written...

It's not possible to reparent a document to another document library which is what I would like to do. And this is written in the third and second to last sections.

Best regards and again thank's for you patience trying to help me.

/Magnus

Chris O'Brien said...

@RobertT,

I think you might be running into a permissions issue in production - try doing a right-click, then 'Run as...' and enter the credentials of the farm admin user to test this.

Thanks,

Chris.

Chris O'Brien said...

@John Sitka,

I don't think workflow associations are retained (I thought these were also outside the scope of the content deployment API), but I actually don't recall if I ever tested this scenario.

If you have time, I'd suggest setting up a quick test - sorry I don't have the answer off the top of my head..

Chris.

Chris O'Brien said...

@Magnus,

Ah, yes you're right I'm afraid. Having gone back to read what I wrote in When to use the SharePoint Content Deployment Wizard in Dec 2007 I now remember the deal with this type of operation. Yes, it really isn't supported at the moment I'm afraid - I guess the Wizard code could be amended to deal with this (needs code similar to Stefan's 2nd sample in 'Method 2 - assign an individual parent to each orphaned object' section at http://blogs.technet.com/stefan_gossner/archive/2007/08/29/deep-dive-into-the-sharepoint-content-deployment-and-migration-api-part-3.aspx), however I just don't have the bandwidth to take this on at the moment I'm afraid :-(

Really sorry I wasn't able to help you reach this conlusion earlier Magnus, but I guess at least we got an answer in the end - just not the one we were hoping for.

All the best,

Chris.

sumitD said...

Hi,
i m trying to import from a share point site..the exports works just fine..but while importing it gves the following error
FatalError: Could not find WebTemplate #15 with LCID 1033

both the machines are running the same version of moss and and enterprise edition respectively..

Chris O'Brien said...

@sumitD,

I think you're getting this error because of a difference in the 12 hive of your 2 environments, specifically your onet.xml file. Suggest checking for differences between the source and target environment.

HTH,

Chris.

Anonymous said...

Hi Chris...
Can I use the same export file to import to another environment. Can I retract the deployed cmp file in a server like in using wsp deployment?

JR said...

Hi!

I've found a solution for the reported issue (regarding GatWeb.SharePoint.EventsManager):

Just download and install the events manager feature:
http://speventsmanager.codeplex.com/

Once this feature is installed and deployed on the targetserver, the Conten Deployment Wizard works OK.

Thanks again!!!

Chris O'Brien said...

@JR,

Good stuff, great to see you worked it out.

Chris.

P.S. Have just accidentally deleted your original comment whilst publishing this one - sorry about that!

Chris O'Brien said...

@Anonymous,

In answer to your questions:

1. Yes, you can use the export file to import to another environment - that's what the Wizard is for.

2. Unfortunately you cannot retract a .cmp file, SharePoint does not support this. You should take a backup before importing so that you can rollback if needed.

HTH,

Chris.

Anonymous said...

Hi, is that anyway i can export user information list from 1 top level site to another top level site? Thanks

Dhawal Mehta said...

Hi Chris,

Its a nice tool to workwith, I used it for quite a few projects.

I have a quick query on this.
My Problem is as below
Source Site: http://portal/projects/open/XYZ

Target Site: http://newportal/projects/XYZ

Is it possible to import data from Source Site to Target site which are not having same site structure.

Appreciate your quick response.

Thanks,
Dhawal

Chris O'Brien said...

@Dhawal,

It depends what you mean - it is possible to "re-parent" a site when importing, so that site and all it's contents move to a different place in the hierarchy on the import environment.

So in your case, you can take the "XYZ" site and import it to a different place in the hierarchy such as http://newportal/projects/XYZ.

Otherwise if you wanted to deploy old "XYZ" to new "XYZ", where new "XYZ" has a completely different structure, this won't work as the deployment process won't be able to match up the items.

Hope that makes sense.

Thanks,

Chris.

Dhawal Mehta said...

Chris,

Thanks a lot for your prompt response :)

Yes it surly help me, thanks again


-Dhawal

Anonymous said...

Hi,
While importing throwing an exception:

[8/5/2009 3:07:34 PM]: Start Time: 8/5/2009 3:07:34 PM.
[8/5/2009 3:07:34 PM]: Progress: Initializing Import.
[8/5/2009 3:08:01 PM]: Progress: Starting content import.
[8/5/2009 3:08:01 PM]: Progress: De-Serializing Objects to Database.
[8/5/2009 3:08:01 PM]: FatalError: The 'use' attribute cannot be present.
at System.Xml.Schema.XmlSchemaSet.InternalValidationCallback(Object sender, ValidationEventArgs e)
at System.Xml.Schema.BaseProcessor.SendValidationEvent(XmlSchemaException e, XmlSeverityType severity)
at System.Xml.Schema.Preprocessor.PreprocessAttribute(XmlSchemaAttribute attribute)
at System.Xml.Schema.Preprocessor.Preprocess(XmlSchema schema, String targetNamespace, ArrayList imports)
at System.Xml.Schema.Preprocessor.Execute(XmlSchema schema, String targetNamespace, Boolean loadExternals)
at System.Xml.Schema.XmlSchemaSet.PreprocessSchema(XmlSchema& schema, String targetNamespace)
at System.Xml.Schema.XmlSchemaSet.Add(String targetNamespace, XmlSchema schema)
at System.Xml.Schema.XmlSchemaSet.Add(String targetNamespace, String schemaUri)
at Microsoft.SharePoint.Deployment.SPImport.CreateXmlReader(FileStream fs, String schemaNamespace, String schemaFile)
at Microsoft.SharePoint.Deployment.SPImport.GetNextManifestFile(XmlReaderAndStream reader)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeObjects()
at Microsoft.SharePoint.Deployment.SPImport.Run()

if any one have an idea about this,reply me.Thanks

Chris O'Brien said...

@Anonymous,

My guess would be that you're trying to import to an environment which is using a different schema - possibly because it's at a different patch level. Suggest checking the level of your export and import environments.

HTH,

Chris.

komal said...

I have created one site with subsite called Test[Team site],exported using tool and after that i have created one more site with subsite called Test[Blank site],trying to import using tool,throwing following exception.My environment is MOSS2007 with SP1.
Error:
An error occured while running the import.the import log file will now be opened.
Exception details:
System.IO.IOException:The process cannot access the file 'Manifest.xml' because it is beling used by another process.

Note pad is opening with the following error:
[8/6/2009 4:47:32 PM]: Progress: Initializing Import.
[8/6/2009 4:47:36 PM]: Progress: Starting content import.
[8/6/2009 4:47:36 PM]: Progress: De-Serializing Objects to Database.
[8/6/2009 4:47:36 PM]: FatalError: The 'use' attribute cannot be present.
at System.Xml.Schema.XmlSchemaSet.InternalValidationCallback(Object sender, ValidationEventArgs e)
at System.Xml.Schema.BaseProcessor.SendValidationEvent(XmlSchemaException e, XmlSeverityType severity)
at System.Xml.Schema.Preprocessor.PreprocessAttribute(XmlSchemaAttribute attribute)
at System.Xml.Schema.Preprocessor.Preprocess(XmlSchema schema, String targetNamespace, ArrayList imports)
at System.Xml.Schema.Preprocessor.Execute(XmlSchema schema, String targetNamespace, Boolean loadExternals)
at System.Xml.Schema.XmlSchemaSet.PreprocessSchema(XmlSchema& schema, String targetNamespace)
at System.Xml.Schema.XmlSchemaSet.Add(String targetNamespace, XmlSchema schema)
at System.Xml.Schema.XmlSchemaSet.Add(String targetNamespace, String schemaUri)
at Microsoft.SharePoint.Deployment.SPImport.CreateXmlReader(FileStream fs, String schemaNamespace, String schemaFile)
at Microsoft.SharePoint.Deployment.SPImport.GetNextManifestFile(XmlReaderAndStream reader)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeObjects()
at Microsoft.SharePoint.Deployment.SPImport.Run()

Please give suggetions on same.

komal said...

Hi,
I am trying to import .cmp file,following error is showing:

[8/6/2009 6:20:26 PM]: Start Time: 8/6/2009 6:20:26 PM.
[8/6/2009 6:20:26 PM]: Progress: Initializing Import.
[8/6/2009 6:20:27 PM]: Warning: Import requirement file C:\Documents and Settings\Administrator\Local Settings\Temp\23970679-cfc9-47b7-81f2-6586908846b4\Requirements.xml was not found no verifications ran.
[8/6/2009 6:20:27 PM]: FatalError: Could not find file 'C:\Documents and Settings\Administrator\Local Settings\Temp\23970679-cfc9-47b7-81f2-6586908846b4\ExportSettings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.FileInfo.Open(FileMode mode, FileAccess access)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeExportSettings()
at Microsoft.SharePoint.Deployment.SPImport.Run()
[8/6/2009 6:20:27 PM]: Progress: Import Completed.
[8/6/2009 6:20:27 PM]: Finish Time: 8/6/2009 6:20:27 PM.
[8/6/2009 6:20:27 PM]: Completed with 1 warnings.
[8/6/2009 6:20:27 PM]: Completed with 1 errors.

Thanks.

Anonymous said...

Hi,
I am trying to import .cmp file,while importing following error is throwing,import and export environments have the same versions,12.0.0.6510]
[8/10/2009 5:30:46 PM]: Start Time: 8/10/2009 5:30:46 PM.
[8/10/2009 5:30:46 PM]: Progress: Initializing Import.
[8/10/2009 5:30:46 PM]: Warning: Import requirement file C:\Documents and Settings\testadmin\Local Settings\Temp\f3d2ff63-9c17-427c-9694-db89b84e5666\Requirements.xml was not found no verifications ran.
[8/10/2009 5:30:46 PM]: FatalError: Could not find file 'C:\Documents and Settings\testadmin\Local Settings\Temp\f3d2ff63-9c17-427c-9694-db89b84e5666\ExportSettings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.FileInfo.Open(FileMode mode, FileAccess access)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeExportSettings()
at Microsoft.SharePoint.Deployment.SPImport.Run()
[8/10/2009 5:30:46 PM]: Progress: Import Completed.
[8/10/2009 5:30:46 PM]: Finish Time: 8/10/2009 5:30:46 PM.
[8/10/2009 5:30:46 PM]: Completed with 1 warnings.
[8/10/2009 5:30:46 PM]: Completed with 1 errors.
[8/10/2009 6:47:03 PM]: Start Time: 8/10/2009 6:47:03 PM.
[8/10/2009 6:47:03 PM]: Progress: Initializing Import.
[8/10/2009 6:47:04 PM]: Warning: Import requirement file C:\Documents and Settings\testadmin\Local Settings\Temp\6b295654-b671-4188-a3d6-7eefc416a906\Requirements.xml was not found no verifications ran.
[8/10/2009 6:47:04 PM]: FatalError: Could not find file 'C:\Documents and Settings\testadmin\Local Settings\Temp\6b295654-b671-4188-a3d6-7eefc416a906\ExportSettings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.FileInfo.Open(FileMode mode, FileAccess access)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeExportSettings()
at Microsoft.SharePoint.Deployment.SPImport.Run()
[8/10/2009 6:47:04 PM]: Progress: Import Completed.
[8/10/2009 6:47:04 PM]: Finish Time: 8/10/2009 6:47:04 PM.
[8/10/2009 6:47:04 PM]: Completed with 1 warnings.
[8/10/2009 6:47:04 PM]: Completed with 1 errors.

Please give suggestions on the same

tanga said...

Great program. Thanks !

Anonymous said...

Chris,
This is a great tool. Thanks for creating it. I have a question. We used it today to import content and checked off the import of security. However, in the destination site we saw that the groups of users from the source site were not transfered. Is it that we did something wrong or this is a known limitation ?

Thanks

Zeev

Chris O'Brien said...

@Zeev,

Migration of security groups should work if:

- "Include security" is selected on export
- "Include security" is selected on import

If you find that isn't the case, let me know.

Thanks,

Chris.

David Perry said...

I have been using a previous version of the Wizards to do full export/import without issues, works great in fact. So I downloaded 2.7 to try the incremental export of a site/web. I am getting the "Unable to perform incremental export - the Wizard did not find a stored change token for the largest object you have selected to export. This could be because a full export for the site has not yet been performed using this version of the Wizard". So I run the full export, then go back and try again with all the same settings but using the ExportChanges option selected, and the same message appears (and ExportAll gets selected). Is there something I am missing in getting the incremental export to work?

Chris O'Brien said...

@David Perry,

Hmm, that might be the second report I've had of this, indicating it could be a bug. Aside from trying closing/re-opening the Wizard, I'm not sure what to suggest.

I'll make a note to go in and look, though I am wondering how it got through my testing. I'll do my best to look as soon as I can, though it might be little while unfortunately, I'm just flat out with other commitments right now.

Sorry for the inconvenience David :-|

Chris.

Murali said...

I am very much impressed by this application. It helped me a lot.. Thanks Chris O'Brien nice work..

Anonymous said...

I love you for this tool Chris! I want to bear your children. Wait...I'm a guy. Well still, if I could... ;)

I was able to move a WSS 3.0 document library from one site to another whilst retaining the dates & usernames.

It took me hours of searching to find your program and 30 minutes to install and move the content.

THANK YOU!

Chris O'Brien said...

@Anonymous,

LOL! Glad you found it useful. Always great to hear good feedback, thanks for posting :)

Chris.

OPCadmin said...

I am trying to move team discussion from a subsite to a root site. I think I tried all settings variations but still no luck. I always end up with some error when trying to import. Here is one:

================================
[11/13/2009 9:48:52 AM]: Start Time: 11/13/2009 9:48:52 AM.
[11/13/2009 9:48:52 AM]: Progress: Initializing Import.
[11/13/2009 9:48:56 AM]: Progress: Starting content import.
[11/13/2009 9:48:56 AM]: FatalError: Object reference not set to an instance of an object.
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
at COB.SharePoint.Utilities.DeploymentWizard.UI.frmContentDeployer.setImportStarted(ProgressBar prgBar, SPDeploymentEventArgs e, Object data)
at COB.SharePoint.Utilities.DeploymentWizard.Core.WizardDeployment.import_Started(Object sender, SPDeploymentEventArgs e)
at Microsoft.SharePoint.Deployment.SPDeployment.OnStarted(SPDeploymentEventArgs e)
at Microsoft.SharePoint.Deployment.SPImport.Run()
[11/13/2009 9:48:56 AM]: Progress: Import Completed.
[11/13/2009 9:48:56 AM]: Finish Time: 11/13/2009 9:48:56 AM.
[11/13/2009 9:48:56 AM]: Completed with 0 warnings.
[11/13/2009 9:48:56 AM]: Completed with 1 errors.
================================

Any idea what I am doing wrong?

Thanks

Chris O'Brien said...

@OPCadmin,

What's happening here is that the SharePoint Content Deployment feature is returning an error, but my tool is not reporting it correctly. This is due to a recently-confirmed bug in version 2.7 beta. If you use an earlier version (e.g. 2.6), you'll at least see the real error which might help you resolve things.

Otherwise, looking in the log file which gets saved might also be useful.

HTH,

Chris.

Anonymous said...

Hi Chris, Great tool.
I am facng a similar issue as opcadmin. I tried doing an import using the 2.7 beta but it failed with a message "[12/12/2009 4:40:03 PM]: FatalError: Object reference not set to an instance of an object.
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)"
So i downloaded the old version 1.1 and i am doing an import using the version 1.1. It seems to be working fine for me. I will still prefer 1.1 over 2.7

Chris O'Brien said...

@Anonymous,

Yes, version 2.7 has a bug which means that if any error happens it gets reported as the message you describe. Any version before 2.7 (e.g. 2.6) does not have this bug - I'll hopefully be able to resolve it soon. Sorry for the inconvenience.

Thanks,

Chris.

Amores said...

Chris, I posted some fixes on the issues list on the codeplex site. I've since started maintaining my own private version for myself, including not only those fixes, but also a browser to select the site, more feedback, and just now I also persisted the temp path. Are you interested in any of these improvements? (I didn't get any comments on my Issues posting at the codeplex site, so I figured it is maybe not maintained.)

Chris O'Brien said...

@Amores,

Sorry - I don't seem to always get notifications from the Codeplex site. Sure I'd like to see your changes - if you post another comment with your e-mail address, I'll mail you so you can send it through.

Thanks!

Chris.

David said...

Hi Chris,

We are trying to move content from one farm to another.
We do not have access to the Source farm from the Destination farm.
We are not able to run successful imports in this scenario.
Is this something that your tool is capable of? or are we trying to do something that your tool is not design to do...

thanks in advance!

David

Chris O'Brien said...

@David,

Yes, my tool should help you here. You can run the export on the source machine, then assuming you can get the resulting .cmp file(s) to the destination machine somehow, you'll then be able to import them there.

The Wizard does need to be installed on both source and destination though.

HTH,

Chris.

Anonymous said...

Dear Chris,

We are getting the following error:

System.IO.FileNotFoundException: Could not find file 'D:\TEMP\3\8304690e-etc....\ExportSettings.xml

The error comes when we try to import a .cmp file. All users have permissions to d:\Temp and it seems to create the 3 directory, but the long filename doesn't exist.

Thanks,
David

Anonymous said...

Here is the full error from the log file:

[05/02/2010 14:20:32]: FatalError: Could not find file 'D:\TEMP\3\cba2f7fa-d60c-451b-831e-4f743ba0910d\ExportSettings.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.FileInfo.Open(FileMode mode, FileAccess access, FileShare share)
at Microsoft.SharePoint.Deployment.SPImport.DeserializeExportSettings()
at Microsoft.SharePoint.Deployment.SPImport.Run()
[05/02/2010 14:20:32]: Progress: Import Completed.

Thanks,
David

Chris O'Brien said...

@David,

Hmm, haven't seen anything like that I'm afraid. The .cmp file would be extracted to the temp directory, and it seems like that file is not there.

- Does this happen for all imports?
- Is there a problem with a specific .cmp file?
- Does the disk where the temp directory is have enough free disk space?

Thanks,

Chris.

Anonymous said...

Hi Chris,

The tool seems great, I exported the entire site from server A, sent the file to server B.

Try to import on server B and get the following error:

The 'ASPXPageIndexMode' attribute is not declared.

Have any idea?

Thanks, GG

Chris O'Brien said...

@Anonymous,

I did some research on this and the most likely cause seems to be that the source and destination are at different patch levels. See the following:

http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/67f3da2e-96a1-4519-9cff-5a683521f4ab
http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/c3a12d14-908d-416e-92cb-5a81307f0a10

HTH,

Chris.

Ghislain said...

I've upgraded my import site to the same version as the export one. But still have the error.

here is the detail:

[2010-02-18 11:32:00]: FatalError: The 'ASPXPageIndexMode' attribute is not declared.
at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(XmlSchemaValidationException e, XmlSeverityType severity)
at System.Xml.Schema.XmlSchemaValidator.SendValidationEvent(String code, String arg)
at System.Xml.Schema.XmlSchemaValidator.ValidateAttribute(String lName, String ns, XmlValueGetter attributeValueGetter, String attributeStringValue, XmlSchemaInfo schemaInfo)
at System.Xml.Schema.XmlSchemaValidator.ValidateAttribute(String localName, String namespaceUri, XmlValueGetter attributeValue, XmlSchemaInfo schemaInfo)
at System.Xml.XsdValidatingReader.ValidateAttributes()
at System.Xml.XsdValidatingReader.ProcessElementEvent()
at System.Xml.XsdValidatingReader.ProcessReaderEvent()
at System.Xml.XsdValidatingReader.Read()
at System.Xml.XmlReader.ReadToDescendant(String name)
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()
[2010-02-18 11:32:03]: Progress: Import Completed.
[2010-02-18 11:32:03]: Finish Time: 2010-02-18 11:32:03.
[2010-02-18 11:32:03]: Completed with 0 warnings.
[2010-02-18 11:32:03]: Completed with 1 errors.

Ghislain said...

I fixed the problem ('ASPXPageIndexMode' attribute not declared) by modifying the C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\XML\DeploymentManifest.xsd

and adding the following code under section

sksmart said...

Hi Chris,
I am trying to export and import files from one site to another on MOSS 2007 environment. Export works fine. Now when we trying to import the file I am getting the following error:

Invalid file name. The file name you specified could not be used. It may be the name of an existing file or directory, or you may not have permission to access the file.
at Microsoft.SharePoint.Library.SPRequest.CreateOrUpdateFileAndItem(String bstrUrl, String bstrWebRelativeUrl, Guid& docId, Object varDoc, Int32 docLength, Int32 exists, String bstrCreatedBy, String bstrModifiedBy, Int32 iCreatedByID, Int32 iModifiedByID, Int32 iVersion, Object varTimeCreated, Object varTimeLastModified, Object varProperties, String checkInComment, Int32 docLibRowID, String bstrListName, UInt32& pdwVirusCheckStatus, String& pVirusCheckMessage)
at Microsoft.SharePoint.Deployment.FileSerializer.CreateOrUpdateFileWithGuid(SPFileStream spstm, SPWeb web, Guid fileId, String fileUrl, SPUser author, SPUser editor, String checkinComment, DateTime timeCreated, DateTime timeLastModified, MetaInfoHandler metaInfo, FileInfo fileInfo, Int32 iVersion, Boolean isFirstVersion, SPImportSettings settings, Int32 listItemId, String listInternalName)
[3/11/2010 2:18:15 AM]: Progress: Importing File Information Technology Policies/106.003-IT User Access Re-Validation.docx.

I have admin previledges on the farm and also I changed the file name as well. Please let me know if you have any clue on this.

Thanks
Sushank

Chris O'Brien said...

@sksmart,

I haven't seen this error but it seems to be an issue with your data somehow. Are you able to identify the file in question? Is there anything strange about it? If it exists already, have you tried deleting it before import as a test?

Thanks,

Chris.

Tim said...

Great tool even though I haven’t quite got it working yet. Basically my Export isn’t producing a cmp file even though it says there are 0 errors.

I’ve used the Export several different times on our Staging and Live Farm with different subsites and Document Libraries with the same outcome (plenty of dat files but no cmp file).

I’m using the Farm Admin account with 70Gb of free space on my E drive, 5Gb free on the C drive, 8Gb of RAM and 3 GHz CPU.

I had thought it was because of the large amount of data being exported but I get the same issue when exporting a small Document Library.

All suggestions gratefully received.
Here’s an extract of one of My Export Settings …
ExportSettings SiteUrl="http://seefin:8010/sites/planning" ExcludeDependencies="False" ExportMethod="ExportAll" IncludeVersions="All" IncludeSecurity="All" FileCompression="False" FileLocation="E:\SharePoint_Content_Deployment_Wizard\PRES_Drafting" BaseFileName="PRES_Drafting_Section_230310.cmp">

Chris O'Brien said...

@Tim,

This is the expected behaviour if you check the box to disable compression. Could this be the cause?

HTH,

Chris.

Tim said...

My mistake I didn't realise that ticking the "Disable compression" option in the Export means that dat files will be created instead of a CMP file. I did see the "NB Import of uncompressed files is via command-line only" comment but didn't know that this meant no CMP file.

I had originally disabled compression as the Export was not working for large content. On further reading I realise that this is because the Temp folder on my C drive hadn't enough space. Now that I've relocated the Temp folder it's working like a treat with compression.

Incidently to import my earlier dat files am I right to say I need to use the Import option in the wizard( choosing the appropriate settings) and then "Save Settings". Following this run ... stsadm -o RunWizardImport -settingsFile " -quite

Well done again on providing this tool and for all your help.

Chris O'Brien said...

@Tim,

No problem at all. And yes, you're spot on about your understanding of how to import the uncompressed files. One thing to check though, is that the value in the saved XML file for 'BaseFileLocation' matches the directory containing all the .dat files.

I'll add the capability to import uncompressed files via the GUI soon.

All the best,

Chris.

Anonymous said...

Hi Chris,

I used your tool and got this error :

The element 'urn:deployment-manifest-schema:FieldRef' cannot contain child element 'urn:deployment-manifest-schema:FieldRef' because the parent element's content model is empty.

any hints on how to solve that.

Chris O'Brien said...

@Anonymous,

Yes I've hit that myself - see Editing .cmp files to fix lookup field issues.

HTH,

Chris.

Erick said...

@lifelearner,

Are you sure you didn't enabled a feature like publishing or something?
if you did, before importing you must enable the same features in the new site.

Michael W said...

HI great tool, but why do it use the tmp folder for the temporary export and not the defined export path during downloading the documents. so we must set temp to a folder with a lot of more space than the servers c:\ drive.
after the download when the tool create the packages then it us the export path.

Chris O'Brien said...

@MichaelW,

This is just how SharePoint's Content Deployment feature works, whether you use my front-end or the OOTB pages in Central Admin.

More details here (including how to change the location) - http://blogs.technet.com/stefan_gossner/pages/content-deployment-best-practices.aspx

HTH,

Chris.

MikeP said...

Hi Chris,
Will this work with migrating a WSS 3.0 site to BPOS?
Cheers

Chris O'Brien said...

@MikeP,

That's a good question - if you're migrating to the same SharePoint version (e.g. 2007), then I think the answer would be 'yes, technically'. I've not yet had direct experience with BPOS, but I wonder if the issue you'd run into is not being able to install the tool on their servers.

If you could get past that, then I think the tool would be an option. That said, do BPOS have their own tools to help migrate your content in?

Chris.

Anonymous said...

Hi Chris - Well I have tried several things and this Deployment Wizard gets an exception on startup. I really would like to use it so I am wondering what you might suggest. I hate to have to write something like this myself if I can avoid it. There is no msg at all, it just fails. Should I post any server details or other environment details? We are using WSS 2.0 so is that a problem?

-Jeannine

Chris O'Brien said...

@Jeannine,

Yes sorry - the Content Deployment Wizard is only for WSS3.0/SharePoint 2007 and later.

Apologies if this wasn't clear.

Chris.

Scotty said...

I am trying to import .cmp's that were exported from another site. It works until the end of the import when it breaks with, "WBSType is not installed properly". Is there a way to have it ignore this MS Project item and continue importing?

Chris O'Brien said...

@Scotty,

Unfortunately, no. This is because SharePoint's Content Deployment infrastructure is based around the premise of "make that site exactly like this one". So if there's some missing prerequisite then the whole operation is designed to fail.

Chris.

Alexaway said...

Hey Chris,

Thanks for the tool, it "almost" worked for me. "Almost" because I'm stuck with 2010 Beta to 2010 RTM migration... version conflicts..
:(

Anyway, i bet I will use your tool later on for everyday migrations...from rtm to rtm !!

Chris O'Brien said...

@Alexaway,

Yes, the tool won't help you with beta > RTM I'm afraid, that route is blocked by MS due to all the schema changes!

Chris.

Anonymous said...

I like the idea of the tool. Nice work. Is there any way to export a doc lib from MOSS and import into WSS? Also, since content types don't allow the import to work, is there any way to import content types? Sharepoint does not allow Document Libraries to be saved as templates and imported into WSS so a document library cannot be created from a template and then loaded from the export.

Also, are you aware of any means to export a doc lib from one site and import into another site with a different name. The Export requires the entire URL to be identical.

«Oldest ‹Older   1 – 200 of 219   Newer› Newest»