There have been several questions asked on this site regarding the best way to provision sites and lists (definition schemas vs. templates vs. the object model vs. the web interface vs. provisioning providers). I have even responded to some of them.
There are a few rules of thumb to go by (resources, permissions, ease of deployment, granularity of control). One thing that has to be considered, though, is how do you propogate changes to a site definition to the sites that have been created from it. Changes to web templates only affect new sites that are created from them. My understanding was that this is not the case with site definition schemas (and list definition schemas). I understand that you can only add to a definition once a site has been created from it or the sites will break, but I saw the note on this page in the MSDN library yesterday and it concerned me: http://msdn.microsoft.com/en-us/library/ms434313.aspx
We rely pretty heavily on the object model to provision modification to sites once they have been created. At the same time, we have been fortunate to not have had many major changes to our site definitions post-production, but that won't last forever.
There is a blog post at http://mymemorysucks.wordpress.com/2009/02/25/site-definitions-vs-site-templates-and-site-provisioning-providers/ that makes a case for always using a provisioning provider over site definitions and templates, but I get mixed signals because the Microsoft developer exams seemed put a lot of weight on site definitions and templates.
So, what are the best practices for modifying your sites/lists after they have been created and are in production? How do ISV's, for example, handle upgrades to their SharePoint based software?
This is (as I'm sure you're aware) a huge, ongoing discussion point that (from whenever I see it) always ends up in the classic consultant response "It depends on your requirements".
I think once a site has been provisioned as per site template it's quite safe to modify the XML schemas as the provisioned content is then stored in the content database, however it may produce issues if yoour information workers then decide to create site templates (STP files) from the site definitions.
Upgrading artifacts depends on the type of artifact in question, and depending on the platform (MOSS vs SP2010).
In SharePoint 2010 question the story is different than in SharePoint 2007, since you have feature upgrade, both declaratively and programmaticly (feature upgrade event handler with parameters set declaratively). Further info regarding feature upgrade can be found in my article on the subject in the DIWUG SharePoint eMagazine http://andersrask.spoint.me/2010/06/02/code-samples-from-diwug-article
As the article you refer to mentions, changing the manifests of a site definition after the site is created, isnt supported. This is why many developers (as mentioned in some of the threads you link to) prefer to keep their site definitions minimal, and instead put as much of the functionality into features and staple them on your site definition.
Provisioning providers are helpful when you want to put "finishing touches" on your site after it was created. This could include setting policies, creating sub sites, setting default pages, activating features, page layout restrictions, configuring web parts etc.
only site collections/sites using non-publishing templates. All other content is availble e.g. documents, lists Has anyone else come across this? UPDATE 08/05/10: I have been doing some further... in the index under the contentclass:STS_Site and the sites (SPWeb's) are contentclass:STS_Web. The following people seem to have come across this issue and assumed it was just a limitation. I think... post Infrastructure Update - in my situation it was applying SP2 but it might have been one of the culmlative updates after IU A search pre-SP2 using contentclass:STS_Site as a filter will list all
it to the default.aspx home page. I would be happy either way. Note: I want to be able to activate this on existing site, I dont want to create a new Site Definition. Here is what I have tried: Feature Receiver... work either. I should be able to do it by more heavily customising the List Definition, but that seems a little over the top and I'm reluctant to do that before ruling out the other options. So...I've been hitting my head against a wall on this one for the last couple of days. I have a pretty simple requirement but I cant see how it can be achieved within a Sandboxed solution. I'm depressed
Possible Duplicate: Integrating SharePoint user profiles with forms authentication I am using SharePoint Server 2007 Enterprise with Windows Server 2008 Enterprise. I have deployed a publishing portal. It is using a custom forms authentication solution, which is described in the following URL. I am developing using VSTS 2008 + C# + .Net 3.5 + ASP.Net + SharePoint Server 2007 SDK. http://msdn.microsoft.com/en-us/library/bb975135.aspx My question is how do I implement a user profile function if I use such a membership provider? By user profile function I mean: a logged in user could
, when I try to restore, I get the following errors: Provisioning of the web application, SharePoint - 1234, has encountered the following error: System.ArgumentException: The IIS Web Site you have...I am trying to find the best way to accomplish the following: Move an existing share point application's content and meta databases, back them up and restore them to a different machine. In order to do this I am using the stsadm tool as follows: To backup, I use this command: stsadm -o backup -url http://devpn-004:1234 -directory c:\sharePointBackup -filename testBackup.bak -backupmethod full
create a new Site Column using the SharePoint object model and happen to use http://server/path/site when instantiating the SPSite and SPWeb objects, the site column will be made available but when...Problem: Creating a site column using the SharePoint API (Object Model) with incorrect case in the URL for the SPSite or SPWeb object will cause the new column to throw an exception if an attempt...) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) How can I reliably get the correct URL for a site/web? The SPSite.Url
I am using SharePoint Server 2007 Enterprise with Windows Server 2008 Enterprise, and I am using publishing portal template. I have two sites of the same site colleciton and I want to use Data Source Library to make site A be able to use lists defined in site B. From site A, I am using "Connect to another library" to add site B. And from Data Source Library of site A, I can see lists defined in site B. My question is how to use such lists in a page of site A? I followed the guide here, http://office.microsoft.com/en-us/sharepointdesigner/HA101191181033.aspx
The definition of the 'View Only' permissions level is as follows: Members of this group can view pages, list items, and documents. If the document has a server-side file handler available, they can only view the document using the server-side file handler. What is considered to be a server-side file handler in the context of SharePoint? Is this an HTTPHandler? What technology is it based on, how do I write one?
of the details. I've read the documentation starting at http://msdn.microsoft.com/en-us/library/ee556429%28office.14%29.aspx. I currently have a working BDC assembly; I know it works because I can make an external content type list from it. I am currently stuck on step three: "Use Microsoft SharePoint Designer to discover the DLL and create a model". I don't see where to do this at all. Under "Data Sources"? Can I use my BDC assembly for this, or do I have to create another assembly?
We have taken over a site where My Sites are placed in the Intranet web application. I want to migrate the My Sites to a dedicated host site. From what i have been able to find out so far, I will need to do an STSADM -o backup of each personal site and restore it into the new content database. I will be automating this process using PowerShell. Has anyone tried this? Any caveats i need to be aware of? Since i need to move site collections out of an existing content database into another, as far as i can see i cannot use a simple SSP migration. Any help appreciated :-) EDIT: I wrote