Introducing the External Content Type


External content type is probably the most important Business Connectivity Services (BCS) concept to understand, so I decided to create a brief post about it. In essence, an external content type is the SharePoint and Office representation of a real business entity like a Customer, Order or Employee.

Implementation-wise, external content types are the evolution of BDC entities from Microsoft Office SharePoint Server 2007. They are metadata descriptions of the connectivity settings, data structures and stereotyped operations – like create, read, update and delete – that allow access to business entities as exposed by external systems (such as databases, web services, line-of-business applications, among others). In addition to the new stereotyped operations now supporting read/write access to external data, external content types in SharePoint 2010 can also describe SharePoint and Office integration behaviors like mappings to native Office item types including Contact, Task, Appointment and Post as well as data offlining into Outlook 2010 and SharePoint Workspace 2010. These are very important new aspects as they are the basis for providing familiar experiences for information workers to interact with external data inside SharePoint and Office.

You can learn more about External content types in the SharePoint SDK topic “What Are External Content Types?”. In this post though, I’d like to emphasize their role as a building block for features and solutions that leverage BCS.

clip_image002[1]

SharePoint 2010 features like External Lists, External Data Search, and External Data Columns are all based on external content types. In a similar way, SharePoint and Office solutions needing access to external data can do so through BCS by relying on one or more external content types. This means that defining external content types will be among the first steps of building a BCS-enabled solution. Once you define an external content type, you can use it to easily integrate external data on client and server thanks to the Business Connectivity Services runtime available with SharePoint 2010 and Office 2010.

In terms of authoring, both SharePoint Designer 2010 and Visual Studio 2010 provide external content type designers that allow you to create, edit and publish external content types into the Business Data Connectivity Metadata Store in SharePoint 2010. Once published, external content types can be reused across SharePoint and Office either by end-users using the out-of-the-box SharePoint features or by solutions created by power users and/or developers.

clip_image004

Figure 1. Summary view in SharePoint Designer 2010 (Beta) of an external content type representing business customers stored in a SQLServer database.

clip_image006

Figure 2. Visual Studio 2010 (Beta) showing an external content type with methods to read customer information (from two different line-of-business applications) implemented in a .Net assembly.

Now that you know about external content types, go ahead and create some in SharePoint Designer 2010 or Visual Studio 2010 to experience their power first hand!

– Rolando Jimenez Salgado, Sr. Lead Program Manager

Comments (9)

  1. Anonymous says:

    I can get the BCD working if I connect locally, but remotely I get "Unable to display this Web Part".

  2. lionelro says:

    Mashby, to help you out we need more information on the error message (message from logs, etc.). My first impression is that it is a permissions issue; take a look at our permissions post for more information.

    Thanks for reading.

  3. Anonymous says:

    I have a problem. I performed the procedure at this link: http://www.linglom.com/2009/03/28/enable-remote-connection-on-sql-server-2008-express/ Enable Remote Connection on SQL Server 2008 Express. Now, the system tells me the following error: LOGIN FAILED. THE LOGIN IS FROM AN UNTRUSTED DOMAIN AND CANNOT  BE USED  WITH WINDOWS AUTHENTICATION. Access to the DB is mixed: Windows Authentication and SQL. Please, can you help me?

    Thanks in advance.

  4. lionelro says:

    Max,

    For SQL Server related issues we suggest going to the support forums to post your question: http://social.msdn.microsoft.com/Forums/en-US/category/sqlserver/

    -Lionel

  5. Prachi Mathur says:

    Hi I have just created a sample team site and added aan external content type to it. Its an SQL database and when I added it as an external list in my sharepoint website.It appears in the quick launch and when I click on it I am unable to display it and get the following error message:

    Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator.

    Correlation ID:e1c61ac1-788a-46c6-9311-495a5fa0603f

    Can somebody please help?

    Thanks

  6. Anonymous says:

    Prachi, this error can mean a lot of things, but often means the backend rejected your credentials. You can check what happened by viewing the logs (Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14LOGS), where it will likely be listed as a High or Unexpected level event for Business Data.

    The most common reasons authentication to the backend fail are:

    1) The model is defined as PassThrough (in SPD, this is called "user identity"); PassThrough is successful, but the SQL server has permissions set so that those users aren’t able to access it. The fix for this issue is to change permissions on the backend, and it usually shows up in logs as something like "authentication failed for domainuser".

    2) PassThrough is unsuccessful because of the double-hop problem (NTLM disallows automatically signing in from a remote machine to another remote machine). The fix for this issue is to set up Kerberos or SecureStore, and it usually shows up in logs as something like "authentication failed for machineIUSR" or "anonymous logon failed".

  7. Anonymous says:

    Hi Adamo,

    Thanks for you reply.

    I am unable to see the LOGS folder in 14. Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14LOGS. Can you please let me know why it is not there.

    I will check the backend permissions.

    And while creating the External Content type, during add connection I have given the external data source as SQL server.  there I have 3 options to connect to my database.

    Connect with User’s Identity

    Connect with Impersonated Windows Identity

    Connect with Impersonated custom Identity.

    We have used the Connect with Impersonated custom Identity for connecting.

    Thanks

    Prachi

  8. Anonymous says:

    Hi Adamo,

    One more question when we created the external content type we were able to get the external data on to the sharepoint site. i.e like we where able to see the database name and table names what we created in the backend .

    if we see this also means that we are not having correct permissions to access the backend??

    Br/

    Prachi

  9. lionelro says:

    Hi Prachi,

    It sounds like you are using Secure Store and it may not be configured correctly. One easy way to try things out is to use the "User’s Identity" authentication mode and make sure that the user browsing the external list has access to the backend system.

    Also, how many rows are in the table you created the ECT for?

    -Lionel