sp24s088 - custom indexing connectors - how to integrate external systems into sharepoint search

51
Custom Indexing Connectors How to integrate external systems into SharePoint Search Heinrich Ulbricht Germany, MEZ April 16 th /17 th , 2014

Upload: spheinrich

Post on 18-Nov-2014

681 views

Category:

Technology


1 download

DESCRIPTION

Slides for my SP24 session #SP24S088 - make sure to watch the video on YouTube!

TRANSCRIPT

Page 1: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Custom Indexing ConnectorsHow to integrate external systems into SharePoint Search

Heinrich UlbrichtGermany, MEZApril 16th /17th, 2014

Page 2: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

SP24 Search SessionsSession

Time (GMT)

Time (EST) Title Level Speaker Twitter Handle

#SP24S090 5:00 1:00 Using the Content Enrichment Web Service with SharePoint Server 2013 Search

Technical - Advanced

Sezai Komur - NEC Australia @sezai

#SP24S021 6:00 2:00 2013 Search, Display Templates, Query Rules, Result Types

Technical - Beginner

Omer Zubair - CSC @Omer_Zubair

#SP24S047 8:00 4:00 Real-life experience building search-driven applications for product-centric sites

Technical - Advanced

Marius Constantinescu - blue-infinity SA @c_marius

#SP24S088 10:00 6:00Custom Indexing Connectors - How to integrate external systems into your SharePoint Enterprise Search

Technical - Advanced

Heinrich Ulbricht - Communardo Software GmbH

@h_ulbricht

#SP24S083 11:00 7:00 Search First Migration with SharePoint 2013 – Benefits / Disadvantages

Technical - Intermediate

Max Melcher - Alegri International Service GmbH

@maxmelcher

#SP24S034 14:00 10:00 The Search Immaturity Cycle, and How to Create a Search Strategy

Business - Intermediate

Jeff Fried - BA Insight @jefffried

#SP24S009 16:00 12:00 10 Things to Know about Search in SP2013 and Office 365

Business - Beginner

Agnes Molnar - Search Explained @molnaragnes

#SP24S019 18:00 14:00 Search Topology and Optimization Technical - Advanced

Mike Maadarani - MCM Consulting @mikemaadarani

#SP24S050 22:00 18:00 Search Driven Application Development in SharePoint 2013

Technical - Intermediate

Matt Youngstrom - Magenic @spguru

Page 3: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

#SharePoint#Apps#Search#WindowsPhone

Heinrich UlbrichtSoftware Developer for SharePoint

Communardo Software GmbHDresden, Germany

Contact@[email protected]://sharepointbrainpump.blogspot.com/

Page 4: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Session ObjectivesPresent extensibility of SharePoint SearchIndexing Connectors: good understanding of architecture

Key TakeawaysSharePoint can be the Enterprise Search for all your contentIf you’ve never developed an indexing connector – get help

Session Objectives and Takeaways

Page 5: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Vision “One Enterprise Search” with SharePointExtensibility of SharePoint SearchSearch Connector FrameworkConnector for SharePoint Search for ConfluenceLessons Learned

Agenda

Page 6: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Challenge: No Integration of Systems

Page 7: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Challenge: Non-integrated Systems

SAP

SQLWCF

Siebel

Dynamics

Confluence?

Page 8: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

No Integration – Consequences User is confused

Where to find information? Different search centers with different usability and power (filters, …) Different search result formatting Different search result quality (ranking, …)

Efficiency drops!

Page 9: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Solution: Search Integration

1. No integration (no solution…)2. Links

3. Federated Search

4. Integrated Search

Level of Search Integration

Page 10: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Links Yammer-”Integration” came with SP2013 SP1 -> Link to Yammer Search Center

Page 11: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Federated Search Search results next to each other

Result blog for Bing search results

SharePoint results

Page 12: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Integrated Search One search result view; E.g.: SharePoint + Confluence:

Common relevancy, Sorting, Refiners, Managed Properties

Page 13: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

“One Enterprise Search”@jeffteper: “Best Enterprise Search in the World” #SPC14

Page 14: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Transparent System LandscapeSAP

SQL WCF

SiebelDynamics

ConfluenceWork like

a network

Page 15: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Vision• One Enterprise

Search• Go to one

place for information

• Search spans all systems

Communardo

Page 16: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

The Road to an Indexing ConnectorTechnical Building Blocks

Page 17: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Building Blocks

1) BCS3) Search Connector Framework

2) SharePoint

Search4)

Confluence

Indexing Connector

Page 18: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Business Connectivity ServicesConnect with external systems

Page 19: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Connect to External Systems with SharePoint

Access external data with Business Connectivity Services (BCS) Use stereotypical operations to access external system (“Read

Entity Instance”, “Create Entity Instance”) Structure / Projection described in BDC Model (XML File) Access operations executed in OOB or Custom Connectors

SQL, WCF, Oracle, SAP, Siebel, Dynamics, Confluence

BCS

Page 20: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

BCS – Integrate External Systems with Connectors

Source: Professional SharePoint® 2013 Development (ISBN: 978-1-118-49582-7)

Page 21: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Extend Search with BCS Declarative

BCS can access external content using External Content Types (ECT) Good for reaching out to SQL data sources SharePoint Designer Uses OOB connectors Indexed by Search

Custom Code (>= SP 2010 .NET) If there it no OOB connector available If there is no Connector Product available

Page 22: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Extending SharePoint SearchTop Down into Extensibility with Indexing Connectors

Page 23: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

SharePoint Farm

Source: TechNet, http://zoom.it/t7G3#full

Page 24: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Distributed Search Roles

Source: TechNet, http://zoom.it/ktlC#full

Page 25: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Search and Extensibility*

Source: TechNet, http://msdn.microsoft.com/en-us/library/office/jj163300.aspx

Connectors

Source: Professional SharePoint® 2013 Development (ISBN: 978-1-118-49582-7)

* Indexing Connectors

Page 26: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Crawl Component – Entering the Feeding Chain

Source: http://searchunleashed.wordpress.com/2013/12/23/crawling-content-with-sharepoint-2013-search/

Indexing Connector

Source: TechNet, http://msdn.microsoft.com/en-us/library/office/jj163300.aspx

Page 27: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Search Connector Framework“Connector development is harder than it looks.”(Professional SharePoint 2013 Development)

Page 28: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Building Blocks

Start addresses

Protocol Handler

Content Source ConfluenceIndexing

Connector

Register DevelopConfigure

Page 29: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Confusing Terms Search Connector Indexing Connector Custom Indexing Connector Custom Connector BCS Connector BCS Custom Connector BCS Entity Connector BCS Indexing Connector Custom Connector (BCS) .NET Assembly Connector Protocol Handler

Page 30: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

What is an Indexing Connector? Indexing Connector = BCS Connector + X

+ X =“Translation” BCS <-> Search

Source: Professional SharePoint® 2013 Development (ISBN: 978-1-118-49582-7)

Source: TechNet, http://msdn.microsoft.com/en-us/library/office/jj163300.aspx

Page 31: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Development: Tools Visual Studio

SharePoint Project -> SP solution Class Library -> Connector (GAC Deployment)

PowerShell Deploy Solution Register Connector

BDC Model (XML) Describes external system (see External Content Type) May use SharePoint Designer as editor or to get ideas

Existing Connector or sample highly recommended!

Page 32: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

System Requirements SharePoint 2010 & 2013 SharePoint Foundation not supported Full Trust Solution GAC Deployment on Crawl Servers

Page 33: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Sample: Content Source for Confluence Connector

Custom Connector

Page 34: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Register Connector

MSSearch.exe

Protocol HandlerMSSDmn.exe

Custom Connector

HKLM:\SOFTWARE\Microsoft\Office Server\<spversion>\Search\Setup\ProtocolHandlers\

OSearch15.ConnectorProtocolHandler.1-> COM-Component ConnectorPH.dll

New-SPEnterpriseSearchCrawlCustomConnector

.NET

Page 35: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

External System: Confluence

BDC Model*

BCS Connector Parts*

LobUri*INamingContainer*

CustomConnector

Crawl DBMSSearch

starts

BCS Connector

8

MSSDmn.exe

3 5

6 7

9

12

14

4

1 2 10 11

CPP

15

16

13

Content Source

*Dev

1) confluence://server/?entity=page2) { Entity = Page, Identity = null }5) PageIDs: [1,2,3,…]6) {Entity = Page, Identity = 1 }7) AccessUri =

confluence://server/?id=1&ispage=110) confluence://server/?id=1&ispage=111) { Entity = Page, Identity = 1 }14) Page: { DATA }

Crawl

Page 36: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

BDC Model*

BCS Connector Parts*

LobUri*INamingContainer*

CustomConnector

Crawl DBMSSearch

BCS Connector

MSSDmn.exe

5

14

4

CPP

13

Content Source

*Dev

5) PageIDs: [1,2,3,…]Incremental Crawl needs additional information14) Page: { DATA }Security trimming needs ACL or Claims directly attached to the element

Crawl

Page 37: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Incremental Crawl

Entity IDs + Change Date BDCLastModifiedTimestamp

Change Log: Changed and deleted IDs since the last crawl ChangedIDEnumerator, DeletedIDEnumerator

Page IDs: 1, 2, …• 1: Change date: 02.03.2014• 2: Change date: 03.03.2014

MSSDmn

Page IDs: 1, 2, …• Changed: 1, 2• Deleted: 3

MSSDmn

Goal: only crawl items changed since the last crawl

Page 38: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Dev Wrap-up – Indexing Connector Debugging Tips

Attach to MSSDmn.exe Increase timeouts for crawling (CA) otherwise MSSDmn.exe will be terminated net stop osearch15

Keywords LobUri INamingContainer

Sample Project MyFileConnector: http://

code.msdn.microsoft.com/office/SharePoint-2013-MyFileConne-79d2ea26 Resources

Default Connectors in SharePoint 2013: http://technet.microsoft.com/en-us/library/jj219746.aspx

Search Connector Framework in SharePoint 2013: http://msdn.microsoft.com/en-us/library/office/ee556429.aspx

Page 39: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Search Connector for ConfluenceCommunardo: Product “Connector for SharePoint Search” for Confluence

Page 40: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Click to insert photo.

What is Confluence?

Image source: https://www.atlassian.com/software/confluence

• Enterprise Wiki from Atlassian

• Spaces• Wiki Pages in

Spaces, Hierarchical

Page 41: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Confluence Content StructureSpaces

Pages

Comments

Blog Posts

Attachments

Page 42: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Planning the Search Connector for Confluence

Choose content to index Determine content structure of confluence (Spaces, Pages, …)

Plan Permissions Permissions are attached directly to the indexed element Hierarchical Permissions from Confluence cannot be represented 1:1

Evaluate Confluence Webservice Determine API limits

Page 43: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Choose Content for Crawling Confluence has hierarchical content:

Spaces Pages Attachments …

Flatten hierarchy for crawl:

Space Page/Blog Post

Attachment

Comment

Space Page

Attachment Comment

Blog Post

Page 44: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Map Confluence Users to AD Accounts Challenge: Confluence might not be attached to AD; can contain local users and groups

Map Confluence users and groups to AD principals during crawl

Space Page / Blog Post

Attachment

Comment AD

Page 45: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Map hierarchical permissions to single ACLs Confluence uses hierarchical permissions

Confluence permissions cannot be mapped 1:1 to single item ACLs

Translation „Confluenc Permission -> ACL“ necessary

Space Page / Blog Post

ACL

+

SharePointConfluence Connector

Page 46: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Lessons Learned“Experience is a hard teacher because she gives the test first, the lesson afterwards.” - Vern Law

Page 47: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Lessons Learned Planning is everything

Identity-Mapping, API Limits, Network limits, Permissions Plan permissions well

No hierarchical permissions in Search Index ACL? Claims? …

Not all BCS methods are supported BCS method “AssociationNavigator” (for parent-child relationships ) cause

problems with incremental crawl Stress Test

SharePoint Search is an excellent tool for DoS Use Crawler Impact Rules

Page 48: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Outlook

Page 49: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Office 365 Cloud Search cannot be extended

No GAC Deployment Hybrid setup to get external search results into the cloud Search Connector on-premise Inbound Hybrid Search brings results to Office 365

Federated Search Results No Refinement Roadmap contains solution, but no date given (talks 306 & 320

#SPC14)

Page 50: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Questions?

Page 51: SP24S088 - Custom Indexing Connectors - How to integrate external systems into SharePoint Search

Thank you!