Check out the whole SharePoint 2013 Solution Series
New Titles Added Weekly!
Introduction
This post discusses the overall process of incorporating external data into SharePoint
2013 Search by leveraging Business Data Connectivity Services (BCS). I have an end-to-end solution that integrates product data from a SQL Server
database into SharePoint 2013 by using external content types. This is covered in my Search Walkthrough Guide as well as my Enhancing the Search Experience Guide. However, the detailed steps are also available on their own within my SharePoint 2013 Solution Series guides. (Sorting and refinement only appear in the larger).
Step 1: Prepare the Data Source
The
first step is to create your read list and read item procedures.
- Create a stored procedure that returns all of the information you want to search and make sure all rows are returned.
- Create a stored procedure that returns the same information but only for a particular entity by using the ID as a parameter.
Step 2: Add Credentials to the Secure Store Service
In order for the External
Content Type to be created and BCS to access your external data source, the
data source credentials need to be stored. The Secure Store Service in SharePoint
allows you to store credentials. For my scenario, a SQL database account was
created named “AWDBAccount”. Therefore an entry in the Secure Store Service
needs to be added for SQL Authentication.
Step 3: Create an External Content Type
The
methods I describe in my books provides the steps for a no-code solution in creating an External
Content Type that uses your data source as the provider of information via
SharePoint Designer 2013.
Step 4: Set Permissions on the BCS Entity
I can imagine that this is often an overlooked step. Once the External Content Type is created, you need to give permissions to it, otherwise the search account as well as users will not be able to access the data.Step 5: Create a Content Source for the External Content Type
In order to crawl the external data, you need to create a content source in Search.
Step 6: Create Managed Properties
After
the crawl has completed, you now need to create managed properties and map them
to the crawled properties from the new content source. This may be accomplished
from the Search Service Application UI or from PowerShell. I describe both methods in my guide books.
Step 7: Create a Result Source
Step 8: Create a Result Type
Step 9: Create a Custom Search Results Page
Step 10: Add the Custom Search Results Page to the Search Navigation
Step 11: Test the Results
The results won't look too pretty. The remaining steps involve creating custom search display templates to properly present the external data search results.
Step 12: Create a Display Template
Step 13: Create an Item Hover Panel
Step 14: Update the Result Type to use the Display Template
Step 15: Test the Overall Results
Conclusion
In just 15 simple steps you can integrate external data into SharePoint 2013 Search by using external content types and BCS. You can get the entire end-to-end solution steps in my guides or from my SharePoint 2013 Solution Series:
Check out the whole SharePoint 2013 Solution Series
New Titles Added Weekly!
Hi Steve,
ReplyDeleteI purchased your Search Walkthrough ebook and follow BCS chapter but when I am doind full crawl of 'Product' I am getting this
bdc3://adventure_works_2012_adventure_works_2012/Default/00000000%2D0000%2D0000%2D0000%2D000000000000/6/Adventure%20Works%202012/46&s_ce=04040202010001020408004008000
Error while crawling LOB contents. ( Error caused by exception: Microsoft.BusinessData.Runtime.SsoAuthenticationException Message from External System : 'Credentials were not found for the current user within the target application 'AdventureWorksDB2012'. Please set the credentials for the current user.'. )
I set all the accounts
- Farm Account
- Search/Crawl Account
- AWDB Account
Not sure why? Please advise
Another error
bdc3://adventure_works_2012_adventure_works_2012/Default/00000000%2D0000%2D0000%2D0000%2D000000000000/Adventure%20Works%202012/Adventure%20Works%202012&s_ce=0404020201000102040800g01001002000
The parameter is incorrect.
Please advise.
Within the Secure Store Service, make sure you add credentials to the database for the Search/Crawl Account.
DeleteHi Steve,
DeleteThanks for the information. I already added 'AWDBAccount' in Secure Store Service
and
as per your advise
I visited Secure Store Service Application --> Select Target Application --> Click 'Set Credential' --> Provide Credential Owner --> Provide AD Search/Crawl Username (DOMAIN\ServiceAccountName) and Password & Confirm Password and click OK.
Then
Visited Search Service Application --> Content Sources --> Start Full Crawl on 'Products' Content Source but even getting the same error.
"Credentials were not found for the current user within the target application 'AdventureWorksDB2012'. Please set the credentials for the current user."
Please advise.
Set credential owner as the crawl account but the username and password needs to be the AWDBAccount
DeleteThanks it works.
DeleteIt was missed in your Search Walkthrough ebook because in your book; 'SPAdmin' account was used for Credential Owner.
Thanks any way.
Regards
The book is a great guide - thanks.
ReplyDeleteI'm doing this for the first time and find that the search results don't get limited to the AD group that I apply in step 4. Even people outside that group can see them.
It is very possible I've messed up some detail somewhere so all I'm really looking for is confirmation that it should work - can we definitely restrict the results to members of an AD group without writing code?
Thanks
that group is for accessing BCS. the actual search results need to be security trimmed. I have never done it. I think I tried previously and it only worked for one account. I will need to look into this soon as I need the same thing.
DeleteThanks for clarifying that, Steve.
ReplyDelete