Setting Permissions for an External Content Type

In a previous post, I created an External Content Type based on the following Stored Procedures:

  • dbo.BcsSalesForecastReadList
  • dbo.BcsSalesForecastReadItem

Before you can use the External Content Type the permissions must be set.   The permissions are set using the SharePoint 2010 Central Administration Panel.  Open the Central Administration Panel and you should see the following:

image

Under the Application Management Section click on the Manage Service Application settings link.  Next Click on the Business Connectivity Data Service and you should see the External Content Type called BcsSalesForecast:

image

Hover over the BcsSalesForecast External Content Type and select “Set Permissions” from the drop down box:

image 

Type in the username (Domain\userid) and click check names to verify the user and then click Add.  Once the user or users are added you can set the permissions.  When I was adding my user id I found that I had to be connected to my domain in order to add my account.  For example, if you are using laptop at home and you are not connected to your companies domain you probably won’t be able to add the account to the External Content Type.  If you have VPN Access to you company network then you can connect to the Domain and then try adding the Account.

image

Once the permissions have been set you can now create an External List based on the External Content Type using the SharePoint Designer.  Just Navigate to the External Content Type in the SharePoint Designer and Select BcsSalesForecast and then click External List located in the Ribbon as shown below:

image

This will create an External List called Sales Forecast. Because only ReadList and ReadItem operations are defined for the External Content Type, for now, you can only view all the items in for the Forecast or view the details of one item.

image

If you have not set the permission for the External Content Type you will receive the following error when you try to access the External List:

Access denied by Business Data Connectivity.

Troy

Creating an External Content Type in SharePoint 2010

In a previous post I created a simple weekly sales forecasting table which will be used as a starting point to create an External Content Type.  Below is some sample data from the table:

image

When a External Content Type is created the data source can be a table, view, store procedures or a web services.  The External Content support various operation but you must provide functionality for the following two operations:

  • Read List
  • Read Item

These two operations must defined in order to use the External Content Type as an External List in SharePoint 2010.  For this example I am going to create two stored procedures for the operations:

  • dbo.BcsSalesForecastReadList
  • dbo.BcsSalesForecastReadItem

Before the External Content Type Operations can be created we need to create the stored procedures that will be used to read an item from the external content type and list all items in the external content type.    The Read List stored procedure for our sales forecast data is fairly simple.  The stored procedure simple needs to return all the rows and columns we want to be available in the External Content Type.  Why use a stored procedure then for this operation?   For simple lists of information a using a table or view is fine but if you want to have a high level of flexibility and control then a store procedure is probably a better choice.    A Web Service would provide even more power and platform independence but for our sales forecast application our approach will suffice.

dbo.BcsSalesForecastReadList

create procedure dbo.BcsSalesForecastReadList as set nocount on select EnglishMonthName + '-' + WeekNumber + '-' + SalesTerritoryRegion + '-' + Category ID, EnglishMonthName MonthName, WeekNumber, SalesTerritoryGroup SalesGroup, SalesTerritoryRegion SalesRegion, Category ProductCategory, LastYearAmount, ForecastAmount from dbo.WeeklySalesForecast

dbo.BcsSalesForecastReadItem

create procedure dbo.BcsSalesForecastReadItem @ID nvarchar(255) as set nocount on select fcst.ID, fcst.MonthName, fcst.WeekNumber, fcst.SalesGroup, fcst.SalesRegion, fcst.ProductCategory,  fcst.LastYearAmount, fcst.ForecastAmount from ( select EnglishMonthName + '-' + WeekNumber + '-' + SalesTerritoryRegion + '-' + Category ID, EnglishMonthName MonthName, WeekNumber, SalesTerritoryGroup SalesGroup, SalesTerritoryRegion SalesRegion, Category ProductCategory, LastYearAmount, ForecastAmount from dbo.WeeklySalesForecast) fcst where ID = @ID

For the purposes of this demo I have created a unique Business Key (ID) which concatenates (joins) the following fields:

  • EnglishMonthName
  • WeekNumber
  • SalesTerritoryRegion
  • Category

This combination uniquely identifies each row in the forecast table.   Ideally you could used an identity column or create proper indexes using the 4 columns. 

Connect to the site that was created in the last post or you can use one of your existing sites.  Open SharePoint Designer and open the following site:

image

Click on the External Content Types site object in the Navigation Pane on the right hand side.  Create a New External Content Type.  You should see the following screen:

image

Enter the following:

  • Name: BcsSalesForecast
  • Display Name: Bcs Sales Forecast

In the External Content Type Operation section click “Click here to discover external data sources and define operations” .  You should see a screen similar to this:

image

Click “Add Connection” and select the Data Source Type as SQL Server.  Enter in the following items:

  • Database Server: (server name)
  • Database Name: AdventureWorksDW2008R2
  • Name (optional): Adventure Works

For this example you can connect with the User’s Identity.  Look under the “Routines” section and you should see the stored procedures that were created above:

image

Right click on the BcsForecastReadList procedure and select “New Read List Operation”.  Keep the default settings for Operation Name and Display Name.  Below is a summary of the Read List wizard:

image image
1. Operation Properties 2. Input Parameters
image image
3. Return Parameter 4. Read List is created

Follow a similar process for the Read Item Operation.  Right-click on the BcsForecastReadItem procedure and select “New Read Item Operation”.  Below is a summary of the Read Item wizard:

image image
1. Operation Properties 2. Input Parameters
image image
3. Return Parameter 4. Read Item is created

 

You have now created your first External Content Type.  But we cannot use it yet.  In the next post I will show you how to enable security on the External Content Type and create an External List which will be displayed in the Ops Forecast site.    Below is a screen shot of the External Content Type being used as an External list:

image image
1. List View 2. View Item

 

Troy

Getting Started with SharePoint 2010

 

Business Intelligence is a core part of SharePoint 2010.  Its much more than just a content management system.  SharePoint 2010  has the following new features:

Business Connectivity Services

Central Administration Redesign

  • Interface is much more intuitive
  • UI now uses the well known Ribbon Toolbar

central_administration

Claim-Based Authentication

Health Monitoring

health_monitoring

Sandboxed Solutions

  • Deploy solutions onto the Farm or into a sandbox
  • Sandbox is a restricted environment which can be used to control and limit resources for a solution
  • Some solutions may not work in a sandbox and are better suited for a Farm deployment
  • http://technet.microsoft.com/en-ca/library/ee704543.aspx

If you are planning on installing and setting up a SharePoint site I recommend checking out the following training videos from Microsoft:   

Installing SharePoint 2010 (54 minutes):

http://technet.microsoft.com/en-ca/sharepoint/ee518665.aspx

Setting up Your First Web App (24 minutes):

 http://technet.microsoft.com/en-ca/sharepoint/ee518671.aspx

I reviewed these videos and had no problems setting up a couple of web applications.    I don’t recommend setting up a VM (it must be 64-bit for one thing) to run on your laptop or desktop.  You will want to create the VM on a server and assign it at least 4 GB of memory.   This requirement may increase if you are using a  Full SQL Server Stack (Analysis Services, Reporting Services etc.) for a Business Intelligence evaluation.

My next little project will be to use Business Connectivity Services and build a simple application using external data from SQL Server 2008.

Troy