Telligent Community Server and IIS7.0

Awesome blog to get your migrated Server 2003/IIS 6.0 to Server 2008/IIS 7.0 with Community Server:

http://telligent.com/communities/technical/communityserver/community_server_2008/w/cs20085docs/configuring-iis7-for-community-server.aspx

Works like a charm!
Chris

Find all closed Web Parts in Content Database

Use this script to find all the closed web parts in your content database:

SELECT     w.fullurl + '/' + ad.dirname + '/' + ad.leafname
FROM         WebParts wp, alldocs ad, sites s, webs w
where tp_isincluded = 0
and wp.tp_pageurlid = ad.id
and ad.siteid = s.id
and webid = w.id

.stp List Export (Content Type Settings)

When exporting a list to .stp, the settings for the list will include the Fields that were added by a content type, and what seems to be the content type definition, HOWEVER, it does not move the content type definitions.  The Content Type will only exist for that instance of the List and no others when moving the .stp between sites!

CodeGen In a SharePoint World – What do you want?

If I was to build a free SharePoint CodeGen tool, what would you want in it?  I'll give you some examples:

  • Point at any datasource and generate:
    • Content Type Feature
    • List Template Feature
    • List Instance Feature
    • Web Parts to "Add/Delete/Modify"
    • BDC Application definition creation

What else would the SharePoint community like to have?

CodeGen With SharePoint BDC – Helpful Hints

I have been working on a lot of codegeneration techniques with SharePoint and approched the BDC today.  It seems that it doesn't like things like Guids that much when working with Search Stored Procedures.  It will create a default Guid instance and pass that value EVERY TIME!  And it will not allow "Wildcard" on Guid Types.

In order to get around this little fact, you have to build a dynamic sql stored procedure (that passes through the query in the proper way to avoid sql injection) that takes all string parameters!  Even then there are some types that cannot be compared with the "like" sql operator. 

I have everything working like a charm now (keeping to simple types), but man…that was a day's worth of work!

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

Migrating Hyper-V back to VPC! – Hal.dll

If you follow my posts, you'll know I didn't exactly follow the migration steps from VPC to Hyper-V.  So, I needed to get back to VPC to make some changes and then redeploy to Hyper-V.  Unfortunately I had already installed the "intergration services" of hyper-v which updates the HAL!  So, what to do?

Simply fire up an existing VPC after attaching the one you need to update the HAL as a secondary drive.  Assign it a drive letter, replace c:windowssystem32hal.dll with one that matches the OS (server 2003, 2008) and processor architecture (32 vs 64bit).

Fire up your VPC…it should load now!  (NOTE:  if it does not load, boot in Safe Mode, uninstall Integration services, your HAL will be replaced with the original).  SWEET!  Make your changes (uninstall Integration services, reboot, install VM additions, uninstall VM Additions), deploy to Hyper-V, re-install Integration Services.

If when you move over to Hyper-V you still get the  "Virtual machines exists" error, you have to delete some of the VPC services that don't get uninstalled!  Use the "sc delete <servicename>" command from the command prompt to delete them!

The only draw back is that you will have to re-activate your image after updating the HAL.

Chris

SharePoint Metadata Security – Titus Labs

I was recently looking for a column/field level permission tool, but have not found one (tried building one, but wow, super complex to do!).  In my search I found a tool by Titus Labs out of Canada (http://www.titus-labs.com/). 

It will dynamically set permissions based on a set of rules.  These rules can be built based on the column values for a list.  They have implemented it as part of Information Management Policy (IMP), a great approach!  You can build your own IMP by referencing our course "Programming Microsoft Office SharePoint Server – 50146"

The tools is very easy to use with an install batch file that simply takes the url of where the features need to be installed.  It is installed as a solution so all your web fronts ends will end up with the features installed.  It is very easy to use and has some nice error checking in it.  Check it out and email Charlie at Titus at Charlie.Pulfer@titus-labs.com for a trial.

They built the addin with extensibility in mind. You can add permissions sets that are reusable as well as arrange the rules you want to be applied in a particular order.  Nice product, super simple design, easy install!

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