Skip to main content

Content Type as Feature

Content Type Syndication Hub is a great feature of #SharePoint2010 and upper.
In the following post I described it in detail:

However in some scenarios this feature is not the best approach.

In many organisations there is usually a set of #SharePoint farms that may include all or some of the following:

  • Development (DEV) environment
  • Test (TST) environment
  • UAT environment
  • Production (PROD) environment

Ideally the process of creating some custom #SharePoint work may look like:

  • Create #SharePoint artifacts in DEV and package them
  • Copy the packaged artifacts from DEV to TST, install there and test
  • Rework the artifacts if there are issues in DEV then copy and test in TST until it all works well
  • Copy the packaged artifacts to UAT, install there and allow end users to test
  • Rework if required until UAT is completed without issues
  • Copy the packaged artifacts to PROD, install and test
The process above may exclude TST or/and UAT parts, but the idea is always the same.

Some companies enjoy creating site templates, because it's a very convenient way of duplicating user experience if many similar sites are required.
Following the best practice process described above those companies would need to do the following:

1. Create a site and create a site template in DEV
2. Copy the template to TST, install and test
3. Copy the template to UAT, install and test
4. Copy the template to PROD and install

If we are using the Content Type Syndication Hub on every environment, we would have the following situation:

So in every environment the name of the published content type CT1 is the same (Name), but the internal identifier is different:
DEV: IdDev
TST: IdTst
UAT: IdUat
PROD: IdProd

From experience it has been found that restoring the site collection or a site from one environment that using Content Type Hub into another environment, breaks the subscription mechanism.
That means we will not be able to use the site restored from DEV on TST, UAT and PROD, because Content Type Syndication will not work for the restored site:

One of the possible solutions is to create a custom feature in Visual Studio that will contain:

  • Custom fields
  • Custom content types
Then install this custom feature on all environments and activate on all site collections. The content type identifiers and column identifiers and internal names will be the same across all environments:

 In this case we get control over the custom content types and it's more transparent than using Content Type Syndication Hub feature.
Also it doesn't require having a separate site collection to serve just a Content Type Hub role.

The following walkthrough is a good starting point to help creating Visual Studio 2010 solution that contains custom content type and fields:


Popular posts from this blog

Setting up External Content Type for SQL Server database using SQL Server authentication - SharePoint 2010 Foundation

This post is a follow up on the issues that I have got setting up External Content Type (ECT) on SharePoint 2010 Foundation that was going to connect to remote SQL Server database for information. I cannot use my SharePoint user accounts to access SQL Server.

According to the information I have discovered ECT and Business Connectivity Services are available in the SharePoint 2010 Foundation, but there are some issues if you want to use authentication methods in your external connections that are different from Windows Identity or Current User Identity. This is because there is no Secure Store Service in SharePoint 2010 Foundation which serves as an impersonation hub and is only available in SharePoint 2010 Server edition.
The issues are coming from the fact that you can actually create ECT in SharePoint Designer 2010 providing just Secure Store ID and system would ask you for credentials and here you go, but when you try to use your ECT in External Lists or as a lookup columns you wou…

SharePoint 2010 Search Issue - FQDN Crawl

I have recently set up a standalone SharePoint 2010 environment.

The Web application was created with host header and the site collection is accessible from the client machines, but not internally. That was because of using FQDN to access the Web site.

The error when I tried to access site internally was similar to the one described here:

You receive error 401.1 when you browse a Web site that uses Integrated Authentication and is hosted on IIS 5.1 or a later version

And the search returned the following error in the Event Log:

"The start address cannot be crawled.

Context: Application 'Search_Service_Application', Catalog 'Portal_Content'

Details: This item could not be crawled because the crawler could not connect to the repository."

One of the suggestions was to disable the loopback check, but that would compromise the Web server.

So what I have done was:

1. Added a binding to my IIS Web site for a different port. Let's say my Web server name is win-v7m…

SharePoint 2013 - Setting Up External Content Type

There were earlier posts where we discussed External Content Types setup for SharePoint 2010:

Setting up External Content Type for SQL Server database using SQL Server authentication - SharePoint 2010 Foundation

External Content Types - Reload - Setting up for SQL Server database using SQL Server authentication - SharePoint 2010 Server

This one is about creating connection to the custom SQL Server database (External System) in SharePoint 2013.

1. Create Secure Store Service Target Application

1.1. Go to Central Administration -> Manage Service Applications -> Secure Store Service Application. Click "Generate New Key" if required:

1.2. Provide Pass Phrase:

1.3. Create "New" to create new Target Application:

1.4. Provide the name and other parameters and click "Next":

Note: It's good idea to specify "Group" for Target Application Type. In that case you would be able to manage access to the external data using Active Directory groups rather …