Another Reminder – SharePoint is COPY BY VALUE

I'm doing a lot of code gen in SharePoint and something that was driving me crazy was auto gen of content types, list templates, and lists from a database.  The List instance would use the list template which would in turn use a ContentTypeRef.  Everything worked fine, exept when I go to enter a new item…no columns!  Doh!  Hate the Copy By Value default of SharePoint…a nice reminder blog post is here:

 http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/01/28/how-to-adding-a-content-type-to-a-list-the-correct-way.aspx

Chris

SharePoint Hierarchical Object Store – what’s in it?

The configuration database is actually pretty simple in design, but the data inside of it is not so simple.  I have run across the "objects" table a few times in the past few years, but never really looked deep into it.  Here is a list of objects that are in the table.  Notice some of the more interesting ones like SPAlertTemplate.  Other blogs about this table:

http://jritmeijer.spaces.live.com/blog/cns!8A48A27460FB898A!1176.entry
http://www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=271

Microsoft.Office.Excel.Server.ExcelServerSharedWebService
Microsoft.Office.Excel.Server.ExcelServerSharedWebServiceInstance
Microsoft.Office.InfoPath.Server.Administration.ExemptUserAgent
Microsoft.Office.InfoPath.Server.Administration.FormsService
Microsoft.Office.InfoPath.Server.Administration.FormTemplate
Microsoft.Office.InfoPath.Server.Administration.PersistedString
Microsoft.Office.RecordsManagement.Internal.ExpirationJobDefinition
Microsoft.Office.RecordsManagement.Internal.HoldReportJobDefinition
Microsoft.Office.RecordsManagement.Internal.PolicyConfigService
Microsoft.Office.RecordsManagement.Internal.PolicyConfigServiceInstance
Microsoft.Office.RecordsManagement.Internal.PolicyUpdatesJobDefinition
Microsoft.Office.RecordsManagement.Internal.RecordsRepositoryJobDefinition
Microsoft.Office.RecordsManagement.SearchAndProcess.SearchAndProcessWIJD
Microsoft.Office.Server.Administration.AnalyticsService
Microsoft.Office.Server.Administration.AnalyticsServiceInstance
Microsoft.Office.Server.Administration.ApplicationRegistryService
Microsoft.Office.Server.Administration.ApplicationRegistryServiceInstance
Microsoft.Office.Server.Administration.ApplicationServerAdministrationServiceJob
Microsoft.Office.Server.Administration.ApplicationServerJob
Microsoft.Office.Server.Administration.ConfigurationCheckerJob
Microsoft.Office.Server.Administration.DiagnosticsService
Microsoft.Office.Server.Administration.JobSchedulerService
Microsoft.Office.Server.Administration.JobSchedulerServiceInstance
Microsoft.Office.Server.Administration.LicensingJob
Microsoft.Office.Server.Administration.OfficeServerService
Microsoft.Office.Server.Administration.OfficeServerServiceInstance
Microsoft.Office.Server.Administration.OSSVssDiscoveryHelper
Microsoft.Office.Server.Administration.SessionStateService
Microsoft.Office.Server.Administration.SessionStateServiceInstance
Microsoft.Office.Server.Administration.UserProfileService
Microsoft.Office.Server.Conversions.LauncherService
Microsoft.Office.Server.Conversions.LauncherServiceInstance
Microsoft.Office.Server.Conversions.LoadBalancerService
Microsoft.Office.Server.Conversions.LoadBalancerServiceInstance
Microsoft.Office.Server.Diagnostics.StaticSqmDataCollectionJob
Microsoft.Office.Server.Search.Administration.ChildFarmContentSourcesJobDefinition
Microsoft.Office.Server.Search.Administration.IndexingScheduleJobDefinition
Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebService
Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebServiceInstance
Microsoft.Office.Server.Search.Administration.SearchDataAccessServiceInstance
Microsoft.Office.Server.Search.Administration.SearchService
Microsoft.Office.Server.Search.Administration.SearchServiceInstance
Microsoft.Office.Server.UserProfiles.MySiteCleanupJob
Microsoft.Office.Server.UserProfiles.WSSSynchScheduler
Microsoft.Office.Workflow.BulkWorkflowWIJD
Microsoft.SharePoint.Administration.SPAdministrationService
Microsoft.SharePoint.Administration.SPAdministrationServiceInstance
Microsoft.SharePoint.Administration.SPAdministrationWebApplication
Microsoft.SharePoint.Administration.SPAlternateUrlCollection
Microsoft.SharePoint.Administration.SPApplicationPool
Microsoft.SharePoint.Administration.SPChangeLogJobDefinition
Microsoft.SharePoint.Administration.SPConfigurationDatabase
Microsoft.SharePoint.Administration.SPConfigurationRefreshJobDefinition
Microsoft.SharePoint.Administration.SPContentDatabase
Microsoft.SharePoint.Administration.SPDatabaseService
Microsoft.SharePoint.Administration.SPDatabaseServiceInstance
Microsoft.SharePoint.Administration.SPDatabaseStatisticsJobDefinition
Microsoft.SharePoint.Administration.SPDeadSiteDeleteJobDefinition
Microsoft.SharePoint.Administration.SPDiagnosticsService
Microsoft.SharePoint.Administration.SPDiskQuotaWarningJobDefinition
Microsoft.SharePoint.Administration.SPDocumentConverter
Microsoft.SharePoint.Administration.SPEncryptedString
Microsoft.SharePoint.Administration.SPFarm
Microsoft.SharePoint.Administration.SPFeatureDefinition
Microsoft.SharePoint.Administration.SPImmediateAlertsJobDefinition
Microsoft.SharePoint.Administration.SPIncomingEmailService
Microsoft.SharePoint.Administration.SPIncomingEmailServiceInstance
Microsoft.SharePoint.Administration.SPOutboundMailService
Microsoft.SharePoint.Administration.SPOutboundMailServiceInstance
Microsoft.SharePoint.Administration.SPPersistedFile
Microsoft.SharePoint.Administration.SPProcessIdentity
Microsoft.SharePoint.Administration.SPRecycleBinCleanupJobDefinition
Microsoft.SharePoint.Administration.SPServer
Microsoft.SharePoint.Administration.SPSolution
Microsoft.SharePoint.Administration.SPSolutionLanguagePack
Microsoft.SharePoint.Administration.SPSolutionLanguagePack+DeploymentConfig
Microsoft.SharePoint.Administration.SPSolutionLanguagePack+SolutionOperationStatus
Microsoft.SharePoint.Administration.SPSqmTimerJobDefinition
Microsoft.SharePoint.Administration.SPTimerService
Microsoft.SharePoint.Administration.SPTimerServiceInstance
Microsoft.SharePoint.Administration.SPUsageAnalysisJobDefinition
Microsoft.SharePoint.Administration.SPUsageSettings
Microsoft.SharePoint.Administration.SPWebApplication
Microsoft.SharePoint.Administration.SPWebConfigFileChanges
Microsoft.SharePoint.Administration.SPWebService
Microsoft.SharePoint.Administration.SPWebServiceInstance
Microsoft.SharePoint.Administration.SPWorkflowAutoCleanJobDefinition
Microsoft.SharePoint.Administration.SPWorkflowFailOverJobDefinition
Microsoft.SharePoint.Administration.SPWorkflowJobDefinition
Microsoft.SharePoint.Portal.Administration.PortalService
Microsoft.SharePoint.Portal.Administration.PortalServiceInstance
Microsoft.SharePoint.Portal.Administration.SkuTypeSyncJob
Microsoft.SharePoint.Portal.Administration.SsoService
Microsoft.SharePoint.Portal.Administration.SsoServiceInstance
Microsoft.SharePoint.Portal.Analytics.LogImportJobDefinition
Microsoft.SharePoint.Portal.Analytics.UsageProcessingJobDefinition
Microsoft.SharePoint.Search.Administration.SPSearchDataAccessServiceInstance
Microsoft.SharePoint.Search.Administration.SPSearchDatabase
Microsoft.SharePoint.Search.Administration.SPSearchJobDefinition
Microsoft.SharePoint.Search.Administration.SPSearchService
Microsoft.SharePoint.Search.Administration.SPSearchServiceInstance
Microsoft.SharePoint.SPAdminFeature
Microsoft.SharePoint.SPAlertTemplate
Microsoft.SharePoint.Upgrade.SPManager

Chris

MCT Virtual Summit Presentation and SharePoint Sales Guide

I did my Virtual Summit last night…was perfectly timed to the second!  I have attached the powerpoints and sales guide from the presentation.

I basically talk about the various different courses that you can take around SharePoint and what is offered in the MS Courseware Library… a lot of the ACS courses are on the top of the lists.

Enjoy!
Chris

SharePoint 2007 Governance Course

Governance seems to come up in spurts around the community.  This course has been around for a while and really drives a lot of the issues with implementing SharePoint 2007 and addresses issues that you will run into 2 years down the road with your SharePoint 2007 install.

Not a course for Developers or End Users, it is targeted at IT Manager and CIO/CTO level individuals.

The outline is available here (and attached to this blog as a word document):

http://www.architectingconnectedsystems.com/course.aspx?courseid=30

If you want to purchase a copy, send me an email and mention my blog and I'll take $25 off!  First 5 people to email get it for FREE!
Chris

SharePoint Site/List/Item Effective Permission Finder!

This is amazing, I was simply trying to figure out what the SharePoint Designer (Site->Contributor Settings) would do to permissions in the database.  So, I built this entire application to do it, but then realized after I got it built that SPDesigner simply creates a file in the _contributor_settings directory in the content database and doesn't tough anything else. DOH!  

This tool will find the effective permission for an object in a site.  It uses a combination of object model (to get the siteid) and direct calls to the content database (rather than slow object model).  This tool must be run by an administrator on a SP box in the farm.  I went ahead and added in my "Find empty permission objects" code too.

Oh, and by the way, there is a column called PermMaskDeny in the Roles table.  Even though SharePoint doesn't have a front end UI or object model deny mechanism…it seems they are thinking ahead to be able to implement explicit "deny" in SharePoint!  Maybe in 2010?  I did try setting it to something (all 1s), but it didn't do anything 🙁  Oh well…

Enjoy!
Chris

Customizing SharePoint Approval Workflow – Step by Step

I like challenges and I was posed this one today in class.  Change the built in approval workflow to add steps!  Since I have written a really Advanced Workflow course and know a few things that most people don't about workflows in general, I decided to take on the challenge on the plane ride back to San Diego from Houston.

Attached is the results of my exploits.  Using the WorkflowChanges class, I was able to inject a new activity into the workflow.  I was also able to change the InfoPath form that drive the approval workflow.  The only thing I didn't do was to actually take a new element value out of the modified form.  I have left that for someone else to figure out!

 If you are using FireFox, right click the file and select download…

Enjoy!
Chris

Find Large Lists for SP2 and SP2010 Migration

I saw a post asking about how to find all the large lists in SharePoint 2007 for migration purposes.  Here is a query that will help you find all the large lists in your SP content database.  After you find them, you need to determine if they need to be moved to a SQL Server/Oracle/DB2 database and then referenced with BDC (or reference via custom web parts).

select s.fullurl + '/' + w.fullurl + '/' + tp_title as  url, tp_itemcount from alllists al, webs w, sites s
where al.tp_webid = w.id
and
w.siteid = s.id
order by tp_itemcount desc

  • You can also find some cool queries by Brent v here
  • Oh and seems Syed has built quite the comprehensive list of  queries too:  here

Enjoy!
Chris

SilverLight and SharePoint 2007 – Step by Step

After wading through lots of blogs on integrating SharePoint and SilverLight…I just gave up and decided to implement it on my own.  It ends up none of the blogs had ALL the steps! 

http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1794
http://www.wssdemo.com/Blog/archive/2008/03/24/installing-the-sharepoint-blueprint-for-silverlight-silverlightpart.aspx

Alot of them point you to the SilverLight BluePrint, which actually doesn't help much either:

http://sl4sp.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=19961

I just wanted a no Visual Studio way of setting up SilverLight and SharePoint…I figured it out after a few hours (a long time for me to figure something out)…So, here is a step by step PDF of the process…Right click the link below and select to download the file (don't click on it).

Chris