You wouldn't be able to just move structure without third-party tools but if all
you want to do is wrap up your site and move it with the content and all then
couldn't you just save the site as a template and build new sites from it?
Also, we built an application that saves a template site with SPD workflows
attached and creates new subsites from that template in code. It's not pretty
but all workflows work correctly:
public void UpdateTemplate(string strURL, string caseTitle)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite mySite = new SPSite(strURL))
{
using (SPWeb myWeb = mySite.OpenWeb())
{
// Delete site template with name STR_ CASESITETEMPLATE
if it exists
SPDocumentLibrary webTemplates;
try
{
webTemplates =
mySite.GetCatalog(SPListTemplateType.WebTemplateCatalog) as SPDocumentLibrary;
SPFolder folder = myWeb.Folders["_catalogs"];
SPFolder subfolder = folder.SubFolders["wt"];
subfolder.Files.Delete(STR_ CASESITETEMPLATE);
subfolder.Update(); //not sure if all of these
folder.Update(); //Update() method calls are needed
webTemplates.Update(); //but this works (O;
}
catch (Exception ex)
{
Exception_Handler.LogEHException(ex,
properties);
}
SPWeb mytemplateWeb = mySite.OpenWeb("template");
mytemplateWeb.SaveAsTemplate(STR_CASESITETEMPLATE,
"Case Site Template",
"Saved via code on " +
DateTime.Now.ToShortDateString() + ".", true);
SPWebCollection webCollection = myWeb.Webs;
myWeb.AllowUnsafeUpdates = true;
SPWeb newWeb = webCollection.Add(caseTitle, caseTitle,
string.Empty,
1033, STR_ CASESITETEMPLATE, false, false);
}
}
});
}