Creating Advanced Business Data Connectivity Models

Creating Advanced Business Data
Connectivity Models
SharePoint Practice
Module Overview
• Configuring BDC Models for Search
• Developing Custom Connectivity Components
• Working with External Events and Notifications
Lesson 1: Configuring BDC Models for Search
• Searching External Data
• BDC Search Methods
• BDC Model Search Properties
• BDC Model Search Security
• Optimizing Crawl Performance
• Demonstration: Exploring BDC Models for Search
• Discussion: Custom BCS Connectors
Searching External Data
• SharePoint provides several ways to search
external data
• Protocol Handlers
• BCS Search Connectors
• BCS Search Connectors allow non-standardized
external data to be surfaced
Example: Custom proprietary, non-database based
data store of files, security and metadata
• Extensibility of SharePoint Search via BCS
Connector model is provided by .NET
programming layer
BDC Search Methods
• Search Connectors using BDC Models require
specific stereotyped methods
• StreamAccessor
• BinarySecurityDescriptorAccessor
• SpecificFinder
• Performance enhancing methods should be
• DeletedIdEnumerator
BDC Model Search Properties
• In addition to stereotyped methods, several
special properties exist to support search
Used to tell search which crawled properties map to
search specific values
• Examples: DisplayUriField, MimeType,
• Without these search properties, you cannot
select the model as a search content source:
• RootFinder
BDC Model Search Security
• Search security involves two levels
• Authenticate to the external source
• Get security details of items from the source
• External Source Authentication is same as any
BDC model
Exception is the search app pool account may be used
as the authenticated caller
• Retrieving security details from a target source
may require a mapping scheme
Example: JohnDoe, Grant =>Contoso\JohnD, NTLM
• Use the BinarySecurityDescriptorAccessor method
Optimizing Crawl Performance
• Indexing large external sources with several
millions of items presents challenges
• Incremental crawls should be implemented
• DeletedIdEnumerator
• Utilize the multipart architecture of BDC Search
Retrieve file contents via the StreamAccessor
• Retrieve security via the
• UseClientCachingForSearch property can be
used to cache items
Demonstration: Exploring BDC Models for
In this demonstration, your instructor will
walkthrough a simple BDC Model for searching
external content.
Discussion: Custom BCS Connectors
• What types of application data might you build a
BCS connector to index?
Lesson 2: Developing Custom Connectivity
• BCS External Connectors
• Creating and Deploying .NET Connectivity
• Creating and Deploying Custom Connectors
• Storing External System Credentials
• Search Connector Best Practices
• Troubleshooting and debugging BCS Connectors
BCS External Connectors
There are four types of BDC Model types
Database and WCF are easily created using SharePoint
.NET Connectivity
Deeper level logic such as item level security and incremental
crawl support is not supported
.NET Connectivity and Custom require .NET developed
assemblies via Visual Studio
Both are .NET based artifacts, difference is in the way they are
Custom Connector is much more flexible in its ability to
integrate with the search architecture
Creating and Deploying .NET Connectivity
• Visual Studio has several wizards and tools to
help support .NET Connector development
Mainly relates to the model file, but some support for
.NET connector is provided
• Deployment is two step process
• Deploy Model to BCS
• Call the ImportSPBusinessDataCatalogDotNetAssembly cmdlet to
deploy the assembly
• Once assembly is deployed, SharePoint designer
can be used to create new models
Creating and Deploying Custom Connectors
• Visual Studio support for Custom Connectors is
Support for BDC model file
• Support for Interface implementation signatures
• No auto-generation support of methods or method
• Custom connector models require
implementation of specific interfaces
ISystemUtility, IConnectionManager, ITypeReflector,
• Model must have special properties added to
point to interface implementation classes
Storing External System Credentials
• Consider how you will store the credentials used
to connect to the external system
• Common approach is to utilize Secure Store
Service application
Store Application Id in the BDC Model file
• Implement the IContextProperty interface
• Implement code to retrieve the Application Id
• Use the Application Id to retrieve the credentials
• Use credentials to login to remote system
Search Connector Best Practices
• No matter what type of connector, ensure you
follow best practices
Handle null values
• Match parameter names
• Handle exceptions
• Avoid large memory usage
• Implement incremental crawl methods
• Use filters to limit data retrieval
Troubleshooting and debugging BCS
• Utilize Search Crawl Logs and ULS logs to debug
and troubleshoot your BCS Search Connectors
• ULS crawl related logs will be under mssdmn.exe
Errors and stack trace will be more detailed than crawl
log entries
• Utilize the ULSViewer.exe tool to easily filter and
monitor for errors
• Attach the Visual Studio Debugger the mssdmn.exe to
debug your .NET connector
• Try to avoid common errors to decrease
development time
Lesson 3: Working with External Events and
• Event and Notification Features
• Enabling External System Events
• BCS Events Feature
• Implementing BDC Event Methods
• Initiating Subscriptions
• External List Event Receivers
• Demonstration: Working with External Events
Event and Notification Features
• SharePoint 2010 External lists did not support
alerts or event receivers
• New SharePoint 2013 stereotyped operations
allow external lists to participate in notification
features of SharePoint
• Event Receivers
• Remote Event Receivers
Enabling External System Events
• External system must provide subscription support
OData would provide a Subscribe and Unsubscribe HTTP
• Database model would provide a Subscribe and
Unsubscribe stored procedures
• External system must be record subscription data
• Example: DeliveryAddress, EntityName, Columns, User
• When data changes, it is responsibility of external system to
notify SharePoint of changes
• Same event may trigger multiple subscription
• Response message format must be an Atom feed
BCS Events Feature
• BCS Event Support requires a hidden list to be
created to keep track of subscriptions
“External Subscriptions Store” list stored in
_private\ExtSubs folder
• Enabled by activating the ExternalSubscriptions
web feature
Implementing BDC Event Methods
• BDC Model has been extended to have two new
stereotypes methods
EventSubscriber, EventUnsubscriber
• Special properties drive the method behavior
• IsDeliveryAddress, IsEventType, IsOnBehalfOfField,
• OData method type requires specific properties
to drive information exchange
ODataEntityUrl, ODataHttpMethod, ODataPayloadKind
• Three Message Response Parsers
• Identity, ODataEntryContent, Custom
• Identity is default if none specified
Initiating Subscriptions
• Subscriptions can be created explicitly or
Explicit calls are made via the entity’s subscribe method
• Implicit calls are made when alerts or event receivers
are created
• Conversely, a subscription can be removed
explicitly or implicitly
Explicit is made via entity’s unsubscribe method
• Implicit is called when an alert or event receiver is
External List Event Receivers
• Once subscription methods are configured you
can place event receivers on your external lists
ItemAdded, ItemUpdated and ItemDeleted are only
supported events
• A new property of the SPItemEventProperties
class is ExternalNotificationMessage
Contains the encoded message that was sent from the
external system
• Convert the message to a string and analyze the
external event changes
Demonstration: Working with External Events
• In this demonstration your instructor will
demonstrate how to deploy an OData BCS model
that support event subscriptions
Lab: Creating and Deploying a .NET Connectivity
• Exercise 1: Create a .NET Connectivity Assembly
• Exercise 2: Implementing Entity Methods
• Exercise 3: Deploying and testing a .NET
Connectivity Model
Lab Scenario
Contoso has a subsidiary company called
Northwind that would like to use the Contoso
SharePoint Farm to index their product data. They
have asked you as the Contoso Sr SharePoint
Developer to help them architect and build a
solution. The basic requirements are the
Northwind users would like to be able to search
on product data from multiple data sources using
SharePoint Search and be able to update that data
using SharePoint interfaces. The product data is
spread across two separate databases. They have
asked you to present all the data in the two
databases as a single item in the search results
Lab Scenario
• and in an external list. You have been tasked with
using BCS Search Connector framework to
accomplish this business requirement.
Lab Review
• What is the most important thing to double check
when building your entity model methods and
your entity class methods?
• What is the reason for having multiple methods
that retrieve information about a single items such
as metadata, security and the file contents?
Module Review and Takeaways